@@ -61,50 +61,60 @@ 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 {
100+ $Seconds -eq 120
89101 }
90- Should - Invoke - ModuleName BOSH.SSH - CommandName Add-WindowsCapability - Times 1 - ParameterFilter {
91- $Name -like " OpenSSH.Server*"
102+
103+ Should - Invoke - ModuleName BOSH.SSH - CommandName Register-ScheduledTask - Times 1 - ParameterFilter {
104+ $TaskName -like " Install-$openSshClientPackageSpecifier "
92105 }
93- }
94- }
95106
96- Context " When OpenSSH components are NOT installed" {
97- BeforeEach {
98- Mock - ModuleName BOSH.SSH - CommandName Get-WindowsCapability {
99- [PSCustomObject ]@ { State = " NOT-NotPresent" }
107+ Should - Invoke - ModuleName BOSH.SSH - CommandName Register-ScheduledTask - Times 1 - ParameterFilter {
108+ $TaskName -like " Install-$openSshServerPackageSpecifier "
100109 }
101- Mock - ModuleName BOSH.SSH - CommandName Add-WindowsCapability { } - Verifiable
102110 }
111+ }
103112
113+ Context " When OpenSSH components are NOT installed" {
104114 It " does not attempt to install the packages" {
105115 Install-SSHD
106116
107- Should -Not - Invoke - ModuleName BOSH.SSH - CommandName Add-WindowsCapability
117+ Should -Not - Invoke - ModuleName BOSH.SSH - CommandName Register-ScheduledTask
108118 }
109119 }
110120 }
0 commit comments