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)
Beispiel #4
0
 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=')
Beispiel #8
0
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=')
Beispiel #10
0
    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=')
Beispiel #12
0
    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=')
Beispiel #14
0
 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=')
Beispiel #17
0
 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=')
Beispiel #21
0
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=')