Tests/Unit/Private/Test-SCASession.Tests.ps1
|
Import-Module (Join-Path $PSScriptRoot '../../../psSCA.psd1') -Force Describe 'Test-SCASession' { InModuleScope psSCA { BeforeEach { $script:SCASessions = [ordered]@{} $script:SCACurrentSessionName = $null } It 'throws when there is no active session and none is specified' { { Test-SCASession -Session $null } | Should -Throw '*No active psSCA session*' } It 'throws when -Session is a type it does not recognize' { { Test-SCASession -Session 42 } | Should -Throw '*must be a psSCA.Session object, a session name, or omitted*' } It 'throws when a named session does not exist' { { Test-SCASession -Session 'DoesNotExist' } | Should -Throw "*No psSCA session named 'DoesNotExist'*" } It 'resolves the current default session when -Session is omitted' { $session = [pscustomobject]@{ PSTypeName = 'psSCA.Session' Name = 'Default' ExpiresAt = [DateTime]::UtcNow.AddMinutes(10) } $script:SCASessions['Default'] = $session $script:SCACurrentSessionName = 'Default' $resolved = Test-SCASession -Session $null $resolved.Name | Should -Be 'Default' } It 'resolves a session passed by name' { $session = [pscustomobject]@{ PSTypeName = 'psSCA.Session' Name = 'Secondary' ExpiresAt = [DateTime]::UtcNow.AddMinutes(10) } $script:SCASessions['Secondary'] = $session $resolved = Test-SCASession -Session 'Secondary' $resolved.Name | Should -Be 'Secondary' } It 'passes through a session object unchanged' { $session = [pscustomobject]@{ PSTypeName = 'psSCA.Session' Name = 'PipedIn' ExpiresAt = [DateTime]::UtcNow.AddMinutes(10) } $resolved = Test-SCASession -Session $session $resolved.Name | Should -Be 'PipedIn' } It 'throws when the resolved session has expired' { $session = [pscustomobject]@{ PSTypeName = 'psSCA.Session' Name = 'Expired' ExpiresAt = [DateTime]::UtcNow.AddMinutes(-1) } { Test-SCASession -Session $session } | Should -Throw '*expired*' } } } |