1212# limitations under the License.
1313# ----------------------------------------------------------------------------------
1414
15+ $ResourceGroupNamePrefix = " powershell-signalr-unit-test-"
16+
1517<#
1618. SYNOPSIS
1719Test common SignalR cmdlets.
@@ -187,3 +189,203 @@ function Verify-SignalR {
187189 Assert-NotNull $signalr.ServerPort
188190 Assert-NotNull $signalr.Version
189191}
192+
193+ <#
194+ . SYNOPSIS
195+ Test Update networkAcl cmdlets
196+ #>
197+ function Test-AzureRmSignalRUpdateNetworkAcl {
198+ $nameSuffix = " update-networkAcl"
199+ $resourceGroupName = Get-RandomResourceGroupName $nameSuffix
200+ $signalrName = Get-RandomSignalRName $nameSuffix
201+
202+
203+ try {
204+ New-Environment - signalRName $signalrName - resourceGroupName $resourceGroupName
205+ Set-AzDefault - ResourceGroupName $resourceGroupName
206+
207+ # Set AzureRm default resource group name, and subsequent calls will use this as the resource group if missing.
208+ Set-AzDefault - ResourceGroupName $resourceGroupName
209+
210+ # Test Parameters Set
211+ # a. default parameter set / ResourceGroupParameterSet
212+ $networkAcl = Update-AzSignalRNetworkAcl - name $signalrName - ResourceGroupName $resourceGroupName - PublicNetwork - Allow RESTAPI - Deny ClientConnection, ServerConnection
213+ Assert-AreEqual $networkAcl.PublicNetwork.Allow RESTAPI
214+ Assert-AreEqualArray $networkAcl.PublicNetwork.Deny ServerConnection, ClientConnection
215+
216+ # b. ResourceId parameter set
217+ $signalr = Get-AzSignalR - name $signalrName - ResourceGroupName $resourceGroupName
218+ $networkAcl = Update-AzSignalRNetworkAcl - ResourceId $signalr.id - PublicNetwork - Deny RESTAPI - Allow ClientConnection, ServerConnection
219+ $signalr = Get-AzSignalR - name $signalrName
220+ Assert-AreEqual $networkAcl.PublicNetwork.Deny RESTAPI
221+ Assert-AreEqualArray $networkAcl.PublicNetwork.Allow ServerConnection, ClientConnection
222+
223+ # c. InputObject parameter Set
224+ $signalr | Update-AzSignalRNetworkAcl - Deny ClientConnection, ServerConnection - Allow RESTAPI - PublicNetwork
225+ $networkAcl = Update-AzSignalRNetworkAcl - name $signalrName - ResourceGroupName $resourceGroupName
226+ Assert-AreEqualArray ServerConnection, ClientConnection $networkAcl.PublicNetwork.Deny
227+ Assert-AreEqual $networkAcl.PublicNetwork.Allow RESTAPI
228+
229+ # Test update default action, private endpoint , public network all together
230+ $privateEndpointName = $networkAcl.PrivateEndpoints [0 ].Name;
231+ $networkAcl = Update-AzSignalRNetworkAcl - name $signalrName - ResourceGroupName $resourceGroupName - PrivateEndpointName $privateEndpointName - Allow RESTAPI, ClientConnection - Deny ServerConnection - PublicNetwork - DefaultAction Deny
232+ Assert-AreEqual $networkAcl.DefaultAction Deny
233+ Assert-AreEqual $networkAcl.PublicNetwork.Deny ServerConnection
234+ Assert-AreEqualArray $networkAcl.PublicNetwork.Allow ClientConnection, RESTAPI
235+ Assert-AreEqual $networkAcl.PrivateEndpoints [0 ].Deny ServerConnection
236+ Assert-AreEqualArray $networkAcl.PrivateEndpoints [0 ].Allow ClientConnection, RESTAPI
237+
238+ # Test update default action
239+ $networkAcl = Update-AzSignalRNetworkAcl - name $signalrName - ResourceGroupName $resourceGroupName - DefaultAction Deny
240+ Assert-AreEqual $networkAcl.DefaultAction deny
241+ $networkAcl = Update-AzSignalRNetworkAcl - name $signalrName - ResourceGroupName $resourceGroupName - DefaultAction Allow
242+ Assert-AreEqual $networkAcl.DefaultAction Allow
243+
244+ # Test update private endpoint network Acl
245+ # update only one private endpoint
246+ $unmodifiedAllow = $networkAcl.PrivateEndpoints [1 ].Allow;
247+ $unmodifiedDeny = $networkAcl.PrivateEndpoints [1 ].Deny;
248+ $networkAcl = Update-AzSignalRNetworkAcl - name $signalrName - ResourceGroupName $resourceGroupName - PrivateEndpointName $privateEndpointName - Deny RESTAPI - Allow ClientConnection, ServerConnection
249+ Assert-AreEqual $networkAcl.PrivateEndpoints [0 ].Deny RESTAPI
250+ Assert-AreEqualArray $networkAcl.PrivateEndpoints [0 ].Allow ServerConnection, ClientConnection
251+ Assert-AreEqualArray $unmodifiedAllow $networkAcl.PrivateEndpoints [1 ].Allow
252+ Assert-Null $unmodifiedDeny
253+ Assert-Null $networkAcl.PrivateEndpoints [1 ].Deny
254+ $networkAcl = Update-AzSignalRNetworkAcl - name $signalrName - ResourceGroupName $resourceGroupName - PrivateEndpointName $privateEndpointName - Allow RESTAPI - Deny ClientConnection, ServerConnection
255+ Assert-AreEqual $networkAcl.PrivateEndpoints [0 ].Allow RESTAPI
256+ Assert-AreEqualArray $networkAcl.PrivateEndpoints [0 ].Deny ServerConnection, ClientConnection # order of deny/allow Acls are defined by server
257+ Assert-AreEqualArray $unmodifiedAllow $networkAcl.PrivateEndpoints [1 ].Allow
258+ Assert-Null $unmodifiedDeny
259+ Assert-Null $networkAcl.PrivateEndpoints [1 ].Deny
260+ # update two private endpoint network Acls
261+ $privateEndpointName1 = $networkAcl.PrivateEndpoints [1 ].Name;
262+ $networkAcl = Update-AzSignalRNetworkAcl - name $signalrName - ResourceGroupName $resourceGroupName - PrivateEndpointName $privateEndpointName , $privateEndpointName1 - Deny RESTAPI, ServerConnection - Allow ClientConnection
263+ Assert-AreEqualArray $networkAcl.PrivateEndpoints [0 ].Deny RESTAPI, ServerConnection
264+ Assert-AreEqual $networkAcl.PrivateEndpoints [0 ].Allow ClientConnection
265+ Assert-AreEqualArray $networkAcl.PrivateEndpoints [1 ].Deny RESTAPI, ServerConnection
266+ Assert-AreEqual $networkAcl.PrivateEndpoints [1 ].Allow ClientConnection
267+ }
268+ finally {
269+ Remove-Environment - resourceGroupName $resourceGroupName - signalRName $signalRName
270+ }
271+ }
272+
273+ <#
274+ . SYNOPSIS
275+ Test Set Upstream cmdlets
276+ #>
277+ function Test-AzureRmSignalRSetUpstream {
278+ $location = Get-ProviderLocation " Microsoft.SignalRService/SignalR"
279+ $nameSuffix = " set-upstream"
280+ $resourceGroupName = Get-RandomResourceGroupName $nameSuffix
281+ $signalrName = Get-RandomSignalRName $nameSuffix
282+ try {
283+ New-AzResourceGroup - Name $resourceGroupName - Location $location
284+ $signalr = New-AzSignalR - ResourceGroupName $resourceGroupName - Name $signalrName
285+
286+ $upstream = Set-AzSignalRUpstream - ResourceGroupName $resourceGroupName - Name $signalrName `
287+ - Template @ {UrlTemplate = ' http://host-connections1.com' }
288+ Assert-AreEqualObjectProperties @ {UrlTemplate = ' http://host-connections1.com' } $upstream.Templates
289+
290+ # b. ResourceId parameter set
291+ $upstream = Set-AzSignalRUpstream - ResourceId $signalr.Id `
292+ - Template @ {UrlTemplate = ' http://host-connections2.com' }
293+ Assert-AreEqualObjectProperties @ {UrlTemplate = ' http://host-connections2.com' } $upstream.Templates
294+
295+ # c. InputObject parameter set
296+ $signalr | Set-AzSignalRUpstream - Template @ {UrlTemplate = ' http://host-connections3.com' }
297+ Assert-AreEqualObjectProperties @ {UrlTemplate = ' http://host-connections3.com' } $upstream.Templates
298+
299+ # Test set multiple upstream Template
300+ $upstream = Set-AzSignalRUpstream - ResourceId $signalr.Id `
301+ - Template @ {UrlTemplate = ' http://host-connections4.com' ; HubPattern = ' chat' ; EventPattern = ' broadcast' }, @ {UrlTemplate = ' http://host-connections5.com' ; HubPattern = ' chat' ; CategoryPattern = ' broadcast' }
302+ Assert-AreEqualObjectProperties @ {UrlTemplate = ' http://host-connections4.com' ; HubPattern = ' chat' ; EventPattern = ' broadcast' }, @ {UrlTemplate = ' http://host-connections5.com' ; HubPattern = ' chat' ; CategoryPattern = ' broadcast' } $upstream.Templates
303+
304+ #
305+ }
306+ finally {
307+ Remove-AzResourceGroup - Name $resourceGroupName
308+ }
309+
310+ }
311+ function New-Environment {
312+ param (
313+ [string ] $signalRName ,
314+ [string ] $resourceGroupName
315+ )
316+
317+ $location = Get-ProviderLocation " Microsoft.SignalRService/SignalR"
318+ $virtualNetworkName = " virtualNetwork" + (getAssetName)
319+ $subnetName = " subnet" + (getAssetName)
320+ $zoneName = " zone" + (getAssetName)+ " .contoso.com"
321+ $linkName = " link" + (getAssetName)
322+ $privateEndpointName = " privateEndpoint" + (getAssetName)
323+
324+ New-AzResourceGroup - Name $resourceGroupName - Location $location
325+
326+ # set up the first private endpoint
327+ $virtualNetwork = New-AzVirtualNetwork `
328+ - ResourceGroupName $resourceGroupName `
329+ - Location $location `
330+ - Name $virtualNetworkName `
331+ - AddressPrefix 10.0 .0.0 / 16
332+
333+ $signalr = New-AzSignalR - ResourceGroupName $resourceGroupName - Name $signalrName - Sku " Standard_S1"
334+
335+
336+ $subnetConfig = Add-AzVirtualNetworkSubnetConfig - Name $subnetName - AddressPrefix 10.0 .0.0 / 24 - PrivateEndpointNetworkPoliciesFlag " Disabled" - VirtualNetwork $virtualNetwork
337+
338+ $virtualNetwork | Set-AzVirtualNetwork
339+
340+ $zone = New-AzPrivateDnsZone - Name $zoneName - ResourceGroupName $resourceGroupName
341+
342+ $link = New-AzPrivateDnsVirtualNetworkLink - ZoneName $zoneName `
343+ - ResourceGroupName $resourceGroupName - Name $linkName `
344+ - VirtualNetworkId $virtualNetwork.id - EnableRegistration
345+
346+ $privateEndpointConnection = New-AzPrivateLinkServiceConnection - Name $privateEndpointName ` - PrivateLinkServiceId $signalr.Id ` - GroupId " signalr"
347+
348+ $virtualNetwork = Get-AzVirtualNetwork - ResourceGroupName " $resourceGroupName " - Name $virtualNetworkName
349+
350+ $subnet = $virtualNetwork ` | Select - ExpandProperty subnets ` | Where-Object { $_.Name -eq $subnetName }
351+
352+ $privateEndpoint = New-AzPrivateEndpoint - ResourceGroupName " $resourceGroupName " ` - Name $privateEndpointName ` - Location $location ` - Subnet $subnet ` - PrivateLinkServiceConnection $privateEndpointConnection
353+
354+ $virtualNetworkName2 = " virtualNetwork2" + (getAssetName)
355+ $subnetName2 = " subnet2" + (getAssetName)
356+ $zoneName2 = " zone2" + (getAssetName)+ " .contoso.com"
357+ $linkName2 = " link2" + (getAssetName)
358+ $privateEndpointName2 = " privateEndpoint2" + (getAssetName)
359+
360+ # set up the second private endpoint
361+ $virtualNetwork = New-AzVirtualNetwork `
362+ - ResourceGroupName $resourceGroupName `
363+ - Location $location `
364+ - Name $virtualNetworkName2 `
365+ - AddressPrefix 10.0 .0.0 / 16
366+
367+
368+ $subnetConfig = Add-AzVirtualNetworkSubnetConfig - Name $subnetName2 - AddressPrefix 10.0 .0.0 / 24 - PrivateEndpointNetworkPoliciesFlag " Disabled" - VirtualNetwork $virtualNetwork
369+
370+ $virtualNetwork | Set-AzVirtualNetwork
371+
372+ $zone = New-AzPrivateDnsZone - Name $zoneName2 - ResourceGroupName $resourceGroupName
373+
374+ $link = New-AzPrivateDnsVirtualNetworkLink - ZoneName $zoneName2 - ResourceGroupName $resourceGroupName - Name $linkName2 - VirtualNetworkId $virtualNetwork.id - EnableRegistration
375+
376+ $privateEndpointConnection = New-AzPrivateLinkServiceConnection - Name $privateEndpointName2 ` - PrivateLinkServiceId $signalr.Id ` - GroupId " signalr"
377+
378+ $virtualNetwork = Get-AzVirtualNetwork - ResourceGroupName $resourceGroupName - Name $virtualNetworkName2
379+
380+ $subnet = $virtualNetwork ` | Select - ExpandProperty subnets ` | Where-Object { $_.Name -eq $subnetName2 }
381+
382+ $privateEndpoint = New-AzPrivateEndpoint - ResourceGroupName " $resourceGroupName " ` - Name $privateEndpointName2 ` - Location $location ` - Subnet $subnet ` - PrivateLinkServiceConnection $privateEndpointConnection
383+
384+ }
385+
386+ function Remove-Environment {
387+ param (
388+ [string ] $resourceGroupName
389+ )
390+ Remove-AzResourceGroup - Name $resourceGroupName
391+ }
0 commit comments