6565import java .security .spec .X509EncodedKeySpec ;
6666import java .util .List ;
6767import java .util .Map ;
68+ import java .util .concurrent .TimeUnit ;
6869
6970public class StorageImplTest {
7071
@@ -171,6 +172,13 @@ public class StorageImplTest {
171172 + "EkPPhszldvQTY486uPxyD/D7HdfnGW/Nbw5JUhfvecAdudDEhNAQ3PNabyDMI+TpiHy4NTWOrgdcWrzj6VXcdc"
172173 + "+uuABnPwRCdcyJ1xl2kOrPksRnp1auNGMLOe4IpEBjGY7baX9UG8+A45MbG0aHmkR59Op/aR9XowIDAQAB" ;
173174
175+ private static final StorageOptions .TimeSource TIME_SOURCE = new StorageOptions .TimeSource () {
176+ @ Override
177+ public long millis () {
178+ return 42000L ;
179+ }
180+ };
181+
174182 private static PrivateKey privateKey ;
175183 private static PublicKey publicKey ;
176184
@@ -794,24 +802,26 @@ public void testSignUrl() throws NoSuchAlgorithmException, InvalidKeyException,
794802 String account = "account" ;
795803 ServiceAccountAuthCredentials credentialsMock =
796804 EasyMock .createMock (ServiceAccountAuthCredentials .class );
797- EasyMock .expect (optionsMock .storageRpc ()).andReturn (storageRpcMock ). times ( 1 ) ;
805+ EasyMock .expect (optionsMock .storageRpc ()).andReturn (storageRpcMock );
798806 EasyMock .expect (optionsMock .authCredentials ()).andReturn (credentialsMock ).times (2 );
807+ EasyMock .expect (optionsMock .timeSource ()).andReturn (TIME_SOURCE );
799808 EasyMock .expect (credentialsMock .privateKey ()).andReturn (privateKey );
800809 EasyMock .expect (credentialsMock .account ()).andReturn (account );
801810 EasyMock .replay (optionsMock , storageRpcMock , credentialsMock );
802811 storage = StorageFactory .instance ().get (optionsMock );
803- URL url = storage .signUrl (BLOB_INFO1 , 60 );
812+ URL url = storage .signUrl (BLOB_INFO1 , 14 , TimeUnit . DAYS );
804813 String stringUrl = url .toString ();
805814 String expectedUrl =
806815 new StringBuilder ("https://storage.googleapis.com/" ).append (BUCKET_NAME1 ).append ("/" )
807816 .append (BLOB_NAME1 ).append ("?GoogleAccessId=" ).append (account ).append ("&Expires=" )
808- .append (60 ).append ("&Signature=" ).toString ();
817+ .append (42L + 1209600 ).append ("&Signature=" ).toString ();
809818 assertTrue (stringUrl .startsWith (expectedUrl ));
810819 String signature = stringUrl .substring (expectedUrl .length ());
811820
812821 StringBuilder signedMessageBuilder = new StringBuilder ();
813- signedMessageBuilder .append (HttpMethod .GET ).append ('\n' ).append ('\n' ).append ('\n' ).append (60 )
814- .append ('\n' ).append ("/" ).append (BUCKET_NAME1 ).append ("/" ).append (BLOB_NAME1 );
822+ signedMessageBuilder .append (HttpMethod .GET ).append ('\n' ).append ('\n' ).append ('\n' )
823+ .append (42L + 1209600 ).append ('\n' ).append ("/" ).append (BUCKET_NAME1 ).append ("/" )
824+ .append (BLOB_NAME1 );
815825
816826 Signature signer = Signature .getInstance ("SHA256withRSA" );
817827 signer .initVerify (publicKey );
@@ -827,27 +837,29 @@ public void testSignUrlWithOptions() throws NoSuchAlgorithmException, InvalidKey
827837 String account = "account" ;
828838 ServiceAccountAuthCredentials credentialsMock =
829839 EasyMock .createMock (ServiceAccountAuthCredentials .class );
830- EasyMock .expect (optionsMock .storageRpc ()).andReturn (storageRpcMock ). times ( 1 ) ;
840+ EasyMock .expect (optionsMock .storageRpc ()).andReturn (storageRpcMock );
831841 EasyMock .expect (optionsMock .authCredentials ()).andReturn (credentialsMock ).times (2 );
842+ EasyMock .expect (optionsMock .timeSource ()).andReturn (TIME_SOURCE );
832843 EasyMock .expect (credentialsMock .privateKey ()).andReturn (privateKey );
833844 EasyMock .expect (credentialsMock .account ()).andReturn (account );
834845 EasyMock .replay (optionsMock , storageRpcMock , credentialsMock );
835846 storage = StorageFactory .instance ().get (optionsMock );
836847 URL url =
837- storage .signUrl (BLOB_INFO1 , 60 , Storage .SignUrlOption .httpMethod (HttpMethod .POST ),
848+ storage .signUrl (BLOB_INFO1 , 14 , TimeUnit .DAYS ,
849+ Storage .SignUrlOption .httpMethod (HttpMethod .POST ),
838850 Storage .SignUrlOption .withContentType (), Storage .SignUrlOption .withMd5 ());
839851 String stringUrl = url .toString ();
840852 String expectedUrl =
841853 new StringBuilder ("https://storage.googleapis.com/" ).append (BUCKET_NAME1 ).append ("/" )
842854 .append (BLOB_NAME1 ).append ("?GoogleAccessId=" ).append (account ).append ("&Expires=" )
843- .append (60 ).append ("&Signature=" ).toString ();
855+ .append (42L + 1209600 ).append ("&Signature=" ).toString ();
844856 assertTrue (stringUrl .startsWith (expectedUrl ));
845857 String signature = stringUrl .substring (expectedUrl .length ());
846858
847859 StringBuilder signedMessageBuilder = new StringBuilder ();
848860 signedMessageBuilder .append (HttpMethod .POST ).append ('\n' ).append (BLOB_INFO1 .md5 ()).append ('\n' )
849- .append (BLOB_INFO1 .contentType ()).append ('\n' ).append (60 ).append ('\n' ). append ( "/" )
850- .append (BUCKET_NAME1 ).append ("/" ).append (BLOB_NAME1 );
861+ .append (BLOB_INFO1 .contentType ()).append ('\n' ).append (42L + 1209600 ).append ('\n' )
862+ .append ("/" ). append ( BUCKET_NAME1 ).append ("/" ).append (BLOB_NAME1 );
851863
852864 Signature signer = Signature .getInstance ("SHA256withRSA" );
853865 signer .initVerify (publicKey );
0 commit comments