Skip to content

Commit 2ec83b4

Browse files
committed
Refactor tests to suppress exceptions on command execution
- Updated multiple test files to assign command results to `$null` instead of using a block with `Should -Not -Throw` to improve readability and maintainability. - This change applies to integration tests for `DSC_SqlTraceFlag` and `DSC_SqlWindowsFirewall`, as well as unit tests for `SqlDatabasePermission`, `SqlPermission`, `Remove-SqlDscRole`, `Set-SqlDscDatabasePermission`, `Set-SqlDscServerPermission`, and `SqlServerDsc.Common`.
1 parent 0354042 commit 2ec83b4

File tree

41 files changed

+2455
-3128
lines changed

Some content is hidden

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

41 files changed

+2455
-3128
lines changed

tests/Integration/Commands/Install-SqlDscBIReportServer.Integration.Tests.ps1

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,21 +42,19 @@ Describe 'Install-SqlDscBIReportServer' -Tag @('Integration_PowerBI') {
4242
Context 'When installing Power BI Report Server' {
4343
# cSpell: ignore PBIRS
4444
It 'Should run the command without throwing' {
45-
{
46-
# Set splatting parameters for Install-SqlDscBIReportServer
47-
$installSqlDscBIReportServerParameters = @{
48-
AcceptLicensingTerms = $true
49-
MediaPath = $powerBIReportServerExecutable
50-
InstallFolder = 'C:\Program Files\PBIRS'
51-
Edition = 'Developer'
52-
LogPath = Join-Path -Path $script:temporaryFolder -ChildPath 'PowerBIReportServer_Install.log'
53-
SuppressRestart = $true
54-
Verbose = $true
55-
Force = $true
56-
}
45+
# Set splatting parameters for Install-SqlDscBIReportServer
46+
$installSqlDscBIReportServerParameters = @{
47+
AcceptLicensingTerms = $true
48+
MediaPath = $powerBIReportServerExecutable
49+
InstallFolder = 'C:\Program Files\PBIRS'
50+
Edition = 'Developer'
51+
LogPath = Join-Path -Path $script:temporaryFolder -ChildPath 'PowerBIReportServer_Install.log'
52+
SuppressRestart = $true
53+
Verbose = $true
54+
Force = $true
55+
}
5756

58-
Install-SqlDscBIReportServer @installSqlDscBIReportServerParameters -ErrorAction 'Stop'
59-
} | Should -Not -Throw
57+
$null = Install-SqlDscBIReportServer @installSqlDscBIReportServerParameters -ErrorAction 'Stop'
6058
}
6159

6260
It 'Should have installed Power BI Report Server' {

tests/Integration/Commands/Invoke-SqlDscQuery.Integration.Tests.ps1

Lines changed: 9 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,11 @@ INSERT INTO TestTable (Name, Value) VALUES ('Test1', 100), ('Test2', 200), ('Tes
7979
Context 'When executing a query using ServerObject parameter set' {
8080
Context 'When executing a query without returning results' {
8181
It 'Should execute the query without throwing (using Force parameter)' {
82-
{
83-
Invoke-SqlDscQuery -ServerObject $script:serverObject -DatabaseName $script:testDatabaseName -Query 'UPDATE TestTable SET Value = 500 WHERE ID = 1' -Force -ErrorAction 'Stop'
84-
} | Should -Not -Throw
82+
$null = Invoke-SqlDscQuery -ServerObject $script:serverObject -DatabaseName $script:testDatabaseName -Query 'UPDATE TestTable SET Value = 500 WHERE ID = 1' -Force -ErrorAction 'Stop'
8583
}
8684

8785
It 'Should execute the query without throwing (using Confirm:$false parameter)' {
88-
{
89-
Invoke-SqlDscQuery -ServerObject $script:serverObject -DatabaseName $script:testDatabaseName -Query 'UPDATE TestTable SET Value = 600 WHERE ID = 2' -Confirm:$false -ErrorAction 'Stop'
90-
} | Should -Not -Throw
86+
$null = Invoke-SqlDscQuery -ServerObject $script:serverObject -DatabaseName $script:testDatabaseName -Query 'UPDATE TestTable SET Value = 600 WHERE ID = 2' -Confirm:$false -ErrorAction 'Stop'
9187
}
9288
}
9389

@@ -112,15 +108,11 @@ INSERT INTO TestTable (Name, Value) VALUES ('Test1', 100), ('Test2', 200), ('Tes
112108

113109
Context 'When using optional parameters with ServerObject parameter set' {
114110
It 'Should execute query with custom StatementTimeout' {
115-
{
116-
Invoke-SqlDscQuery -ServerObject $script:serverObject -DatabaseName $script:testDatabaseName -Query 'SELECT COUNT(*) FROM TestTable' -StatementTimeout 30 -PassThru -Force -ErrorAction 'Stop'
117-
} | Should -Not -Throw
111+
$null = Invoke-SqlDscQuery -ServerObject $script:serverObject -DatabaseName $script:testDatabaseName -Query 'SELECT COUNT(*) FROM TestTable' -StatementTimeout 30 -PassThru -Force -ErrorAction 'Stop'
118112
}
119113

120114
It 'Should execute query with RedactText parameter' {
121-
{
122-
Invoke-SqlDscQuery -ServerObject $script:serverObject -DatabaseName $script:testDatabaseName -Query "SELECT * FROM TestTable WHERE Name = 'SensitiveData'" -RedactText @('SensitiveData') -PassThru -Force -ErrorAction 'Stop'
123-
} | Should -Not -Throw
115+
$null = Invoke-SqlDscQuery -ServerObject $script:serverObject -DatabaseName $script:testDatabaseName -Query "SELECT * FROM TestTable WHERE Name = 'SensitiveData'" -RedactText @('SensitiveData') -PassThru -Force -ErrorAction 'Stop'
124116
}
125117
}
126118

@@ -138,9 +130,7 @@ INSERT INTO TestTable (Name, Value) VALUES ('Test1', 100), ('Test2', 200), ('Tes
138130
Context 'When executing a query using ByServerName parameter set' {
139131
Context 'When executing a query without returning results' {
140132
It 'Should execute the query without throwing' {
141-
{
142-
Invoke-SqlDscQuery -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -Credential $script:mockSqlAdminCredential -DatabaseName $script:testDatabaseName -Query 'UPDATE TestTable SET Value = 700 WHERE ID = 3' -Force -ErrorAction 'Stop'
143-
} | Should -Not -Throw
133+
$null = Invoke-SqlDscQuery -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -Credential $script:mockSqlAdminCredential -DatabaseName $script:testDatabaseName -Query 'UPDATE TestTable SET Value = 700 WHERE ID = 3' -Force -ErrorAction 'Stop'
144134
}
145135
}
146136

@@ -157,25 +147,20 @@ INSERT INTO TestTable (Name, Value) VALUES ('Test1', 100), ('Test2', 200), ('Tes
157147
Context 'When using optional parameters with ByServerName parameter set' {
158148
# Using Encrypt in the CI is not possible until we add the required support (certificate) in the CI.
159149
It 'Should execute query with Encrypt parameter' -Skip {
160-
{
161-
Invoke-SqlDscQuery -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -Credential $script:mockSqlAdminCredential -DatabaseName $script:testDatabaseName -Query 'SELECT 1 as TestValue' -Encrypt -PassThru -Force -ErrorAction 'Stop'
162-
} | Should -Not -Throw
150+
$null = Invoke-SqlDscQuery -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -Credential $script:mockSqlAdminCredential -DatabaseName $script:testDatabaseName -Query 'SELECT 1 as TestValue' -Encrypt -PassThru -Force -ErrorAction 'Stop'
163151
}
164152

165153
It 'Should execute query with LoginType parameter' {
166154
# Create SQL Server credential for 'sa' login
167155
$sqlLoginPassword = ConvertTo-SecureString -String 'P@ssw0rd1' -AsPlainText -Force
168156
$sqlLoginCredential = [System.Management.Automation.PSCredential]::new('sa', $sqlLoginPassword)
169157

170-
{
171-
Invoke-SqlDscQuery -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -Credential $sqlLoginCredential -LoginType 'SqlLogin' -DatabaseName $script:testDatabaseName -Query 'SELECT 1 as TestValue' -PassThru -Force -ErrorAction 'Stop'
172-
} | Should -Not -Throw
158+
$null = Invoke-SqlDscQuery -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -Credential $sqlLoginCredential -LoginType 'SqlLogin' -DatabaseName $script:testDatabaseName -Query 'SELECT 1 as TestValue' -PassThru -Force -ErrorAction 'Stop'
173159
}
174160

175161
It 'Should execute query with custom StatementTimeout' {
176-
{
177-
Invoke-SqlDscQuery -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -Credential $script:mockSqlAdminCredential -DatabaseName $script:testDatabaseName -Query 'SELECT 1 as TestValue' -StatementTimeout 60 -PassThru -Force -ErrorAction 'Stop'
178-
} | Should -Not -Throw
162+
$null = Invoke-SqlDscQuery -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -Credential $script:mockSqlAdminCredential -DatabaseName $script:testDatabaseName -Query 'SELECT 1 as TestValue' -StatementTimeout 60 -PassThru -Force -ErrorAction 'Stop'
163+
}
179164
}
180165
}
181166
}

tests/Integration/Commands/Remove-SqlDscTraceFlag.Integration.Tests.ps1

Lines changed: 11 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,10 @@ Describe 'Remove-SqlDscTraceFlag' -Tag @('Integration_SQL2017', 'Integration_SQL
4242
Context 'When removing trace flags using ServerName and InstanceName parameters' {
4343
It 'Should remove a single trace flag without error' {
4444
# Arrange - Add a test trace flag first
45-
{
46-
Add-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -TraceFlag $script:singleTestTraceFlag -Force -ErrorAction 'Stop'
47-
} | Should -Not -Throw
45+
$null = Add-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -TraceFlag $script:singleTestTraceFlag -Force -ErrorAction 'Stop'
4846

4947
# Act - Remove the trace flag
50-
{
51-
Remove-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -TraceFlag $script:singleTestTraceFlag -Force -ErrorAction 'Stop'
52-
} | Should -Not -Throw
48+
$null = Remove-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -TraceFlag $script:singleTestTraceFlag -Force -ErrorAction 'Stop'
5349

5450
# Assert - Verify the trace flag was removed
5551
$currentTraceFlags = Get-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -ErrorAction 'Stop'
@@ -58,14 +54,10 @@ Describe 'Remove-SqlDscTraceFlag' -Tag @('Integration_SQL2017', 'Integration_SQL
5854

5955
It 'Should remove multiple trace flags without error' {
6056
# Arrange - Add test trace flags first
61-
{
62-
Add-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -TraceFlag $script:testTraceFlags -Force -ErrorAction 'Stop'
63-
} | Should -Not -Throw
57+
$null = Add-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -TraceFlag $script:testTraceFlags -Force -ErrorAction 'Stop'
6458

6559
# Act - Remove the trace flags
66-
{
67-
Remove-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -TraceFlag $script:testTraceFlags -Force -ErrorAction 'Stop'
68-
} | Should -Not -Throw
60+
$null = Remove-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -TraceFlag $script:testTraceFlags -Force -ErrorAction 'Stop'
6961

7062
# Assert - Verify the trace flags were removed
7163
$currentTraceFlags = Get-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -ErrorAction 'Stop'
@@ -77,9 +69,7 @@ Describe 'Remove-SqlDscTraceFlag' -Tag @('Integration_SQL2017', 'Integration_SQL
7769

7870
It 'Should not error when removing non-existent trace flags' {
7971
# Act & Assert - Removing a trace flag that doesn't exist should not throw
80-
{
81-
Remove-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -TraceFlag 9999 -Force -ErrorAction 'Stop'
82-
} | Should -Not -Throw
72+
$null = Remove-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -TraceFlag 9999 -Force -ErrorAction 'Stop'
8373
}
8474

8575
It 'Should preserve other existing trace flags when removing specific ones' {
@@ -88,14 +78,10 @@ Describe 'Remove-SqlDscTraceFlag' -Tag @('Integration_SQL2017', 'Integration_SQL
8878
$flagsToRemove = @(4199, 1118)
8979
$flagsToKeep = @(3226, 2544)
9080

91-
{
92-
Add-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -TraceFlag $allTestFlags -Force -ErrorAction 'Stop'
93-
} | Should -Not -Throw
81+
$null = Add-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -TraceFlag $allTestFlags -Force -ErrorAction 'Stop'
9482

9583
# Act - Remove only some of the trace flags
96-
{
97-
Remove-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -TraceFlag $flagsToRemove -Force -ErrorAction 'Stop'
98-
} | Should -Not -Throw
84+
$null = Remove-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -TraceFlag $flagsToRemove -Force -ErrorAction 'Stop'
9985

10086
# Assert - Verify correct flags were removed and others preserved
10187
$currentTraceFlags = Get-SqlDscTraceFlag -ServerName $script:mockComputerName -InstanceName $script:mockInstanceName -ErrorAction 'Stop'
@@ -123,14 +109,10 @@ Describe 'Remove-SqlDscTraceFlag' -Tag @('Integration_SQL2017', 'Integration_SQL
123109

124110
It 'Should remove a single trace flag using ServiceObject parameter' {
125111
# Arrange - Add a test trace flag first
126-
{
127-
Add-SqlDscTraceFlag -ServiceObject $script:serviceObject -TraceFlag $script:singleTestTraceFlag -Force -ErrorAction 'Stop'
128-
} | Should -Not -Throw
112+
$null = Add-SqlDscTraceFlag -ServiceObject $script:serviceObject -TraceFlag $script:singleTestTraceFlag -Force -ErrorAction 'Stop'
129113

130114
# Act - Remove the trace flag
131-
{
132-
Remove-SqlDscTraceFlag -ServiceObject $script:serviceObject -TraceFlag $script:singleTestTraceFlag -Force -ErrorAction 'Stop'
133-
} | Should -Not -Throw
115+
$null = Remove-SqlDscTraceFlag -ServiceObject $script:serviceObject -TraceFlag $script:singleTestTraceFlag -Force -ErrorAction 'Stop'
134116

135117
# Assert - Verify the trace flag was removed
136118
$currentTraceFlags = Get-SqlDscTraceFlag -ServiceObject $script:serviceObject -ErrorAction 'Stop'
@@ -139,14 +121,10 @@ Describe 'Remove-SqlDscTraceFlag' -Tag @('Integration_SQL2017', 'Integration_SQL
139121

140122
It 'Should remove multiple trace flags using ServiceObject parameter' {
141123
# Arrange - Add test trace flags first
142-
{
143-
Add-SqlDscTraceFlag -ServiceObject $script:serviceObject -TraceFlag $script:testTraceFlags -Force -ErrorAction 'Stop'
144-
} | Should -Not -Throw
124+
$null = Add-SqlDscTraceFlag -ServiceObject $script:serviceObject -TraceFlag $script:testTraceFlags -Force -ErrorAction 'Stop'
145125

146126
# Act - Remove the trace flags
147-
{
148-
Remove-SqlDscTraceFlag -ServiceObject $script:serviceObject -TraceFlag $script:testTraceFlags -Force -ErrorAction 'Stop'
149-
} | Should -Not -Throw
127+
$null = Remove-SqlDscTraceFlag -ServiceObject $script:serviceObject -TraceFlag $script:testTraceFlags -Force -ErrorAction 'Stop'
150128

151129
# Assert - Verify the trace flags were removed
152130
$currentTraceFlags = Get-SqlDscTraceFlag -ServiceObject $script:serviceObject -ErrorAction 'Stop'

tests/Integration/Commands/Repair-SqlDscBIReportServer.Integration.Tests.ps1

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -50,20 +50,18 @@ Describe 'Repair-SqlDscBIReportServer' -Tag @('Integration_PowerBI') {
5050

5151
Context 'When repairing BI Report Server' {
5252
It 'Should run the command without throwing' {
53-
{
54-
# Set splatting parameters for Repair-SqlDscBIReportServer
55-
$repairSqlDscBIReportServerParameters = @{
56-
AcceptLicensingTerms = $true
57-
MediaPath = $powerBIReportServerExecutable
58-
LogPath = Join-Path -Path $script:temporaryFolder -ChildPath 'SSRS_Repair.log'
59-
SuppressRestart = $true
60-
Verbose = $true
61-
ErrorAction = 'Stop'
62-
Force = $true
63-
}
53+
# Set splatting parameters for Repair-SqlDscBIReportServer
54+
$repairSqlDscBIReportServerParameters = @{
55+
AcceptLicensingTerms = $true
56+
MediaPath = $powerBIReportServerExecutable
57+
LogPath = Join-Path -Path $script:temporaryFolder -ChildPath 'SSRS_Repair.log'
58+
SuppressRestart = $true
59+
Verbose = $true
60+
ErrorAction = 'Stop'
61+
Force = $true
62+
}
6463

65-
Repair-SqlDscBIReportServer @repairSqlDscBIReportServerParameters
66-
} | Should -Not -Throw
64+
$null = Repair-SqlDscBIReportServer @repairSqlDscBIReportServerParameters
6765
}
6866

6967
It 'Should still have a Power BI Report Server service running after repair' {

tests/Integration/Commands/Repair-SqlDscReportingService.Integration.Tests.ps1

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -50,20 +50,18 @@ Describe 'Repair-SqlDscReportingService' -Tag @('Integration_SQL2017', 'Integrat
5050

5151
Context 'When repairing Reporting Services' {
5252
It 'Should run the repair command without throwing' {
53-
{
54-
# Set splatting parameters for Repair-SqlDscReportingService
55-
$repairSqlDscReportingServiceParameters = @{
56-
AcceptLicensingTerms = $true
57-
MediaPath = $reportingServicesExecutable
58-
LogPath = Join-Path -Path $script:temporaryFolder -ChildPath 'SSRS_Repair.log'
59-
SuppressRestart = $true
60-
Verbose = $true
61-
ErrorAction = 'Stop'
62-
Force = $true
63-
}
53+
# Set splatting parameters for Repair-SqlDscReportingService
54+
$repairSqlDscReportingServiceParameters = @{
55+
AcceptLicensingTerms = $true
56+
MediaPath = $reportingServicesExecutable
57+
LogPath = Join-Path -Path $script:temporaryFolder -ChildPath 'SSRS_Repair.log'
58+
SuppressRestart = $true
59+
Verbose = $true
60+
ErrorAction = 'Stop'
61+
Force = $true
62+
}
6463

65-
Repair-SqlDscReportingService @repairSqlDscReportingServiceParameters
66-
} | Should -Not -Throw
64+
$null = Repair-SqlDscReportingService @repairSqlDscReportingServiceParameters
6765
}
6866

6967
It 'Should still have the SQL Server Reporting Services service running after repair' {

tests/Integration/Commands/Uninstall-SqlDscBIReportServer.Integration.Tests.ps1

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -50,19 +50,17 @@ Describe 'Uninstall-SqlDscBIReportServer' -Tag @('Integration_PowerBI') {
5050

5151
Context 'When uninstalling BI Report Server' {
5252
It 'Should run the command without throwing' {
53-
{
54-
# Set splatting parameters for Uninstall-SqlDscBIReportServer
55-
$uninstallSqlDscBIReportServerParameters = @{
56-
MediaPath = $powerBIReportServerExecutable
57-
LogPath = Join-Path -Path $script:temporaryFolder -ChildPath 'SSRS_Uninstall.log'
58-
SuppressRestart = $true
59-
Verbose = $true
60-
ErrorAction = 'Stop'
61-
Force = $true
62-
}
53+
# Set splatting parameters for Uninstall-SqlDscBIReportServer
54+
$uninstallSqlDscBIReportServerParameters = @{
55+
MediaPath = $powerBIReportServerExecutable
56+
LogPath = Join-Path -Path $script:temporaryFolder -ChildPath 'SSRS_Uninstall.log'
57+
SuppressRestart = $true
58+
Verbose = $true
59+
ErrorAction = 'Stop'
60+
Force = $true
61+
}
6362

64-
Uninstall-SqlDscBIReportServer @uninstallSqlDscBIReportServerParameters
65-
} | Should -Not -Throw
63+
$null = Uninstall-SqlDscBIReportServer @uninstallSqlDscBIReportServerParameters
6664
}
6765

6866
It 'Should not have a Power BI Report Server service' {

0 commit comments

Comments
 (0)