. $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 "Get-EnvironmentData" { $fakeDotNetConfigPath = Join-Path -Path $TestDrive -ChildPath "machine.config" # Return each of the settings based on parameter filters Mock -CommandName Write-Host -ModuleName $moduleForMock -MockWith {} Mock -CommandName Write-Warning -ModuleName $moduleForMock -MockWith {} Mock -CommandName Get-UncPath -ModuleName $moduleForMock -MockWith { return $fakeDotNetConfigPath } Mock -CommandName Read-XmlFile -ModuleName $moduleForMock -MockWith {} Mock -CommandName Invoke-Parallel -ModuleName $moduleForMock -MockWith {} Context "When Successfully Getting EnvironmentData from AppSettings" { $packageData = @{} $packageData.DisableMicroserviceNewRelic = $true $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 # these tests were essentially "does Get-EnvironmentThing work?" # there's no business logic to them # It "It Gets EnvironmentName" { # $data = Get-EnvironmentData $packageData # $data.EnvironmentName | Should -Match "UnitTest.Env" # } # It "It Gets EnvironmentType" { # $data = Get-EnvironmentData $packageData # $data.EnvironmentType | Should -Match "UnitTest.Type" # } # It "It Gets EnvironmentNameSafeDesignation" { # $data = Get-EnvironmentData $packageData # $data.EnvironmentNameSafeDesignation | Should -Match "UTT" # } # It "It Gets EnvironmentHosting" { # $data = Get-EnvironmentData $packageData # $data.EnvironmentHosting | Should -Match "local" # } } Context "When Getting Data from Tags" { $packageData = @{} $packageData.AppServers = @("APP123TEST.fh.local") $packageData.DisableMicroserviceNewRelic = $true $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 Mock Get-InstanceTags -MockWith { # return tags $tag1 = @{ PSComputerName = "Test.Machine" Key = "alk:env" Value = "dev" } $tag2 = @{ PSComputerName = "Test.Machine" Key = "alk:designation" Value = "FAKEVALUE" } return @($tag1, $tag2) } Mock -CommandName Get-DesignationTagNameByEnvironment -ModuleName $moduleForMock -MockWith { return "designation" } # How was this mocked? It's a degree of separation away. It shouldnot have been being used.∫ # Mock Get-AppSetting -MockWith {return "UnitTest.Env"} -ParameterFilter {$Key -eq "Environment.Name"} # Mock Get-AppSetting -MockWith {return "UnitTest.Type"} -ParameterFilter {$Key -eq "Environment.Type"} # Mock Get-AppSetting -MockWith {return "local"} -ParameterFilter {$Key -eq "Environment.Hosting"} # No available value locally Mock -CommandName Get-AppSetting -ModuleName $moduleForMock -MockWith { return $null } -ParameterFilter { $Key -eq "Environment.NameSafeDesignation" } Mock -CommandName Write-Error -ModuleName $moduleForMock -MockWith {} It "It Gets EnvironmentNameSafeDesignation" { $data = Get-EnvironmentData $packageData $data.EnvironmentNameSafeDesignation | Should -Match "FAKEVALUE" } } }