/// <summary> /// Create a permissions string to provide /// <see cref="DataLakeSasBuilder.Permissions"/>. /// </summary> /// <returns>A permissions string.</returns> internal static string ToPermissionsString(this DataLakeSasPermissions permissions) { var sb = new StringBuilder(); if ((permissions & DataLakeSasPermissions.Read) == DataLakeSasPermissions.Read) { sb.Append(Constants.Sas.Permissions.Read); } if ((permissions & DataLakeSasPermissions.Add) == DataLakeSasPermissions.Add) { sb.Append(Constants.Sas.Permissions.Add); } if ((permissions & DataLakeSasPermissions.Create) == DataLakeSasPermissions.Create) { sb.Append(Constants.Sas.Permissions.Create); } if ((permissions & DataLakeSasPermissions.Write) == DataLakeSasPermissions.Write) { sb.Append(Constants.Sas.Permissions.Write); } if ((permissions & DataLakeSasPermissions.Delete) == DataLakeSasPermissions.Delete) { sb.Append(Constants.Sas.Permissions.Delete); } return(sb.ToString()); }
public void GenerateSas_BuilderIsDirectoryError() { var constants = TestConstants.Create(this); var blobEndpoint = new Uri("http://127.0.0.1/"); UriBuilder blobUriBuilder = new UriBuilder(blobEndpoint); string fileSystemName = GetNewFileSystemName(); string fileName = GetNewFileName(); DataLakeSasPermissions permissions = DataLakeSasPermissions.Read; DateTimeOffset expiresOn = Recording.UtcNow.AddHours(+1); blobUriBuilder.Path += constants.Sas.Account + "/" + fileSystemName + "/" + fileName; DataLakePathClient containerClient = InstrumentClient(new DataLakePathClient( blobUriBuilder.Uri, constants.Sas.SharedKeyCredential, GetOptions())); DataLakeSasBuilder sasBuilder = new DataLakeSasBuilder(permissions, expiresOn) { FileSystemName = fileSystemName, Path = fileName, IsDirectory = true, }; // Act try { containerClient.GenerateSasUri(sasBuilder); Assert.Fail("DataLakeFileClient.GenerateSasUri should have failed with an ArgumentException."); } catch (InvalidOperationException) { //the correct exception came back } }
public void GenerateSas_RequiredParameters() { // Arrange var constants = TestConstants.Create(this); string fileSystemName = GetNewFileSystemName(); string path = GetNewFileName(); DataLakeSasPermissions permissions = DataLakeSasPermissions.Read; DateTimeOffset expiresOn = 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())); // Act Uri sasUri = pathClient.GenerateSasUri(permissions, expiresOn); // Assert DataLakeSasBuilder sasBuilder2 = new DataLakeSasBuilder(permissions, expiresOn) { FileSystemName = fileSystemName, Path = path }; DataLakeUriBuilder expectedUri = new DataLakeUriBuilder(blobEndpoint) { Sas = sasBuilder2.ToSasQueryParameters(constants.Sas.SharedKeyCredential) }; Assert.AreEqual(expectedUri.ToUri().ToString(), sasUri.ToString()); }
public void GenerateSas_BuilderWrongFileSystemName() { // Arrange var constants = new TestConstants(this); var blobEndpoint = new Uri("http://127.0.0.1/"); UriBuilder blobUriBuilder = new UriBuilder(blobEndpoint); string path = GetNewFileName(); DataLakeSasPermissions permissions = DataLakeSasPermissions.Read; DateTimeOffset expiresOn = Recording.UtcNow.AddHours(+1); blobUriBuilder.Path += constants.Sas.Account + "/" + GetNewFileSystemName() + "/" + path; DataLakePathClient pathClient = InstrumentClient(new DataLakePathClient( blobUriBuilder.Uri, constants.Sas.SharedKeyCredential, GetOptions())); DataLakeSasBuilder sasBuilder = new DataLakeSasBuilder(permissions, expiresOn) { FileSystemName = GetNewFileSystemName(), // different filesystem name Path = path, }; // Act try { pathClient.GenerateSasUri(sasBuilder); Assert.Fail("DataLakePathClient.GenerateSasUri should have failed with an ArgumentException."); } catch (InvalidOperationException) { //the correct exception came back } }
/// <summary> /// Create a permissions string to provide /// <see cref="DataLakeSasBuilder.Permissions"/>. /// </summary> /// <returns>A permissions string.</returns> internal static string ToPermissionsString(this DataLakeSasPermissions permissions) { var sb = new StringBuilder(); if ((permissions & DataLakeSasPermissions.Read) == DataLakeSasPermissions.Read) { sb.Append(Constants.Sas.Permissions.Read); } if ((permissions & DataLakeSasPermissions.Add) == DataLakeSasPermissions.Add) { sb.Append(Constants.Sas.Permissions.Add); } if ((permissions & DataLakeSasPermissions.Create) == DataLakeSasPermissions.Create) { sb.Append(Constants.Sas.Permissions.Create); } if ((permissions & DataLakeSasPermissions.Write) == DataLakeSasPermissions.Write) { sb.Append(Constants.Sas.Permissions.Write); } if ((permissions & DataLakeSasPermissions.Delete) == DataLakeSasPermissions.Delete) { sb.Append(Constants.Sas.Permissions.Delete); } if ((permissions & DataLakeSasPermissions.List) == DataLakeSasPermissions.List) { sb.Append(Constants.Sas.Permissions.List); } if ((permissions & DataLakeSasPermissions.Move) == DataLakeSasPermissions.Move) { sb.Append(Constants.Sas.Permissions.Move); } if ((permissions & DataLakeSasPermissions.Execute) == DataLakeSasPermissions.Execute) { sb.Append(Constants.Sas.Permissions.Execute); } if ((permissions & DataLakeSasPermissions.ManageOwnership) == DataLakeSasPermissions.ManageOwnership) { sb.Append(Constants.Sas.Permissions.ManageOwnership); } if ((permissions & DataLakeSasPermissions.ManageAccessControl) == DataLakeSasPermissions.ManageAccessControl) { sb.Append(Constants.Sas.Permissions.ManageAccessControl); } return(sb.ToString()); }
/// <summary> /// Sets the permissions for a file SAS. /// </summary> /// <param name="permissions"> /// <see cref="DataLakeSasPermissions"/> containing the allowed permissions. /// </param> public void SetPermissions(DataLakeSasPermissions permissions) { Permissions = permissions.ToPermissionsString(); }
/// <summary> /// Initializes a new instance of the <see cref="DataLakeSasBuilder"/> /// class to create a Blob Service Sas. /// </summary> /// <param name="permissions"> /// The time at which the shared access signature becomes invalid. /// This field must be omitted if it has been specified in an /// associated stored access policy. /// </param> /// <param name="expiresOn"> /// The time at which the shared access signature becomes invalid. /// This field must be omitted if it has been specified in an /// associated stored access policy. /// </param> public DataLakeSasBuilder(DataLakeSasPermissions permissions, DateTimeOffset expiresOn) { ExpiresOn = expiresOn; SetPermissions(permissions); }