@@ -61,50 +61,58 @@ Describe "BOSH.SSH" {
6161 Mock Set-Service { } - ModuleName BOSH.SSH
6262 Mock Edit-DefaultOpenSSHConfig { } - ModuleName BOSH.SSH
6363
64- Mock - ModuleName BOSH.SSH - CommandName Get-WindowsCapability { }
64+ Mock - ModuleName BOSH.SSH - CommandName shouldInstallSshComponents { $False }
6565 }
6666
67- Context " when 'Get-OSVersion' returns 'windows2019' " {
67+ Context " When SSH components should be installed " {
6868 BeforeEach {
69- Mock - ModuleName BOSH.SSH - CommandName Get-OSVersion { " windows2019" }
69+ Mock - ModuleName BOSH.SSH - CommandName shouldInstallSshComponents { $True }
70+
71+ Mock - ModuleName BOSH.SSH - CommandName Get-WindowsCapability { }
72+
73+ Mock - ModuleName BOSH.SSH - CommandName Start-Sleep { } - Verifiable
74+ Mock - ModuleName BOSH.SSH - CommandName Register-ScheduledTask { } - Verifiable
7075 }
7176
7277 Context " When OpenSSH components are installed" {
7378 BeforeEach {
79+ $openSshClientPackageSpecifier = " OpenSSH.Client~~~~0.0.1.0"
7480 Mock - ModuleName BOSH.SSH - CommandName Get-WindowsCapability {
7581 [PSCustomObject ]@ {
7682 State = " NotPresent"
77- Name = " $Name "
83+ Name = $openSshClientPackageSpecifier
7884 }
79- }
85+ } - ParameterFilter { $Name -eq " OpenSSH.Client* " }
8086
81- Mock - ModuleName BOSH.SSH - CommandName Add-WindowsCapability { } - Verifiable
87+ $openSshServerPackageSpecifier = " OpenSSH.Server~~~~0.0.1.0"
88+ Mock - ModuleName BOSH.SSH - CommandName Get-WindowsCapability {
89+ [PSCustomObject ]@ {
90+ State = " NotPresent"
91+ Name = $openSshServerPackageSpecifier
92+ }
93+ } - ParameterFilter { $Name -eq " OpenSSH.Server*" }
8294 }
8395
8496 It " attempts to install the packages" {
8597 Install-SSHD
8698
87- Should - Invoke - ModuleName BOSH.SSH - CommandName Add-WindowsCapability - Times 1 - ParameterFilter {
88- $Name -like " OpenSSH.Client*"
99+ Should - Invoke - ModuleName BOSH.SSH - CommandName Start-Sleep - Times 2 - ParameterFilter { $Seconds -eq 120 }
100+
101+ Should - Invoke - ModuleName BOSH.SSH - CommandName Register-ScheduledTask - Times 1 - ParameterFilter {
102+ $Description -like " Run: '-Command `" Add-WindowsCapability -Online -Name $openSshClientPackageSpecifier `" '"
89103 }
90- Should - Invoke - ModuleName BOSH.SSH - CommandName Add-WindowsCapability - Times 1 - ParameterFilter {
91- $Name -like " OpenSSH.Server*"
104+
105+ Should - Invoke - ModuleName BOSH.SSH - CommandName Register-ScheduledTask - Times 1 - ParameterFilter {
106+ $Description -like " Run: '-Command `" Add-WindowsCapability -Online -Name $openSshServerPackageSpecifier `" '"
92107 }
93108 }
94109 }
95110
96111 Context " When OpenSSH components are NOT installed" {
97- BeforeEach {
98- Mock - ModuleName BOSH.SSH - CommandName Get-WindowsCapability {
99- [PSCustomObject ]@ { State = " NOT-NotPresent" }
100- }
101- Mock - ModuleName BOSH.SSH - CommandName Add-WindowsCapability { } - Verifiable
102- }
103-
104112 It " does not attempt to install the packages" {
105113 Install-SSHD
106114
107- Should -Not - Invoke - ModuleName BOSH.SSH - CommandName Add-WindowsCapability
115+ Should -Not - Invoke - ModuleName BOSH.SSH - CommandName Register-ScheduledTask
108116 }
109117 }
110118 }
0 commit comments