public void BlobContainersGetTest() { var handler = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { var resourcesClient = StorageManagementTestUtilities.GetResourceManagementClient(context, handler); var storageMgmtClient = StorageManagementTestUtilities.GetStorageManagementClient(context, handler); // Create resource group var rgName = StorageManagementTestUtilities.CreateResourceGroup(resourcesClient); // Create storage account string accountName = TestUtilities.GenerateName("sto"); var parameters = StorageManagementTestUtilities.GetDefaultStorageAccountParameters(); parameters.Kind = Kind.StorageV2; var account = storageMgmtClient.StorageAccounts.Create(rgName, accountName, parameters); StorageManagementTestUtilities.VerifyAccountProperties(account, false); // implement case try { string containerName = TestUtilities.GenerateName("container"); BlobContainer blobContainer = storageMgmtClient.BlobContainers.Create(rgName, accountName, containerName); Assert.Null(blobContainer.Metadata); Assert.Null(blobContainer.PublicAccess); LegalHold legalHold = storageMgmtClient.BlobContainers.SetLegalHold(rgName, accountName, containerName, new List <string> { "tag1", "tag2", "tag3" }); Assert.True(legalHold.HasLegalHold); Assert.Equal(new List <string> { "tag1", "tag2", "tag3" }, legalHold.Tags); ImmutabilityPolicy immutabilityPolicy = storageMgmtClient.BlobContainers.CreateOrUpdateImmutabilityPolicy(rgName, accountName, containerName, ifMatch: "", immutabilityPeriodSinceCreationInDays: 3); Assert.NotNull(immutabilityPolicy.Id); Assert.NotNull(immutabilityPolicy.Type); Assert.NotNull(immutabilityPolicy.Name); Assert.Equal(3, immutabilityPolicy.ImmutabilityPeriodSinceCreationInDays); Assert.Equal(ImmutabilityPolicyState.Unlocked, immutabilityPolicy.State); immutabilityPolicy = storageMgmtClient.BlobContainers.LockImmutabilityPolicy(rgName, accountName, containerName, ifMatch: immutabilityPolicy.Etag); Assert.NotNull(immutabilityPolicy.Id); Assert.NotNull(immutabilityPolicy.Type); Assert.NotNull(immutabilityPolicy.Name); Assert.Equal(3, immutabilityPolicy.ImmutabilityPeriodSinceCreationInDays); Assert.Equal(ImmutabilityPolicyState.Locked, immutabilityPolicy.State); immutabilityPolicy = storageMgmtClient.BlobContainers.ExtendImmutabilityPolicy(rgName, accountName, containerName, ifMatch: immutabilityPolicy.Etag, immutabilityPeriodSinceCreationInDays: 100); Assert.NotNull(immutabilityPolicy.Id); Assert.NotNull(immutabilityPolicy.Type); Assert.NotNull(immutabilityPolicy.Name); Assert.Equal(100, immutabilityPolicy.ImmutabilityPeriodSinceCreationInDays); Assert.Equal(ImmutabilityPolicyState.Locked, immutabilityPolicy.State); blobContainer = storageMgmtClient.BlobContainers.Get(rgName, accountName, containerName); Assert.Null(blobContainer.Metadata); Assert.Equal(PublicAccess.None, blobContainer.PublicAccess); Assert.Equal(3, blobContainer.ImmutabilityPolicy.UpdateHistory.Count); Assert.Equal(ImmutabilityPolicyUpdateType.Put, blobContainer.ImmutabilityPolicy.UpdateHistory[0].Update); Assert.Equal(ImmutabilityPolicyUpdateType.Lock, blobContainer.ImmutabilityPolicy.UpdateHistory[1].Update); Assert.Equal(ImmutabilityPolicyUpdateType.Extend, blobContainer.ImmutabilityPolicy.UpdateHistory[2].Update); Assert.True(blobContainer.LegalHold.HasLegalHold); Assert.Equal(3, blobContainer.LegalHold.Tags.Count); Assert.Equal("tag1", blobContainer.LegalHold.Tags[0].Tag); Assert.Equal("tag2", blobContainer.LegalHold.Tags[1].Tag); Assert.Equal("tag3", blobContainer.LegalHold.Tags[2].Tag); legalHold = storageMgmtClient.BlobContainers.ClearLegalHold(rgName, accountName, containerName, new List <string> { "tag1", "tag2", "tag3" }); Assert.False(legalHold.HasLegalHold); //Assert.Equal(null, legalHold.Tags); storageMgmtClient.BlobContainers.Delete(rgName, accountName, containerName); } finally { // clean up storageMgmtClient.StorageAccounts.Delete(rgName, accountName); resourcesClient.ResourceGroups.Delete(rgName); } } }
public void BlobServiceCorsTest() { var handler = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { var resourcesClient = StorageManagementTestUtilities.GetResourceManagementClient(context, handler); var storageMgmtClient = StorageManagementTestUtilities.GetStorageManagementClient(context, handler); // Create resource group var rgName = StorageManagementTestUtilities.CreateResourceGroup(resourcesClient); // Create storage account string accountName = TestUtilities.GenerateName("sto"); var parameters = StorageManagementTestUtilities.GetDefaultStorageAccountParameters(); var account = storageMgmtClient.StorageAccounts.Create(rgName, accountName, parameters); StorageManagementTestUtilities.VerifyAccountProperties(account, true); // implement case try { BlobServiceProperties properties1 = storageMgmtClient.BlobServices.GetServiceProperties(rgName, accountName); BlobServiceProperties properties2 = new BlobServiceProperties(); properties2.DeleteRetentionPolicy = new DeleteRetentionPolicy(); properties2.DeleteRetentionPolicy.Enabled = true; properties2.DeleteRetentionPolicy.Days = 300; properties2.DefaultServiceVersion = "2017-04-17"; properties2.Cors = new CorsRules(); properties2.Cors.CorsRulesProperty = new List <CorsRule>(); properties2.Cors.CorsRulesProperty.Add(new CorsRule() { AllowedHeaders = new string[] { "x-ms-meta-abc", "x-ms-meta-data*", "x-ms-meta-target*" }, AllowedMethods = new string[] { "GET", "HEAD", "POST", "OPTIONS", "MERGE", "PUT" }, AllowedOrigins = new string[] { "http://www.contoso.com", "http://www.fabrikam.com" }, ExposedHeaders = new string[] { "x-ms-meta-*" }, MaxAgeInSeconds = 100 }); properties2.Cors.CorsRulesProperty.Add(new CorsRule() { AllowedHeaders = new string[] { "*" }, AllowedMethods = new string[] { "GET" }, AllowedOrigins = new string[] { "*" }, ExposedHeaders = new string[] { "*" }, MaxAgeInSeconds = 2 }); properties2.Cors.CorsRulesProperty.Add(new CorsRule() { AllowedHeaders = new string[] { "x-ms-meta-12345675754564*" }, AllowedMethods = new string[] { "GET", "PUT", "CONNECT" }, AllowedOrigins = new string[] { "http://www.abc23.com", "https://www.fabrikam.com/*" }, ExposedHeaders = new string[] { "x-ms-meta-abc", "x-ms-meta-data*", "x -ms-meta-target*" }, MaxAgeInSeconds = 2000 }); BlobServiceProperties properties3 = storageMgmtClient.BlobServices.SetServiceProperties(rgName, accountName, properties2); Assert.True(properties3.DeleteRetentionPolicy.Enabled); Assert.Equal(300, properties3.DeleteRetentionPolicy.Days); Assert.Equal("2017-04-17", properties3.DefaultServiceVersion); //Validate CORS Rules Assert.Equal(properties2.Cors.CorsRulesProperty.Count, properties3.Cors.CorsRulesProperty.Count); for (int i = 0; i < properties2.Cors.CorsRulesProperty.Count; i++) { CorsRule putRule = properties2.Cors.CorsRulesProperty[i]; CorsRule getRule = properties3.Cors.CorsRulesProperty[i]; Assert.Equal(putRule.AllowedHeaders, getRule.AllowedHeaders); Assert.Equal(putRule.AllowedMethods, getRule.AllowedMethods); Assert.Equal(putRule.AllowedOrigins, getRule.AllowedOrigins); Assert.Equal(putRule.ExposedHeaders, getRule.ExposedHeaders); Assert.Equal(putRule.MaxAgeInSeconds, getRule.MaxAgeInSeconds); } BlobServiceProperties properties4 = storageMgmtClient.BlobServices.GetServiceProperties(rgName, accountName); Assert.True(properties4.DeleteRetentionPolicy.Enabled); Assert.Equal(300, properties4.DeleteRetentionPolicy.Days); Assert.Equal("2017-04-17", properties4.DefaultServiceVersion); //Validate CORS Rules Assert.Equal(properties2.Cors.CorsRulesProperty.Count, properties4.Cors.CorsRulesProperty.Count); for (int i = 0; i < properties2.Cors.CorsRulesProperty.Count; i++) { CorsRule putRule = properties2.Cors.CorsRulesProperty[i]; CorsRule getRule = properties4.Cors.CorsRulesProperty[i]; Assert.Equal(putRule.AllowedHeaders, getRule.AllowedHeaders); Assert.Equal(putRule.AllowedMethods, getRule.AllowedMethods); Assert.Equal(putRule.AllowedOrigins, getRule.AllowedOrigins); Assert.Equal(putRule.ExposedHeaders, getRule.ExposedHeaders); Assert.Equal(putRule.MaxAgeInSeconds, getRule.MaxAgeInSeconds); } } finally { // clean up storageMgmtClient.StorageAccounts.Delete(rgName, accountName); resourcesClient.ResourceGroups.Delete(rgName); } } }
public void BlobContainersListTest() { var handler = new RecordedDelegatingHandler { StatusCodeToReturn = HttpStatusCode.OK }; using (MockContext context = MockContext.Start(this.GetType())) { var resourcesClient = StorageManagementTestUtilities.GetResourceManagementClient(context, handler); var storageMgmtClient = StorageManagementTestUtilities.GetStorageManagementClient(context, handler); // Create resource group var rgName = StorageManagementTestUtilities.CreateResourceGroup(resourcesClient); // Create storage account string accountName = TestUtilities.GenerateName("sto"); var parameters = StorageManagementTestUtilities.GetDefaultStorageAccountParameters(); parameters.Kind = Kind.StorageV2; var account = storageMgmtClient.StorageAccounts.Create(rgName, accountName, parameters); StorageManagementTestUtilities.VerifyAccountProperties(account, false); // implement case try { string containerName1 = TestUtilities.GenerateName("container"); BlobContainer blobContainer = storageMgmtClient.BlobContainers.Create(rgName, accountName, containerName1); Assert.Null(blobContainer.Metadata); Assert.Null(blobContainer.PublicAccess); blobContainer.Metadata = new Dictionary <string, string>(); blobContainer.Metadata.Add("metadata", "true"); blobContainer.PublicAccess = PublicAccess.Container; var blobContainerSet = storageMgmtClient.BlobContainers.Update(rgName, accountName, containerName1, metadata: blobContainer.Metadata, publicAccess: blobContainer.PublicAccess); Assert.NotNull(blobContainer.Metadata); Assert.NotNull(blobContainer.PublicAccess); Assert.Equal(blobContainer.Metadata, blobContainerSet.Metadata); Assert.Equal(blobContainer.PublicAccess, blobContainerSet.PublicAccess); Assert.False(blobContainerSet.HasImmutabilityPolicy); Assert.False(blobContainerSet.HasLegalHold); string containerName2 = TestUtilities.GenerateName("container"); BlobContainer blobContainer2 = storageMgmtClient.BlobContainers.Create(rgName, accountName, containerName2); Assert.Null(blobContainer2.Metadata); Assert.Null(blobContainer2.PublicAccess); string containerName3 = TestUtilities.GenerateName("container"); BlobContainer blobContainer3 = storageMgmtClient.BlobContainers.Create(rgName, accountName, containerName3); Assert.Null(blobContainer3.Metadata); Assert.Null(blobContainer3.PublicAccess); var storageAccount = new CloudStorageAccount(new StorageCredentials(accountName, storageMgmtClient.StorageAccounts.ListKeys(rgName, accountName).Keys.ElementAt(0).Value), false); var container = storageAccount.CreateCloudBlobClient().GetContainerReference(containerName2); //container.AcquireLeaseAsync(TimeSpan.FromSeconds(45)).Wait(); //List container IPage <ListContainerItem> containerList = storageMgmtClient.BlobContainers.List(rgName, accountName); Assert.Null(containerList.NextPageLink); Assert.Equal(3, containerList.Count()); foreach (ListContainerItem blobContainerList in containerList) { Assert.NotNull(blobContainerList.Name); Assert.NotNull(blobContainerList.PublicAccess); Assert.False(blobContainerList.HasImmutabilityPolicy); Assert.False(blobContainerList.HasLegalHold); } //List container with next link containerList = storageMgmtClient.BlobContainers.List(rgName, accountName, "2"); Assert.NotNull(containerList.NextPageLink); Assert.Equal(2, containerList.Count()); containerList = storageMgmtClient.BlobContainers.ListNext(containerList.NextPageLink); Assert.Null(containerList.NextPageLink); Assert.Single(containerList); } finally { // clean up storageMgmtClient.StorageAccounts.Delete(rgName, accountName); resourcesClient.ResourceGroups.Delete(rgName); } } }