def test_read_file_with_user_delegation_key(self): # SAS URL is calculated from storage key, so this test runs live only if TestMode.need_recording_file(self.test_mode): return # Create file file_client = self._create_file_and_return_client() data = self.get_random_bytes(1024) # Upload data to file file_client.append_data(data, 0, len(data)) file_client.flush_data(len(data)) # Get user delegation key token_credential = self.generate_oauth_token() service_client = DataLakeServiceClient(self._get_oauth_account_url(), credential=token_credential) user_delegation_key = service_client.get_user_delegation_key(datetime.utcnow(), datetime.utcnow() + timedelta(hours=1)) sas_token = generate_file_sas(file_client.account_name, file_client.file_system_name, None, file_client.path_name, user_delegation_key, permission=FileSasPermissions(read=True, create=True, write=True, delete=True), expiry=datetime.utcnow() + timedelta(hours=1), ) # doanload the data and make sure it is the same as uploaded data new_file_client = DataLakeFileClient(self._get_account_url(), file_client.file_system_name, file_client.path_name, credential=sas_token) downloaded_data = new_file_client.download_file().readall() self.assertEqual(data, downloaded_data)
def __get_validation_schema(file_client: DataLakeFileClient) -> Dict: try: file_client.get_file_properties() except ResourceNotFoundError as error: message = f'({type(error).__name__}) The expected JSON Schema does not exist: {error}' raise HTTPException(status_code=HTTPStatus.NOT_FOUND, detail=message) from error try: stream = file_client.download_file() except HttpResponseError as error: message = f'({type(error).__name__}) Schema could not be retrieved for validation: {error}' raise HTTPException(status_code=error.status_code, detail=message) from error try: schema = json.loads(stream.readall().decode()) except json.JSONDecodeError as error: message = f'({type(error).__name__}) Malformed schema JSON: {error}' raise HTTPException(status_code=HTTPStatus.INTERNAL_SERVER_ERROR, detail=message) from error return schema