public async Task GetFileSystemsAsync_MaxResults() { DataLakeServiceClient service = GetServiceClient_SharedKey(); // Ensure at least one container await GetNewFileSystem(service : service); await using DisposingFileSystem test = await GetNewFileSystem(service : service); // Act Page <FileSystemItem> page = await service.GetFileSystemsAsync() .AsPages(pageSizeHint: 1) .FirstAsync(); // Assert Assert.AreEqual(1, page.Values.Count()); }
public async Task GetFileSystemsAsync_Prefix() { DataLakeServiceClient service = GetServiceClient_SharedKey(); var prefix = "aaa"; var fileSystemName = prefix + GetNewFileSystemName(); // Ensure at least one container await using DisposingFileSystem test = await GetNewFileSystem(service : service, fileSystemName : fileSystemName); // Act AsyncPageable <FileSystemItem> fileSystems = service.GetFileSystemsAsync(prefix: prefix); IList <FileSystemItem> items = await fileSystems.ToListAsync(); // Assert Assert.AreNotEqual(0, items.Count()); Assert.IsTrue(items.All(c => c.Name.StartsWith(prefix))); Assert.IsNotNull(items.Single(c => c.Name == fileSystemName)); }
public async Task AccountPermissionsRawPermissions_InvalidPermission() { // Arrange await using DisposingFileSystem test = await GetNewFileSystem(); AccountSasBuilder accountSasBuilder = new AccountSasBuilder { StartsOn = Recording.UtcNow.AddHours(-1), ExpiresOn = Recording.UtcNow.AddHours(1), Services = AccountSasServices.Blobs, ResourceTypes = AccountSasResourceTypes.All }; // Act TestHelper.AssertExpectedException( () => accountSasBuilder.SetPermissions("werteyfg"), new ArgumentException("e is not a valid SAS permission")); }
public async Task GetFileSystemsAsync_Metadata() { DataLakeServiceClient service = GetServiceClient_SharedKey(); // Ensure at least one container await using DisposingFileSystem test = await GetNewFileSystem(service : service); // Arrange IDictionary <string, string> metadata = BuildMetadata(); await test.FileSystem.SetMetadataAsync(metadata); // Act IList <FileSystemItem> items = await service.GetFileSystemsAsync(FileSystemTraits.Metadata).ToListAsync(); // Assert AssertDictionaryEquality( metadata, items.Where(i => i.Name == test.FileSystem.Name).FirstOrDefault().Properties.Metadata); }
public async Task GetFileSystemsAsync_Marker() { DataLakeServiceClient service = GetServiceClient_SharedKey(); // Ensure at least one container await using DisposingFileSystem test = await GetNewFileSystem(service : service); var marker = default(string); var fileSystems = new List <FileSystemItem>(); await foreach (Page <FileSystemItem> page in service.GetFileSystemsAsync().AsPages(marker)) { fileSystems.AddRange(page.Values); } Assert.AreNotEqual(0, fileSystems.Count); Assert.AreEqual(fileSystems.Count, fileSystems.Select(c => c.Name).Distinct().Count()); Assert.IsTrue(fileSystems.Any(c => test.FileSystem.Uri == InstrumentClient(service.GetFileSystemClient(c.Name)).Uri)); }
public async Task FileSystemPermissionsRawPermissions_Invalid() { // Arrange await using DisposingFileSystem test = await GetNewFileSystem(); BlobSasBuilder blobSasBuilder = new BlobSasBuilder { StartsOn = Recording.UtcNow.AddHours(-1), ExpiresOn = Recording.UtcNow.AddHours(1), BlobContainerName = test.FileSystem.Name }; // Act TestHelper.AssertExpectedException( () => blobSasBuilder.SetPermissions( rawPermissions: "ptsdfsd", normalize: true), new ArgumentException("s is not a valid SAS permission")); }
public async Task DataLakeSasBuilder_DirectoryDepth_Exists() { // Arrange DataLakeServiceClient oauthService = GetServiceClient_OAuth(); string fileSystemName = GetNewFileSystemName(); await using DisposingFileSystem test = await GetNewFileSystem(service : oauthService, fileSystemName : fileSystemName); DataLakeDirectoryClient directory = await test.FileSystem.CreateDirectoryAsync(GetNewDirectoryName()); DataLakeDirectoryClient subdirectory = await directory.CreateSubDirectoryAsync(GetNewDirectoryName()); DataLakeDirectoryClient subdirectory2 = await subdirectory.CreateSubDirectoryAsync(GetNewDirectoryName()); DataLakeDirectoryClient subdirectory3 = await subdirectory2.CreateSubDirectoryAsync(GetNewDirectoryName()); DataLakeFileClient file = await subdirectory3.CreateFileAsync(GetNewFileName()); Response <UserDelegationKey> userDelegationKey = await oauthService.GetUserDelegationKeyAsync( startsOn : null, expiresOn : Recording.UtcNow.AddHours(1)); DataLakeSasBuilder dataLakeSasBuilder = new DataLakeSasBuilder { StartsOn = Recording.UtcNow.AddHours(-1), ExpiresOn = Recording.UtcNow.AddHours(1), FileSystemName = test.FileSystem.Name, Path = subdirectory3.Path, IsDirectory = true }; dataLakeSasBuilder.SetPermissions(DataLakeSasPermissions.All); DataLakeUriBuilder dataLakeUriBuilder = new DataLakeUriBuilder(subdirectory3.Uri) { Sas = dataLakeSasBuilder.ToSasQueryParameters(userDelegationKey, test.FileSystem.AccountName) }; DataLakeDirectoryClient sasDirectoryClient = InstrumentClient(new DataLakeDirectoryClient(dataLakeUriBuilder.ToUri(), GetOptions())); // Act await sasDirectoryClient.ExistsAsync(); }
public async Task DataLakeSasBuilderRawPermissions_2020_02_10(string permissionsString) { // Arrange DataLakeServiceClient oauthService = GetServiceClient_OAuth(); string fileSystemName = GetNewFileSystemName(); string directoryName = GetNewDirectoryName(); await using DisposingFileSystem test = await GetNewFileSystem(service : oauthService, fileSystemName : fileSystemName); // Arrange DataLakeDirectoryClient directory = await test.FileSystem.CreateDirectoryAsync(directoryName); DataLakeFileClient file = await directory.CreateFileAsync(GetNewFileName()); Response <UserDelegationKey> userDelegationKey = await oauthService.GetUserDelegationKeyAsync( startsOn : null, expiresOn : Recording.UtcNow.AddHours(1)); DataLakeSasBuilder dataLakeSasBuilder = new DataLakeSasBuilder { StartsOn = Recording.UtcNow.AddHours(-1), ExpiresOn = Recording.UtcNow.AddHours(1), FileSystemName = test.FileSystem.Name }; dataLakeSasBuilder.SetPermissions( rawPermissions: permissionsString, normalize: true); DataLakeUriBuilder dataLakeUriBuilder = new DataLakeUriBuilder(test.FileSystem.Uri) { Sas = dataLakeSasBuilder.ToSasQueryParameters(userDelegationKey, test.FileSystem.AccountName) }; DataLakeFileSystemClient sasFileSystemClient = InstrumentClient(new DataLakeFileSystemClient(dataLakeUriBuilder.ToUri(), GetOptions())); // Act await foreach (PathItem pathItem in sasFileSystemClient.GetPathsAsync()) { // Just make sure the call succeeds. } }
public async Task Ctor_ConnectionString_RoundTrip() { // Arrange string fileSystemName = GetNewFileSystemName(); string path = GetNewDirectoryName(); await using DisposingFileSystem test = await GetNewFileSystem(fileSystemName : fileSystemName); DataLakeDirectoryClient directoryClient = InstrumentClient(test.FileSystem.GetDirectoryClient(path)); await directoryClient.CreateAsync(); // Act string connectionString = $"DefaultEndpointsProtocol=https;AccountName={TestConfigHierarchicalNamespace.AccountName};AccountKey={TestConfigHierarchicalNamespace.AccountKey};EndpointSuffix=core.windows.net"; DataLakePathClient connStringDirectory = InstrumentClient(new DataLakePathClient(connectionString, fileSystemName, path, GetOptions())); // Assert await connStringDirectory.GetPropertiesAsync(); await connStringDirectory.GetAccessControlAsync(); }
public async Task DataLakeSasBuilder_DirectoryDepth_SharedKey() { // Arrange DataLakeServiceClient oauthService = GetServiceClient_OAuth(); string fileSystemName = GetNewFileSystemName(); await using DisposingFileSystem test = await GetNewFileSystem(service : oauthService, fileSystemName : fileSystemName); DataLakeDirectoryClient directory = await test.FileSystem.CreateDirectoryAsync(GetNewDirectoryName()); DataLakeDirectoryClient subdirectory = await directory.CreateSubDirectoryAsync(GetNewDirectoryName()); DataLakeDirectoryClient subdirectory2 = await subdirectory.CreateSubDirectoryAsync(GetNewDirectoryName()); DataLakeDirectoryClient subdirectory3 = await subdirectory2.CreateSubDirectoryAsync(GetNewDirectoryName()); DataLakeFileClient file = await subdirectory3.CreateFileAsync(GetNewFileName()); DataLakeSasBuilder dataLakeSasBuilder = new DataLakeSasBuilder { StartsOn = Recording.UtcNow.AddHours(-1), ExpiresOn = Recording.UtcNow.AddHours(1), FileSystemName = test.FileSystem.Name, Path = subdirectory3.Path, IsDirectory = true }; dataLakeSasBuilder.SetPermissions(DataLakeSasPermissions.All); StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(TestConfigHierarchicalNamespace.AccountName, TestConfigHierarchicalNamespace.AccountKey); DataLakeUriBuilder dataLakeUriBuilder = new DataLakeUriBuilder(subdirectory3.Uri) { Sas = dataLakeSasBuilder.ToSasQueryParameters(sharedKeyCredential) }; DataLakeDirectoryClient sasDirectoryClient = InstrumentClient(new DataLakeDirectoryClient(dataLakeUriBuilder.ToUri(), GetOptions())); // Act await sasDirectoryClient.ExistsAsync(); }
public async Task Ctor_TokenCredential() { string fileSystemName = GetNewFileSystemName(); await using DisposingFileSystem test = await GetNewFileSystem(fileSystemName : fileSystemName); // Arrange string directoryName = GetNewDirectoryName(); await test.FileSystem.CreateDirectoryAsync(directoryName); TokenCredential tokenCredential = GetOAuthCredential(TestConfigHierarchicalNamespace); Uri uri = new Uri($"{TestConfigHierarchicalNamespace.BlobServiceEndpoint}/{fileSystemName}/{directoryName}").ToHttps(); DataLakePathClient pathClient = InstrumentClient(new DataLakePathClient(uri, tokenCredential, GetOptions())); // Act await pathClient.GetPropertiesAsync(); // Assert Assert.AreEqual(fileSystemName, pathClient.FileSystemName); Assert.AreEqual(uri, pathClient.Uri); }
public async Task Ctor_Uri() { string fileSystemName = GetNewFileSystemName(); await using DisposingFileSystem test = await GetNewFileSystem(fileSystemName : fileSystemName); // Arrange string directoryName = GetNewDirectoryName(); await test.FileSystem.CreateDirectoryAsync(directoryName); SasQueryParameters sasQueryParameters = GetNewAccountSasCredentials(); Uri uri = new Uri($"{TestConfigHierarchicalNamespace.BlobServiceEndpoint}/{fileSystemName}/{directoryName}?{sasQueryParameters}"); DataLakePathClient pathClient = InstrumentClient(new DataLakePathClient(uri, GetOptions())); // Act await pathClient.GetPropertiesAsync(); // Assert Assert.AreEqual(fileSystemName, pathClient.FileSystemName); Assert.AreEqual(uri, pathClient.Uri); }
public async Task DataLakeSasBuilder_AgentObjectId_Error() { // Arrange DataLakeServiceClient oauthService = GetServiceClient_OAuth(); string fileSystemName = GetNewFileSystemName(); string directoryName = GetNewDirectoryName(); await using DisposingFileSystem test = await GetNewFileSystem(service : oauthService, fileSystemName : fileSystemName); // Arrange DataLakeDirectoryClient directory = await test.FileSystem.CreateDirectoryAsync(directoryName); DataLakeFileClient file = await directory.CreateFileAsync(GetNewFileName()); Response <UserDelegationKey> userDelegationKey = await oauthService.GetUserDelegationKeyAsync( startsOn : null, expiresOn : Recording.UtcNow.AddHours(1)); DataLakeSasBuilder dataLakeSasBuilder = new DataLakeSasBuilder { StartsOn = Recording.UtcNow.AddHours(-1), ExpiresOn = Recording.UtcNow.AddHours(1), FileSystemName = test.FileSystem.Name, AgentObjectId = Recording.Random.NewGuid().ToString() }; dataLakeSasBuilder.SetPermissions(DataLakeSasPermissions.All); DataLakeUriBuilder dataLakeUriBuilder = new DataLakeUriBuilder(test.FileSystem.Uri) { Sas = dataLakeSasBuilder.ToSasQueryParameters(userDelegationKey, test.FileSystem.AccountName) }; DataLakeFileSystemClient sasFileSystemClient = InstrumentClient(new DataLakeFileSystemClient(dataLakeUriBuilder.ToUri(), GetOptions())); // Act await TestHelper.AssertExpectedExceptionAsync <RequestFailedException>( sasFileSystemClient.ExistsAsync(), e => Assert.IsNotNull(e.ErrorCode)); }
public async Task Ctor_ConnectionString_GenerateSas() { // Arrange string fileSystemName = GetNewFileSystemName(); string path = GetNewDirectoryName(); await using DisposingFileSystem test = await GetNewFileSystem(fileSystemName : fileSystemName); DataLakeDirectoryClient directoryClient = InstrumentClient(test.FileSystem.GetDirectoryClient(path)); await directoryClient.CreateAsync(); // Act string connectionString = $"DefaultEndpointsProtocol=https;AccountName={TestConfigHierarchicalNamespace.AccountName};AccountKey={TestConfigHierarchicalNamespace.AccountKey};BlobEndpoint={TestConfigHierarchicalNamespace.BlobServiceEndpoint};FileEndpoint={TestConfigHierarchicalNamespace.FileServiceEndpoint};QueueEndpoint={TestConfigHierarchicalNamespace.QueueServiceEndpoint};TableEndpoint={TestConfigHierarchicalNamespace.TableServiceEndpoint}"; DataLakePathClient connStringDirectory = InstrumentClient(new DataLakePathClient(connectionString, fileSystemName, path, GetOptions())); Uri sasUri = connStringDirectory.GenerateSasUri(DataLakeSasPermissions.All, Recording.UtcNow.AddDays(1)); DataLakePathClient sasPathClient = InstrumentClient(new DataLakePathClient(sasUri, GetOptions())); // Assert await sasPathClient.GetPropertiesAsync(); await sasPathClient.GetAccessControlAsync(); }
public async Task PathClient_CanGetParentContainerClient_WithContainerSAS() { // Arrange await using DisposingFileSystem test = await DataLakeClientBuilder.GetNewFileSystem(); var fileName = DataLakeClientBuilder.GetNewFileName(); DataLakeFileClient fileClient = InstrumentClient( GetServiceClient_DataLakeServiceSas_FileSystem(test.Container.Name) .GetFileSystemClient(test.FileSystem.Name) .GetRootDirectoryClient() .GetFileClient(fileName)); // Act var fileSystemClient = fileClient.GetParentFileSystemClient(); // make sure that client is functional var pathItems = await fileSystemClient.GetPathsAsync().ToListAsync(); // Assert Assert.AreEqual(fileClient.FileSystemName, fileSystemClient.Name); Assert.AreEqual(fileClient.AccountName, fileSystemClient.AccountName); Assert.IsNotNull(pathItems); }
public async Task PathClient_CanGetParentDirectoryClient() { // Arrange var parentDirName = DataLakeClientBuilder.GetNewDirectoryName(); await using DisposingFileSystem test = await DataLakeClientBuilder.GetNewFileSystem(); DataLakeFileClient fileClient = InstrumentClient(test.Container .GetRootDirectoryClient() .GetSubDirectoryClient(parentDirName) .GetFileClient(DataLakeClientBuilder.GetNewFileName())); await fileClient.CreateAsync(); // Act DataLakeDirectoryClient parentDirClient = fileClient.GetParentDirectoryClient(); // make sure that client is functional var dirProperties = await parentDirClient.GetPropertiesAsync(); // Assert Assert.AreEqual(fileClient.Path.GetParentPath(), parentDirClient.Path); Assert.AreEqual(fileClient.AccountName, parentDirClient.AccountName); Assert.IsNotNull(dirProperties); }
public async Task Ctor_SharedKey() { string fileSystemName = GetNewFileSystemName(); await using DisposingFileSystem test = await GetNewFileSystem(fileSystemName : fileSystemName); // Arrange string directoryName = GetNewDirectoryName(); await test.FileSystem.CreateDirectoryAsync(directoryName); StorageSharedKeyCredential sharedKey = new StorageSharedKeyCredential( TestConfigHierarchicalNamespace.AccountName, TestConfigHierarchicalNamespace.AccountKey); Uri uri = new Uri($"{TestConfigHierarchicalNamespace.BlobServiceEndpoint}/{fileSystemName}/{directoryName}"); DataLakePathClient pathClient = InstrumentClient(new DataLakePathClient(uri, sharedKey, GetOptions())); // Act await pathClient.GetPropertiesAsync(); // Assert Assert.AreEqual(fileSystemName, pathClient.FileSystemName); Assert.AreEqual(uri, pathClient.Uri); }