示例#1
0
        /// <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());
        }
示例#4
0
        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);
 }