diff --git a/JiraPS/Internal/Test-Captcha.ps1 b/JiraPS/Internal/Test-Captcha.ps1 new file mode 100644 index 00000000..6eccb0de --- /dev/null +++ b/JiraPS/Internal/Test-Captcha.ps1 @@ -0,0 +1,30 @@ +function Test-Captcha { + [CmdletBinding()] + param( + # Response of Invoke-WebRequest + [Parameter( + Mandatory = $true, + ValueFromPipeline = $true + )] + [PSObject]$InputObject + ) + + begin { + $tokenRequiresCaptcha = "AUTHENTICATION_DENIED" + $headerRequiresCaptcha = "X-Seraph-LoginReason" + } + + process { + Write-Verbose "[$($MyInvocation.MyCommand.Name)] Status code: $($InputObject.StatusCode)" + Write-Verbose "[$($MyInvocation.MyCommand.Name)] Status code: $($InputObject.StatusCode)" + + if ($InputObject.Headers -and $InputObject.Headers[$headerRequiresCaptcha]) { + if ( ($InputObject.Headers[$headerRequiresCaptcha] -split ",") -contains $tokenRequiresCaptcha ) { + Write-Warning "Confluence requires you to log on to the website before continuing for security reasons." + } + } + } + + end { + } +} diff --git a/JiraPS/Public/New-JiraSession.ps1 b/JiraPS/Public/New-JiraSession.ps1 index e6968adf..654420f4 100644 --- a/JiraPS/Public/New-JiraSession.ps1 +++ b/JiraPS/Public/New-JiraSession.ps1 @@ -81,15 +81,8 @@ function New-JiraSession { $webResponse = $err.Exception.Response Write-Debug "[New-JiraSession] Encountered an exception from the Jira server: $err" - # Test HEADERS if Jira requires a CAPTCHA - $tokenRequiresCaptcha = "AUTHENTICATION_DENIED" - $headerRequiresCaptcha = "X-Seraph-LoginReason" - if ( - $webResponse.Headers[$headerRequiresCaptcha] -and - ($webResponse.Headers[$headerRequiresCaptcha] -split ",") -contains $tokenRequiresCaptcha - ) { - Write-Warning "JIRA requires you to log on to the website before continuing for security reasons." - } + # Test response Headers if Jira requires a CAPTCHA + Test-Captcha -InputObject $webResponse Write-Warning "JIRA returned HTTP error $($webResponse.StatusCode.value__) - $($webResponse.StatusCode)" diff --git a/Tests/Add-JiraIssueAttachment.Tests.ps1 b/Tests/Add-JiraIssueAttachment.Tests.ps1 index 8aee5fa9..16354bea 100644 --- a/Tests/Add-JiraIssueAttachment.Tests.ps1 +++ b/Tests/Add-JiraIssueAttachment.Tests.ps1 @@ -152,8 +152,8 @@ InModuleScope JiraPS { Assert-MockCalled 'Invoke-JiraMethod' -ModuleName JiraPS -ParameterFilter { $Method -eq 'Put' } -Exactly -Times 0 -Scope It Assert-MockCalled 'Invoke-JiraMethod' -ModuleName JiraPS -ParameterFilter { $Method -eq 'Delete' } -Exactly -Times 0 -Scope It } - It "assert VerifiableMocks" { - Assert-VerifiableMocks + It "assert VerifiableMock" { + Assert-VerifiableMock } } #endregion Tests diff --git a/Tests/Get-JiraVersion.Tests.ps1 b/Tests/Get-JiraVersion.Tests.ps1 index 4888e486..b2226b01 100644 --- a/Tests/Get-JiraVersion.Tests.ps1 +++ b/Tests/Get-JiraVersion.Tests.ps1 @@ -191,8 +191,8 @@ InModuleScope JiraPS { Assert-MockCalled 'Get-JiraProject' -Times 1 -Scope It -ModuleName JiraPS Assert-MockCalled 'ConvertTo-JiraVersion' -Times 1 -Scope It -ModuleName JiraPS -Exactly } - It "assert VerifiableMocks" { - Assert-VerifiableMocks + It "assert VerifiableMock" { + Assert-VerifiableMock } } } diff --git a/Tests/New-JiraVersion.Tests.ps1 b/Tests/New-JiraVersion.Tests.ps1 index 639933e1..b77734de 100644 --- a/Tests/New-JiraVersion.Tests.ps1 +++ b/Tests/New-JiraVersion.Tests.ps1 @@ -132,8 +132,8 @@ InModuleScope JiraPS { Assert-MockCalled 'ConvertTo-JiraVersion' -Times 1 -Scope It -ModuleName JiraPS -Exactly } - It "assert VerifiableMocks" { - Assert-VerifiableMocks + It "assert VerifiableMock" { + Assert-VerifiableMock } } } diff --git a/Tests/Remove-JiraIssueAttachment.Tests.ps1 b/Tests/Remove-JiraIssueAttachment.Tests.ps1 index 14b03eda..e9870ff7 100644 --- a/Tests/Remove-JiraIssueAttachment.Tests.ps1 +++ b/Tests/Remove-JiraIssueAttachment.Tests.ps1 @@ -149,8 +149,8 @@ InModuleScope JiraPS { Assert-MockCalled 'Invoke-JiraMethod' -ModuleName JiraPS -ParameterFilter { $Method -eq 'Put' } -Exactly -Times 0 -Scope It Assert-MockCalled 'Invoke-JiraMethod' -ModuleName JiraPS -ParameterFilter { $Method -eq 'Delete' } -Exactly -Times 2 -Scope It } - It "assert VerifiableMocks" { - Assert-VerifiableMocks + It "assert VerifiableMock" { + Assert-VerifiableMock } } #endregion Tests diff --git a/Tests/Remove-JiraVersion.Tests.ps1 b/Tests/Remove-JiraVersion.Tests.ps1 index b16f12b2..d3c9858b 100644 --- a/Tests/Remove-JiraVersion.Tests.ps1 +++ b/Tests/Remove-JiraVersion.Tests.ps1 @@ -160,8 +160,8 @@ InModuleScope JiraPS { Assert-MockCalled 'Invoke-JiraMethod' -Times 1 -Scope It -ModuleName JiraPS -Exactly -ParameterFilter { $Method -eq 'Delete' -and $URI -like "$jiraServer/rest/api/latest/version/$versionID1" } Assert-MockCalled 'Invoke-JiraMethod' -Times 1 -Scope It -ModuleName JiraPS -Exactly -ParameterFilter { $Method -eq 'Delete' -and $URI -like "$jiraServer/rest/api/latest/version/$versionID2" } } - It "assert VerifiableMocks" { - Assert-VerifiableMocks + It "assert VerifiableMock" { + Assert-VerifiableMock } } } diff --git a/Tests/Set-JiraVersion.Tests.ps1 b/Tests/Set-JiraVersion.Tests.ps1 index 5c459a24..68a94644 100644 --- a/Tests/Set-JiraVersion.Tests.ps1 +++ b/Tests/Set-JiraVersion.Tests.ps1 @@ -108,8 +108,8 @@ InModuleScope JiraPS { Assert-MockCalled 'ConvertTo-JiraVersion' -Times 2 -Scope It -ModuleName JiraPS -Exactly Assert-MockCalled 'Invoke-JiraMethod' -Times 1 -Scope It -ModuleName JiraPS -Exactly -ParameterFilter { $Method -eq 'Put' -and $URI -like "$jiraServer/rest/api/latest/version/$versionID" } } - It "assert VerifiableMocks" { - Assert-VerifiableMocks + It "assert VerifiableMock" { + Assert-VerifiableMock } } } diff --git a/Tests/Shared.ps1 b/Tests/Shared.ps1 index fb35bcd2..ae31e99d 100644 --- a/Tests/Shared.ps1 +++ b/Tests/Shared.ps1 @@ -1,3 +1,4 @@ +#Requires -Modules Pester # Dot source this script in any Pester test script that requires the module to be imported.