async def _test_using_directory_sas_to_read(self):
        # SAS URL is calculated from storage key, so this test runs live only
        if TestMode.need_recording_file(self.test_mode):
            return

        client = await self._create_directory_and_get_directory_client()
        directory_name = client.path_name

        # generate a token with directory level read permission
        token = generate_directory_sas(
            self.dsc.account_name,
            self.file_system_name,
            directory_name,
            self.dsc.credential.account_key,
            permission=DirectorySasPermissions(read=True),
            expiry=datetime.utcnow() + timedelta(hours=1),
        )

        directory_client = DataLakeDirectoryClient(self.dsc.url,
                                                   self.file_system_name,
                                                   directory_name,
                                                   credential=token)
        access_control = await directory_client.get_access_control()

        self.assertIsNotNone(access_control)
Пример #2
0
    def test_upload_download_data(self):
        registered_path = "demo-folder-allowed"
        invalid_path = "demo-folder-restricted"

        print("\nGenerating SAS for directory: {}".format(registered_path))

        # generate a token for a directory with all permissions
        token = generate_directory_sas(
            self.ACCOUNT_NAME,
            self.STORAGE_FILESYSTEM,
            registered_path,
            self.ACCOUNT_KEY,
            permission=FileSystemSasPermissions(read=True,write=True,delete=True,list=True),
            expiry=datetime.utcnow() + timedelta(hours=1),
        )

        # Try with a path that matches the SAS token
        try:
            self.inner_transfer(registered_path, token)
        except:
            print("Upload failed.")

        # Try with a path that doesnt match the SAS token. Should fail!
        try:
            self.inner_transfer(invalid_path, token)
        except:
            print("Upload failed.")   
Пример #3
0
    async def _test_rename_dir_with_file_sas(self):
        # TODO: service bug??
        pytest.skip("service bug?")
        token = generate_directory_sas(
            self.dsc.account_name,
            self.file_system_name,
            "olddir",
            self.settings.STORAGE_DATA_LAKE_ACCOUNT_KEY,
            permission=DirectorySasPermissions(read=True,
                                               create=True,
                                               write=True,
                                               delete=True),
            expiry=datetime.utcnow() + timedelta(hours=1),
        )

        new_token = generate_directory_sas(
            self.dsc.account_name,
            self.file_system_name,
            "newdir",
            self.settings.STORAGE_DATA_LAKE_ACCOUNT_KEY,
            permission=DirectorySasPermissions(read=True,
                                               create=True,
                                               write=True,
                                               delete=True),
            expiry=datetime.utcnow() + timedelta(hours=1),
        )

        # read the created file which is under root directory
        dir_client = DataLakeDirectoryClient(self.dsc.url,
                                             self.file_system_name,
                                             "olddir",
                                             credential=token)
        await dir_client.create_directory()
        new_client = await dir_client.rename_directory(
            dir_client.file_system_name + '/' + 'newdir' + '?' + new_token)

        properties = await new_client.get_directory_properties()
        self.assertEqual(properties.name, "newdir")
    async def _test_using_directory_sas_to_create(self):
        # SAS URL is calculated from storage key, so this test runs live only
        if TestMode.need_recording_file(self.test_mode):
            return

        # generate a token with directory level create permission
        directory_name = self._get_directory_reference()
        token = generate_directory_sas(
            self.dsc.account_name,
            self.file_system_name,
            directory_name,
            self.dsc.credential.account_key,
            permission=DirectorySasPermissions(create=True),
            expiry=datetime.utcnow() + timedelta(hours=1),
        )
        directory_client = DataLakeDirectoryClient(self.dsc.url, self.file_system_name, directory_name,
                                                   credential=token)
        response = await directory_client.create_directory()
        self.assertIsNotNone(response)
Пример #5
0
    def test_using_directory_sas_to_read(self):
        storage_directory = "demo-folder-allowed"

        print("\nGenerating SAS for directory: {}".format(storage_directory))
        
        print("\nReading contents...")

        # generate a token for a directory with all permissions
        token = generate_directory_sas(
            self.ACCOUNT_NAME,
            self.STORAGE_FILESYSTEM,
            storage_directory,
            self.ACCOUNT_KEY,
            permission=FileSystemSasPermissions(read=True,write=True,delete=True,list=True),
            expiry=datetime.utcnow() + timedelta(hours=1),
        )

        service_client = DataLakeServiceClient(self.STORAGE_URL, credential=token)
        file_system_client = service_client.get_file_system_client(self.STORAGE_FILESYSTEM)
        paths = list(file_system_client.get_paths(storage_directory))
        
        for p in paths:
            print(p.name)