Skip to content

Commit 365fd61

Browse files
authored
[Storage] Support setting cors rules in mgmt plane cmdlets (#21717)
* Support setting cors rules in mgmt plane cmdlets * Update parameter name * Update per comments * Change exception to warning when allowed methods are invalid * remove warnings * clean up imports
1 parent acc7bb0 commit 365fd61

File tree

10 files changed

+1835
-524
lines changed

10 files changed

+1835
-524
lines changed

src/Storage/Storage.Management.Test/ScenarioTests/StorageBlobTests.ps1

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -563,6 +563,17 @@ function Test-StorageBlobServiceProperties
563563
$stotype = 'Standard_GRS';
564564
$loc = Get-ProviderLocation ResourceManagement;
565565
$kind = 'StorageV2'
566+
567+
$CorsRules = (@{
568+
AllowedHeaders=@("x-ms-blob-content-type","x-ms-blob-content-disposition");
569+
AllowedOrigins=@("*");
570+
AllowedMethods=@("Get","Connect")},
571+
@{
572+
AllowedOrigins=@("http://www.fabrikam.com","http://www.contoso.com");
573+
ExposedHeaders=@("x-ms-meta-data*","x-ms-meta-customheader");
574+
AllowedHeaders=@("x-ms-meta-target*","x-ms-meta-customheader");
575+
MaxAgeInSeconds=30;
576+
AllowedMethods=@("PUT")})
566577

567578
Write-Verbose "RGName: $rgname | Loc: $loc"
568579
New-AzResourceGroup -Name $rgname -Location $loc;
@@ -594,6 +605,34 @@ function Test-StorageBlobServiceProperties
594605
Assert-AreEqual $false $property.DeleteRetentionPolicy.Enabled
595606
Assert-AreEqual $null $property.DeleteRetentionPolicy.Days
596607

608+
$property = Update-AzStorageBlobServiceProperty -ResourceGroupName $rgname -StorageAccountName $stoname -CorsRule $CorsRules
609+
Assert-AreEqual "*" $property.Cors.CorsRulesProperty[0].AllowedOrigins
610+
Assert-AreEqual "GET" $property.Cors.CorsRulesProperty[0].AllowedMethods[0]
611+
Assert-AreEqual "CONNECT" $property.Cors.CorsRulesProperty[0].AllowedMethods[1]
612+
Assert-AreEqual 0 $property.Cors.CorsRulesProperty[0].MaxAgeInSeconds
613+
Assert-AreEqual "x-ms-blob-content-type" $property.Cors.CorsRulesProperty[0].AllowedHeaders[0]
614+
Assert-AreEqual "x-ms-blob-content-disposition" $property.Cors.CorsRulesProperty[0].AllowedHeaders[1]
615+
Assert-AreEqual "http://www.fabrikam.com" $property.Cors.CorsRulesProperty[1].AllowedOrigins[0]
616+
Assert-AreEqual "PUT" $property.Cors.CorsRulesProperty[1].AllowedMethods[0]
617+
Assert-AreEqual 30 $property.Cors.CorsRulesProperty[1].MaxAgeInSeconds
618+
619+
$property = Get-AzStorageBlobServiceProperty -ResourceGroupName $rgname -StorageAccountName $stoname
620+
Assert-AreEqual "*" $property.Cors.CorsRulesProperty[0].AllowedOrigins
621+
Assert-AreEqual "GET" $property.Cors.CorsRulesProperty[0].AllowedMethods[0]
622+
Assert-AreEqual "CONNECT" $property.Cors.CorsRulesProperty[0].AllowedMethods[1]
623+
Assert-AreEqual 0 $property.Cors.CorsRulesProperty[0].MaxAgeInSeconds
624+
Assert-AreEqual "x-ms-blob-content-type" $property.Cors.CorsRulesProperty[0].AllowedHeaders[0]
625+
Assert-AreEqual "x-ms-blob-content-disposition" $property.Cors.CorsRulesProperty[0].AllowedHeaders[1]
626+
Assert-AreEqual "http://www.fabrikam.com" $property.Cors.CorsRulesProperty[1].AllowedOrigins[0]
627+
Assert-AreEqual "PUT" $property.Cors.CorsRulesProperty[1].AllowedMethods[0]
628+
Assert-AreEqual 30 $property.Cors.CorsRulesProperty[1].MaxAgeInSeconds
629+
630+
$property = Update-AzStorageBlobServiceProperty -ResourceGroupName $rgname -StorageAccountName $stoname -CorsRule @()
631+
Assert-AreEqual 0 $property.Cors.CorsRulesProperty.Count
632+
633+
$property = Get-AzStorageBlobServiceProperty -ResourceGroupName $rgname -StorageAccountName $stoname
634+
Assert-AreEqual 0 $property.Cors.CorsRulesProperty.Count
635+
597636
Remove-AzStorageAccount -Force -ResourceGroupName $rgname -Name $stoname;
598637
}
599638
finally

src/Storage/Storage.Management.Test/ScenarioTests/StorageFileTests.ps1

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -377,6 +377,17 @@ function Test-FileServiceProperties
377377
$loc = Get-ProviderLocation_Canary2 ResourceManagement;
378378
$kind = 'FileStorage'
379379

380+
$CorsRules = (@{
381+
AllowedHeaders=@("x-ms-blob-content-type","x-ms-blob-content-disposition");
382+
AllowedOrigins=@("*");
383+
AllowedMethods=@("Get","Connect")},
384+
@{
385+
AllowedOrigins=@("http://www.fabrikam.com","http://www.contoso.com");
386+
ExposedHeaders=@("x-ms-meta-data*","x-ms-meta-customheader");
387+
AllowedHeaders=@("x-ms-meta-target*","x-ms-meta-customheader");
388+
MaxAgeInSeconds=30;
389+
AllowedMethods=@("PUT")})
390+
380391
Write-Verbose "RGName: $rgname | Loc: $loc"
381392
New-AzResourceGroup -Name $rgname -Location $loc;
382393

@@ -422,6 +433,34 @@ function Test-FileServiceProperties
422433
Assert-AreEqual $null $servicePropertie.ProtocolSettings.Smb.KerberosTicketEncryption
423434
Assert-AreEqual $null $servicePropertie.ProtocolSettings.Smb.ChannelEncryption
424435

436+
$property = Update-AzStorageFileServiceProperty -ResourceGroupName $rgname -StorageAccountName $stoname -CorsRule $CorsRules
437+
Assert-AreEqual "*" $property.Cors.CorsRulesProperty[0].AllowedOrigins
438+
Assert-AreEqual "GET" $property.Cors.CorsRulesProperty[0].AllowedMethods[0]
439+
Assert-AreEqual "CONNECT" $property.Cors.CorsRulesProperty[0].AllowedMethods[1]
440+
Assert-AreEqual 0 $property.Cors.CorsRulesProperty[0].MaxAgeInSeconds
441+
Assert-AreEqual "x-ms-blob-content-type" $property.Cors.CorsRulesProperty[0].AllowedHeaders[0]
442+
Assert-AreEqual "x-ms-blob-content-disposition" $property.Cors.CorsRulesProperty[0].AllowedHeaders[1]
443+
Assert-AreEqual "http://www.fabrikam.com" $property.Cors.CorsRulesProperty[1].AllowedOrigins[0]
444+
Assert-AreEqual "PUT" $property.Cors.CorsRulesProperty[1].AllowedMethods[0]
445+
Assert-AreEqual 30 $property.Cors.CorsRulesProperty[1].MaxAgeInSeconds
446+
447+
$property = Get-AzStorageFileServiceProperty -ResourceGroupName $rgname -StorageAccountName $stoname
448+
Assert-AreEqual "*" $property.Cors.CorsRulesProperty[0].AllowedOrigins
449+
Assert-AreEqual "GET" $property.Cors.CorsRulesProperty[0].AllowedMethods[0]
450+
Assert-AreEqual "CONNECT" $property.Cors.CorsRulesProperty[0].AllowedMethods[1]
451+
Assert-AreEqual 0 $property.Cors.CorsRulesProperty[0].MaxAgeInSeconds
452+
Assert-AreEqual "x-ms-blob-content-type" $property.Cors.CorsRulesProperty[0].AllowedHeaders[0]
453+
Assert-AreEqual "x-ms-blob-content-disposition" $property.Cors.CorsRulesProperty[0].AllowedHeaders[1]
454+
Assert-AreEqual "http://www.fabrikam.com" $property.Cors.CorsRulesProperty[1].AllowedOrigins[0]
455+
Assert-AreEqual "PUT" $property.Cors.CorsRulesProperty[1].AllowedMethods[0]
456+
Assert-AreEqual 30 $property.Cors.CorsRulesProperty[1].MaxAgeInSeconds
457+
458+
$property = Update-AzStorageFileServiceProperty -ResourceGroupName $rgname -StorageAccountName $stoname -CorsRule @()
459+
Assert-AreEqual 0 $property.Cors.CorsRulesProperty.Count
460+
461+
$property = Get-AzStorageFileServiceProperty -ResourceGroupName $rgname -StorageAccountName $stoname
462+
Assert-AreEqual 0 $property.Cors.CorsRulesProperty.Count
463+
425464
Remove-AzStorageAccount -Force -ResourceGroupName $rgname -Name $stoname;
426465
}
427466
finally

src/Storage/Storage.Management.Test/SessionRecords/Microsoft.Azure.Commands.Management.Storage.Test.ScenarioTests.StorageBlobTests/TestStorageBlobServiceProperties.json

Lines changed: 800 additions & 239 deletions
Large diffs are not rendered by default.

0 commit comments

Comments
 (0)