Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions src/SignalR/SignalR.Test/ScenarioTests/AzureRmSignalRTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,16 @@ public void TestAzureRmSignalR() =>
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestAzureRmSignalRWithDefaultArgs() =>
TestController.NewInstance.RunPowerShellTest(_logger, "Test-AzureRmSignalRWithDefaultArgs");

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestAzureRmSignalRUpdateNetworkAcl() =>
TestController.NewInstance.RunPowerShellTest(_logger, "Test-AzureRmSignalRUpdateNetworkAcl");

[Fact]
[Trait(Category.AcceptanceType, Category.CheckIn)]
public void TestAzureRmSignalRSetUpstream() =>
TestController.NewInstance.RunPowerShellTest(_logger, "Test-AzureRmSignalRSetUpstream");

}
}
202 changes: 202 additions & 0 deletions src/SignalR/SignalR.Test/ScenarioTests/AzureRmSignalRTests.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
# limitations under the License.
# ----------------------------------------------------------------------------------

$ResourceGroupNamePrefix = "powershell-signalr-unit-test-"

<#
.SYNOPSIS
Test common SignalR cmdlets.
Expand Down Expand Up @@ -187,3 +189,203 @@ function Verify-SignalR {
Assert-NotNull $signalr.ServerPort
Assert-NotNull $signalr.Version
}

<#
.SYNOPSIS
Test Update networkAcl cmdlets
#>
function Test-AzureRmSignalRUpdateNetworkAcl {
$nameSuffix = "update-networkAcl"
$resourceGroupName = Get-RandomResourceGroupName $nameSuffix
$signalrName = Get-RandomSignalRName $nameSuffix


try {
New-Environment -signalRName $signalrName -resourceGroupName $resourceGroupName
Set-AzDefault -ResourceGroupName $resourceGroupName

# Set AzureRm default resource group name, and subsequent calls will use this as the resource group if missing.
Set-AzDefault -ResourceGroupName $resourceGroupName

# Test Parameters Set
# a. default parameter set / ResourceGroupParameterSet
$networkAcl = Update-AzSignalRNetworkAcl -name $signalrName -ResourceGroupName $resourceGroupName -PublicNetwork -Allow RESTAPI -Deny ClientConnection, ServerConnection
Assert-AreEqual $networkAcl.PublicNetwork.Allow RESTAPI
Assert-AreEqualArray $networkAcl.PublicNetwork.Deny ServerConnection, ClientConnection

# b. ResourceId parameter set
$signalr = Get-AzSignalR -name $signalrName -ResourceGroupName $resourceGroupName
$networkAcl = Update-AzSignalRNetworkAcl -ResourceId $signalr.id -PublicNetwork -Deny RESTAPI -Allow ClientConnection, ServerConnection
$signalr = Get-AzSignalR -name $signalrName
Assert-AreEqual $networkAcl.PublicNetwork.Deny RESTAPI
Assert-AreEqualArray $networkAcl.PublicNetwork.Allow ServerConnection, ClientConnection

# c. InputObject parameter Set
$signalr | Update-AzSignalRNetworkAcl -Deny ClientConnection, ServerConnection -Allow RESTAPI -PublicNetwork
$networkAcl = Update-AzSignalRNetworkAcl -name $signalrName -ResourceGroupName $resourceGroupName
Assert-AreEqualArray ServerConnection, ClientConnection $networkAcl.PublicNetwork.Deny
Assert-AreEqual $networkAcl.PublicNetwork.Allow RESTAPI

# Test update default action, private endpoint , public network all together
$privateEndpointName = $networkAcl.PrivateEndpoints[0].Name;
$networkAcl = Update-AzSignalRNetworkAcl -name $signalrName -ResourceGroupName $resourceGroupName -PrivateEndpointName $privateEndpointName -Allow RESTAPI, ClientConnection -Deny ServerConnection -PublicNetwork -DefaultAction Deny
Assert-AreEqual $networkAcl.DefaultAction Deny
Assert-AreEqual $networkAcl.PublicNetwork.Deny ServerConnection
Assert-AreEqualArray $networkAcl.PublicNetwork.Allow ClientConnection, RESTAPI
Assert-AreEqual $networkAcl.PrivateEndpoints[0].Deny ServerConnection
Assert-AreEqualArray $networkAcl.PrivateEndpoints[0].Allow ClientConnection, RESTAPI

# Test update default action
$networkAcl = Update-AzSignalRNetworkAcl -name $signalrName -ResourceGroupName $resourceGroupName -DefaultAction Deny
Assert-AreEqual $networkAcl.DefaultAction deny
$networkAcl = Update-AzSignalRNetworkAcl -name $signalrName -ResourceGroupName $resourceGroupName -DefaultAction Allow
Assert-AreEqual $networkAcl.DefaultAction Allow

# Test update private endpoint network Acl
# update only one private endpoint
$unmodifiedAllow = $networkAcl.PrivateEndpoints[1].Allow;
$unmodifiedDeny = $networkAcl.PrivateEndpoints[1].Deny;
$networkAcl = Update-AzSignalRNetworkAcl -name $signalrName -ResourceGroupName $resourceGroupName -PrivateEndpointName $privateEndpointName -Deny RESTAPI -Allow ClientConnection, ServerConnection
Assert-AreEqual $networkAcl.PrivateEndpoints[0].Deny RESTAPI
Assert-AreEqualArray $networkAcl.PrivateEndpoints[0].Allow ServerConnection, ClientConnection
Assert-AreEqualArray $unmodifiedAllow $networkAcl.PrivateEndpoints[1].Allow
Assert-Null $unmodifiedDeny
Assert-Null $networkAcl.PrivateEndpoints[1].Deny
$networkAcl = Update-AzSignalRNetworkAcl -name $signalrName -ResourceGroupName $resourceGroupName -PrivateEndpointName $privateEndpointName -Allow RESTAPI -Deny ClientConnection, ServerConnection
Assert-AreEqual $networkAcl.PrivateEndpoints[0].Allow RESTAPI
Assert-AreEqualArray $networkAcl.PrivateEndpoints[0].Deny ServerConnection, ClientConnection # order of deny/allow Acls are defined by server
Assert-AreEqualArray $unmodifiedAllow $networkAcl.PrivateEndpoints[1].Allow
Assert-Null $unmodifiedDeny
Assert-Null $networkAcl.PrivateEndpoints[1].Deny
# update two private endpoint network Acls
$privateEndpointName1 = $networkAcl.PrivateEndpoints[1].Name;
$networkAcl = Update-AzSignalRNetworkAcl -name $signalrName -ResourceGroupName $resourceGroupName -PrivateEndpointName $privateEndpointName, $privateEndpointName1 -Deny RESTAPI, ServerConnection -Allow ClientConnection
Assert-AreEqualArray $networkAcl.PrivateEndpoints[0].Deny RESTAPI, ServerConnection
Assert-AreEqual $networkAcl.PrivateEndpoints[0].Allow ClientConnection
Assert-AreEqualArray $networkAcl.PrivateEndpoints[1].Deny RESTAPI, ServerConnection
Assert-AreEqual $networkAcl.PrivateEndpoints[1].Allow ClientConnection
}
finally {
Remove-Environment -resourceGroupName $resourceGroupName -signalRName $signalRName
}
}

<#
.SYNOPSIS
Test Set Upstream cmdlets
#>
function Test-AzureRmSignalRSetUpstream {
$location = Get-ProviderLocation "Microsoft.SignalRService/SignalR"
$nameSuffix = "set-upstream"
$resourceGroupName = Get-RandomResourceGroupName $nameSuffix
$signalrName = Get-RandomSignalRName $nameSuffix
try {
New-AzResourceGroup -Name $resourceGroupName -Location $location
$signalr = New-AzSignalR -ResourceGroupName $resourceGroupName -Name $signalrName

$upstream = Set-AzSignalRUpstream -ResourceGroupName $resourceGroupName -Name $signalrName `
-Template @{UrlTemplate = 'http://host-connections1.com' }
Assert-AreEqualObjectProperties @{UrlTemplate = 'http://host-connections1.com' } $upstream.Templates

# b. ResourceId parameter set
$upstream = Set-AzSignalRUpstream -ResourceId $signalr.Id `
-Template @{UrlTemplate = 'http://host-connections2.com' }
Assert-AreEqualObjectProperties @{UrlTemplate = 'http://host-connections2.com' } $upstream.Templates

# c. InputObject parameter set
$signalr | Set-AzSignalRUpstream -Template @{UrlTemplate = 'http://host-connections3.com' }
Assert-AreEqualObjectProperties @{UrlTemplate = 'http://host-connections3.com' } $upstream.Templates

# Test set multiple upstream Template
$upstream = Set-AzSignalRUpstream -ResourceId $signalr.Id `
-Template @{UrlTemplate = 'http://host-connections4.com'; HubPattern = 'chat'; EventPattern = 'broadcast' }, @{UrlTemplate = 'http://host-connections5.com'; HubPattern = 'chat'; CategoryPattern = 'broadcast' }
Assert-AreEqualObjectProperties @{UrlTemplate = 'http://host-connections4.com'; HubPattern = 'chat'; EventPattern = 'broadcast' }, @{UrlTemplate = 'http://host-connections5.com'; HubPattern = 'chat'; CategoryPattern = 'broadcast' } $upstream.Templates

#
}
finally {
Remove-AzResourceGroup -Name $resourceGroupName
}

}
function New-Environment {
param (
[string] $signalRName,
[string] $resourceGroupName
)

$location = Get-ProviderLocation "Microsoft.SignalRService/SignalR"
$virtualNetworkName = "virtualNetwork"+(getAssetName)
$subnetName = "subnet"+(getAssetName)
$zoneName = "zone"+(getAssetName)+".contoso.com"
$linkName = "link" +(getAssetName)
$privateEndpointName = "privateEndpoint" + (getAssetName)

New-AzResourceGroup -Name $resourceGroupName -Location $location

# set up the first private endpoint
$virtualNetwork = New-AzVirtualNetwork `
-ResourceGroupName $resourceGroupName `
-Location $location `
-Name $virtualNetworkName `
-AddressPrefix 10.0.0.0/16

$signalr = New-AzSignalR -ResourceGroupName $resourceGroupName -Name $signalrName -Sku "Standard_S1"


$subnetConfig = Add-AzVirtualNetworkSubnetConfig -Name $subnetName -AddressPrefix 10.0.0.0/24 -PrivateEndpointNetworkPoliciesFlag "Disabled" -VirtualNetwork $virtualNetwork

$virtualNetwork | Set-AzVirtualNetwork

$zone = New-AzPrivateDnsZone -Name $zoneName -ResourceGroupName $resourceGroupName

$link = New-AzPrivateDnsVirtualNetworkLink -ZoneName $zoneName `
-ResourceGroupName $resourceGroupName -Name $linkName `
-VirtualNetworkId $virtualNetwork.id -EnableRegistration

$privateEndpointConnection = New-AzPrivateLinkServiceConnection -Name $privateEndpointName ` -PrivateLinkServiceId $signalr.Id ` -GroupId "signalr"

$virtualNetwork = Get-AzVirtualNetwork -ResourceGroupName "$resourceGroupName" -Name $virtualNetworkName

$subnet = $virtualNetwork ` | Select -ExpandProperty subnets ` | Where-Object { $_.Name -eq $subnetName }

$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName "$resourceGroupName" ` -Name $privateEndpointName ` -Location $location ` -Subnet $subnet ` -PrivateLinkServiceConnection $privateEndpointConnection

$virtualNetworkName2 = "virtualNetwork2"+(getAssetName)
$subnetName2 = "subnet2"+(getAssetName)
$zoneName2 = "zone2"+(getAssetName)+".contoso.com"
$linkName2 = "link2" +(getAssetName)
$privateEndpointName2 = "privateEndpoint2" + (getAssetName)

# set up the second private endpoint
$virtualNetwork = New-AzVirtualNetwork `
-ResourceGroupName $resourceGroupName `
-Location $location `
-Name $virtualNetworkName2 `
-AddressPrefix 10.0.0.0/16


$subnetConfig = Add-AzVirtualNetworkSubnetConfig -Name $subnetName2 -AddressPrefix 10.0.0.0/24 -PrivateEndpointNetworkPoliciesFlag "Disabled" -VirtualNetwork $virtualNetwork

$virtualNetwork | Set-AzVirtualNetwork

$zone = New-AzPrivateDnsZone -Name $zoneName2 -ResourceGroupName $resourceGroupName

$link = New-AzPrivateDnsVirtualNetworkLink -ZoneName $zoneName2 -ResourceGroupName $resourceGroupName -Name $linkName2 -VirtualNetworkId $virtualNetwork.id -EnableRegistration

$privateEndpointConnection = New-AzPrivateLinkServiceConnection -Name $privateEndpointName2 ` -PrivateLinkServiceId $signalr.Id ` -GroupId "signalr"

$virtualNetwork = Get-AzVirtualNetwork -ResourceGroupName $resourceGroupName -Name $virtualNetworkName2

$subnet = $virtualNetwork ` | Select -ExpandProperty subnets ` | Where-Object { $_.Name -eq $subnetName2 }

$privateEndpoint = New-AzPrivateEndpoint -ResourceGroupName "$resourceGroupName" ` -Name $privateEndpointName2 ` -Location $location ` -Subnet $subnet ` -PrivateLinkServiceConnection $privateEndpointConnection

}

function Remove-Environment {
param(
[string] $resourceGroupName
)
Remove-AzResourceGroup -Name $resourceGroupName
}
Loading