This repository has been archived by the owner on Jun 14, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 54
/
Copy pathCommonResourceHelper.Tests.ps1
117 lines (92 loc) · 4.48 KB
/
CommonResourceHelper.Tests.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
$errorActionPreference = 'Stop'
Set-StrictMode -Version 'Latest'
Describe 'CommonResourceHelper Unit Tests' {
BeforeAll {
# Import the CommonResourceHelper module to test
$testsFolderFilePath = Split-Path -Path $PSScriptRoot -Parent
$moduleRootFilePath = Split-Path -Path $testsFolderFilePath -Parent
$dscResourcesFolderFilePath = Join-Path -Path $moduleRootFilePath -ChildPath 'DscResources'
$commonResourceHelperFilePath = Join-Path -Path $dscResourcesFolderFilePath -ChildPath 'CommonResourceHelper.psm1'
Import-Module -Name $commonResourceHelperFilePath
}
InModuleScope 'CommonResourceHelper' {
Describe 'Test-IsNanoServer' {
$testComputerInfoNanoServer = @{
NanoServer = 1
}
$testComputerInfoServerNotNano = @{
}
Context 'Computer OS type is Server and OS server level is NanoServer' {
Mock -CommandName 'Test-Path' -MockWith { return $true }
Mock -CommandName 'Get-ItemProperty' -MockWith { return $testComputerInfoNanoServer }
It 'Should not throw' {
{ $null = Test-IsNanoServer } | Should -Not -Throw
}
It 'Should check the ServerLevels registry path' {
Assert-MockCalled -CommandName 'Get-ItemProperty' -Exactly 1 -Scope 'Context'
}
It 'Should return true' {
Test-IsNanoServer | Should -Be $true
}
}
Context 'Computer OS type is Server and OS server level is not NanoServer' {
Mock -CommandName 'Test-Path' -MockWith { return $true }
Mock -CommandName 'Get-ItemProperty' -MockWith { return $testComputerInfoServerNotNano }
It 'Should not throw' {
{ $null = Test-IsNanoServer } | Should -Not -Throw
}
It 'Should check the ServerLevels registry path' {
Assert-MockCalled -CommandName 'Get-ItemProperty' -Exactly 1 -Scope 'Context'
}
It 'Should return false' {
Test-IsNanoServer | Should -Be $false
}
}
Context 'Computer OS type is not Server' {
Mock -CommandName 'Test-Path' -MockWith { return $false }
It 'Should not throw' {
{ $null = Test-IsNanoServer } | Should -Not -Throw
}
It 'Should check the ServerLevels registry path' {
Assert-MockCalled -CommandName 'Test-Path' -Exactly 1 -Scope 'Context'
}
It 'Should return false' {
Test-IsNanoServer | Should -Be $false
}
}
}
Describe 'Test-CommandExists' {
$testCommandName = 'TestCommandName'
Mock -CommandName 'Get-Command' -MockWith { return $Name }
Context 'Get-Command returns the command' {
It 'Should not throw' {
{ $null = Test-CommandExists -Name $testCommandName } | Should -Not -Throw
}
It 'Should retrieve the command with the specified name' {
$getCommandParameterFilter = {
return $Name -eq $testCommandName
}
Assert-MockCalled -CommandName 'Get-Command' -ParameterFilter $getCommandParameterFilter -Exactly 1 -Scope 'Context'
}
It 'Should return true' {
Test-CommandExists -Name $testCommandName | Should -Be $true
}
}
Context 'Get-Command returns null' {
Mock -CommandName 'Get-Command' -MockWith { return $null }
It 'Should not throw' {
{ $null = Test-CommandExists -Name $testCommandName } | Should -Not -Throw
}
It 'Should retrieve the command with the specified name' {
$getCommandParameterFilter = {
return $Name -eq $testCommandName
}
Assert-MockCalled -CommandName 'Get-Command' -ParameterFilter $getCommandParameterFilter -Exactly 1 -Scope 'Context'
}
It 'Should return false' {
Test-CommandExists -Name $testCommandName | Should -Be $false
}
}
}
}
}