Tests/Private/GetUrls.Tests.ps1
$PSScriptRoot = "$PSScriptRoot/../../"; . "$PSScriptRoot/Private/GetUrls"; Describe "GetUrls" { Mock -CommandName Write-Host -Verifiable -MockWith { }; Mock -CommandName Write-Output -Verifiable -MockWith { }; It "GetUrl Returns OK" { # Assing $instanceGuid ="59d1c5f2-73cd-4eec-98d7-3c595f7e0df6"; $defaultHostName = "someHostName.tld"; $url = "https://someHostName.tld/somePage/"; Mock -CommandName GetSingleUrl -Verifiable -MockWith { return @{ # [Microsoft.PowerShell.Commands.BasicHtmlWebResponseObject] StatusCode = "200"; StatusDescription = "OK"; }; }; # Act GetUrls -defaultHostName $defaultHostName -urls $url -instanceGuid $instanceGuid; # Assert Assert-MockCalled 'Write-Host' -Exactly 1 -ParameterFilter { $Object -eq "OK (200)" -and $foregroundcolor -eq "Green" } -Scope It } It "GetUrl NoInstanceGuid Returns OK" { # Assing $defaultHostName = "someHostName.tld"; $url = "https://someHostName.tld/somePage/"; Mock -CommandName GetSingleUrl -Verifiable -MockWith { return @{ # [Microsoft.PowerShell.Commands.BasicHtmlWebResponseObject] StatusCode = "200"; StatusDescription = "OK"; }; }; # Act GetUrls -defaultHostName $defaultHostName -urls $url; # Assert Assert-MockCalled 'Write-Host' -Exactly 1 -ParameterFilter { $Object -eq "OK (200)" -and $foregroundcolor -eq "Green" } -Scope It } It "GetUrl NoInstanceGuid NoParameter Fails" { # Assing $defaultHostName = "someHostName.tld"; $url = "https://someHostName.tld/somePage/"; # Act $noUrl = { GetUrls -defaultHostName $defaultHostName -urls $null; }; $noDefaultHostName = { GetUrls -defaultHostName $null -urls $url; }; $none = { GetUrls -defaultHostName $null -urls $null; }; # Assert $noUrl | Should Throw "Cannot bind argument to parameter 'urls' because it is null."; $noDefaultHostName | Should Throw "Cannot bind argument to parameter 'defaultHostName' because it is an empty string."; $none | Should Throw ` "Cannot bind argument to parameter 'defaultHostName' because it is an empty string." ` "Cannot bind argument to parameter 'urls' because it is null."; } <# TODO: Figure out a way to test this It "GetNotFoundUrl Returns 404" { # Assing $instanceGuid ="59d1c5f2-73cd-4eec-98d7-3c595f7e0df6"; $defaultHostName = "someHostName.tld"; $url = "https://someHostName.tld/somePage/"; #Mock -CommandName Write-Host -Verifiable -MockWith { } -Scope It; Mock -CommandName GetSingleUrl -Verifiable -MockWith { throw @{ # [System.Net.WebException] Response = @{ StatusCode = [System.Net.HttpStatusCode]::NotFound; StatusDescription = "Not Found"; }; }; }; # Act GetUrls -defaultHostName $defaultHostName -urls $url -instanceGuid $instanceGuid; # # Assert # Assert-MockCalled 'Write-Host' -Exactly 1 -ParameterFilter { # $Object -eq "Not Found (404)" -and $foregroundcolor -eq "Magenta" } -Scope It } It "GetUrl Returns 500" { # Assing $instanceGuid ="59d1c5f2-73cd-4eec-98d7-3c595f7e0df6"; $defaultHostName = "someHostName.tld"; $url = "https://someHostName.tld/somePage/"; #Mock -CommandName Write-Host -Verifiable -MockWith { } -Scope It; Mock -CommandName GetSingleUrl -Verifiable -MockWith { throw @{ # [System.Net.WebException] Response = @{ StatusCode = [System.Net.HttpStatusCode]::InternalServerError; StatusDescription = "Internal Server Error"; }; }; }; # Act GetUrls -defaultHostName $defaultHostName -urls $url -instanceGuid $instanceGuid; # # Assert # Assert-MockCalled 'Write-Host' -Exactly 1 -ParameterFilter { # $Object -eq "Not Found (404)" -and $foregroundcolor -eq "Red" } -Scope It } #> } |