Skip to content

Commit 34473a1

Browse files
authored
[SQL] Add EndpointCertificate cmdlets (#17703)
* Implement EndpointCertificate cmdlets * minor fixes in comments * Add tests * Fix model property * Run Update-MarkdownHelpModule * Update AzSqlInstanceEndpointCertificate markdown helper file * Bump changelog * reference new sdk * Re-record audit tests
1 parent 1635bbe commit 34473a1

File tree

86 files changed

+29536
-26480
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

86 files changed

+29536
-26480
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
// ----------------------------------------------------------------------------------
2+
//
3+
// Copyright Microsoft Corporation
4+
// Licensed under the Apache License, Version 2.0 (the "License");
5+
// you may not use this file except in compliance with the License.
6+
// You may obtain a copy of the License at
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
// Unless required by applicable law or agreed to in writing, software
9+
// distributed under the License is distributed on an "AS IS" BASIS,
10+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
// See the License for the specific language governing permissions and
12+
// limitations under the License.
13+
// ----------------------------------------------------------------------------------
14+
15+
using Microsoft.Azure.Commands.ScenarioTest.SqlTests;
16+
using Microsoft.WindowsAzure.Commands.ScenarioTest;
17+
using Xunit;
18+
using Xunit.Abstractions;
19+
using RestTestFramework = Microsoft.Rest.ClientRuntime.Azure.TestFramework;
20+
21+
namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests
22+
{
23+
public class EndpointCertificateTests : SqlTestsBase
24+
{
25+
26+
public EndpointCertificateTests(ITestOutputHelper output) : base(output)
27+
{
28+
base.resourceTypesToIgnoreApiVersion = new string[] {
29+
"Microsoft.Sql/servers"
30+
};
31+
}
32+
33+
protected override void SetupManagementClients(RestTestFramework.MockContext context)
34+
{
35+
var newResourcesClient = GetResourcesClient(context);
36+
var sqlClient = GetSqlClient(context);
37+
var networkClient = GetNetworkClient(context);
38+
var graphClient = GetGraphClientVersion1_6(context);
39+
Helper.SetupSomeOfManagementClients(newResourcesClient, sqlClient, networkClient, graphClient);
40+
}
41+
42+
[Fact]
43+
[Trait(Category.AcceptanceType, Category.CheckIn)]
44+
public void TestEndpointCertificate()
45+
{
46+
RunPowerShellTest("Test-EndpointCertificate");
47+
}
48+
}
49+
}
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
# ----------------------------------------------------------------------------------
2+
#
3+
# Copyright Microsoft Corporation
4+
# Licensed under the Apache License, Version 2.0 (the "License");
5+
# you may not use this file except in compliance with the License.
6+
# You may obtain a copy of the License at
7+
# http://www.apache.org/licenses/LICENSE-2.0
8+
# Unless required by applicable law or agreed to in writing, software
9+
# distributed under the License is distributed on an "AS IS" BASIS,
10+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11+
# See the License for the specific language governing permissions and
12+
# limitations under the License.
13+
# ----------------------------------------------------------------------------------
14+
15+
# Location to use for provisioning test managed instances
16+
$instanceLocation = "westcentralus"
17+
18+
# Test constants
19+
$endpointTypeDatabaseMirroring = "DATABASE_MIRRORING"
20+
$endpointTypeServiceBroker = "SERVICE_BROKER"
21+
$endpointCertType = "Microsoft.Sql/managedInstances/endpointCertificates"
22+
23+
<#
24+
.SYNOPSIS
25+
Tests endpoint certificate
26+
#>
27+
function Test-EndpointCertificate
28+
{
29+
try
30+
{
31+
# Setup
32+
$rg = Create-ResourceGroupForTest
33+
$managedInstance = Create-ManagedInstanceForTest $rg
34+
$rgName = $rg.ResourceGroupName
35+
$miName = $managedInstance.ManagedInstanceName
36+
37+
# generate expected cert ids
38+
$instance = Get-AzSqlInstance -ResourceGroupName $rgName -Name $miName
39+
$instanceId = $instance.Id
40+
$certId1 = $instanceId + "/endpointCertificates/" + $endpointTypeDatabaseMirroring
41+
$certId2 = $instanceId + "/endpointCertificates/" + $endpointTypeServiceBroker
42+
43+
# Get DBM certificate - (GetByNameParameterSet)
44+
$getCert1ByNameParameterSet = Get-AzSqlInstanceEndpointCertificate -ResourceGroupName $rgName -InstanceName $miName -Name $endpointTypeDatabaseMirroring
45+
Write-Debug ('$getCert1ByNameParameterSet is ' + (ConvertTo-Json $getCert1ByNameParameterSet))
46+
Assert-NotNull $getCert1ByNameParameterSet
47+
Assert-AreEqual $getCert1ByNameParameterSet.ResourceGroupName $rgName
48+
Assert-AreEqual $getCert1ByNameParameterSet.InstanceName $miName
49+
Assert-AreEqual $getCert1ByNameParameterSet.Id $certId1
50+
Assert-AreEqual $getCert1ByNameParameterSet.Type $endpointCertType
51+
Assert-AreEqual $getCert1ByNameParameterSet.Name $endpointTypeDatabaseMirroring
52+
Assert-NotNull $getCert1ByNameParameterSet.PublicKey
53+
54+
# Get DBM certificate - (GetByParentObjectParameterSet)
55+
$getCert1ByParentObjectParameterSet = Get-AzSqlInstanceEndpointCertificate -InstanceObject $instance -Name $endpointTypeDatabaseMirroring
56+
Write-Debug ('$getCert1ByParentObjectParameterSet is ' + (ConvertTo-Json $getCert1ByParentObjectParameterSet))
57+
Assert-NotNull $getCert1ByParentObjectParameterSet
58+
Assert-AreEqual $getCert1ByParentObjectParameterSet.ResourceGroupName $rgName
59+
Assert-AreEqual $getCert1ByParentObjectParameterSet.InstanceName $miName
60+
Assert-AreEqual $getCert1ByParentObjectParameterSet.Id $certId1
61+
Assert-AreEqual $getCert1ByParentObjectParameterSet.Type $endpointCertType
62+
Assert-AreEqual $getCert1ByParentObjectParameterSet.Name $endpointTypeDatabaseMirroring
63+
Assert-NotNull $getCert1ByParentObjectParameterSet.PublicKey
64+
65+
# Get DBM certificate - (GetByResourceIdParameterSet)
66+
$getCert1ByResourceIdParameterSet = Get-AzSqlInstanceEndpointCertificate -ResourceId $certId1
67+
Write-Debug ('$getCert1ByResourceIdParameterSet is ' + (ConvertTo-Json $getCert1ByResourceIdParameterSet))
68+
Assert-NotNull $getCert1ByResourceIdParameterSet
69+
Assert-AreEqual $getCert1ByResourceIdParameterSet.ResourceGroupName $rgName
70+
Assert-AreEqual $getCert1ByResourceIdParameterSet.InstanceName $miName
71+
Assert-AreEqual $getCert1ByResourceIdParameterSet.Id $certId1
72+
Assert-AreEqual $getCert1ByResourceIdParameterSet.Type $endpointCertType
73+
Assert-AreEqual $getCert1ByResourceIdParameterSet.Name $endpointTypeDatabaseMirroring
74+
Assert-NotNull $getCert1ByResourceIdParameterSet.PublicKey
75+
76+
# Get SB certificate - (GetByInstanceResourceIdParameterSet)
77+
$getCert1ByInstanceResourceIdParameterSet = Get-AzSqlInstanceEndpointCertificate -InstanceResourceId $instanceId -Name $endpointTypeServiceBroker
78+
Write-Debug ('$getCert1ByInstanceResourceIdParameterSet is ' + (ConvertTo-Json $getCert1ByInstanceResourceIdParameterSet))
79+
Assert-NotNull $getCert1ByInstanceResourceIdParameterSet
80+
Assert-AreEqual $getCert1ByInstanceResourceIdParameterSet.ResourceGroupName $rgName
81+
Assert-AreEqual $getCert1ByInstanceResourceIdParameterSet.InstanceName $miName
82+
Assert-AreEqual $getCert1ByInstanceResourceIdParameterSet.Id $certId2
83+
Assert-AreEqual $getCert1ByInstanceResourceIdParameterSet.Type $endpointCertType
84+
Assert-AreEqual $getCert1ByInstanceResourceIdParameterSet.Name $endpointTypeServiceBroker
85+
Assert-NotNull $getCert1ByInstanceResourceIdParameterSet.PublicKey
86+
87+
# Get SB certificate - Using parameter alias (Name -> EndpointType)
88+
$getCert2 = Get-AzSqlInstanceEndpointCertificate -ResourceGroupName $rgName -InstanceName $miName -EndpointType $endpointTypeServiceBroker
89+
Write-Debug ('$getCert2 is ' + (ConvertTo-Json $getCert2))
90+
Assert-NotNull $getCert2
91+
Assert-AreEqual $getCert2.ResourceGroupName $rgName
92+
Assert-AreEqual $getCert2.InstanceName $miName
93+
Assert-AreEqual $getCert2.Id $certId2
94+
Assert-AreEqual $getCert2.Type $endpointCertType
95+
Assert-AreEqual $getCert2.Name $endpointTypeServiceBroker
96+
Assert-NotNull $getCert2.PublicKey
97+
98+
# List all certificates
99+
$listCerts = Get-AzSqlInstanceEndpointCertificate -ResourceGroupName $rgName -InstanceName $miName
100+
Write-Debug ('$listCerts is ' + (ConvertTo-Json $listCerts))
101+
Assert-NotNull $listCerts
102+
Assert-AreEqual $listCerts.Count 2
103+
104+
# Get non existant cert #1 THROWS (via DeleteByInputObjectParameterSet)
105+
$msgExcGet = "The requested resource of type '" + $endpointCertType + "' with name '" + "INVALID_TYPE" + "' was not found."
106+
Assert-Throws { Get-AzSqlInstanceEndpointCertificate -InstanceObject $instance -EndpointType "INVALID_TYPE" } $msgExc
107+
108+
# Grab certificates #1 and #2 via ParentObject piping
109+
$listCertRespByParentObjectPipe = $instance | Get-AzSqlInstanceEndpointCertificate
110+
$getCertRespByParentObjectPipe = $instance | Get-AzSqlInstanceEndpointCertificate -Name $endpointTypeDatabaseMirroring
111+
$getCertRespByParentObjectPipe = $instance | Get-AzSqlInstanceEndpointCertificate -Name $endpointTypeServiceBroker
112+
Write-Debug ('$listCertRespByParentObjectPipe is ' + (ConvertTo-Json $listCertRespByParentObjectPipe))
113+
Write-Debug ('$getCertRespByParentObjectPipe is ' + (ConvertTo-Json $getCertRespByParentObjectPipe))
114+
Write-Debug ('$getCertRespByParentObjectPipe is ' + (ConvertTo-Json $getCertRespByParentObjectPipe))
115+
Assert-NotNull $listCertRespByParentObjectPipe
116+
Assert-NotNull $getCertRespByParentObjectPipe
117+
Assert-NotNull $getCertRespByParentObjectPipe
118+
}
119+
finally
120+
{
121+
Remove-ResourceGroupForTest $rg
122+
}
123+
}

0 commit comments

Comments
 (0)