|
38 | 38 | import static org.junit.Assert.assertNotNull; |
39 | 39 | import static org.junit.Assert.assertNull; |
40 | 40 | import static org.junit.Assert.assertSame; |
| 41 | +import static org.junit.Assert.assertThrows; |
41 | 42 | import static org.junit.Assert.assertTrue; |
42 | 43 | import static org.junit.Assert.fail; |
43 | 44 |
|
@@ -975,6 +976,55 @@ public void idTokenWithAudience_iamFlow_targetAudienceDoesNotMatchAudClaim() thr |
975 | 976 | tokenCredential.getIdToken().getJsonWebSignature().getPayload().getAudience()); |
976 | 977 | } |
977 | 978 |
|
| 979 | + @Test |
| 980 | + public void idTokenWithAudience_oauthEndpoint_non2XXError() throws IOException { |
| 981 | + String universeDomain = "test.com"; |
| 982 | + MockTokenServerTransportFactory transportFactory = new MockTokenServerTransportFactory(); |
| 983 | + transportFactory.transport.setError(new IOException("404 Not Found")); |
| 984 | + ServiceAccountCredentials credentials = |
| 985 | + createDefaultBuilder() |
| 986 | + .setScopes(SCOPES) |
| 987 | + .setHttpTransportFactory(transportFactory) |
| 988 | + .setUniverseDomain(universeDomain) |
| 989 | + .build(); |
| 990 | + |
| 991 | + String targetAudience = "differentAudience"; |
| 992 | + IdTokenCredentials tokenCredential = |
| 993 | + IdTokenCredentials.newBuilder() |
| 994 | + .setIdTokenProvider(credentials) |
| 995 | + .setTargetAudience(targetAudience) |
| 996 | + .build(); |
| 997 | + |
| 998 | + assertThrows(IOException.class, tokenCredential::refresh); |
| 999 | + } |
| 1000 | + |
| 1001 | + @Test |
| 1002 | + public void idTokenWithAudience_iamEndpoint_non2XXError() throws IOException { |
| 1003 | + String universeDomain = "test.com"; |
| 1004 | + MockIAMCredentialsServiceTransportFactory transportFactory = |
| 1005 | + new MockIAMCredentialsServiceTransportFactory(universeDomain); |
| 1006 | + transportFactory.getTransport().setTargetPrincipal(CLIENT_EMAIL); |
| 1007 | + transportFactory.getTransport().setIdToken(DEFAULT_ID_TOKEN); |
| 1008 | + transportFactory |
| 1009 | + .getTransport() |
| 1010 | + .addStatusCodeAndMessage(HttpStatusCodes.STATUS_CODE_NOT_FOUND, "Not Found"); |
| 1011 | + ServiceAccountCredentials credentials = |
| 1012 | + createDefaultBuilder() |
| 1013 | + .setScopes(SCOPES) |
| 1014 | + .setHttpTransportFactory(transportFactory) |
| 1015 | + .setUniverseDomain(universeDomain) |
| 1016 | + .build(); |
| 1017 | + |
| 1018 | + String targetAudience = "differentAudience"; |
| 1019 | + IdTokenCredentials tokenCredential = |
| 1020 | + IdTokenCredentials.newBuilder() |
| 1021 | + .setIdTokenProvider(credentials) |
| 1022 | + .setTargetAudience(targetAudience) |
| 1023 | + .build(); |
| 1024 | + |
| 1025 | + assertThrows(IOException.class, tokenCredential::refresh); |
| 1026 | + } |
| 1027 | + |
978 | 1028 | @Test |
979 | 1029 | public void getScopes_nullReturnsEmpty() throws IOException { |
980 | 1030 | ServiceAccountCredentials credentials = createDefaultBuilder().build(); |
|
0 commit comments