|
52 | 52 |
|
53 | 53 | import com.google.api.client.http.HttpStatusCodes; |
54 | 54 | import com.google.api.client.json.webtoken.JsonWebToken.Payload; |
| 55 | +import com.google.api.client.util.ArrayMap; |
55 | 56 | import com.google.auth.TestAppender; |
56 | 57 | import com.google.auth.TestUtils; |
| 58 | +import com.google.auth.oauth2.ComputeEngineCredentialsTest.MockMetadataServerTransportFactory; |
57 | 59 | import com.google.gson.Gson; |
58 | 60 | import com.google.gson.JsonObject; |
59 | 61 | import java.io.IOException; |
@@ -293,4 +295,65 @@ public void sign_sameAs() throws IOException { |
293 | 295 | assertEquals(1, testAppender.events.get(2).getMDCPropertyMap().size()); |
294 | 296 | testAppender.stop(); |
295 | 297 | } |
| 298 | + |
| 299 | + @Test |
| 300 | + public void getRequestMetadata_hasAccessToken() throws IOException { |
| 301 | + TestAppender testAppender = setupTestLogger(ComputeEngineCredentials.class); |
| 302 | + MockMetadataServerTransportFactory transportFactory = new MockMetadataServerTransportFactory(); |
| 303 | + ComputeEngineCredentials credentials = |
| 304 | + ComputeEngineCredentials.newBuilder().setHttpTransportFactory(transportFactory).build(); |
| 305 | + Map<String, List<String>> metadata = credentials.getRequestMetadata(CALL_URI); |
| 306 | + |
| 307 | + TestUtils.assertContainsBearerToken(metadata, ACCESS_TOKEN); |
| 308 | + |
| 309 | + assertEquals(3, testAppender.events.size()); |
| 310 | + JsonObject jsonMessage = |
| 311 | + gson.fromJson(testAppender.events.get(0).getFormattedMessage(), JsonObject.class); |
| 312 | + |
| 313 | + assertEquals( |
| 314 | + "com.google.auth.oauth2.ComputeEngineCredentials", |
| 315 | + testAppender.events.get(0).getLoggerName()); |
| 316 | + assertEquals( |
| 317 | + "Auth get metadata sending request for access token", |
| 318 | + jsonMessage.get("message").getAsString()); |
| 319 | + assertEquals(3, testAppender.events.get(0).getMDCPropertyMap().size()); |
| 320 | + assertEquals(3, testAppender.events.get(1).getMDCPropertyMap().size()); |
| 321 | + assertEquals(3, testAppender.events.get(2).getMDCPropertyMap().size()); |
| 322 | + testAppender.stop(); |
| 323 | + } |
| 324 | + |
| 325 | + @Test |
| 326 | + @SuppressWarnings("unchecked") |
| 327 | + public void idTokenWithAudience_full() throws IOException { |
| 328 | + TestAppender testAppender = setupTestLogger(ComputeEngineCredentials.class); |
| 329 | + MockMetadataServerTransportFactory transportFactory = new MockMetadataServerTransportFactory(); |
| 330 | + ComputeEngineCredentials credentials = |
| 331 | + ComputeEngineCredentials.newBuilder().setHttpTransportFactory(transportFactory).build(); |
| 332 | + |
| 333 | + String targetAudience = "https://foo.bar"; |
| 334 | + IdTokenCredentials tokenCredential = |
| 335 | + IdTokenCredentials.newBuilder() |
| 336 | + .setIdTokenProvider(credentials) |
| 337 | + .setTargetAudience(targetAudience) |
| 338 | + .setOptions(Arrays.asList(IdTokenProvider.Option.FORMAT_FULL)) |
| 339 | + .build(); |
| 340 | + tokenCredential.refresh(); |
| 341 | + Payload p = tokenCredential.getIdToken().getJsonWebSignature().getPayload(); |
| 342 | + assertTrue("Full ID Token format not provided", p.containsKey("google")); |
| 343 | + ArrayMap<String, ArrayMap> googleClaim = (ArrayMap<String, ArrayMap>) p.get("google"); |
| 344 | + assertTrue(googleClaim.containsKey("compute_engine")); |
| 345 | + |
| 346 | + assertEquals(2, testAppender.events.size()); |
| 347 | + JsonObject jsonMessage = |
| 348 | + gson.fromJson(testAppender.events.get(0).getFormattedMessage(), JsonObject.class); |
| 349 | + |
| 350 | + assertEquals( |
| 351 | + "com.google.auth.oauth2.ComputeEngineCredentials", |
| 352 | + testAppender.events.get(0).getLoggerName()); |
| 353 | + assertEquals( |
| 354 | + "Auth get metadata sending request for id token", jsonMessage.get("message").getAsString()); |
| 355 | + assertEquals(3, testAppender.events.get(0).getMDCPropertyMap().size()); |
| 356 | + assertEquals(3, testAppender.events.get(1).getMDCPropertyMap().size()); |
| 357 | + testAppender.stop(); |
| 358 | + } |
296 | 359 | } |
0 commit comments