@@ -149,8 +149,7 @@ public void fetchIntermediateCredentials() throws Exception {
149149 public void fetchIntermediateCredentials_withCustomUniverseDomain () throws IOException {
150150 String universeDomain = "foobar" ;
151151 GoogleCredentials sourceCredentials =
152- getServiceAccountSourceCredentials (mockTokenServerTransportFactory )
153- .toBuilder ()
152+ getServiceAccountSourceCredentials (mockTokenServerTransportFactory ).toBuilder ()
154153 .setUniverseDomain (universeDomain )
155154 .build ();
156155
@@ -483,6 +482,58 @@ public void builder_universeDomainMismatch_throws() throws IOException {
483482 exception .getMessage ());
484483 }
485484
485+ @ Test
486+ public void builder_invalidRefreshMarginAndMinimumTokenLifetime_throws () throws IOException {
487+ GoogleCredentials sourceCredentials =
488+ getServiceAccountSourceCredentials (mockTokenServerTransportFactory );
489+
490+ IllegalArgumentException exception =
491+ assertThrows (
492+ IllegalArgumentException .class ,
493+ () -> {
494+ ClientSideCredentialAccessBoundaryFactory .newBuilder ()
495+ .setSourceCredential (sourceCredentials )
496+ .setRefreshMargin (Duration .ofMinutes (50 ))
497+ .setMinimumTokenLifetime (Duration .ofMinutes (50 ))
498+ .build ();
499+ });
500+ assertEquals (
501+ "Refresh margin must be at least one minute longer than the minimum token lifetime." ,
502+ exception .getMessage ());
503+ }
504+
505+ @ Test
506+ public void builder_minimumTokenLifetimeNotSet_usesDefault () throws IOException {
507+ GoogleCredentials sourceCredentials =
508+ getServiceAccountSourceCredentials (mockTokenServerTransportFactory );
509+
510+ ClientSideCredentialAccessBoundaryFactory factory =
511+ ClientSideCredentialAccessBoundaryFactory .newBuilder ()
512+ .setSourceCredential (sourceCredentials )
513+ .setRefreshMargin (Duration .ofMinutes (50 ))
514+ .build ();
515+
516+ assertEquals (
517+ ClientSideCredentialAccessBoundaryFactory .DEFAULT_MINIMUM_TOKEN_LIFETIME ,
518+ factory .getMinimumTokenLifetime ());
519+ }
520+
521+ @ Test
522+ public void builder_refreshMarginNotSet_usesDefault () throws IOException {
523+ GoogleCredentials sourceCredentials =
524+ getServiceAccountSourceCredentials (mockTokenServerTransportFactory );
525+
526+ ClientSideCredentialAccessBoundaryFactory factory =
527+ ClientSideCredentialAccessBoundaryFactory .newBuilder ()
528+ .setSourceCredential (sourceCredentials )
529+ .setMinimumTokenLifetime (Duration .ofMinutes (20 ))
530+ .build ();
531+
532+ assertEquals (
533+ ClientSideCredentialAccessBoundaryFactory .DEFAULT_REFRESH_MARGIN ,
534+ factory .getRefreshMargin ());
535+ }
536+
486537 private static GoogleCredentials getServiceAccountSourceCredentials (
487538 MockTokenServerTransportFactory transportFactory ) throws IOException {
488539 String email =
"[email protected] " ;
@@ -613,7 +664,7 @@ private static ClientSideAccessBoundary decryptRestriction(String restriction, S
613664
614665 Aead aead = keysetHandle .getPrimitive (RegistryConfiguration .get (), Aead .class );
615666 byte [] rawRestrictions =
616- aead .decrypt (Base64 .getUrlDecoder ().decode (restriction ), /*associatedData=*/ new byte [0 ]);
667+ aead .decrypt (Base64 .getUrlDecoder ().decode (restriction ), /* associatedData= */ new byte [0 ]);
617668
618669 return ClientSideAccessBoundary .parseFrom (rawRestrictions );
619670 }
0 commit comments