@@ -421,6 +421,61 @@ def test_auth_query_with_additional_headers(self) -> None:
421421 self .assertEqual ('abc%3Bzabc' , queries .get (
422422 'x-oss-additional-headers' , '' ))
423423
424+ def test_auth_query_long_expiration (self ) -> None :
425+ provider = StaticCredentialsProvider ("ak" , "sk" )
426+ cred = provider .get_credentials ()
427+ request = HttpRequest (
428+ "PUT" , "http://bucket.oss-cn-hangzhou.aliyuncs.com" )
429+ request .headers .update (
430+ {
431+ 'x-oss-head1' : 'value' ,
432+ 'abc' : 'value' ,
433+ 'ZAbc' : 'value' ,
434+ 'XYZ' : 'value' ,
435+ 'content-type' : 'application/octet-stream' ,
436+ }
437+ )
438+
439+ context = SigningContext (
440+ bucket = 'bucket' ,
441+ key = '1234+-/123/1.txt' ,
442+ request = request ,
443+ credentials = cred ,
444+ product = 'oss' ,
445+ region = 'cn-hangzhou' ,
446+ signing_time = datetime .datetime .fromtimestamp (1702781677 ),
447+ )
448+ context .expiration_time = datetime .datetime .fromtimestamp (1702781677 + 5 * 24 * 60 * 60 )
449+ context .auth_method_query = True
450+
451+ parameters = {
452+ 'param1' : 'value1' ,
453+ '+param1' : 'value3' ,
454+ '|param1' : 'value4' ,
455+ '+param2' : '' ,
456+ '|param2' : '' ,
457+ 'param2' : '' ,
458+ }
459+ query = urlencode (parameters , quote_via = quote )
460+
461+ request .url = request .url + "?" + query
462+
463+ signer = SignerV4 ()
464+
465+ signer .sign (context )
466+
467+ queries = _get_url_query (request .url )
468+
469+ self .assertEqual ('OSS4-HMAC-SHA256' ,
470+ queries .get ('x-oss-signature-version' ))
471+ self .assertEqual ('432000' , queries .get ('x-oss-expires' ))
472+ self .assertEqual (
473+ 'ak%2F20231217%2Fcn-hangzhou%2Foss%2Faliyun_v4_request' ,
474+ queries .get ('x-oss-credential' ))
475+ self .assertEqual (
476+ '31029123dc7732d2d2cfd4006ea4fdb6cf86da6478f813e2bf8f87877c7b9fec' ,
477+ queries .get ('x-oss-signature' ))
478+ self .assertEqual ('' , queries .get ('x-oss-additional-headers' , '' ))
424479
425480def _get_url_query (url : str ):
426481 encoded_pairs = {}
0 commit comments