Example #1
0
        /// <summary>
        /// Create a permissions string to provide
        /// <see cref="BlobSasBuilder.Permissions"/>.
        /// </summary>
        /// <returns>A permissions string.</returns>
        internal static string ToPermissionsString(this BlobVersionSasPermissions permissions)
        {
            var sb = new StringBuilder();

            if ((permissions & BlobVersionSasPermissions.Delete) == BlobVersionSasPermissions.Delete)
            {
                sb.Append(Constants.Sas.Permissions.DeleteBlobVersion);
            }
            return(sb.ToString());
        }
 public BlobSasQueryParameters GetBlobVersionSas(
     string containerName,
     string blobName,
     string blobVersion,
     BlobVersionSasPermissions permissions,
     StorageSharedKeyCredential sharedKeyCredential = default,
     string sasVersion = default)
 {
     BlobSasBuilder sasBuilder = GetBlobSasBuilder(containerName, blobName, blobVersion: blobVersion, sasVersion: sasVersion);
     sasBuilder.SetPermissions(permissions);
     return sasBuilder.ToSasQueryParameters(sharedKeyCredential ?? GetNewSharedKeyCredentials());
 }
 public BlobSasQueryParameters GetBlobVersionIdentitySas(
     string containerName,
     string blobName,
     string blobVersion,
     BlobVersionSasPermissions permissions,
     UserDelegationKey userDelegationKey,
     string accountName,
     string sasVersion = default)
 {
     BlobSasBuilder sasBuilder = GetBlobSasBuilder(containerName, blobName, blobVersion: blobVersion, sasVersion: sasVersion);
     sasBuilder.SetPermissions(permissions);
     return sasBuilder.ToSasQueryParameters(userDelegationKey, accountName);
 }
Example #4
0
        public async Task SetImmutibilityPolicyAsync_SetLegalHold_BlobVersionSas(BlobVersionSasPermissions sasPermissions)
        {
            // Arrange
            await using DisposingImmutableStorageWithVersioningContainer vlwContainer = await GetTestVersionLevelWormContainer(TestConfigOAuth);

            BlobBaseClient blob = await GetNewBlobClient(vlwContainer.Container, GetNewBlobName());

            IDictionary <string, string> metadata         = BuildMetadata();
            Response <BlobInfo>          metadataResponse = await blob.SetMetadataAsync(metadata);

            BlobSasBuilder blobSasBuilder = new BlobSasBuilder
            {
                BlobContainerName = vlwContainer.Container.Name,
                BlobName          = blob.Name,
                ExpiresOn         = Recording.UtcNow.AddDays(1),
                Version           = metadataResponse.Value.VersionId
            };

            blobSasBuilder.SetPermissions(sasPermissions);
            StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(TestConfigOAuth.AccountName, TestConfigOAuth.AccountKey);
            BlobUriBuilder             uriBuilder          = new BlobUriBuilder(blob.Uri)
            {
                VersionId = metadataResponse.Value.VersionId,
                Sas       = blobSasBuilder.ToSasQueryParameters(sharedKeyCredential)
            };

            BlobBaseClient sasBlobSnapshotClient = InstrumentClient(new BlobBaseClient(uriBuilder.ToUri(), GetOptions()));

            BlobImmutabilityPolicy immutabilityPolicy = new BlobImmutabilityPolicy
            {
                ExpiresOn  = Recording.UtcNow.AddMinutes(5),
                PolicyMode = BlobImmutabilityPolicyMode.Unlocked
            };

            // The service rounds Immutability Policy Expiry to the nearest second.
            DateTimeOffset expectedImmutabilityPolicyExpiry = RoundToNearestSecond(immutabilityPolicy.ExpiresOn.Value);

            // Act
            Response <BlobImmutabilityPolicy> response = await sasBlobSnapshotClient.SetImmutabilityPolicyAsync(
                immutabilityPolicy : immutabilityPolicy);

            // Assert
            Assert.AreEqual(expectedImmutabilityPolicyExpiry, response.Value.ExpiresOn);
            Assert.AreEqual(immutabilityPolicy.PolicyMode, response.Value.PolicyMode);

            // Act
            Response <BlobLegalHoldResult> legalHoldResponse = await sasBlobSnapshotClient.SetLegalHoldAsync(hasLegalHold : false);

            // Assert
            Assert.IsFalse(legalHoldResponse.Value.HasLegalHold);
        }
Example #5
0
 /// <summary>
 /// Sets the permissions for a Version SAS.
 /// </summary>
 /// <param name="permissions">
 /// <see cref="SnapshotSasPermissions"/> containing the allowed permissions.
 /// </param>
 public void SetPermissions(BlobVersionSasPermissions permissions)
 {
     Permissions = permissions.ToPermissionsString();
 }