Skip to content

Commit bdd1856

Browse files
committed
Add Set-AzSignalRUpstream, Update-AzSignalRNetworkAcl commands
1 parent 26679dc commit bdd1856

File tree

16 files changed

+13174
-1043
lines changed

16 files changed

+13174
-1043
lines changed

src/SignalR/SignalR.Test/ScenarioTests/AzureRmSignalRTests.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,5 +39,16 @@ public void TestAzureRmSignalR() =>
3939
[Trait(Category.AcceptanceType, Category.CheckIn)]
4040
public void TestAzureRmSignalRWithDefaultArgs() =>
4141
TestController.NewInstance.RunPowerShellTest(_logger, "Test-AzureRmSignalRWithDefaultArgs");
42+
43+
[Fact]
44+
[Trait(Category.AcceptanceType, Category.CheckIn)]
45+
public void TestAzureRmSignalRUpdateNetworkAcl() =>
46+
TestController.NewInstance.RunPowerShellTest(_logger, "Test-AzureRmSignalRUpdateNetworkAcl");
47+
48+
[Fact]
49+
[Trait(Category.AcceptanceType, Category.CheckIn)]
50+
public void TestAzureRmSignalRSetUpstream() =>
51+
TestController.NewInstance.RunPowerShellTest(_logger, "Test-AzureRmSignalRSetUpstream");
52+
4253
}
4354
}

src/SignalR/SignalR.Test/ScenarioTests/AzureRmSignalRTests.ps1

Lines changed: 202 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
# limitations under the License.
1313
# ----------------------------------------------------------------------------------
1414

15+
$ResourceGroupNamePrefix = "powershell-signalr-unit-test-"
16+
1517
<#
1618
.SYNOPSIS
1719
Test 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

Comments
 (0)