public async Task DataLakeSasBuilder_PreauthorizedAgentObjectId() { // 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, PreauthorizedAgentObjectId = 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 foreach (PathItem pathItem in sasFileSystemClient.GetPathsAsync()) { // Just make sure the call succeeds. } }
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 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 void DataLakeUriBuilder_AccountTest() { // Arrange var uriString = "https://account.blob.core.windows.net/fileSystem/path"; var originalUri = new UriBuilder(uriString); // Act var dataLakeUriBuilder = new DataLakeUriBuilder(originalUri.Uri); Uri newUri = dataLakeUriBuilder.ToUri(); // Assert Assert.AreEqual("https", dataLakeUriBuilder.Scheme); Assert.AreEqual("account.blob.core.windows.net", dataLakeUriBuilder.Host); Assert.AreEqual("account", dataLakeUriBuilder.AccountName); Assert.AreEqual(443, dataLakeUriBuilder.Port); Assert.AreEqual("fileSystem", dataLakeUriBuilder.FileSystemName); Assert.AreEqual("path", dataLakeUriBuilder.LastDirectoryOrFileName); Assert.AreEqual("path", dataLakeUriBuilder.DirectoryOrFilePath); Assert.AreEqual("", dataLakeUriBuilder.Snapshot); Assert.IsNull(dataLakeUriBuilder.Sas); Assert.AreEqual(originalUri, newUri); }
public async Task DataLakeSasBuilder_DirectoryRawPermissions_Exists() { // Arrange DataLakeServiceClient oauthService = GetServiceClient_OAuth(); string fileSystemName = GetNewFileSystemName(); string directoryName = GetNewDirectoryName(); await using DisposingFileSystem test = await GetNewFileSystem(service : oauthService, fileSystemName : fileSystemName); 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, Path = directory.Path, IsDirectory = true }; dataLakeSasBuilder.SetPermissions(DataLakeSasPermissions.All); DataLakeUriBuilder dataLakeUriBuilder = new DataLakeUriBuilder(directory.Uri) { Sas = dataLakeSasBuilder.ToSasQueryParameters(userDelegationKey, test.FileSystem.AccountName) }; DataLakeDirectoryClient sasDirectoryClient = InstrumentClient(new DataLakeDirectoryClient(dataLakeUriBuilder.ToUri(), GetOptions())); // Act await sasDirectoryClient.ExistsAsync(); }
public void DataLakeUriBuilder_ListPaths() { // Arrange var uriString = "https://account.dfs.core.windows.net/fileSystem?resource=filesystem"; var originalUri = new UriBuilder(uriString); // Act var dataLakeUriBuilder = new DataLakeUriBuilder(originalUri.Uri); Uri newUri = dataLakeUriBuilder.ToUri(); // Assert Assert.AreEqual("https", dataLakeUriBuilder.Scheme); Assert.AreEqual("account.dfs.core.windows.net", dataLakeUriBuilder.Host); Assert.AreEqual("account", dataLakeUriBuilder.AccountName); Assert.AreEqual(443, dataLakeUriBuilder.Port); Assert.AreEqual("fileSystem", dataLakeUriBuilder.FileSystemName); Assert.AreEqual(string.Empty, dataLakeUriBuilder.LastDirectoryOrFileName); Assert.AreEqual(string.Empty, dataLakeUriBuilder.DirectoryOrFilePath); Assert.AreEqual("", dataLakeUriBuilder.Snapshot); Assert.IsNull(dataLakeUriBuilder.Sas); Assert.AreEqual("resource=filesystem", dataLakeUriBuilder.Query); Assert.AreEqual(originalUri, newUri); }
public void GenerateSas_Builder() { var constants = TestConstants.Create(this); string fileSystemName = GetNewFileSystemName(); string path = GetNewFileName(); DataLakeSasPermissions permissions = DataLakeSasPermissions.Read; DateTimeOffset expiresOn = Recording.UtcNow.AddHours(+1); DateTimeOffset startsOn = Recording.UtcNow.AddHours(-1); var blobEndpoint = new Uri("http://127.0.0.1/" + constants.Sas.Account + "/" + fileSystemName + "/" + path); DataLakePathClient pathClient = InstrumentClient(new DataLakePathClient( blobEndpoint, constants.Sas.SharedKeyCredential, GetOptions())); DataLakeSasBuilder sasBuilder = new DataLakeSasBuilder(permissions, expiresOn) { FileSystemName = fileSystemName, Path = path, StartsOn = startsOn }; // Act Uri sasUri = pathClient.GenerateSasUri(sasBuilder); // Assert DataLakeUriBuilder expectedUri = new DataLakeUriBuilder(blobEndpoint); DataLakeSasBuilder sasBuilder2 = new DataLakeSasBuilder(permissions, expiresOn) { FileSystemName = fileSystemName, Path = path, StartsOn = startsOn }; expectedUri.Sas = sasBuilder2.ToSasQueryParameters(constants.Sas.SharedKeyCredential); Assert.AreEqual(expectedUri.ToUri().ToString(), sasUri.ToString()); }
public void DataLakeUriBuilder_RegularUrl_CNAME() { var dataLakeUriBuilder = new DataLakeUriBuilder(new Uri("http://www.contoso.com")); Assert.AreEqual(string.Empty, dataLakeUriBuilder.AccountName); }
// </Snippet_ListBlobsWithSasAsync> #endregion #region // <Snippet_GetUserDelegationSasDirectory> async static Task <Uri> GetUserDelegationSasDirectory(DataLakeDirectoryClient directoryClient) { try { // Get service endpoint from the directory URI. DataLakeUriBuilder dataLakeServiceUri = new DataLakeUriBuilder(directoryClient.Uri) { FileSystemName = null, DirectoryOrFilePath = null }; // Get service client. DataLakeServiceClient dataLakeServiceClient = new DataLakeServiceClient(dataLakeServiceUri.ToUri(), new DefaultAzureCredential()); // Get a user delegation key that's valid for seven days. // You can use the key to generate any number of shared access signatures // over the lifetime of the key. Azure.Storage.Files.DataLake.Models.UserDelegationKey userDelegationKey = await dataLakeServiceClient.GetUserDelegationKeyAsync(DateTimeOffset.UtcNow, DateTimeOffset.UtcNow.AddDays(7)); // Create a SAS token that's valid for seven days. DataLakeSasBuilder sasBuilder = new DataLakeSasBuilder() { // Specify the file system name and path, and indicate that // the client object points to a directory. FileSystemName = directoryClient.FileSystemName, Resource = "d", IsDirectory = true, Path = directoryClient.Path, ExpiresOn = DateTimeOffset.UtcNow.AddDays(7) }; // Specify racwl permissions for the SAS. sasBuilder.SetPermissions( DataLakeSasPermissions.Read | DataLakeSasPermissions.Add | DataLakeSasPermissions.Create | DataLakeSasPermissions.Write | DataLakeSasPermissions.List ); // Construct the full URI, including the SAS token. DataLakeUriBuilder fullUri = new DataLakeUriBuilder(directoryClient.Uri) { Sas = sasBuilder.ToSasQueryParameters(userDelegationKey, dataLakeServiceClient.AccountName) }; Console.WriteLine("Directory user delegation SAS URI: {0}", fullUri); Console.WriteLine(); return(fullUri.ToUri()); } catch (Exception e) { Console.WriteLine(e.Message); throw; } }
public void DataLakeUriBuilder_AccountNamePeriod() { var datalakeUriBuilder = new DataLakeUriBuilder(new Uri("https://account.z.blob.core.windows.net/share/dir")); Assert.AreEqual("account", datalakeUriBuilder.AccountName); }
public void DataLakeUriBuilder_AccountNameError() { var datalakeUriBuilder = new DataLakeUriBuilder(new Uri("http://notaurl")); Assert.IsEmpty(datalakeUriBuilder.AccountName); }