-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathSSHSessions.Tests.ps1
More file actions
63 lines (50 loc) · 3.08 KB
/
SSHSessions.Tests.ps1
File metadata and controls
63 lines (50 loc) · 3.08 KB
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
#requires -version 3
<# Pester 4.x tests for SSH-Sessions/SSHSessions. Joakim Borger Svendsen.
Svendsen Tech.
#>
Import-Module -Name Pester -ErrorAction Stop #-Verbose:$False
$VerbosePreference = "SilentlyContinue"
#$ComputerName = "www.svendsentech.no"
$ComputerName = ""
Import-Module -Name SSHSessions -ErrorAction Stop #-Verbose:$False
if (-not (Get-Variable -Name PesterSSHSessionsCredentials -Scope Global -ErrorAction SilentlyContinue)) {
Write-Warning -Message "You need to: `$Global:PesterSSHSessionsCredentials = Get-Credential # and to provide the SSH user credentials before running the tests (I know this sucks...)"
exit
}
if ($ComputerName -eq "") {
Write-Warning -Message "You need to assign a computer name to the `$ComputerName variable at the top of SSHSessions.Tests.ps1 (I know this sucks...)"
exit
}
Describe SshSessions {
It "New-SshSession creates a new SSH session successfully to the test target." {
<#if (((Get-SshSession -ComputerName $ComputerName -ErrorAction SilentlyContinue 3> $null)).Connected -eq $True) {
Write-Verbose -Message "Terminating existing SSH session to $ComputerName." -Verbose
$Null = Remove-SshSession -ComputerName $ComputerName -ErrorAction SilentlyContinue
}#>
$Result = (New-SshSession -ComputerName $ComputerName -Verbose `
-Credential $Global:PesterSSHSessionsCredentials -ErrorAction Stop) 4>&1
$Result.Message | Should -Match "\[$([Regex]::Escape($ComputerName))\]\s*(?:Successfully connected|You are already connected)"
}
It "Invoke-SshCommand produces expected simple remote 'echo' test output." {
$Result = Invoke-SshCommand -ComputerName $ComputerName -Quiet -Command "echo 'This is a test'" -ErrorAction Stop
$Result[0].Result | Should -Be "This is a test"
}
It "Piping Get-SshSession to Invoke-SshCommand works." {
$Result = Get-SshSession -ComputerName $ComputerName | Invoke-SshCommand -Quiet -Command "echo 'This is a test'" `
-ErrorAction Stop
$Result[0].Result | Should -Be "This is a test"
}
It "Remove-SshSession works." {
$Result = (Remove-SshSession -ComputerName $ComputerName -ErrorAction SilentlyContinue -Verbose) 4>&1
$Result.Message | Should -Match "\[$([Regex]::Escape($ComputerName))\] Now disconnected and disposed"
}
It "The -Reconnect parameter for New-SshSession works." {
$Result = (New-SshSession -ComputerName $ComputerName -Verbose `
-Credential $Global:PesterSSHSessionsCredentials -ErrorAction Stop) 4>&1
$Result.Message | Should -Match "\[$([Regex]::Escape($ComputerName))\]\s*(?:Successfully connected|You are already connected)"
$Result = (New-SshSession -ComputerName $ComputerName -Reconnect -Credential $Global:PesterSSHSessionsCredentials `
-ErrorAction SilentlyContinue -Verbose) 4>&1
$Result[2].Message | Should -Match "\[$([Regex]::Escape($ComputerName))\]\s*Successfully\s+connected"
}
Get-SshSession | Remove-SshSession
}