Last active
January 26, 2016 21:33
-
-
Save TravisEz13/56ee0baae24efcae90f9 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<# | |
.summary | |
Test suite for MSFT_xPendingReboot.psm1 | |
For PR https://github.com/PowerShell/xPendingReboot/pull/1 | |
#> | |
[CmdletBinding()] | |
param() | |
Import-Module $PSScriptRoot\..\DSCResources\MSFT_xPendingReboot\MSFT_xPendingReboot.psm1 -Force | |
$ErrorActionPreference = 'stop' | |
Set-StrictMode -Version latest | |
Describe 'Get-TargetResource' { | |
Context "All Reboots Are Required" { | |
# Used by ComponentBasedServicing | |
Mock Get-ChildItem { | |
return @{ Name = 'RebootPending' } | |
} -ParameterFilter { $Path -eq 'hklm:SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\' } -ModuleName "MSFT_xPendingReboot" -Verifiable | |
# Used by WindowsUpdate | |
Mock Get-ChildItem { | |
return @{ Name = 'RebootRequired' } | |
} -ParameterFilter { $Path -eq 'hklm:SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\' } -ModuleName "MSFT_xPendingReboot" -Verifiable | |
# Used by PendingFileRename | |
Mock Get-ItemProperty { | |
return @{ PendingFileRenameOperations= @("File1", "File2") } | |
} -ParameterFilter { $Path -eq 'hklm:\SYSTEM\CurrentControlSet\Control\Session Manager\' } -ModuleName "MSFT_xPendingReboot" -Verifiable | |
# Used by PendingComputerRename | |
Mock Get-ItemProperty { | |
return @{ ComputerName = "box2" } | |
} -ParameterFilter { $Path -eq 'hklm:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName' } -ModuleName "MSFT_xPendingReboot" -Verifiable | |
Mock Get-ItemProperty { | |
return @{ ComputerName = "box" } | |
} -ParameterFilter { $Path -eq 'hklm:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName' } -ModuleName "MSFT_xPendingReboot" -Verifiable | |
Mock Invoke-WmiMethod { | |
return New-Object PSObject -Property @{ | |
ReturnValue = 0 | |
IsHardRebootPending = $false | |
RebootPending = $true | |
} | |
} -ModuleName "MSFT_xPendingReboot" -Verifiable | |
$value = Get-TargetResource -Name "Test" | |
It "All mocks were called" { | |
Assert-VerifiableMocks | |
} | |
It "Component Based Servicing should be true" { | |
$value.ComponentBasedServicing | Should Be $true | |
} | |
It "WindowsUpdate should be true" { | |
$value.ComponentBasedServicing | Should Be $true | |
} | |
It "Pending File Rename should be true" { | |
$value.PendingFileRename | Should Be $true | |
} | |
It "Pending Computer Rename should be true" { | |
$value.PendingComputerRename | Should Be $true | |
} | |
It "Ccm Client SDK should be true" { | |
$value.CcmClientSDK | Should Be $true | |
} | |
} | |
Context "No Reboots Are Required" { | |
# Used by ComponentBasedServicing | |
Mock Get-ChildItem { | |
return @{ Name = '' } | |
} -ParameterFilter { $Path -eq 'hklm:SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\' } -ModuleName "MSFT_xPendingReboot" -Verifiable | |
# Used by WindowsUpdate | |
Mock Get-ChildItem { | |
return @{ Name = '' } | |
} -ParameterFilter { $Path -eq 'hklm:SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update\' } -ModuleName "MSFT_xPendingReboot" -Verifiable | |
# Used by PendingFileRename | |
Mock Get-ItemProperty { | |
return @{ PendingFileRenameOperations= @() } | |
} -ParameterFilter { $Path -eq 'hklm:\SYSTEM\CurrentControlSet\Control\Session Manager\' } -ModuleName "MSFT_xPendingReboot" -Verifiable | |
# Used by PendingComputerRename | |
Mock Get-ItemProperty { | |
return @{ } | |
} -ParameterFilter { $Path -eq 'hklm:\SYSTEM\CurrentControlSet\Control\ComputerName\ActiveComputerName' } -ModuleName "MSFT_xPendingReboot" -Verifiable | |
Mock Get-ItemProperty { | |
return @{ } | |
} -ParameterFilter { $Path -eq 'hklm:\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName' } -ModuleName "MSFT_xPendingReboot" -Verifiable | |
Mock Invoke-WmiMethod { | |
return New-Object PSObject -Property @{ | |
ReturnValue = 0 | |
IsHardRebootPending = $false | |
RebootPending = $false | |
} | |
} -ModuleName "MSFT_xPendingReboot" -Verifiable | |
$value = Get-TargetResource -Name "Test" | |
It "Component Based Servicing should be false" { | |
$value.ComponentBasedServicing | Should Be $false | |
} | |
It "WindowsUpdate should be false" { | |
$value.ComponentBasedServicing | Should Be $false | |
} | |
It "Pending File Rename should be false" { | |
$value.PendingFileRename | Should Be $false | |
} | |
It "Pending Computer Rename should be false" { | |
$value.PendingComputerRename | Should Be $false | |
} | |
It "Ccm Client SDK should be false" { | |
$value.CcmClientSDK | Should Be $false | |
} | |
} | |
} | |
Describe 'Test-TargetResource' { | |
Context "All Reboots Are Required" { | |
# Used by ComponentBasedServicing | |
Mock Get-TargetResource -ModuleName "MSFT_xPendingReboot" { | |
return @{ | |
Name = $Name | |
ComponentBasedServicing = $true | |
WindowsUpdate = $true | |
PendingFileRename = $true | |
PendingComputerRename = $true | |
CcmClientSDK = $true | |
} | |
} | |
It "All Reboots are Skipped" { | |
$result = Test-TargetResource -Name "Test" -SkipComponentBasedServicing $true -SkipWindowsUpdate $true -SkipPendingFileRename $true -SkipPendingComputerRename $true -SkipCcmClientSDK $true | |
$result | Should Be $true | |
} | |
It "No Reboots are Skipped" { | |
$result = Test-TargetResource -Name "Test" -SkipComponentBasedServicing $false -SkipWindowsUpdate $false -SkipPendingFileRename $false -SkipPendingComputerRename $false -SkipCcmClientSDK $false | |
$result | Should Be $false | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment