225 lines
7.0 KiB
PowerShell
225 lines
7.0 KiB
PowerShell
# **************************************************************************
|
|
# Copyright 2020 VMware, Inc.
|
|
# **************************************************************************
|
|
|
|
param(
|
|
[Parameter(Mandatory = $true)]
|
|
[string]
|
|
$VcAddress,
|
|
|
|
[Parameter(Mandatory = $true)]
|
|
[string]
|
|
$User,
|
|
|
|
[Parameter(Mandatory = $true)]
|
|
[string]
|
|
$Password
|
|
)
|
|
|
|
# Import Vmware.vSphere.SsoAdmin Module
|
|
$modulePath = Join-Path (Split-Path $PSScriptRoot | Split-Path) "VMware.vSphere.SsoAdmin.psd1"
|
|
Import-Module $modulePath
|
|
|
|
Describe "Connect-SsoAdminServer and Disconnect-SsoAdminServer Tests" {
|
|
AfterEach {
|
|
$connectionsToCleanup = $global:DefaultSsoAdminServers.ToArray()
|
|
foreach ($connection in $connectionsToCleanup) {
|
|
Disconnect-SsoAdminServer -Server $connection
|
|
}
|
|
}
|
|
|
|
Context "Connect-SsoAdminServer" {
|
|
It 'Connect-SsoAdminServer returns SsoAdminServer object and updates DefaultSsoAdminServers variable' {
|
|
# Act
|
|
$actual = Connect-SsoAdminServer `
|
|
-Server $VcAddress `
|
|
-User $User `
|
|
-Password $Password `
|
|
-SkipCertificateCheck
|
|
|
|
# Assert
|
|
$actual | Should -Not -Be $null
|
|
$actual.GetType().FullName | Should -Be 'VMware.vSphere.SsoAdminClient.DataTypes.SsoAdminServer'
|
|
$actual.IsConnected | Should -Be $true
|
|
$actual.Name | Should -Be $VcAddress
|
|
$global:DefaultSsoAdminServers | Should -Contain $actual
|
|
}
|
|
|
|
It 'Connect-SsoAdminServer throws error on invalid password' {
|
|
# Act
|
|
# Assert
|
|
{ Connect-SsoAdminServer `
|
|
-Server $VcAddress `
|
|
-User $User `
|
|
-Password ($Password + "invalid") `
|
|
-SkipCertificateCheck `
|
|
-ErrorAction Stop } | `
|
|
Should -Throw "Invalid credentials"
|
|
}
|
|
|
|
It 'Connect-SsoAdminServer throws error on invalid Tls Certificate' {
|
|
# Act
|
|
# Assert
|
|
{ Connect-SsoAdminServer `
|
|
-Server $VcAddress `
|
|
-User $User `
|
|
-Password $Password `
|
|
-ErrorAction Stop } | `
|
|
Should -Throw "*The SSL connection could not be established, see inner exception.*"
|
|
}
|
|
}
|
|
|
|
Context "Disconnect-SsoAdminServer" {
|
|
It 'Diconnect-SsoAdminServer removes server from DefaultSsoAdminServers and makes the object not connected' {
|
|
# Arrange
|
|
$expected = Connect-SsoAdminServer `
|
|
-Server $VcAddress `
|
|
-User $User `
|
|
-Password $Password `
|
|
-SkipCertificateCheck
|
|
|
|
# Act
|
|
$expected | Disconnect-SsoAdminServer
|
|
|
|
# Assert
|
|
$global:DefaultSsoAdminServers | Should -Not -Contain $expected
|
|
$expected.IsConnected | Should -Be $false
|
|
}
|
|
|
|
It 'Diconnect-SsoAdminServer disconnects the currently connected SSO in case there is 1 SSO server' {
|
|
# Arrange
|
|
$expected = Connect-SsoAdminServer `
|
|
-Server $VcAddress `
|
|
-User $User `
|
|
-Password $Password `
|
|
-SkipCertificateCheck
|
|
|
|
# Act
|
|
Disconnect-SsoAdminServer -server $expected
|
|
|
|
# Assert
|
|
$global:DefaultSsoAdminServers | Should -Not -Contain $expected
|
|
$expected.IsConnected | Should -Be $false
|
|
}
|
|
|
|
It 'Diconnect-SsoAdminServer does not disconnect if connected to more than 1 SSO server' {
|
|
# Arrange
|
|
$connection1 = Connect-SsoAdminServer `
|
|
-Server $VcAddress `
|
|
-User $User `
|
|
-Password $Password `
|
|
-SkipCertificateCheck
|
|
$connection2 = Connect-SsoAdminServer `
|
|
-Server $VcAddress `
|
|
-User $User `
|
|
-Password $Password `
|
|
-SkipCertificateCheck
|
|
|
|
# Act
|
|
|
|
# Assert
|
|
$connection2 | Should -Be $connection1
|
|
$connection2.RefCount | Should -Be 2
|
|
|
|
Disconnect-SsoAdminServer
|
|
|
|
$connection2.IsConnected | Should -Contain $true
|
|
$connection2.RefCount | Should -Be 1
|
|
}
|
|
|
|
It 'Diconnect-SsoAdminServer does disconnect via pipeline if connected to more than 1 SSO server' {
|
|
# Arrange
|
|
$connection1 = Connect-SsoAdminServer `
|
|
-Server $VcAddress `
|
|
-User $User `
|
|
-Password $Password `
|
|
-SkipCertificateCheck
|
|
$connection2 = Connect-SsoAdminServer `
|
|
-Server $VcAddress `
|
|
-User $User `
|
|
-Password $Password `
|
|
-SkipCertificateCheck
|
|
|
|
# Act
|
|
$connection1, $connection2 | Disconnect-SsoAdminServer
|
|
# Assert
|
|
$global:DefaultSsoAdminServers.Count | Should -Be 0
|
|
$connection1.IsConnected | Should -Be $false
|
|
$connection2.IsConnected | Should -Be $false
|
|
}
|
|
|
|
It 'Disconnects disconnected object' {
|
|
# Arrange
|
|
$expected = Connect-SsoAdminServer `
|
|
-Server $VcAddress `
|
|
-User $User `
|
|
-Password $Password `
|
|
-SkipCertificateCheck
|
|
|
|
$expected | Disconnect-SsoAdminServer
|
|
|
|
# Act
|
|
{ Disconnect-SsoAdminServer -Server $expected } | `
|
|
Should -Not -Throw
|
|
|
|
# Assert
|
|
$global:DefaultSsoAdminServers | Should -Not -Contain $expected
|
|
$expected.IsConnected | Should -Be $false
|
|
}
|
|
|
|
It 'Disconnects DefaultSsoAdminServers when * is specified on -Server parameter' {
|
|
# Arrange
|
|
$expected = Connect-SsoAdminServer `
|
|
-Server $VcAddress `
|
|
-User $User `
|
|
-Password $Password `
|
|
-SkipCertificateCheck
|
|
|
|
# Act
|
|
Disconnect-SsoAdminServer -Server "*"
|
|
|
|
|
|
# Assert
|
|
$global:DefaultSsoAdminServers.Count | Should -Be 0
|
|
$expected.IsConnected | Should -Be $false
|
|
}
|
|
|
|
It 'Disconnects server specified as string that is equal to VC Address' {
|
|
# Arrange
|
|
$expected = Connect-SsoAdminServer `
|
|
-Server $VcAddress `
|
|
-User $User `
|
|
-Password $Password `
|
|
-SkipCertificateCheck
|
|
|
|
# Act
|
|
Disconnect-SsoAdminServer -Server $VcAddress
|
|
|
|
|
|
# Assert
|
|
$global:DefaultSsoAdminServers.Count | Should -Be 0
|
|
$expected.IsConnected | Should -Be $false
|
|
}
|
|
|
|
It 'Disconnect-SsoAdminServer fails when string that does not match any servers is specified' {
|
|
# Arrange
|
|
$expected = Connect-SsoAdminServer `
|
|
-Server $VcAddress `
|
|
-User $User `
|
|
-Password $Password `
|
|
-SkipCertificateCheck
|
|
|
|
# Act
|
|
{ Disconnect-SsoAdminServer -Server "testserver" } | Should -Throw
|
|
|
|
|
|
# Assert
|
|
$global:DefaultSsoAdminServers.Count | Should -Be 1
|
|
$global:DefaultSsoAdminServers[0] | Should -Be $expected
|
|
$expected.IsConnected | Should -Be $true
|
|
|
|
# Cleanup
|
|
Disconnect-SsoAdminServer -Server $expected
|
|
}
|
|
}
|
|
} |