Skip to content

Commit eafb273

Browse files
committed
Fix DefaultTokenRefresher.
1 parent 99c4f6b commit eafb273

File tree

3 files changed

+23
-29
lines changed

3 files changed

+23
-29
lines changed

appcheck/firebase-appcheck/src/main/java/com/google/firebase/appcheck/internal/DefaultFirebaseAppCheck.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -184,12 +184,8 @@ Task<AppCheckTokenResult> fetchTokenResultFromProvider() {
184184
@Override
185185
public Task<AppCheckTokenResult> then(@NonNull Task<AppCheckToken> task) {
186186
if (task.isSuccessful()) {
187-
AppCheckTokenResult tokenResult =
188-
DefaultAppCheckTokenResult.constructFromAppCheckToken(task.getResult());
189-
for (AppCheckTokenListener listener : appCheckTokenListenerList) {
190-
listener.onAppCheckTokenChanged(tokenResult);
191-
}
192-
return Tasks.forResult(tokenResult);
187+
return Tasks.forResult(
188+
DefaultAppCheckTokenResult.constructFromAppCheckToken(task.getResult()));
193189
}
194190
// If the token exchange failed, return a dummy token for integrators to attach in
195191
// their headers.
@@ -215,6 +211,11 @@ public Task<AppCheckToken> then(@NonNull Task<AppCheckToken> task) {
215211
for (AppCheckListener listener : appCheckListenerList) {
216212
listener.onAppCheckTokenChanged(token);
217213
}
214+
AppCheckTokenResult tokenResult =
215+
DefaultAppCheckTokenResult.constructFromAppCheckToken(token);
216+
for (AppCheckTokenListener listener : appCheckTokenListenerList) {
217+
listener.onAppCheckTokenChanged(tokenResult);
218+
}
218219
}
219220
return task;
220221
}

appcheck/firebase-appcheck/src/main/java/com/google/firebase/appcheck/internal/DefaultTokenRefresher.java

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,9 @@
2020

2121
import androidx.annotation.NonNull;
2222
import androidx.annotation.VisibleForTesting;
23-
import com.google.android.gms.tasks.OnCompleteListener;
23+
import com.google.android.gms.tasks.OnFailureListener;
2424
import com.google.android.gms.tasks.Task;
25-
import com.google.firebase.appcheck.AppCheckTokenResult;
26-
import com.google.firebase.appcheck.internal.util.Logger;
25+
import com.google.firebase.appcheck.AppCheckToken;
2726
import java.util.concurrent.Executors;
2827
import java.util.concurrent.ScheduledExecutorService;
2928
import java.util.concurrent.ScheduledFuture;
@@ -94,20 +93,12 @@ private long getNextRefreshMillis() {
9493
}
9594

9695
private void onRefresh() {
97-
Task<AppCheckTokenResult> task = firebaseAppCheck.fetchTokenFromProvider();
98-
task.addOnCompleteListener(
99-
new OnCompleteListener<AppCheckTokenResult>() {
96+
Task<AppCheckToken> task = firebaseAppCheck.fetchTokenFromProvider();
97+
task.addOnFailureListener(
98+
new OnFailureListener() {
10099
@Override
101-
public void onComplete(@NonNull Task<AppCheckTokenResult> task) {
102-
if (task.isSuccessful()) {
103-
AppCheckTokenResult tokenResult = task.getResult();
104-
if (tokenResult.getError() != null) {
105-
scheduleRefreshAfterFailure();
106-
}
107-
} else {
108-
// Task was not successful; this should not happen.
109-
Logger.getLogger().e("Unexpected failure while fetching token.");
110-
}
100+
public void onFailure(@NonNull Exception e) {
101+
scheduleRefreshAfterFailure();
111102
}
112103
});
113104
}

appcheck/firebase-appcheck/src/test/java/com/google/firebase/appcheck/internal/DefaultTokenRefresherTest.java

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,7 @@
2424
import static org.mockito.Mockito.when;
2525

2626
import com.google.android.gms.tasks.Tasks;
27-
import com.google.firebase.FirebaseException;
28-
import com.google.firebase.appcheck.AppCheckTokenResult;
27+
import com.google.firebase.appcheck.AppCheckToken;
2928
import java.util.concurrent.ScheduledExecutorService;
3029
import org.junit.Before;
3130
import org.junit.Test;
@@ -47,7 +46,7 @@ public class DefaultTokenRefresherTest {
4746

4847
@Mock DefaultFirebaseAppCheck mockFirebaseAppCheck;
4948
@Mock ScheduledExecutorService mockScheduledExecutorService;
50-
@Mock AppCheckTokenResult mockAppCheckTokenResult;
49+
@Mock AppCheckToken mockAppCheckToken;
5150

5251
private DefaultTokenRefresher defaultTokenRefresher;
5352

@@ -56,7 +55,7 @@ public void setUp() {
5655
MockitoAnnotations.initMocks(this);
5756

5857
when(mockFirebaseAppCheck.fetchTokenFromProvider())
59-
.thenReturn(Tasks.forResult(mockAppCheckTokenResult));
58+
.thenReturn(Tasks.forResult(mockAppCheckToken));
6059

6160
defaultTokenRefresher =
6261
new DefaultTokenRefresher(mockFirebaseAppCheck, mockScheduledExecutorService);
@@ -77,7 +76,8 @@ public void scheduleRefresh_success() {
7776

7877
@Test
7978
public void scheduleRefresh_taskFails_schedulesRefreshAfterFailure() {
80-
when(mockAppCheckTokenResult.getError()).thenReturn(new FirebaseException(ERROR));
79+
when(mockFirebaseAppCheck.fetchTokenFromProvider())
80+
.thenReturn(Tasks.forException(new Exception()));
8181
defaultTokenRefresher.scheduleRefresh(TIME_TO_REFRESH_MILLIS);
8282

8383
ArgumentCaptor<Runnable> onRefreshCaptor = ArgumentCaptor.forClass(Runnable.class);
@@ -94,7 +94,8 @@ public void scheduleRefresh_taskFails_schedulesRefreshAfterFailure() {
9494

9595
@Test
9696
public void scheduleRefreshAfterFailure_exponentialBackoff() {
97-
when(mockAppCheckTokenResult.getError()).thenReturn(new FirebaseException(ERROR));
97+
when(mockFirebaseAppCheck.fetchTokenFromProvider())
98+
.thenReturn(Tasks.forException(new Exception()));
9899
defaultTokenRefresher.scheduleRefresh(TIME_TO_REFRESH_MILLIS);
99100

100101
ArgumentCaptor<Runnable> onRefreshCaptor = ArgumentCaptor.forClass(Runnable.class);
@@ -131,7 +132,8 @@ public void scheduleRefreshAfterFailure_exponentialBackoff() {
131132

132133
@Test
133134
public void scheduleRefresh_resetsDelay() {
134-
when(mockAppCheckTokenResult.getError()).thenReturn(new FirebaseException(ERROR));
135+
when(mockFirebaseAppCheck.fetchTokenFromProvider())
136+
.thenReturn(Tasks.forException(new Exception()));
135137
defaultTokenRefresher.scheduleRefresh(TIME_TO_REFRESH_MILLIS);
136138

137139
ArgumentCaptor<Runnable> onRefreshCaptor = ArgumentCaptor.forClass(Runnable.class);

0 commit comments

Comments
 (0)