From 0be02ae88a6bae1b6288cc7a2198f96571a6cd5b Mon Sep 17 00:00:00 2001 From: Johan Ljunggren Date: Wed, 20 Sep 2017 10:36:13 +0200 Subject: [PATCH] xSQLServerRSConfig: No longer returns a null value from Test-TargetResource (#825) - Changes to xSQLServerRSConfig - No longer returns a null value from Test-TargetResource when Reporting Services has not been initialized (issue #822). --- CHANGELOG.md | 3 ++ .../MSFT_xSQLServerRSConfig.psm1 | 8 +++++ Tests/Unit/MSFT_xSQLServerRSConfig.Tests.ps1 | 30 +++++++++++++++++-- 3 files changed, 38 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 397a10d2e..0e53eb2ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -74,6 +74,9 @@ - Added new resource xSQLServerAccount ([issue #706](https://github.com/PowerShell/xSQLServer/issues/706)) - Added localization support for all strings - Added examples for usage +- Changes to xSQLServerRSConfig + - No longer returns a null value from Test-TargetResource when Reporting + Services has not been initialized ([issue #822](https://github.com/PowerShell/xSQLServer/issues/822)). ## 8.1.0.0 diff --git a/DSCResources/MSFT_xSQLServerRSConfig/MSFT_xSQLServerRSConfig.psm1 b/DSCResources/MSFT_xSQLServerRSConfig/MSFT_xSQLServerRSConfig.psm1 index cbe11b8f0..f23930562 100644 --- a/DSCResources/MSFT_xSQLServerRSConfig/MSFT_xSQLServerRSConfig.psm1 +++ b/DSCResources/MSFT_xSQLServerRSConfig/MSFT_xSQLServerRSConfig.psm1 @@ -54,6 +54,14 @@ function Get-TargetResource } $isInitialized = $reportingServicesConfiguration.IsInitialized + if (-not $isInitialized) + { + <# + Make sure the value returned is false, if the value returned was + either empty, $null or $false. Fic for issue #822. + #> + [System.Boolean] $isInitialized = $false + } } else { diff --git a/Tests/Unit/MSFT_xSQLServerRSConfig.Tests.ps1 b/Tests/Unit/MSFT_xSQLServerRSConfig.Tests.ps1 index e6f2f8666..756149264 100644 --- a/Tests/Unit/MSFT_xSQLServerRSConfig.Tests.ps1 +++ b/Tests/Unit/MSFT_xSQLServerRSConfig.Tests.ps1 @@ -50,7 +50,7 @@ try $mockGetWmiObject_ConfigurationSetting_NamedInstance = { return New-Object Object | Add-Member -MemberType NoteProperty -Name 'DatabaseServerName' -Value "$mockReportingServicesDatabaseServerName\$mockReportingServicesDatabaseNamedInstanceName" -PassThru | - Add-Member -MemberType NoteProperty -Name 'IsInitialized' -Value $true -PassThru | + Add-Member -MemberType NoteProperty -Name 'IsInitialized' -Value $mockDynamicIsInitialized -PassThru | Add-Member -MemberType NoteProperty -Name 'VirtualDirectoryReportServer' -Value '' -PassThru | Add-Member -MemberType NoteProperty -Name 'VirtualDirectoryReportManager' -Value '' -PassThru | Add-Member -MemberType ScriptMethod -Name SetVirtualDirectory { @@ -92,7 +92,7 @@ try $mockGetWmiObject_ConfigurationSetting_DefaultInstance = { return @{ DatabaseServerName = $mockReportingServicesDatabaseServerName - IsInitialized = $false + IsInitialized = $mockDynamicIsInitialized } } @@ -131,6 +131,8 @@ try -Verifiable } + $mockDynamicIsInitialized = $true + It 'Should return the same values as passed as parameters' { $resultGetTargetResource = Get-TargetResource @testParameters $resultGetTargetResource.InstanceName | Should Be $mockNamedInstanceName @@ -153,6 +155,8 @@ try -Verifiable } + $mockDynamicIsInitialized = $false + It 'Should return the same values as passed as parameters' { $resultGetTargetResource = Get-TargetResource @testParameters $resultGetTargetResource.InstanceName | Should Be $mockNamedInstanceName @@ -161,11 +165,31 @@ try $resultGetTargetResource | Should BeOfType [System.Collections.Hashtable] } - It 'Should return the the state as initialized' { + It 'Should return the state as not initialized' { $resultGetTargetResource = Get-TargetResource @testParameters $resultGetTargetResource.IsInitialized | Should Be $false } + # Regression test for issue #822. + Context 'When Reporting Services has not been initialized (IsInitialized returns $null)' { + $mockDynamicIsInitialized = $null + + It 'Should return the state as not initialized' { + $resultGetTargetResource = Get-TargetResource @testParameters + $resultGetTargetResource.IsInitialized | Should Be $false + } + } + + # Regression test for issue #822. + Context 'When Reporting Services has not been initialized (IsInitialized returns empty string)' { + $mockDynamicIsInitialized = '' + + It 'Should return the state as not initialized' { + $resultGetTargetResource = Get-TargetResource @testParameters + $resultGetTargetResource.IsInitialized | Should Be $false + } + } + Context 'When there is no Reporting Services instance' { BeforeEach { Mock -CommandName Get-ItemProperty