public async Task SetImmutibilityPolicyAsync_SetLegalHold_ContainerSas(BlobContainerSasPermissions sasPermissions) { // Arrange await using DisposingImmutableStorageWithVersioningContainer vlwContainer = await GetTestVersionLevelWormContainer(TestConfigOAuth); BlobBaseClient blob = await GetNewBlobClient(vlwContainer.Container, GetNewBlobName()); BlobContainerClient sharedKeyContainer = InstrumentClient( GetServiceClient_OAuthAccount_SharedKey().GetBlobContainerClient(vlwContainer.Container.Name)); Uri containerSasUri = sharedKeyContainer.GenerateSasUri(sasPermissions, Recording.UtcNow.AddDays(1)); BlobBaseClient sasBlobClient = InstrumentClient(new BlobContainerClient(containerSasUri, GetOptions()).GetBlobBaseClient(blob.Name)); 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 sasBlobClient.SetImmutabilityPolicyAsync( immutabilityPolicy : immutabilityPolicy); // Assert Assert.AreEqual(expectedImmutabilityPolicyExpiry, response.Value.ExpiresOn); Assert.AreEqual(immutabilityPolicy.PolicyMode, response.Value.PolicyMode); // Act Response <BlobLegalHoldResult> legalHoldResponse = await sasBlobClient.SetLegalHoldAsync(hasLegalHold : false); // Assert Assert.IsFalse(legalHoldResponse.Value.HasLegalHold); }
public async Task SetLegalHoldAsync() { // Arrange await using DisposingImmutableStorageWithVersioningContainer vlwContainer = await GetTestVersionLevelWormContainer(TestConfigOAuth); BlobBaseClient blob = await GetNewBlobClient(vlwContainer.Container); // Act Response <BlobLegalHoldResult> response = await blob.SetLegalHoldAsync(true); // Assert Assert.IsTrue(response.Value.HasLegalHold); // Validate that we are correctly deserializing Get Properties response. // Act Response <BlobProperties> propertiesResponse = await blob.GetPropertiesAsync(); // Assert Assert.IsTrue(propertiesResponse.Value.HasLegalHold); // Validate we are correctly deserializing Blob Items. // Act List <BlobItem> blobItems = new List <BlobItem>(); await foreach (BlobItem blobItem in vlwContainer.Container.GetBlobsAsync(traits: BlobTraits.LegalHold)) { blobItems.Add(blobItem); } // Assert Assert.AreEqual(1, blobItems.Count); Assert.IsTrue(blobItems[0].Properties.HasLegalHold); // Validate we are correctly deserialzing Get Blob response. // Act Response <BlobDownloadInfo> downloadResponse = await blob.DownloadAsync(); // Assert Assert.IsTrue(downloadResponse.Value.Details.HasLegalHold); // Act response = await blob.SetLegalHoldAsync(false); // Assert Assert.IsFalse(response.Value.HasLegalHold); }
public async Task SetLegalHoldAsync() { // Arrange BlobBaseClient blob = await GetNewBlobClient(_containerClient); // Act Response <BlobLegalHoldResult> response = await blob.SetLegalHoldAsync(true); // Assert Assert.IsTrue(response.Value.HasLegalHold); // Validate that we are correctly deserializing Get Properties response. // Act Response <BlobProperties> propertiesResponse = await blob.GetPropertiesAsync(); // Assert Assert.IsTrue(propertiesResponse.Value.HasLegalHold); // Validate we are correctly deserializing Blob Items. // Act List <BlobItem> blobItems = new List <BlobItem>(); await foreach (BlobItem blobItem in _containerClient.GetBlobsAsync(traits: BlobTraits.LegalHold, prefix: blob.Name)) { blobItems.Add(blobItem); } // Assert Assert.AreEqual(1, blobItems.Count); Assert.IsTrue(blobItems[0].Properties.HasLegalHold); // Validate we are correctly deserialzing Get Blob response. // Act Response <BlobDownloadInfo> downloadResponse = await blob.DownloadAsync(); // Assert Assert.IsTrue(downloadResponse.Value.Details.HasLegalHold); // Act response = await blob.SetLegalHoldAsync(false); // Assert Assert.IsFalse(response.Value.HasLegalHold); }
public async Task SetLegalHoldAsync_Error() { // Arrange BlobBaseClient blob = InstrumentClient(_containerClient.GetBlobClient(GetNewBlobName())); // Act await TestHelper.AssertExpectedExceptionAsync <RequestFailedException>( blob.SetLegalHoldAsync(true), e => Assert.AreEqual(BlobErrorCode.BlobNotFound.ToString(), e.ErrorCode)); }
public async Task SetImmutibilityPolicyAsync_SetLegalHold_BlobSnapshotSas(SnapshotSasPermissions sasPermissions) { // Arrange await using DisposingImmutableStorageWithVersioningContainer vlwContainer = await GetTestVersionLevelWormContainer(TestConfigOAuth); BlobBaseClient blob = await GetNewBlobClient(vlwContainer.Container, GetNewBlobName()); Response <BlobSnapshotInfo> snapshotResponse = await blob.CreateSnapshotAsync(); BlobSasBuilder blobSasBuilder = new BlobSasBuilder { BlobContainerName = vlwContainer.Container.Name, BlobName = blob.Name, ExpiresOn = Recording.UtcNow.AddDays(1), Snapshot = snapshotResponse.Value.Snapshot }; blobSasBuilder.SetPermissions(sasPermissions); StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(TestConfigOAuth.AccountName, TestConfigOAuth.AccountKey); BlobUriBuilder uriBuilder = new BlobUriBuilder(blob.Uri) { Snapshot = snapshotResponse.Value.Snapshot, 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); await sasBlobSnapshotClient.DeleteImmutabilityPolicyAsync(); // Delete blob snapshot. await blob.WithSnapshot(snapshotResponse.Value.Snapshot).DeleteAsync(); }
public async Task SetLegalHoldAsync_Error() { // Arrange await using DisposingImmutableStorageWithVersioningContainer vlwContainer = await GetTestVersionLevelWormContainer(TestConfigOAuth); BlobBaseClient blob = InstrumentClient(vlwContainer.Container.GetBlobClient(GetNewBlobName())); // Act await TestHelper.AssertExpectedExceptionAsync <RequestFailedException>( blob.SetLegalHoldAsync(true), e => Assert.AreEqual(BlobErrorCode.BlobNotFound.ToString(), e.ErrorCode)); }
public async Task SetImmutibilityPolicyAsync_SetLegalHold_BlobVersionSas(BlobVersionSasPermissions sasPermissions) { // Arrange BlobBaseClient blob = await GetNewBlobClient(_containerClient, GetNewBlobName()); IDictionary <string, string> metadata = BuildMetadata(); Response <BlobInfo> metadataResponse = await blob.SetMetadataAsync(metadata); BlobSasBuilder blobSasBuilder = new BlobSasBuilder { BlobContainerName = _containerClient.Name, BlobName = blob.Name, ExpiresOn = Recording.UtcNow.AddDays(1), Version = metadataResponse.Value.VersionId }; blobSasBuilder.SetPermissions(sasPermissions); StorageSharedKeyCredential sharedKeyCredential = new StorageSharedKeyCredential(Tenants.TestConfigOAuth.AccountName, Tenants.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); }
public async Task SetImmutibilityPolicyAsync_SetLegalHold_AccoutnSas(AccountSasPermissions sasPermissions) { // Arrange BlobBaseClient blob = await GetNewBlobClient(_containerClient, GetNewBlobName()); BlobServiceClient sharedKeyServiceClient = InstrumentClient( BlobsClientBuilder.GetServiceClient_OAuthAccount_SharedKey()); Uri serviceSasUri = sharedKeyServiceClient.GenerateAccountSasUri( sasPermissions, Recording.UtcNow.AddDays(1), AccountSasResourceTypes.All); BlobBaseClient sasBlobClient = InstrumentClient(new BlobServiceClient(serviceSasUri, GetOptions()) .GetBlobContainerClient(_containerClient.Name) .GetBlobBaseClient(blob.Name)); 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 sasBlobClient.SetImmutabilityPolicyAsync( immutabilityPolicy : immutabilityPolicy); // Assert Assert.AreEqual(expectedImmutabilityPolicyExpiry, response.Value.ExpiresOn); Assert.AreEqual(immutabilityPolicy.PolicyMode, response.Value.PolicyMode); // Act Response <BlobLegalHoldResult> legalHoldResponse = await sasBlobClient.SetLegalHoldAsync(hasLegalHold : false); // Assert Assert.IsFalse(legalHoldResponse.Value.HasLegalHold); }