tests/New-AWSVaultAlias.Tests.ps1
Describe "New-AWSVaultAlias" { Import-Module .\posh-awsvault.psd1 $TestCases = @{ "When called with only an alias name" = @( "somecommand" ) "When called with an alias name and a command name" = @( "somealias", "somecommand" ) } foreach($Case in $TestCases.Keys) { Context $Case { $TestState = @{ "Alias" = $null "Function" = $null } $TestCaseArguments = $TestCases[$Case] $TestAliasName = $TestCaseArguments[0] $TestCommandName = $TestAliasName if($TestCaseArguments.Count -gt 1) { $TestCommandName = $TestCaseArguments[1] } New-AWSVaultAlias @TestCaseArguments It "Creates an alias named $TestAliasName" { $TestState["Alias"] = Get-Alias $TestAliasName $TestState["Alias"] | Should -Not -BeNull Write-Debug ($TestState["Alias"] | Out-String) } It "Points to a function" { $TestState["Function"] = Get-Item Function:\$($TestState["Alias"].Definition) $TestState["Function"] | Should -Not -BeNull Write-Debug ($TestState["Function"] | Out-String) } Mock Invoke-AWSVault -ModuleName $TestState["Alias"].Module { Write-Debug "Invoke-AWSVault $($args[0]) $($args[1])" } It "Calls Invoke-AWSVault for command $TestCommandName" { &($TestState["Function"].Name) Assert-MockCalled Invoke-AWSVault -ModuleName $TestState["Function"].Module -ParameterFilter { $CommandName -eq $TestCommandName } } Remove-Module $TestState["Function"].Module -ErrorAction SilentlyContinue } } Remove-Module posh-awsvault } |