Functions/Remove-JiraGroup.Tests.ps1
$here = Split-Path -Parent $MyInvocation.MyCommand.Path $sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path).Replace(".Tests.", ".") . "$here\$sut" InModuleScope PSJira { # This is intended to be a parameter to the test, but Pester currently does not allow parameters to be passed to InModuleScope blocks. # For the time being, we'll need to hard-code this and adjust it as desired. $ShowMockData = $false $ShowDebugData = $false $jiraServer = 'http://jiraserver.example.com' $testGroupName = 'testGroup' $testJson = @" { "name": "$testGroupName", "self": "$jiraServer/rest/api/2/group?groupname=$testGroupName", "users": { "size": 0, "items": [], "max-results": 50, "start-index": 0, "end-index": 0 }, "expand": "users" } "@ Describe "Remove-JiraGroup" { Mock Write-Debug -ModuleName PSJira { if ($ShowDebugData) { Write-Host -Object "[DEBUG] $Message" -ForegroundColor Yellow } } Mock Get-JiraConfigServer -ModuleName PSJira { Write-Output $jiraServer } Mock Get-JiraGroup -ModuleName PSJira { ConvertTo-JiraGroup (ConvertFrom-Json $testJson) } Mock Invoke-JiraMethod -ModuleName PSJira -ParameterFilter {$Method -eq 'DELETE' -and $URI -eq "$jiraServer/rest/api/latest/group?groupname=$testGroupName"} { if ($ShowMockData) { Write-Host " Mocked Invoke-JiraMethod with DELETE method" -ForegroundColor Cyan Write-Host " [Method] $Method" -ForegroundColor Cyan Write-Host " [URI] $URI" -ForegroundColor Cyan } # This REST method should produce no output } # Generic catch-all. This will throw an exception if we forgot to mock something. Mock Invoke-JiraMethod -ModuleName PSJira { Write-Host " Mocked Invoke-JiraMethod with no parameter filter." -ForegroundColor DarkRed Write-Host " [Method] $Method" -ForegroundColor DarkRed Write-Host " [URI] $URI" -ForegroundColor DarkRed throw "Unidentified call to Invoke-JiraMethod" } ############# # Tests ############# It "Accepts a group name as a String to the -Group parameter" { { Remove-JiraGroup -Group $testGroupName -Force } | Should Not Throw Assert-MockCalled -CommandName Invoke-JiraMethod -Exactly -Times 1 -Scope It } It "Accepts a PSJira.Group object to the -Group parameter" { $group = Get-JiraGroup -GroupName $testGroupName { Remove-JiraGroup -Group $group -Force } | Should Not Throw Assert-MockCalled -CommandName Invoke-JiraMethod -Exactly -Times 1 -Scope It } It "Accepts pipeline input from Get-JiraGroup" { { Get-JiraGroup -GroupName $testGroupName | Remove-JiraGroup -Force } | Should Not Throw Assert-MockCalled -CommandName Invoke-JiraMethod -Exactly -Times 1 -Scope It } It "Removes a group from JIRA" { { Remove-JiraGroup -Group $testGroupName -Force } | Should Not Throw Assert-MockCalled -CommandName Invoke-JiraMethod -Exactly -Times 1 -Scope It } It "Provides no output" { Remove-JiraGroup -Group $testGroupName -Force | Should BeNullOrEmpty } } } |