Skip to content

Commit ecaca79

Browse files
author
Ajit Navasare (MINDTREE LIMITED)
committed
Fix for issue Azure#9786 : cannot create a rule with Listen only rights
1 parent 24dbb67 commit ecaca79

File tree

8 files changed

+1351
-896
lines changed

8 files changed

+1351
-896
lines changed

src/ServiceBus/ServiceBus.Test/ScenarioTests/ServiceBusQueueTests.ps1

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,9 @@ function ServiceBusQueueAuthTests
8787
$namespaceName = getAssetName "Namespace-"
8888
$queueName = getAssetName "Queue-"
8989
$authRuleName = getAssetName "authorule-"
90+
$authRuleNameListen = getAssetName "authorule-"
91+
$authRuleNameSend = getAssetName "authorule-"
92+
$authRuleNameAll = getAssetName "authorule-"
9093

9194
# Create ResourceGroup
9295
Write-Debug " Create resource group"
@@ -133,6 +136,22 @@ function ServiceBusQueueAuthTests
133136
Assert-True { $result.Rights -Contains "Listen" }
134137
Assert-True { $result.Rights -Contains "Send" }
135138

139+
$resultListen = New-AzServiceBusAuthorizationRule -ResourceGroupName $resourceGroupName -Namespace $namespaceName -Queue $queueName -Name $authRuleNameListen -Rights @("Listen")
140+
Assert-AreEqual $authRuleNameListen $resultListen.Name
141+
Assert-AreEqual 1 $resultListen.Rights.Count
142+
Assert-True { $resultListen.Rights -Contains "Listen" }
143+
144+
$resultSend = New-AzServiceBusAuthorizationRule -ResourceGroupName $resourceGroupName -Namespace $namespaceName -Queue $queueName -Name $authRuleNameSend -Rights @("Send")
145+
Assert-AreEqual $authRuleNameSend $resultSend.Name
146+
Assert-AreEqual 1 $resultSend.Rights.Count
147+
Assert-True { $resultSend.Rights -Contains "Send" }
148+
149+
$resultAll3 = New-AzServiceBusAuthorizationRule -ResourceGroupName $resourceGroupName -Namespace $namespaceName -Queue $queueName -Name $authRuleNameAll -Rights @("Listen","Send","Manage")
150+
Assert-AreEqual $authRuleNameAll $resultAll3.Name
151+
Assert-AreEqual 3 $resultAll3.Rights.Count
152+
Assert-True { $resultAll3.Rights -Contains "Send" }
153+
Assert-True { $resultAll3.Rights -Contains "Listen" }
154+
Assert-True { $resultAll3.Rights -Contains "Manage" }
136155

137156
# Get Created Queue Authorization Rule
138157
Write-Debug "Get created authorizationRule"
@@ -148,10 +167,7 @@ function ServiceBusQueueAuthTests
148167
Write-Debug "Get All Queue AuthorizationRule"
149168
$result = Get-AzServiceBusAuthorizationRule -ResourceGroupName $resourceGroupName -Namespace $namespaceName -Queue $queueName
150169
# Assert
151-
Assert-AreEqual $result.Name $authRuleName
152-
Assert-AreEqual 2 $result.Rights.Count
153-
Assert-True { $result.Rights -Contains "Listen" }
154-
Assert-True { $result.Rights -Contains "Send" }
170+
Assert-True {$result.Count -ge 2}
155171

156172
# Update the Queue Authorization Rule
157173
Write-Debug "Update Queue AuthorizationRule"

src/ServiceBus/ServiceBus.Test/ScenarioTests/ServiceBusServiceTests.ps1

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,9 @@ function ServiceBusNameSpaceAuthTests
8080
$resourceGroupName = getAssetName "RGName-"
8181
$namespaceName = getAssetName "Namespace-"
8282
$authRuleName = getAssetName "authorule-"
83+
$authRuleNameListen = getAssetName "authorule-"
84+
$authRuleNameSend = getAssetName "authorule-"
85+
$authRuleNameAll = getAssetName "authorule-"
8386
$defaultNamespaceAuthRule = "RootManageSharedAccessKey"
8487

8588
Write-Debug " Create resource group"
@@ -103,6 +106,22 @@ function ServiceBusNameSpaceAuthTests
103106
Assert-True { $result.Rights -Contains "Listen" }
104107
Assert-True { $result.Rights -Contains "Send" }
105108

109+
$resultListen = New-AzServiceBusAuthorizationRule -ResourceGroupName $resourceGroupName -Namespace $namespaceName -Name $authRuleNameListen -Rights @("Listen")
110+
Assert-AreEqual $authRuleNameListen $resultListen.Name
111+
Assert-AreEqual 1 $resultListen.Rights.Count
112+
Assert-True { $resultListen.Rights -Contains "Listen" }
113+
114+
$resultSend = New-AzServiceBusAuthorizationRule -ResourceGroupName $resourceGroupName -Namespace $namespaceName -Name $authRuleNameSend -Rights @("Send")
115+
Assert-AreEqual $authRuleNameSend $resultSend.Name
116+
Assert-AreEqual 1 $resultSend.Rights.Count
117+
Assert-True { $resultSend.Rights -Contains "Send" }
118+
119+
$resultAll3 = New-AzServiceBusAuthorizationRule -ResourceGroupName $resourceGroupName -Namespace $namespaceName -Name $authRuleNameAll -Rights @("Listen","Send","Manage")
120+
Assert-AreEqual $authRuleNameAll $resultAll3.Name
121+
Assert-AreEqual 3 $resultAll3.Rights.Count
122+
Assert-True { $resultAll3.Rights -Contains "Send" }
123+
Assert-True { $resultAll3.Rights -Contains "Listen" }
124+
Assert-True { $resultAll3.Rights -Contains "Manage" }
106125

107126
Write-Debug "Create a Namespace Authorization Rule"
108127
Write-Debug "Auth Rule name : $authRuleName"

src/ServiceBus/ServiceBus.Test/ScenarioTests/ServiceBusTopicTests.ps1

Lines changed: 22 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,9 @@ function ServiceBusTopicAuthTests
7979
$namespaceName = getAssetName "Namespace-"
8080
$TopicName = getAssetName "Topic-"
8181
$authRuleName = getAssetName "authorule-"
82+
$authRuleNameListen = getAssetName "authorule-"
83+
$authRuleNameSend = getAssetName "authorule-"
84+
$authRuleNameAll = getAssetName "authorule-"
8285

8386
# Create ResourceGroup
8487
Write-Debug " Create resource group"
@@ -120,7 +123,24 @@ function ServiceBusTopicAuthTests
120123
Assert-AreEqual $result.Name $authRuleName "New-AzServiceBusAuthorizationRule: Created Authorizationrule not found"
121124
Assert-AreEqual 2 $result.Rights.Count "New-AzServiceBusAuthorizationRule: Rights count dont match"
122125
Assert-True { $result.Rights -Contains "Listen" }
123-
Assert-True { $result.Rights -Contains "Send" }
126+
Assert-True { $result.Rights -Contains "Send" }
127+
128+
$resultListen = New-AzServiceBusAuthorizationRule -ResourceGroupName $resourceGroupName -Namespace $namespaceName -Topic $TopicName -Name $authRuleNameListen -Rights @("Listen")
129+
Assert-AreEqual $authRuleNameListen $resultListen.Name
130+
Assert-AreEqual 1 $resultListen.Rights.Count
131+
Assert-True { $resultListen.Rights -Contains "Listen" }
132+
133+
$resultSend = New-AzServiceBusAuthorizationRule -ResourceGroupName $resourceGroupName -Namespace $namespaceName -Topic $TopicName -Name $authRuleNameSend -Rights @("Send")
134+
Assert-AreEqual $authRuleNameSend $resultSend.Name
135+
Assert-AreEqual 1 $resultSend.Rights.Count
136+
Assert-True { $resultSend.Rights -Contains "Send" }
137+
138+
$resultAll3 = New-AzServiceBusAuthorizationRule -ResourceGroupName $resourceGroupName -Namespace $namespaceName -Topic $TopicName -Name $authRuleNameAll -Rights @("Listen","Send","Manage")
139+
Assert-AreEqual $authRuleNameAll $resultAll3.Name
140+
Assert-AreEqual 3 $resultAll3.Rights.Count
141+
Assert-True { $resultAll3.Rights -Contains "Send" }
142+
Assert-True { $resultAll3.Rights -Contains "Listen" }
143+
Assert-True { $resultAll3.Rights -Contains "Manage" }
124144

125145
# Get Created Topic Authorization Rule
126146
Write-Debug "Get created authorizationRule"
@@ -132,16 +152,7 @@ function ServiceBusTopicAuthTests
132152
Assert-True { $createdAuthRule.Rights -Contains "Listen" }
133153
Assert-True { $createdAuthRule.Rights -Contains "Send" }
134154

135-
# Get all Topic Authorization Rules
136-
Write-Debug "Get All Topic AuthorizationRule"
137-
$result = Get-AzServiceBusAuthorizationRule -ResourceGroupName $resourceGroupName -Namespace $namespaceName -Topic $TopicName
138-
# Assert
139-
140-
Assert-AreEqual $result.Name $authRuleName "Topic AuthorizationRule created earlier is not found."
141-
Assert-AreEqual 2 $result.Rights.Count
142-
Assert-True { $result.Rights -Contains "Listen" }
143-
Assert-True { $result.Rights -Contains "Send" }
144-
155+
145156
# Update the Topic Authorization Rule
146157
Write-Debug "Update Topic AuthorizationRule"
147158
$createdAuthRule.Rights.Add("Manage")

src/ServiceBus/ServiceBus.Test/SessionRecords/Microsoft.Azure.Commands.ServiceBus.Test.ScenarioTests.ServiceBusQueueTests/ServiceBusQueueAuth_CURD.json

Lines changed: 508 additions & 343 deletions
Large diffs are not rendered by default.

src/ServiceBus/ServiceBus.Test/SessionRecords/Microsoft.Azure.Commands.ServiceBus.Test.ScenarioTests.ServiceBusServiceTests/ServiceBusNameSpaceAuth_CURD_Tests.json

Lines changed: 337 additions & 249 deletions
Large diffs are not rendered by default.

src/ServiceBus/ServiceBus.Test/SessionRecords/Microsoft.Azure.Commands.ServiceBus.Test.ScenarioTests.ServiceBusTopicTests/ServiceBusTopicAuth_CURD.json

Lines changed: 443 additions & 288 deletions
Large diffs are not rendered by default.

src/ServiceBus/ServiceBus/ChangeLog.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
## Upcoming Release
2222
* Fixed miscellaneous typos across module
2323
* Fix for issue #9658 : Typo VirtualNetworkRule parameter in Set-AzServiceBusNetworkRuleSet
24+
* Fix for issue #9786 : cannot create a rule with Listen only rights
2425

2526
## Version 1.3.0
2627
* Added new cmmdlet added for generating SAS token : New-AzServiceBusAuthorizationRuleSASToken

src/ServiceBus/ServiceBus/Cmdlets/AuthorizationRule/NewAzureServiceBusAuthorizationRule.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public override void ExecuteCmdlet()
6565
PSSharedAccessAuthorizationRuleAttributes sasRule = new PSSharedAccessAuthorizationRuleAttributes();
6666
sasRule.Rights = new List<AccessRights?>();
6767

68-
if (Array.Exists(Rights, element => element == "Manage") && !Array.Exists(Rights, element => element == "Listen") || !Array.Exists(Rights, element => element == "Send"))
68+
if (Array.Exists(Rights, element => element == "Manage") && (!Array.Exists(Rights, element => element == "Listen") || !Array.Exists(Rights, element => element == "Send")))
6969
{
7070
Exception exManage = new Exception("Assigning 'Manage' to rights requires ‘Listen and ‘Send' to be included with. e.g. @(\"Manage\",\"Listen\",\"Send\")");
7171
throw exManage;

0 commit comments

Comments
 (0)