. $PSScriptRoot\..\..\Load-PesterModules.ps1 $here = Split-Path -Parent $MyInvocation.MyCommand.Path $sut = (Split-Path -Leaf $MyInvocation.MyCommand.Path) -replace '\.tests\.', '.' $functionPath = Join-Path -Path $here -ChildPath $sut Write-Host "Overriding SUT: $functionPath" Import-Module $functionPath -Force $moduleForMock = "" $currentErrorActionPreference = $ErrorActionPreference $ErrorActionPreference = "stop" Describe "Update-Borg" { Mock -CommandName Write-Host -MockWith {} Mock -CommandName Write-Error -MockWith {} $packageData = New-PackageMetadataObject $packageData.DisableMicroserviceNewRelic = $false $appPackage1 = New-DummyPackageInstallationData -PackageName "app.package1" -PackageVersion "1.0.0" -IsFullScale $appPackage2 = New-DummyPackageInstallationData -PackageName "app.package2" -PackageVersion "1.0.0" -IsFullScale $packageArray = @($appPackage1, $appPackage2) $packageData.AppPackagesToInstall = $packageArray $packageData.EnvironmentLabel = "UnitTest" Mock -CommandName Update-PlatformElementInventory -MockWith { # No third case necessary; This function doesn't return. Just does its thing silently. write-host "params: $borgUri, $ApiKey" if ($BorgUri -like "*Fake*"){ throw "Got a fake URI" } elseif ($ApiKey -like "*Fake*"){ throw "Got a fake API key" } } Context "When Given Invalid Borg Connection Info" { It "Writes an Error on a bad URI" { { Update-Borg -BorgApiKey "ValidKey" -BorgUri "FakeUri" -PackageMetadata $packageData } | Should -Not -Throw } It "Writes an Error given an empty URI"{ Update-Borg -BorgApiKey "ValidKey" -BorgUri "" -PackageMetadata $packageData Assert-MockCalled -CommandName Write-Error -Scope Context -Times 1 } It "Writes an Error on a bad API Key"{ { Update-Borg -BorgApiKey "FakeKey" -BorgUri "ValidUri" -PackageMetadata $packageData } | Should -Not -Throw } } Context "When Given Valid Info"{ It "Updates Borg" { Update-Borg -BorgApiKey "ValidKey" -BorgUri "ValidUri" -PackageMetadata $packageData Assert-MockCalled -CommandName Write-Host -Times 1 -ParameterFilter {$object -eq "BoRG successfully updated."} } } }