|
36 | 36 | import com.google.firebase.concurrent.TestOnlyExecutors; |
37 | 37 | import java.io.IOException; |
38 | 38 | import java.util.concurrent.Executor; |
| 39 | +import org.json.JSONObject; |
39 | 40 | import org.junit.After; |
40 | 41 | import org.junit.Before; |
41 | 42 | import org.junit.Test; |
42 | 43 | import org.junit.runner.RunWith; |
| 44 | +import org.mockito.ArgumentCaptor; |
| 45 | +import org.mockito.Captor; |
43 | 46 | import org.mockito.Mock; |
44 | 47 | import org.mockito.MockitoAnnotations; |
45 | 48 | import org.robolectric.RobolectricTestRunner; |
@@ -70,6 +73,7 @@ public class DebugAppCheckProviderTest { |
70 | 73 | @Mock NetworkClient mockNetworkClient; |
71 | 74 | @Mock RetryManager mockRetryManager; |
72 | 75 | @Mock AppCheckTokenResponse mockAppCheckTokenResponse; |
| 76 | + @Captor ArgumentCaptor<byte[]> requestBytesCaptor; |
73 | 77 |
|
74 | 78 | private StorageHelper storageHelper; |
75 | 79 | private SharedPreferences sharedPreferences; |
@@ -173,4 +177,31 @@ public void exchangeDebugToken_onFailure_setsTaskException() throws Exception { |
173 | 177 | Exception exception = task.getException(); |
174 | 178 | assertThat(exception).isInstanceOf(IOException.class); |
175 | 179 | } |
| 180 | + |
| 181 | + @Test |
| 182 | + public void getLimitedUseToken_onSuccess_setsTaskResult() throws Exception { |
| 183 | + when(mockNetworkClient.exchangeAttestationForAppCheckToken( |
| 184 | + any(), eq(NetworkClient.DEBUG), eq(mockRetryManager))) |
| 185 | + .thenReturn(mockAppCheckTokenResponse); |
| 186 | + when(mockAppCheckTokenResponse.getToken()).thenReturn(APP_CHECK_TOKEN); |
| 187 | + when(mockAppCheckTokenResponse.getTimeToLive()).thenReturn(TIME_TO_LIVE); |
| 188 | + |
| 189 | + DebugAppCheckProvider provider = |
| 190 | + new DebugAppCheckProvider( |
| 191 | + DEBUG_SECRET, mockNetworkClient, liteExecutor, blockingExecutor, mockRetryManager); |
| 192 | + Task<AppCheckToken> task = provider.getLimitedUseToken(); |
| 193 | + |
| 194 | + verify(mockNetworkClient) |
| 195 | + .exchangeAttestationForAppCheckToken( |
| 196 | + requestBytesCaptor.capture(), eq(NetworkClient.DEBUG), eq(mockRetryManager)); |
| 197 | + |
| 198 | + byte[] capturedBytes = requestBytesCaptor.getValue(); |
| 199 | + JSONObject jsonObject = new JSONObject(new String(capturedBytes, "UTF-8")); |
| 200 | + assertThat(jsonObject.opt(ExchangeDebugTokenRequest.DEBUG_TOKEN_KEY)).isEqualTo(DEBUG_SECRET); |
| 201 | + assertThat(jsonObject.opt(ExchangeDebugTokenRequest.LIMITED_USE_TOKEN_KEY)).isEqualTo(true); |
| 202 | + |
| 203 | + AppCheckToken token = task.getResult(); |
| 204 | + assertThat(token).isInstanceOf(DefaultAppCheckToken.class); |
| 205 | + assertThat(token.getToken()).isEqualTo(APP_CHECK_TOKEN); |
| 206 | + } |
176 | 207 | } |
0 commit comments