Tests/Certificates.Tests.ps1
|
#Requires -Modules Pester <# .SYNOPSIS Pester tests for Certificate cmdlets. #> BeforeAll { $ModulePath = Join-Path $PSScriptRoot '..' Get-Module JIM -ErrorAction SilentlyContinue | Remove-Module -Force Import-Module $ModulePath -Force } AfterAll { Get-Module JIM -ErrorAction SilentlyContinue | Remove-Module -Force } Describe 'Get-JIMCertificate' { Context 'Parameter Sets' { BeforeAll { $command = Get-Command Get-JIMCertificate } It 'Should have a List parameter set as default' { $command.DefaultParameterSet | Should -Be 'List' } It 'Should have a ById parameter set' { $command.ParameterSets.Name | Should -Contain 'ById' } It 'Should have an Enabled parameter set' { $command.ParameterSets.Name | Should -Contain 'Enabled' } } Context 'Parameter Validation' { BeforeAll { $command = Get-Command Get-JIMCertificate } It 'Should have Id parameter that accepts GUID' { $param = $command.Parameters['Id'] $param.ParameterType.Name | Should -Be 'Guid' } It 'Should have EnabledOnly switch parameter' { $command.Parameters['EnabledOnly'].SwitchParameter | Should -BeTrue } } Context 'Requires Connection' { BeforeEach { Disconnect-JIM } It 'Should throw when not connected' { { Get-JIMCertificate } | Should -Throw '*Connect-JIM*' } } Context 'Help Documentation' { BeforeAll { $help = Get-Help Get-JIMCertificate -Full } It 'Should have a synopsis' { $help.Synopsis | Should -Not -BeNullOrEmpty } It 'Should have examples' { $help.Examples.Example.Count | Should -BeGreaterThan 0 } It 'Should have related links' { $help.RelatedLinks | Should -Not -BeNullOrEmpty } } } Describe 'Add-JIMCertificate' { Context 'Parameter Sets' { BeforeAll { $command = Get-Command Add-JIMCertificate } It 'Should have FromFile as default parameter set' { $command.DefaultParameterSet | Should -Be 'FromFile' } It 'Should have FromData parameter set' { $command.ParameterSets.Name | Should -Contain 'FromData' } It 'Should have FromBase64 parameter set' { $command.ParameterSets.Name | Should -Contain 'FromBase64' } } Context 'Parameter Validation' { BeforeAll { $command = Get-Command Add-JIMCertificate } It 'Should have a mandatory Name parameter' { $param = $command.Parameters['Name'] $param.Attributes | Where-Object { $_ -is [System.Management.Automation.ParameterAttribute] -and $_.Mandatory } | Should -Not -BeNullOrEmpty } It 'Should have a PassThru switch parameter' { $command.Parameters['PassThru'].SwitchParameter | Should -BeTrue } It 'Should support ShouldProcess' { $command.Parameters['WhatIf'] | Should -Not -BeNullOrEmpty } } Context 'Requires Connection' { BeforeEach { Disconnect-JIM } It 'Should throw when not connected' { { Add-JIMCertificate -Name "Test" -Path "/test.pem" -ErrorAction Stop } | Should -Throw '*Connect-JIM*' } } Context 'Help Documentation' { BeforeAll { $help = Get-Help Add-JIMCertificate -Full } It 'Should have a synopsis' { $help.Synopsis | Should -Not -BeNullOrEmpty } It 'Should have examples' { $help.Examples.Example.Count | Should -BeGreaterThan 0 } } } Describe 'Set-JIMCertificate' { Context 'Parameter Validation' { BeforeAll { $command = Get-Command Set-JIMCertificate } It 'Should have a mandatory Id parameter' { $param = $command.Parameters['Id'] $param.Attributes | Where-Object { $_ -is [System.Management.Automation.ParameterAttribute] -and $_.Mandatory } | Should -Not -BeNullOrEmpty } It 'Should have Enable switch parameter' { $command.Parameters['Enable'].SwitchParameter | Should -BeTrue } It 'Should have Disable switch parameter' { $command.Parameters['Disable'].SwitchParameter | Should -BeTrue } It 'Should have a PassThru switch parameter' { $command.Parameters['PassThru'].SwitchParameter | Should -BeTrue } It 'Should support ShouldProcess' { $command.Parameters['WhatIf'] | Should -Not -BeNullOrEmpty } } Context 'Requires Connection' { BeforeEach { Disconnect-JIM } It 'Should throw when not connected' { { Set-JIMCertificate -Id ([Guid]::NewGuid()) -Name "Test" -ErrorAction Stop } | Should -Throw '*Connect-JIM*' } } Context 'Help Documentation' { BeforeAll { $help = Get-Help Set-JIMCertificate -Full } It 'Should have a synopsis' { $help.Synopsis | Should -Not -BeNullOrEmpty } It 'Should have examples' { $help.Examples.Example.Count | Should -BeGreaterThan 0 } } } Describe 'Remove-JIMCertificate' { Context 'Parameter Validation' { BeforeAll { $command = Get-Command Remove-JIMCertificate } It 'Should support ShouldProcess' { $command.Parameters['WhatIf'] | Should -Not -BeNullOrEmpty $command.Parameters['Confirm'] | Should -Not -BeNullOrEmpty } It 'Should have a Force switch parameter' { $command.Parameters['Force'].SwitchParameter | Should -BeTrue } It 'Should have a PassThru switch parameter' { $command.Parameters['PassThru'].SwitchParameter | Should -BeTrue } } Context 'Requires Connection' { BeforeEach { Disconnect-JIM } It 'Should throw when not connected' { { Remove-JIMCertificate -Id ([Guid]::NewGuid()) -Force -ErrorAction Stop } | Should -Throw '*Connect-JIM*' } } Context 'Help Documentation' { BeforeAll { $help = Get-Help Remove-JIMCertificate -Full } It 'Should have a synopsis' { $help.Synopsis | Should -Not -BeNullOrEmpty } It 'Should have examples' { $help.Examples.Example.Count | Should -BeGreaterThan 0 } } } Describe 'Test-JIMCertificate' { Context 'Parameter Validation' { BeforeAll { $command = Get-Command Test-JIMCertificate } It 'Should have a mandatory Id parameter' { $param = $command.Parameters['Id'] $param.Attributes | Where-Object { $_ -is [System.Management.Automation.ParameterAttribute] -and $_.Mandatory } | Should -Not -BeNullOrEmpty } It 'Should have Id parameter that accepts pipeline by property name' { $param = $command.Parameters['Id'] $param.Attributes | Where-Object { $_ -is [System.Management.Automation.ParameterAttribute] -and $_.ValueFromPipelineByPropertyName } | Should -Not -BeNullOrEmpty } } Context 'Requires Connection' { BeforeEach { Disconnect-JIM } It 'Should throw when not connected' { { Test-JIMCertificate -Id ([Guid]::NewGuid()) -ErrorAction Stop } | Should -Throw '*Connect-JIM*' } } Context 'Help Documentation' { BeforeAll { $help = Get-Help Test-JIMCertificate -Full } It 'Should have a synopsis' { $help.Synopsis | Should -Not -BeNullOrEmpty } It 'Should have examples' { $help.Examples.Example.Count | Should -BeGreaterThan 0 } } } Describe 'Export-JIMCertificate' { Context 'Parameter Sets' { BeforeAll { $command = Get-Command Export-JIMCertificate } It 'Should have ToFile as default parameter set' { $command.DefaultParameterSet | Should -Be 'ToFile' } It 'Should have PassThru parameter set' { $command.ParameterSets.Name | Should -Contain 'PassThru' } } Context 'Parameter Validation' { BeforeAll { $command = Get-Command Export-JIMCertificate } It 'Should have a mandatory Id parameter' { $param = $command.Parameters['Id'] $param.Attributes | Where-Object { $_ -is [System.Management.Automation.ParameterAttribute] -and $_.Mandatory } | Should -Not -BeNullOrEmpty } It 'Should have Path parameter' { $command.Parameters['Path'] | Should -Not -BeNullOrEmpty } It 'Should have Force switch parameter' { $command.Parameters['Force'].SwitchParameter | Should -BeTrue } It 'Should have PassThru switch parameter' { $command.Parameters['PassThru'].SwitchParameter | Should -BeTrue } } Context 'Requires Connection' { BeforeEach { Disconnect-JIM } It 'Should write error when not connected' { { Export-JIMCertificate -Id ([Guid]::NewGuid()) -PassThru -ErrorAction Stop } | Should -Throw '*Connect-JIM*' } } Context 'Help Documentation' { BeforeAll { $help = Get-Help Export-JIMCertificate -Full } It 'Should have a synopsis' { $help.Synopsis | Should -Not -BeNullOrEmpty } It 'Should have examples' { $help.Examples.Example.Count | Should -BeGreaterThan 0 } } } |