Merge pull request #388 from qlikq/master

Enable quick disconnect for Disconnect-SsoAdminServer
This commit is contained in:
dmilov
2020-10-06 10:40:07 +03:00
committed by GitHub
2 changed files with 81 additions and 11 deletions

View File

@@ -147,7 +147,7 @@ function Connect-SsoAdminServer {
}
function Disconnect-SsoAdminServer {
<#
<#
.NOTES
===========================================================================
Created on: 9/29/2020
@@ -167,18 +167,31 @@ function Disconnect-SsoAdminServer {
Disconnect a SSO Admin connection stored in 'mySsoAdminConnection' varaible
#>
[CmdletBinding()]
param(
[Parameter(
Mandatory=$true,
ValueFromPipeline=$true,
ValueFromPipelineByPropertyName=$false,
HelpMessage='SsoAdminServer object')]
[ValidateNotNull()]
[VMware.vSphere.SsoAdminClient.DataTypes.SsoAdminServer]
$Server)
[CmdletBinding()]
param(
[Parameter(
ValueFromPipeline = $true,
ValueFromPipelineByPropertyName = $false,
HelpMessage = 'SsoAdminServer object')]
[ValidateNotNull()]
[VMware.vSphere.SsoAdminClient.DataTypes.SsoAdminServer]
$Server
)
Process {
if (-not $PSBoundParameters['Server']) {
switch (@($global:DefaultSsoAdminServers).count) {
{ $_ -eq 1 } { $server = ($global:DefaultSsoAdminServers).ToArray()[0] ; break }
{ $_ -gt 1 } {
Throw 'Connected to more than 1 SSO server, please specify a SSO server via -Server parameter'
break
}
Default {
Throw 'Not connected to SSO server.'
}
}
}
if ($global:DefaultSsoAdminServers.Contains($Server)) {
$global:DefaultSsoAdminServers.Remove($Server) | Out-Null
}

View File

@@ -84,6 +84,63 @@ Describe "Connect-SsoAdminServer and Disconnect-SsoAdminServer Tests" {
$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
$expected += @(Connect-SsoAdminServer `
-Server $VcAddress `
-User $User `
-Password $Password `
-SkipCertificateCheck)
$expected += @(Connect-SsoAdminServer `
-Server $VcAddress `
-User $User `
-Password $Password `
-SkipCertificateCheck)
# Act
# Assert
{Disconnect-SsoAdminServer} | should -Throw 'Connected to more than 1 SSO server, please specify a SSO server via -Server parameter'
(Compare-Object $global:DefaultSsoAdminServers $expected -IncludeEqual).Count | Should Be 2
$expected.IsConnected | Should -Contain $true
}
It 'Diconnect-SsoAdminServer does disconnect via pipeline if connected to more than 1 SSO server' {
# Arrange
$expected += @(Connect-SsoAdminServer `
-Server $VcAddress `
-User $User `
-Password $Password `
-SkipCertificateCheck)
$expected += @(Connect-SsoAdminServer `
-Server $VcAddress `
-User $User `
-Password $Password `
-SkipCertificateCheck)
# Act
$expected | Disconnect-SsoAdminServer
# Assert
$global:DefaultSsoAdminServers.count | Should Be 0
$expected.IsConnected | Should -not -Contain $true
}
It 'Disconnects disconnected object' {
# Arrange
$expected = Connect-SsoAdminServer `