def _get_shared_access_policy(self, permission): date_format = "%Y-%m-%dT%H:%M:%SZ" start = datetime.datetime.utcnow() - datetime.timedelta(minutes=1) expiry = start + datetime.timedelta(hours=1) return SharedAccessPolicy( AccessPolicy(start.strftime(date_format), expiry.strftime(date_format), permission))
def test_sign_request(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11' accss_plcy.expiry = '2011-10-12' accss_plcy.permission = 'r' sap = SharedAccessPolicy(accss_plcy) qry_str = self.sas.generate_signed_query_string('images/pic1.png', RESOURCE_BLOB, sap) permission = Permission() permission.path = '/images/pic1.png' permission.query_string = qry_str self.sas.permission_set = [permission] web_rsrc = WebResource() web_rsrc.properties[SIGNED_RESOURCE_TYPE] = RESOURCE_BLOB web_rsrc.properties[SHARED_ACCESS_PERMISSION] = 'r' web_rsrc.path = '/images/pic1.png?comp=metadata' web_rsrc.request_url = '/images/pic1.png?comp=metadata' web_rsrc = self.sas.sign_request(web_rsrc) self.assertEqual(web_rsrc.request_url, '/images/pic1.png?comp=metadata&' + self.sas._convert_query_string(qry_str))
def test_sas_signed_identifier(self): # Arrange si = SignedIdentifier() si.id = 'testid' si.access_policy.start = '2011-10-11' si.access_policy.expiry = '2018-10-12' si.access_policy.permission = QueueSharedAccessPermissions.READ identifiers = SignedIdentifiers() identifiers.signed_identifiers.append(si) resp = self.qs.set_queue_acl(self.test_queues[0], identifiers) self.qs.put_message(self.test_queues[0], 'message1') token = self.qs.generate_shared_access_signature( self.test_queues[0], SharedAccessPolicy(signed_identifier=si.id), ) # Act service = QueueService(credentials.getStorageServicesName(), sas_token=token) set_service_options(service) result = service.peek_messages(self.test_queues[0]) # Assert self.assertIsNotNone(result) self.assertEqual(1, len(result)) message = result[0] self.assertIsNotNone(message) self.assertNotEqual('', message.message_id) self.assertEqual('message1', message.message_text)
def test_generate_signature_container(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11' accss_plcy.expiry = '2011-10-12' accss_plcy.permission = 'r' signed_identifier = 'YWJjZGVmZw==' sap = SharedAccessPolicy(accss_plcy, signed_identifier) signature = self.sas._generate_signature('images', sap, X_MS_VERSION, None, None, None, None, None) self.assertEqual(signature, 'Md+SHy9BQNucdHnmDOEwlAkIWU5YxwlTq6gA9yJKE6w=')
def test_generate_signature_container(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11' accss_plcy.expiry = '2011-10-12' accss_plcy.permission = 'r' signed_identifier = 'YWJjZGVmZw==' sap = SharedAccessPolicy(accss_plcy, signed_identifier) signature = self.sas._generate_signature('images', RESOURCE_CONTAINER, sap) self.assertEqual(signature, 'VdlALM4TYEYYNf94Bvt3dn48TsA01wk45ltwP3zeKp4=')
def test_generate_signature_blob(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11T11:03:40Z' accss_plcy.expiry = '2011-10-12T11:53:40Z' accss_plcy.permission = 'r' sap = SharedAccessPolicy(accss_plcy) signature = self.sas._generate_signature('images/pic1.png', RESOURCE_BLOB, sap) self.assertEqual(signature, '7NIEip+VOrQ5ZV80pORPK1MOsJc62wwCNcbMvE+lQ0s=')
def test_generate_signature_blob(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11T11:03:40Z' accss_plcy.expiry = '2011-10-12T11:53:40Z' accss_plcy.permission = 'r' sap = SharedAccessPolicy(accss_plcy) signature = self.sas._generate_signature('images/pic1.png', sap, X_MS_VERSION) self.assertEqual(signature, 'ju4tX0G79vPxMOkBb7UfNVEgrj9+ZnSMutpUemVYHLY=')
def copyBlobToBlob(sourceUrl, sourceKey, destUrl, destKey): blobservice = BlobService(destUrl, destkey) srcblobservice = BlobService(SourceUrl, srckey) today = datetime.datetime.utcnow() todayPlusMonth = today + datetime.timedelta(1) todayPlusMonthISO = todayPlusMonth.replace(microsecond=0).isoformat() + 'Z' srcSasParam = srcblobservice.generate_shared_access_signature(container, filename, SharedAccessPolicy(AccessPolicy(None, todayPlusMonthISO, "r"), None)) srcUrl = srcblobservice.make_blob_url(container, filename, sas_token=srcSasParam) print srcUrl blobservice.copy_blob(container, filename, srcUrl)
def test_generate_signature_container(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11' accss_plcy.expiry = '2011-10-12' accss_plcy.permission = 'r' signed_identifier = 'YWJjZGVmZw==' sap = SharedAccessPolicy(accss_plcy, signed_identifier) signature = self.sas._generate_signature('images', sap, X_MS_VERSION) self.assertEqual(signature, '1AWckmWSNrNCjh9krPXoD4exAgZWQQr38gG6z/ymkhQ=')
def url(self, name): ap = AccessPolicy(expiry=(timezone.datetime.utcnow() + timezone.timedelta(seconds=600)).strftime('%Y-%m-%dT%H:%M:%SZ'), \ start=(timezone.datetime.utcnow() + timezone.timedelta(seconds=-600)).strftime('%Y-%m-%dT%H:%M:%SZ'), \ permission='r') sap = SharedAccessPolicy(ap) sas = SharedAccessSignature(self.account_name, self.account_key) url = sas.generate_signed_query_string(path=self.azure_container + '/' + name, resource_type='b', shared_access_policy=sap) return self.connection.make_blob_url(self.azure_container, name) + "?" + url
def test_generate_signed_query_dict_container_with_signed_identifier(self): signed_identifier = 'YWJjZGVmZw==' query = self.sas._generate_signed_query_dict( 'images', ResourceType.RESOURCE_CONTAINER, SharedAccessPolicy(signed_identifier=signed_identifier), ) self.assertEqual(query[QueryStringConstants.SIGNED_RESOURCE], ResourceType.RESOURCE_CONTAINER) self.assertEqual(query[QueryStringConstants.SIGNED_IDENTIFIER], signed_identifier) self.assertEqual(query[QueryStringConstants.SIGNED_SIGNATURE], 'BbzpLHe+JxNAsW/v6LttP5x9DdGMvXsZpm2chKblr3s=')
def test_generate_signature_blob(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11T11:03:40Z' accss_plcy.expiry = '2011-10-12T11:53:40Z' accss_plcy.permission = 'r' sap = SharedAccessPolicy(accss_plcy) signature = self.sas._generate_signature('images/pic1.png', sap, X_MS_VERSION, None, 'file; attachment', None, None, 'binary') self.assertEqual(signature, 'uHckUC6T+BwUsc+DgrreyIS1k6au7uUd7LSSs/z+/+w=')
def test_blob_signed_query_string(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11' accss_plcy.expiry = '2011-10-12' accss_plcy.permission = 'w' sap = SharedAccessPolicy(accss_plcy) qry_str = self.sas.generate_signed_query_string( 'images/pic1.png', RESOURCE_BLOB, sap) self.assertEqual(qry_str[SIGNED_START], '2011-10-11') self.assertEqual(qry_str[SIGNED_EXPIRY], '2011-10-12') self.assertEqual(qry_str[SIGNED_RESOURCE], RESOURCE_BLOB) self.assertEqual(qry_str[SIGNED_PERMISSION], 'w') self.assertEqual(qry_str[SIGNED_SIGNATURE], 'k8uyTrn3pgLXuhwgZhxeAH6mZ/es9k2vqHPJEuIH4CE=')
def test_blob_signed_query_string(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11' accss_plcy.expiry = '2011-10-12' accss_plcy.permission = 'w' sap = SharedAccessPolicy(accss_plcy) qry_str = self.sas.generate_signed_query_string( 'images/pic1.png', RESOURCE_BLOB, sap) self.assertEqual(qry_str[SIGNED_START], '2011-10-11') self.assertEqual(qry_str[SIGNED_EXPIRY], '2011-10-12') self.assertEqual(qry_str[SIGNED_RESOURCE], RESOURCE_BLOB) self.assertEqual(qry_str[SIGNED_PERMISSION], 'w') self.assertEqual(qry_str[SIGNED_SIGNATURE], 'Fqt8tNcyUOp30qYRtSFNcImrRMcxlk6IF17O4l96KT8=')
def test_blob_signed_query_string(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11' accss_plcy.expiry = '2011-10-12' accss_plcy.permission = 'w' sap = SharedAccessPolicy(accss_plcy) qry_str = self.sas.generate_signed_query_string('images/pic1.png', RESOURCE_BLOB, sap) self.assertEqual(qry_str[SIGNED_START], '2011-10-11') self.assertEqual(qry_str[SIGNED_EXPIRY], '2011-10-12') self.assertEqual(qry_str[SIGNED_RESOURCE], RESOURCE_BLOB) self.assertEqual(qry_str[SIGNED_PERMISSION], 'w') self.assertEqual(qry_str[SIGNED_SIGNATURE], '8I8E8TImfR2TIAcMDq8rF+IhhYyvowXpxSfF1kxnWLQ=')
def test_container_signed_query_string(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11' accss_plcy.expiry = '2011-10-12' accss_plcy.permission = 'r' signed_identifier = 'YWJjZGVmZw==' sap = SharedAccessPolicy(accss_plcy, signed_identifier) qry_str = self.sas.generate_signed_query_string( 'images', RESOURCE_CONTAINER, sap) self.assertEqual(qry_str[SIGNED_START], '2011-10-11') self.assertEqual(qry_str[SIGNED_EXPIRY], '2011-10-12') self.assertEqual(qry_str[SIGNED_RESOURCE], RESOURCE_CONTAINER) self.assertEqual(qry_str[SIGNED_PERMISSION], 'r') self.assertEqual(qry_str[SIGNED_IDENTIFIER], 'YWJjZGVmZw==') self.assertEqual(qry_str[SIGNED_SIGNATURE], 'VdlALM4TYEYYNf94Bvt3dn48TsA01wk45ltwP3zeKp4=')
def test_container_signed_query_string(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11' accss_plcy.expiry = '2011-10-12' accss_plcy.permission = 'r' signed_identifier = 'YWJjZGVmZw==' sap = SharedAccessPolicy(accss_plcy, signed_identifier) qry_str = self.sas.generate_signed_query_string( 'images', RESOURCE_CONTAINER, sap) self.assertEqual(qry_str[SIGNED_START], '2011-10-11') self.assertEqual(qry_str[SIGNED_EXPIRY], '2011-10-12') self.assertEqual(qry_str[SIGNED_RESOURCE], RESOURCE_CONTAINER) self.assertEqual(qry_str[SIGNED_PERMISSION], 'r') self.assertEqual(qry_str[SIGNED_IDENTIFIER], 'YWJjZGVmZw==') self.assertEqual(qry_str[SIGNED_SIGNATURE], 'Md+SHy9BQNucdHnmDOEwlAkIWU5YxwlTq6gA9yJKE6w=')
def test_container_signed_query_string(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11' accss_plcy.expiry = '2011-10-12' accss_plcy.permission = 'r' signed_identifier = 'YWJjZGVmZw==' sap = SharedAccessPolicy(accss_plcy, signed_identifier) qry_str = self.sas.generate_signed_query_string('images', RESOURCE_CONTAINER, sap) self.assertEqual(qry_str[SIGNED_START], '2011-10-11') self.assertEqual(qry_str[SIGNED_EXPIRY], '2011-10-12') self.assertEqual(qry_str[SIGNED_RESOURCE], RESOURCE_CONTAINER) self.assertEqual(qry_str[SIGNED_PERMISSION], 'r') self.assertEqual(qry_str[SIGNED_IDENTIFIER], 'YWJjZGVmZw==') self.assertEqual(qry_str[SIGNED_SIGNATURE], '1AWckmWSNrNCjh9krPXoD4exAgZWQQr38gG6z/ymkhQ=')
def test_generate_signed_query_dict_blob_with_access_policy(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11' accss_plcy.expiry = '2011-10-12' accss_plcy.permission = 'w' query = self.sas._generate_signed_query_dict( 'images/pic1.png', ResourceType.RESOURCE_BLOB, SharedAccessPolicy(accss_plcy), ) self.assertEqual(query[QueryStringConstants.SIGNED_START], '2011-10-11') self.assertEqual(query[QueryStringConstants.SIGNED_EXPIRY], '2011-10-12') self.assertEqual(query[QueryStringConstants.SIGNED_RESOURCE], ResourceType.RESOURCE_BLOB) self.assertEqual(query[QueryStringConstants.SIGNED_PERMISSION], 'w') self.assertEqual(query[QueryStringConstants.SIGNED_SIGNATURE], 'Fqt8tNcyUOp30qYRtSFNcImrRMcxlk6IF17O4l96KT8=')
def test_generate_signed_query_dict_container_with_access_policy(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11' accss_plcy.expiry = '2011-10-12' accss_plcy.permission = 'r' query = self.sas._generate_signed_query_dict( 'images', ResourceType.RESOURCE_CONTAINER, SharedAccessPolicy(accss_plcy), ) self.assertEqual(query[QueryStringConstants.SIGNED_START], '2011-10-11') self.assertEqual(query[QueryStringConstants.SIGNED_EXPIRY], '2011-10-12') self.assertEqual(query[QueryStringConstants.SIGNED_RESOURCE], ResourceType.RESOURCE_CONTAINER) self.assertEqual(query[QueryStringConstants.SIGNED_PERMISSION], 'r') self.assertEqual(query[QueryStringConstants.SIGNED_SIGNATURE], 'CxLWN56cjXidpI9em7RDgSN2QIgLggTqrnzudH2XsOY=')
def sasUrl(account, key, container, permission): start = datetime.utcnow() expiry = start + timedelta(hours=24) accss_plcy = AccessPolicy() accss_plcy.start = start.strftime('%Y-%m-%dT%H:%M:%SZ') accss_plcy.expiry = expiry.strftime('%Y-%m-%dT%H:%M:%SZ') accss_plcy.permission = permission sas = SharedAccessSignature(account_name=account, account_key=key) query = sas.generate_signed_query_string( container, ResourceType.RESOURCE_CONTAINER, SharedAccessPolicy(accss_plcy), ) return query
def test_generate_signed_query_dict_blob_with_access_policy_and_headers(self): accss_plcy = AccessPolicy() accss_plcy.start = '2011-10-11T11:03:40Z' accss_plcy.expiry = '2011-10-12T11:53:40Z' accss_plcy.permission = 'r' query = self.sas._generate_signed_query_dict( 'images/pic1.png', ResourceType.RESOURCE_BLOB, SharedAccessPolicy(accss_plcy), content_disposition='file; attachment', content_type='binary', ) self.assertEqual(query[QueryStringConstants.SIGNED_START], '2011-10-11T11:03:40Z') self.assertEqual(query[QueryStringConstants.SIGNED_EXPIRY], '2011-10-12T11:53:40Z') self.assertEqual(query[QueryStringConstants.SIGNED_RESOURCE], ResourceType.RESOURCE_BLOB) self.assertEqual(query[QueryStringConstants.SIGNED_PERMISSION], 'r') self.assertEqual(query[QueryStringConstants.SIGNED_CONTENT_DISPOSITION], 'file; attachment') self.assertEqual(query[QueryStringConstants.SIGNED_CONTENT_TYPE], 'binary') self.assertEqual(query[QueryStringConstants.SIGNED_SIGNATURE], 'uHckUC6T+BwUsc+DgrreyIS1k6au7uUd7LSSs/z+/+w=')