test(Connection): fix scoping of mocks

This commit is contained in:
Rodweil, Theodor 2023-08-06 16:35:01 +02:00
parent 6b393c0f96
commit 08eb8de842
No known key found for this signature in database
GPG key ID: F8BC1B0EB1F9CCF5

View file

@ -8,58 +8,75 @@ BeforeAll {
Describe 'Test-Connection' ` Describe 'Test-Connection' `
{ {
Context 'default' {
Context 'Parameterized' { BeforeAll `
{
Mock -ModuleName 'Connection' Get-PersonalAccessToken {
'01234567890123456789'
}
}
It 'throws no exception' { It 'throws no exception' {
Mock -ModuleName 'Connection' Invoke-WebRequest {
InModuleScope Connection { @{
'Content' = "{'type': 'known'}"
Mock Get-PersonalAccessToken {'01234567890123456789'} 'StatusCode' = 200
}
Mock Invoke-WebRequest {
return @{
'Content' = "{'type': 'known'}"
'StatusCode' = 200
}
}
Test-Connection -Host 'confluence.contoso.com'
} }
Test-Connection -Host 'confluence.contoso.com'
Should -Invoke -CommandName 'Get-PersonalAccessToken' `
-ModuleName 'Connection' ` `
-Exact `
-Times 1
Should -Invoke -CommandName 'Invoke-WebRequest' `
-ModuleName 'Connection' ` `
-Exact `
-Times 1
} }
It 'detects anonymous authentication' { It 'detects anonymous authentication' {
Mock -ModuleName 'Connection' Invoke-WebRequest {
InModuleScope Connection { @{
'Content' = "{'type': 'anonymous'}"
Mock Get-PersonalAccessToken {'01234567890123456789'} 'StatusCode' = 200
}
Mock Invoke-WebRequest {
return @{
'Content' = "{'type': 'anonymous'}"
'StatusCode' = 200
}
}
{Test-Connection -Host 'confluence.contoso.com'} | Should -Throw
} }
{Test-Connection -Host 'confluence.contoso.com'} | Should -Throw
Should -Invoke -CommandName 'Get-PersonalAccessToken' `
-ModuleName 'Connection' ` `
-Exact `
-Times 1
Should -Invoke -CommandName 'Invoke-WebRequest' `
-ModuleName 'Connection' ` `
-Exact `
-Times 1
} }
It 'detects non 200 status codes' { It 'detects non 200 status codes' {
Mock -ModuleName 'Connection' Invoke-WebRequest {
InModuleScope Connection { @{
'Content' = "{'type': 'anonymous'}"
Mock Get-PersonalAccessToken {'01234567890123456789'} 'StatusCode' = 500
}
Mock Invoke-WebRequest {
return @{
'Content' = "{'type': 'anonymous'}"
'StatusCode' = 500
}
}
{Test-Connection -Host 'confluence.contoso.com'} | Should -Throw
} }
{Test-Connection -Host 'confluence.contoso.com'} | Should -Throw
Should -Invoke -CommandName 'Get-PersonalAccessToken' `
-ModuleName 'Connection' ` `
-Exact `
-Times 1
Should -Invoke -CommandName 'Invoke-WebRequest' `
-ModuleName 'Connection' ` `
-Exact `
-Times 1
} }
} }
} }