208 lines
10 KiB
PowerShell
208 lines
10 KiB
PowerShell
. $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_PackageServerMappings'{
|
|
Mock -CommandName Write-Host -MockWith {}
|
|
Mock -CommandName Write-Warning -MockWith {}
|
|
Mock -CommandName Write-Error -MockWith {}
|
|
Mock -CommandName Get-MicroserviceNewRelicMapping -MockWith {
|
|
param(
|
|
$BuildCheckoutDirectory,
|
|
[PSObject]$PackageMetadata)
|
|
return $PackageMetadata
|
|
}
|
|
Mock -CommandName ConvertTo-SafeTeamCityMessage -MockWith {}
|
|
|
|
Context "When Processing Packages" {
|
|
$appPackage1 = New-DummyPackageInstallationData -PackageName "app.package1" -PackageVersion "1.0.0" -IsFullScale
|
|
$appPackage2 = New-DummyPackageInstallationData -PackageName "app.package2" -PackageVersion "1.0.0" -IsFullScale
|
|
$appPackage3 = New-DummyPackageInstallationData -PackageName "invalid.app.package1" -PackageVersion "1.0.0" -IsFullScale -IsValid $false
|
|
$appPackage4 = New-DummyPackageInstallationData -PackageName "mic.package1" -PackageVersion "1.0.0" -IsFullScale
|
|
$webPackage1 = New-DummyPackageInstallationData -PackageName "web.package1" -PackageVersion "1.0.0" -IsFullScale
|
|
$webPackage2 = New-DummyPackageInstallationData -PackageName "web.package2" -PackageVersion "1.0.0" -IsFullScale
|
|
$webPackage3 = New-DummyPackageInstallationData -PackageName "invalid.web.package1" -PackageVersion "1.0.0" -IsFullScale -IsValid $false
|
|
|
|
$appPackageArray = @($appPackage1, $appPackage2, $appPackage4)
|
|
$webPackageArray = @($webPackage1, $webPackage2)
|
|
|
|
$appPackage3.IsValid = $False
|
|
$webPackage3.IsValid = $False
|
|
|
|
$invalidAppPackageArray = @($appPackage1, $appPackage2, $appPackage3, $appPackage4)
|
|
$invalidWebPackageArray = @($webPackage1, $webPackage2, $webPackage3)
|
|
|
|
# Send back app/mic packages if given app packages
|
|
Mock -CommandName Get-PackageInstallationData -MockWith {
|
|
# only the packages matter here, but we get all of them, so accept them in case they're useful for a future mock.
|
|
param(
|
|
$ChocoPackages,
|
|
$Servers,
|
|
$FilterFeeds,
|
|
$FilterPowerShellModules,
|
|
$NugetCredential,
|
|
$IncludeMissingPackages,
|
|
$UseV2PackageMetadata
|
|
)
|
|
|
|
$packages = @()
|
|
foreach ($package in $ChocoPackages){
|
|
if($package.Name -like "*app*"){
|
|
$newPackage = New-DummyPackageInstallationData -PackageName $package.Name -PackageVersion $package.Version -IsAppOnly -IsValid $package.IsValid
|
|
} else {
|
|
$newPackage = New-DummyPackageInstallationData -PackageName $package.Name -PackageVersion $package.Version -IsMicOnly -IsValid $package.IsValid
|
|
}
|
|
|
|
$packages += $newPackage
|
|
}
|
|
|
|
return $packages
|
|
} -ParameterFilter {($ChocoPackages[0].Name -like "*app*" -or $ChocoPackages[0].Name -like "*mic*")}
|
|
|
|
# Send back app/mic packages if given app packages
|
|
Mock -CommandName Get-PackageInstallationData -MockWith {
|
|
# only the packages matter here, but we get all of them, so accept them in case they're useful for a future mock.
|
|
param(
|
|
$ChocoPackages,
|
|
$Servers,
|
|
$FilterFeeds,
|
|
$FilterPowerShellModules,
|
|
$NugetCredential,
|
|
$IncludeMissingPackages,
|
|
$UseV2PackageMetadata
|
|
)
|
|
|
|
$packages = @()
|
|
foreach ($package in $ChocoPackages){
|
|
$newPackage = New-DummyPackageInstallationData -PackageName $package.Name -PackageVersion $package.Version -IsWebOnly -IsValid $package.IsValid
|
|
$packages += $newPackage
|
|
}
|
|
|
|
return $packages
|
|
} -ParameterFilter {$ChocoPackages[0].Name -like "*web*"}
|
|
|
|
$packageData = New-PackageMetadataObject
|
|
$packageData.DisableMicroserviceNewRelic = $true
|
|
$packageData.Servers = @("fakeServer.1","fakeServer.2")
|
|
|
|
$password = ConvertTo-SecureString 'fake' -AsPlainText -Force
|
|
$fakeCred = New-Object System.Management.Automation.PSCredential('bogus', $password)
|
|
|
|
$fakeDebugMetadata = New-Object psobject -property @{
|
|
WebServerPackages = @($webPackage1,$webPackage2)
|
|
AppServerPackages = @($appPackage1, $appPackage2)
|
|
MicServerPackages = @($appPackage1, $appPackage2)
|
|
FabServerPackages = @()
|
|
|
|
WebPackagesToInstallMap = @{}
|
|
AppPackagesToInstallMap = @{}
|
|
ClassifiedPackagesMap = @{}
|
|
}
|
|
|
|
It "Populates WebPackagesToInstall" {
|
|
$packageMetadata,$debugMetadata = Get-PackageServerMapping -AllAppTierPackages $appPackageArray -AllWebTierPackages $webPackageArray `
|
|
-BuildCheckoutDirectory "fakeDirectory" -DebugMetadata $fakeDebugMetadata `
|
|
-NugetCredential $fakeCred -PackageMetadata $packageData
|
|
|
|
$packageData.WebPackagesToInstall | Should -Not -BeNullOrEmpty
|
|
}
|
|
|
|
It "Populates AppPackagesToInstall" {
|
|
$packageMetadata,$debugMetadata = Get-PackageServerMapping -AllAppTierPackages $appPackageArray -AllWebTierPackages $webPackageArray `
|
|
-BuildCheckoutDirectory "fakeDirectory" -DebugMetadata $fakeDebugMetadata `
|
|
-NugetCredential $fakeCred -PackageMetadata $packageData
|
|
|
|
$packageData.AppPackagesToInstall | Should -Not -BeNullOrEmpty
|
|
}
|
|
|
|
It "Populates DebugMetadata ClassifiedPackagesMap" {
|
|
$packageMetadata,$debugMetadata = Get-PackageServerMapping -AllAppTierPackages $appPackageArray -AllWebTierPackages $webPackageArray `
|
|
-BuildCheckoutDirectory "fakeDirectory" -DebugMetadata $fakeDebugMetadata `
|
|
-NugetCredential $fakeCred -PackageMetadata $packageData
|
|
|
|
$debugMetadata.ClassifiedPackagesMap | Should -Not -BeNullOrEmpty
|
|
}
|
|
|
|
It "Sets Microservice New Relic Settings" {
|
|
$packageMetadata,$debugMetadata = Get-PackageServerMapping -AllAppTierPackages $appPackageArray -AllWebTierPackages $webPackageArray `
|
|
-BuildCheckoutDirectory "fakeDirectory" -DebugMetadata $fakeDebugMetadata `
|
|
-NugetCredential $fakeCred -PackageMetadata $packageData
|
|
|
|
Assert-MockCalled -CommandName Get-MicroserviceNewRelicMapping -Scope Context -Times 1
|
|
}
|
|
|
|
It "Writes Warnings when given invalid App packages"{
|
|
$packageMetadata,$debugMetadata = Get-PackageServerMapping -AllAppTierPackages $invalidAppPackageArray -AllWebTierPackages $webPackageArray `
|
|
-BuildCheckoutDirectory "fakeDirectory" -DebugMetadata $fakeDebugMetadata `
|
|
-NugetCredential $fakeCred -PackageMetadata $packageData
|
|
|
|
Assert-MockCalled -CommandName Write-Warning -Scope Context -ParameterFilter {$Message -like "*MISSING_PACKAGES*"}
|
|
Assert-MockCalled -CommandName Write-Warning -Scope Context -ParameterFilter {$Message -like "*MISSING_APP_PACKAGE*"}
|
|
}
|
|
|
|
It "Writes Warnings when given invalid Web packages"{
|
|
$packageMetadata,$debugMetadata = Get-PackageServerMapping -AllAppTierPackages $appPackageArray -AllWebTierPackages $invalidWebPackageArray `
|
|
-BuildCheckoutDirectory "fakeDirectory" -DebugMetadata $fakeDebugMetadata `
|
|
-NugetCredential $fakeCred -PackageMetadata $packageData
|
|
|
|
Assert-MockCalled -CommandName Write-Warning -Scope Context -ParameterFilter {$Message -like "*MISSING_PACKAGES*"}
|
|
Assert-MockCalled -CommandName Write-Warning -Scope Context -ParameterFilter {$Message -like "*MISSING_WEB_PACKAGE*"}
|
|
}
|
|
|
|
It "Sets Install To App With App Servers" {
|
|
$packageData.InstallToAppsAndMics = $true
|
|
$packageData.HasAppServers = $true
|
|
|
|
$packageMetadata,$debugMetadata = Get-PackageServerMapping -AllAppTierPackages $appPackageArray -AllWebTierPackages $webPackageArray `
|
|
-BuildCheckoutDirectory "fakeDirectory" -DebugMetadata $fakeDebugMetadata `
|
|
-NugetCredential $fakeCred -PackageMetadata $packageData
|
|
|
|
$packageData.AppPackagesToInstall | Should -Not -BeNullOrEmpty
|
|
|
|
($packageData.AppPackagesToInstall.InstallToApp -contains $true) | Should -BeTrue
|
|
}
|
|
|
|
It "Doesn't Set Install To App Without App Servers" {
|
|
$packageData.InstallToAppsAndMics = $true
|
|
$packageData.HasAppServers = $false
|
|
|
|
$packageMetadata,$debugMetadata = Get-PackageServerMapping -AllAppTierPackages $appPackageArray -AllWebTierPackages $webPackageArray `
|
|
-BuildCheckoutDirectory "fakeDirectory" -DebugMetadata $fakeDebugMetadata `
|
|
-NugetCredential $fakeCred -PackageMetadata $packageData
|
|
|
|
$packageData.AppPackagesToInstall | Should -Not -BeNullOrEmpty
|
|
|
|
($packageData.AppPackagesToInstall.InstallToApp -contains $true) | Should -BeFalse
|
|
}
|
|
|
|
It "Sets Install To Mic With Mic Servers" {
|
|
$packageData.InstallToAppsAndMics = $true
|
|
$packageData.HasMicServers = $true
|
|
|
|
$packageMetadata,$debugMetadata = Get-PackageServerMapping -AllAppTierPackages $appPackageArray -AllWebTierPackages $webPackageArray `
|
|
-BuildCheckoutDirectory "fakeDirectory" -DebugMetadata $fakeDebugMetadata `
|
|
-NugetCredential $fakeCred -PackageMetadata $packageData
|
|
|
|
$packageData.AppPackagesToInstall | Should -Not -BeNullOrEmpty
|
|
($packageData.AppPackagesToInstall.InstallToMic -contains $true) | Should -BeTrue
|
|
}
|
|
|
|
It "Doesn't Install To Mic Without Mic Servers" {
|
|
$packageData.InstallToAppsAndMics = $true
|
|
$packageData.HasMicServers = $false
|
|
|
|
$packageMetadata,$debugMetadata = Get-PackageServerMapping -AllAppTierPackages $appPackageArray -AllWebTierPackages $webPackageArray `
|
|
-BuildCheckoutDirectory "fakeDirectory" -DebugMetadata $fakeDebugMetadata `
|
|
-NugetCredential $fakeCred -PackageMetadata $packageData
|
|
|
|
$packageData.AppPackagesToInstall | Should -Not -BeNullOrEmpty
|
|
($packageData.AppPackagesToInstall.InstallToMic -contains $true) | Should -BeFalse
|
|
}
|
|
}
|
|
} |