Public/Set-Headers.Tests.ps1

Set-StrictMode -Version Latest

BeforeAll {
    . "$PSScriptRoot\Set-Headers.ps1"
}

Describe "Set-Headers" {
    Context "SciptLevel" {
        It "sets script level vars and returns header" {
            $TargetToken = @{access_token="1"; expires_in=0}
            [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseDeclaredVarsMoreThanAssignment', '', Justification='pester supported')]
            $TargetHeader = @{
                "Authorization"="Bearer $($TargetToken.access_token)"
                "Content-Type"="application/json"
                "Accept"="application/json"
            }
            Set-Headers -Token $TargetToken | Should -Not -BeNullOrEmpty
            (Get-Variable -Name "headers" -Scope Script).Value | Should -Not -BeNullOrEmpty
            (Get-Variable -Name "token" -Scope Script).Value | Should -Not -BeNullOrEmpty
        }
        It "sets script level vars for expire at using slew seconds" {
            $TargetDate = [pscustomobject]@{}
            $TargetExpiresAt = New-Object DateTime 1983, 1, 1, 0, 0, 0, ([DateTimeKind]::Utc)
            $TargetExpireSlewSeconds = -1
            $TargetDate | Add-Member -MemberType ScriptMethod -Name "AddSeconds" -Value {
                param($seconds)
                process {
                    $seconds | should be 2
                    return $TargetExpiresAt
                }
            }
            $TargetToken = @{access_token="1";expires_in=1}
            Mock Get-Date { $TargetDate }
            Set-Headers -Token $TargetToken -ExpireSlewSeconds $TargetExpireSlewSeconds
            (Get-Variable -Name "tokenExpiresAt" -Scope Script).Value | should -Be $TargetExpiresAt
        }

    }
}