4444import com .google .api .client .util .Clock ;
4545import com .google .auth .http .HttpTransportFactory ;
4646import com .google .auth .oauth2 .GoogleCredentialsTest .MockTokenServerTransportFactory ;
47+ import com .google .auth .oauth2 .TokenVerifier .VerificationException ;
4748import com .google .common .io .CharStreams ;
4849import java .io .IOException ;
4950import java .io .InputStream ;
@@ -66,9 +67,9 @@ public class TokenVerifierTest {
6667 "https://www.googleapis.com/oauth2/v1/certs" ;
6768
6869 private static final String SERVICE_ACCOUNT_RS256_TOKEN =
69- "eyJhbGciOiJSUzI1NiIsImtpZCI6IjJlZjc3YjM4YTFiMDM3MDQ4NzA0MzkxNmFjYmYyN2Q3NGVkZDA4YjEiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJodHRwczovL2V4YW1wbGUuY29tL2F1ZGllbmNlIiwiZXhwIjoxNTg3NjMwNTQzLCJpYXQiOjE1ODc2MjY5NDMsImlzcyI6InNvbWUgaXNzdWVyIiwic3ViIjoic29tZSBzdWJqZWN0In0.gGOQW0qQgs4jGUmCsgRV83RqsJLaEy89-ZOG6p1u0Y26FyY06b6Odgd7xXLsSTiiSnch62dl0Lfi9D0x2ByxvsGOCbovmBl2ZZ0zHr1wpc4N0XS9lMUq5RJQbonDibxXG4nC2zroDfvD0h7i-L8KMXeJb9pYwW7LkmrM_YwYfJnWnZ4bpcsDjojmPeUBlACg7tjjOgBFbyQZvUtaERJwSRlaWibvNjof7eCVfZChE0PwBpZc_cGqSqKXv544L4ttqdCnmONjqrTATXwC4gYxruevkjHfYI5ojcQmXoWDJJ0-_jzfyPE4MFFdCFgzLgnfIOwe5ve0MtquKuv2O0pgvg " ;
70+ "eyJhbGciOiJSUzI1NiIsImtpZCI6IjE3MjdiNmI0OTQwMmI5Y2Y5NWJlNGU4ZmQzOGFhN2U3YzExNjQ0YjEiLCJ0eXAiOiJKV1QifQ.eyJhdWQiOiJodHRwczovL2Nsb3VkdGFza3MuZ29vZ2xlYXBpcy5jb20vdjIvcHJvamVjdHMvZ2Nsb3VkLWRldmVsL2xvY2F0aW9ucyIsImF6cCI6InN0aW0tdGVzdEBzdGVsbGFyLWRheS0yNTQyMjIuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJlbWFpbCI6InN0aW0tdGVzdEBzdGVsbGFyLWRheS0yNTQyMjIuaWFtLmdzZXJ2aWNlYWNjb3VudC5jb20iLCJlbWFpbF92ZXJpZmllZCI6dHJ1ZSwiZXhwIjoxNjYwODgwNjczLCJpYXQiOjE2NjA4NzcwNzMsImlzcyI6Imh0dHBzOi8vYWNjb3VudHMuZ29vZ2xlLmNvbSIsInN1YiI6IjExMjgxMDY3Mjk2MzcyODM2NjQwNiJ9.Q2tG-hN6UHecbzaCIlg58K9msp58nLZWs03CBGO_D6F3cI4LKQEUzsbcztZqmNGWd0ld4zkrKzIP9cQosa_xold4hEzSX_ORRHYQLimLYaQmP3rKqWPMsbIupPdpnGqBDzAYjc7Pw9pQBzuZJj8e3FEG6a5tblDfMcgeklXZIkwzN7ypWCbFDoDP2STSYJYZ-LQIB0-Zlex7dm2KhyB8QSkMQK60YvpXz4L1OtwG7spk3yUCWxul6hYF76klST0iS6DH03YdaDpt4gRXkTUKyTRfB10h-WhCAKKRzmT6d_IT9ApIyqPhimkgkBHhLNyjK8lgAJdk9CLriSEOgVpsow " ;
7071 private static final String SERVICE_ACCOUNT_CERT_URL =
71- "https://www.googleapis.com/robot/v1/metadata/x509/integration-tests%40chingor-test.iam.gserviceaccount.com " ;
72+ "https://www.googleapis.com/oauth2/v3/certs " ;
7273
7374 private static final List <String > ALL_TOKENS =
7475 Arrays .asList (ES256_TOKEN , FEDERATED_SIGNON_RS256_TOKEN , SERVICE_ACCOUNT_RS256_TOKEN );
@@ -152,6 +153,7 @@ public LowLevelHttpResponse execute() throws IOException {
152153 .setClock (FIXED_CLOCK )
153154 .setHttpTransportFactory (httpTransportFactory )
154155 .build ();
156+
155157 try {
156158 tokenVerifier .verify (ES256_TOKEN );
157159 fail ("Should not be able to continue without exception." );
@@ -170,8 +172,7 @@ public void verifyEs256TokenPublicKeyMismatch() {
170172 public HttpTransport create () {
171173 return new MockHttpTransport () {
172174 @ Override
173- public LowLevelHttpRequest buildRequest (String method , String url )
174- throws IOException {
175+ public LowLevelHttpRequest buildRequest (String method , String url ) {
175176 return new MockLowLevelHttpRequest () {
176177 @ Override
177178 public LowLevelHttpResponse execute () throws IOException {
@@ -200,8 +201,7 @@ public LowLevelHttpResponse execute() throws IOException {
200201 }
201202
202203 @ Test
203- public void verifyPublicKeyStoreIntermittentError ()
204- throws TokenVerifier .VerificationException , IOException {
204+ public void verifyPublicKeyStoreIntermittentError () throws VerificationException , IOException {
205205 // mock responses
206206 MockLowLevelHttpResponse response404 =
207207 new MockLowLevelHttpResponse ()
@@ -224,13 +224,15 @@ public void verifyPublicKeyStoreIntermittentError()
224224 // Mock HTTP requests
225225 MockTokenServerTransportFactory transportFactory = new MockTokenServerTransportFactory ();
226226
227- transportFactory .transport .addResponseSequence (response404 , responseEmpty , responseGood );
227+ transportFactory .transport .addResponseSequence (
228+ response404 , response404 , response404 , responseEmpty , responseGood );
228229
229230 TokenVerifier tokenVerifier =
230231 TokenVerifier .newBuilder ()
231232 .setClock (FIXED_CLOCK )
232233 .setHttpTransportFactory (transportFactory )
233234 .build ();
235+
234236 try {
235237 tokenVerifier .verify (ES256_TOKEN );
236238 fail ("Should not be able to continue without exception." );
@@ -249,7 +251,7 @@ public void verifyPublicKeyStoreIntermittentError()
249251 }
250252
251253 @ Test
252- public void verifyEs256Token () throws TokenVerifier . VerificationException , IOException {
254+ public void verifyEs256Token () throws VerificationException , IOException {
253255 HttpTransportFactory httpTransportFactory =
254256 mockTransport (
255257 "https://www.gstatic.com/iap/verify/public_key-jwk" ,
@@ -263,7 +265,7 @@ public void verifyEs256Token() throws TokenVerifier.VerificationException, IOExc
263265 }
264266
265267 @ Test
266- public void verifyRs256Token () throws TokenVerifier . VerificationException , IOException {
268+ public void verifyRs256Token () throws VerificationException , IOException {
267269 HttpTransportFactory httpTransportFactory =
268270 mockTransport (
269271 "https://www.googleapis.com/oauth2/v3/certs" ,
@@ -292,11 +294,17 @@ public void verifyRs256TokenWithLegacyCertificateUrlFormat()
292294 }
293295
294296 @ Test
295- public void verifyServiceAccountRs256Token ()
296- throws TokenVerifier .VerificationException , IOException {
297+ public void verifyServiceAccountRs256Token () throws TokenVerifier .VerificationException {
298+ final Clock clock =
299+ new Clock () {
300+ @ Override
301+ public long currentTimeMillis () {
302+ return 1660880573000L ;
303+ }
304+ };
297305 TokenVerifier tokenVerifier =
298306 TokenVerifier .newBuilder ()
299- .setClock (FIXED_CLOCK )
307+ .setClock (clock )
300308 .setCertificatesLocation (SERVICE_ACCOUNT_CERT_URL )
301309 .build ();
302310 assertNotNull (tokenVerifier .verify (SERVICE_ACCOUNT_RS256_TOKEN ));
0 commit comments