Skip to content

Commit cba425e

Browse files
adding tests, updating cmdlets
1 parent 339e890 commit cba425e

11 files changed

+394
-139
lines changed

src/Sql/Sql.Test/ScenarioTests/Common.ps1

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -184,6 +184,47 @@ function Create-BasicTestEnvironmentWithParams ($params, $location, $serverVersi
184184
New-AzSqlDatabase -DatabaseName $params.databaseName -ResourceGroupName $params.rgname -ServerName $params.serverName -Edition Basic
185185
}
186186

187+
<#
188+
.SYNOPSIS
189+
Gets the values of the parameters used for ledger digest upload tests
190+
#>
191+
function Get-LedgerTestEnvironmentParameters ($testSuffix)
192+
{
193+
$subscriptionId = (Get-AzContext).Subscription.Id
194+
return @{ rgname = "ledger-cmdlet-test-rg" + $testSuffix;
195+
serverName = "ledger-cmdlet-server" + $testSuffix;
196+
databaseName = "ledger-cmdlet-db" + $testSuffix;
197+
}
198+
}
199+
200+
<#
201+
.SYNOPSIS
202+
Creates the basic test environment needed to perform the Sql data security tests - resource group, server and database
203+
#>
204+
function Create-LedgerTestEnvironment ($params)
205+
{
206+
$location = "West Europe"
207+
$serverVersion = "12.0"
208+
New-AzResourceGroup -Name $params.rgname -Location $location
209+
$serverName = $params.serverName
210+
$serverLogin = "testusername"
211+
<#[SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="Test passwords only valid for the duration of the test")]#>
212+
$serverPassword = "t357ingP@s5w0rd!ledger"
213+
$credentials = new-object System.Management.Automation.PSCredential($serverLogin, ($serverPassword | ConvertTo-SecureString -asPlainText -Force))
214+
New-AzSqlServer -ResourceGroupName $params.rgname -ServerName $params.serverName -Location $location -ServerVersion $serverVersion -SqlAdministratorCredentials $credentials
215+
New-AzSqlDatabase -DatabaseName $params.databaseName -ResourceGroupName $params.rgname -ServerName $params.serverName -Edition Basic
216+
}
217+
218+
<#
219+
.SYNOPSIS
220+
Removes the test environment that was needed to perform the ledger digest upload tests
221+
#>
222+
function Remove-LedgerTestEnvironment ($testSuffix)
223+
{
224+
$params = Get-LedgerTestEnvironmentParameters $testSuffix
225+
Remove-AzResourceGroup -Name $params.rgname -Force
226+
}
227+
187228
<#
188229
.SYNOPSIS
189230
Creates the basic test environment needed to perform the Sql data security tests - resource group, managed instance and managed database
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
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.Azure.ServiceManagement.Common.Models;
17+
using Microsoft.WindowsAzure.Commands.ScenarioTest;
18+
using Xunit;
19+
using Xunit.Abstractions;
20+
21+
namespace Microsoft.Azure.Commands.Sql.Test.ScenarioTests
22+
{
23+
public class LedgerDigestUploadTests : SqlTestsBase
24+
{
25+
public LedgerDigestUploadTests(ITestOutputHelper output) : base(output)
26+
{
27+
base.resourceTypesToIgnoreApiVersion = new string[] {
28+
"Microsoft.Sql/servers"
29+
};
30+
}
31+
32+
[Fact]
33+
[Trait(Category.AcceptanceType, Category.CheckIn)]
34+
public void TestGetDefaultLedgerDigestUpload()
35+
{
36+
RunPowerShellTest("Test-GetDefaultLedgerDigestUpload");
37+
}
38+
39+
[Fact]
40+
[Trait(Category.AcceptanceType, Category.CheckIn)]
41+
public void TestSetLedgerDigestUploadByName()
42+
{
43+
RunPowerShellTest("Test-SetLedgerDigestUploadByName");
44+
}
45+
46+
[Fact]
47+
[Trait(Category.AcceptanceType, Category.CheckIn)]
48+
public void TestSetLedgerDigestUploadByDatabaseObject()
49+
{
50+
RunPowerShellTest("Test-SetLedgerDigestUploadByDatabaseObject");
51+
}
52+
53+
[Fact]
54+
[Trait(Category.AcceptanceType, Category.CheckIn)]
55+
public void TestSetLedgerDigestUploadByResourceId()
56+
{
57+
RunPowerShellTest("Test-SetLedgerDigestUploadByResourceId");
58+
}
59+
}
60+
}
Lines changed: 195 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,195 @@
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+
<#
16+
.SYNOPSIS
17+
Tests getting default ledger digest upload configuration
18+
#>
19+
function Test-GetDefaultLedgerDigestUpload
20+
{
21+
# Setup
22+
$testSuffix = getAssetName
23+
$params = Get-LedgerTestEnvironmentParameters $testSuffix
24+
Create-LedgerTestEnvironment $params
25+
26+
$databaseResourceId = "/subscriptions/" + $subscriptionId + "/resourceGroups/" + $params.rgname + "/providers/Microsoft.Sql/servers/" + $params.serverName + "/databases/" + $params.databaseName
27+
$databaseObject = Get-AzSqlDatabase -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName
28+
29+
try
30+
{
31+
# Test
32+
$ledgerDigestUpload = Get-AzSqlDatabaseLedgerDigestUpload -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName
33+
34+
# Assert
35+
Assert-AreEqual $ledgerDigestUpload.State "Disabled"
36+
37+
# Test
38+
$ledgerDigestUploadByResourceId = Get-AzSqlDatabaseLedgerDigestUpload -ResourceId $databaseResourceId
39+
40+
# Assert
41+
Assert-AreEqual $ledgerDigestUploadByResourceId.State "Disabled"
42+
43+
# Test
44+
$ledgerDigestUploadByDatabase = Get-AzSqlDatabaseLedgerDigestUpload -InputObject $databaseObject
45+
46+
# Assert
47+
Assert-AreEqual $ledgerDigestUploadByDatabase.State "Disabled"
48+
}
49+
finally
50+
{
51+
# Cleanup
52+
Remove-LedgerTestEnvironment $testSuffix
53+
}
54+
}
55+
56+
<#
57+
.SYNOPSIS
58+
Tests that when setting the storage account property's value in a database's blob auditing policy, that value is later fetched properly
59+
#>
60+
function Test-SetLedgerDigestUploadByName
61+
{
62+
# Setup
63+
$testSuffix = getAssetName
64+
$params = Get-LedgerTestEnvironmentParameters $testSuffix
65+
Create-LedgerTestEnvironment $params
66+
$endpoint = "https://test.confidential-ledger.azure.com"
67+
68+
try
69+
{
70+
# Test enabling
71+
$ledgerDigestUploadEnable = Enable-AzSqlDatabaseLedgerDigestUpload -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName -Endpoint $endpoint
72+
73+
# Assert
74+
Assert-AreEqual $ledgerDigestUploadEnable.State "Enabled"
75+
Assert-AreEqual $ledgerDigestUploadEnable.Endpoint $endpoint
76+
77+
# Test get enabled settings
78+
$ledgerDigestUploadEnabledGet = Get-AzSqlDatabaseLedgerDigestUpload -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName
79+
<#
80+
# Assert
81+
Assert-AreEqual $ledgerDigestUploadEnabledGet.State "Enabled"
82+
83+
# Test disabling
84+
$ledgerDigestUploadDisable = Disable-AzSqlDatabaseLedgerDigestUpload -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName
85+
86+
# Assert
87+
Assert-AreEqual $ledgerDigestUploadDisable.State "Disabled"
88+
89+
# Test get disabled settings
90+
$ledgerDigestUploadDisabledGet = Get-AzSqlDatabaseLedgerDigestUpload -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName
91+
92+
# Assert
93+
Assert-AreEqual $ledgerDigestUploadDisabledGet.State "Disabled"
94+
#>
95+
}
96+
finally
97+
{
98+
# Cleanup
99+
Remove-LedgerTestEnvironment $testSuffix
100+
}
101+
}
102+
103+
<#
104+
.SYNOPSIS
105+
Tests that when setting the storage account property's value in a database's blob auditing policy, that value is later fetched properly
106+
#>
107+
function Test-SetLedgerDigestUploadByDatabaseObject
108+
{
109+
# Setup
110+
$testSuffix = getAssetName
111+
$params = Get-LedgerTestEnvironmentParameters $testSuffix
112+
Create-LedgerTestEnvironment $params
113+
$endpoint = "https://test.confidential-ledger.azure.com"
114+
$databaseObject = Get-AzSqlDatabase -ResourceGroupName $params.rgname -ServerName $params.serverName -DatabaseName $params.databaseName
115+
116+
try
117+
{
118+
# Test enabling
119+
$ledgerDigestUploadEnable = Enable-AzSqlDatabaseLedgerDigestUpload -InputObject $databaseObject -Endpoint $endpoint
120+
121+
# Assert
122+
Assert-AreEqual $ledgerDigestUploadEnable.State "Enabled"
123+
Assert-AreEqual $ledgerDigestUploadEnable.Endpoint $endpoint
124+
125+
# Test get enabled settings
126+
$ledgerDigestUploadEnabledGet = Get-AzSqlDatabaseLedgerDigestUpload -InputObject $databaseObject
127+
128+
# Assert
129+
Assert-AreEqual $ledgerDigestUploadEnabledGet.State "Enabled"
130+
131+
# Test disabling
132+
$ledgerDigestUploadDisable = Disable-AzSqlDatabaseLedgerDigestUpload -InputObject $databaseObject
133+
134+
# Assert
135+
Assert-AreEqual $ledgerDigestUploadDisable.State "Disabled"
136+
137+
# Test get disabled settings
138+
$ledgerDigestUploadDisabledGet = Get-AzSqlDatabaseLedgerDigestUpload -InputObject $databaseObject
139+
140+
# Assert
141+
Assert-AreEqual $ledgerDigestUploadDisabledGet.State "Disabled"
142+
}
143+
finally
144+
{
145+
# Cleanup
146+
Remove-LedgerTestEnvironment $testSuffix
147+
}
148+
}
149+
150+
<#
151+
.SYNOPSIS
152+
Tests that when setting the storage account property's value in a database's blob auditing policy, that value is later fetched properly
153+
#>
154+
function Test-SetLedgerDigestUploadByResourceId
155+
{
156+
# Setup
157+
$testSuffix = getAssetName
158+
$params = Get-LedgerTestEnvironmentParameters $testSuffix
159+
Create-LedgerTestEnvironment $params
160+
$endpoint = "https://test.confidential-ledger.azure.com"
161+
$databaseResourceId = "/subscriptions/" + $subscriptionId + "/resourceGroups/" + $params.rgname + "/providers/Microsoft.Sql/servers/" + $params.serverName + "/databases/" + $params.databaseName
162+
163+
try
164+
{
165+
# Test enabling
166+
$ledgerDigestUploadEnable = Enable-AzSqlDatabaseLedgerDigestUpload -ResourceId $databaseResourceId -Endpoint $endpoint
167+
168+
# Assert
169+
Assert-AreEqual $ledgerDigestUploadEnable.State "Enabled"
170+
Assert-AreEqual $ledgerDigestUploadEnable.Endpoint $endpoint
171+
172+
# Test get enabled settings
173+
$ledgerDigestUploadEnabledGet = Get-AzSqlDatabaseLedgerDigestUpload -ResourceId $databaseResourceId
174+
175+
# Assert
176+
Assert-AreEqual $ledgerDigestUploadEnabledGet.State "Enabled"
177+
178+
# Test disabling
179+
$ledgerDigestUploadDisable = Disable-AzSqlDatabaseLedgerDigestUpload -InputObject $databaseObject
180+
181+
# Assert
182+
Assert-AreEqual $ledgerDigestUploadDisable.State "Disabled"
183+
184+
# Test get disabled settings
185+
$ledgerDigestUploadDisabledGet = Get-AzSqlDatabaseLedgerDigestUpload -ResourceId $databaseResourceId
186+
187+
# Assert
188+
Assert-AreEqual $ledgerDigestUploadDisabledGet.State "Disabled"
189+
}
190+
finally
191+
{
192+
# Cleanup
193+
Remove-LedgerTestEnvironment $testSuffix
194+
}
195+
}

src/Sql/Sql/Az.Sql.psd1

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,9 @@ CmdletsToExport = 'Get-AzSqlDatabaseTransparentDataEncryption',
272272
'Enable-AzSqlInstanceActiveDirectoryOnlyAuthentication',
273273
'Get-AzSqlInstanceActiveDirectoryOnlyAuthentication',
274274
'Get-AzSqlServerTrustGroup', 'New-AzSqlServerTrustGroup',
275-
'Remove-AzSqlServerTrustGroup'
275+
'Remove-AzSqlServerTrustGroup',
276+
'Enable-AzSqlDatabaseLedgerDigestUpload', 'Disable-AzSqlDatabaseLedgerDigestUpload',
277+
'Get-AzSqlDatabaseLedgerDigestUpload'
276278

277279
# Variables to export from this module
278280
# VariablesToExport = @()

src/Sql/Sql/Database/Cmdlet/NewAzureSqlDatabase.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ public class NewAzureSqlDatabase : AzureSqlDatabaseCmdletBase<AzureSqlDatabaseCr
235235
/// Gets or sets the ledger option to assign to the Azure SQL Database
236236
/// </summary>
237237
[Parameter(Mandatory = false,
238-
HelpMessage = "The enable ledger option for the Azure Sql Database")]
238+
HelpMessage = "Creates a ledger database, in which the integrity of all data is protected by the ledger feature. All tables in the ledger database must be ledger tables. Note: the value of this property cannot be changed after the database has been created.")]
239239
public SwitchParameter EnableLedger { get; set; }
240240

241241
/// <summary>

0 commit comments

Comments
 (0)