ps/Modules/Alkami.DevOps.Installation/Public/Get-ServerPackageInformation.Tests.ps1

620 lines
27 KiB
PowerShell
Raw Normal View History

2023-05-30 22:51:22 -07:00
. $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"
# Init functions. Used to reset package objets in each Context.
function Init-PackageData {
$webPackage1 = New-DummyPackageInstallationData -PackageName "web.package1" -PackageVersion "1.1.0" -IsWebOnly
$webPackage2 = New-DummyPackageInstallationData -PackageName "web.package2" -PackageVersion "1.1.0" -IsWebOnly
$appPackage1 = New-DummyPackageInstallationData -PackageName "app.package1" -PackageVersion "1.1.0" -IsAppOnly
$appPackage2 = New-DummyPackageInstallationData -PackageName "app.package2" -PackageVersion "1.1.0" -IsAppOnly
$micPackage1 = New-DummyPackageInstallationData -PackageName "mic.package1" -PackageVersion "1.1.0" -IsMicOnly
$micPackage2 = New-DummyPackageInstallationData -PackageName "mic.package2" -PackageVersion "1.1.0" -IsMicOnly
$appPackageArray = @($appPackage1, $appPackage2)
$webPackageArray = @($webPackage1, $webPackage2)
$micPackageArray = @($micPackage1, $micPackage2)
$packageData = New-PackageMetadataObject
$packageData.AppPackagesToInstall = $appPackageArray
$packageData.AppPackagesToInstall += $micPackageArray
$packageData.WebPackagesToInstall = $webPackageArray
$packageData.ServersToQuery = @("fake.appserver.1", "fake.fabserver.1", "fake.micserver.1", "fake.webserver.1")
$packageData.AppServers = @("fake.appserver.1")
$packageData.FabServers = @("fake.fabserver.1")
$packageData.MicServers = @("fake.micserver.1")
$packageData.WebServers = @("fake.webserver.1")
$packageData.HasAppServers = $true
$packageData.HasFabServers = $true
$packageData.HasMicServers = $true
$packageData.HasWebServers = $true
return $packageData
}
function Init-DebugMetadata {
$webPackage1 = New-DummyPackageInstallationData -PackageName "web.package1" -PackageVersion "1.1.0" -IsWebOnly
$webPackage2 = New-DummyPackageInstallationData -PackageName "web.package2" -PackageVersion "1.1.0" -IsWebOnly
$appPackage1 = New-DummyPackageInstallationData -PackageName "app.package1" -PackageVersion "1.1.0" -IsAppOnly
$appPackage2 = New-DummyPackageInstallationData -PackageName "app.package2" -PackageVersion "1.1.0" -IsAppOnly
$micPackage1 = New-DummyPackageInstallationData -PackageName "mic.package1" -PackageVersion "1.1.0" -IsMicOnly
$micPackage2 = New-DummyPackageInstallationData -PackageName "mic.package2" -PackageVersion "1.1.0" -IsMicOnly
$debugMetadata = New-Object psobject -property @{
WebServerPackages = @()
AppServerPackages = @()
MicServerPackages = @()
FabServerPackages = @()
WebPackagesToInstallMap = @{}
AppPackagesToInstallMap = @{}
ClassifiedPackagesMap = @{}
ExistingInstalledHotfixes = @()
}
$appServerPackageArray = @($appPackage1, $appPackage2, $webPackage1)
$webServerPackageArray = @($webPackage1, $webPackage2, $appPackage1)
$micServerPackageArray = @($micPackage1, $micPackage2, $webPackage1)
$fabServerPackageArray = @($micPackage1, $micPackage2, $webPackage1)
$debugMetadata.WebServerPackages = $webServerPackageArray
$debugMetadata.AppServerPackages = $appServerPackageArray
$debugMetadata.MicServerPackages = $micServerPackageArray
$debugMetadata.FabServerPackages = $fabServerPackageArray
$debugMetadata.ClassifiedPackagesMap["app.package1"] = $appPackage1
$debugMetadata.ClassifiedPackagesMap["app.package2"] = $appPackage2
$debugMetadata.ClassifiedPackagesMap["mic.package1"] = $micPackage1
$debugMetadata.ClassifiedPackagesMap["mic.package2"] = $micPackage2
$debugMetadata.ClassifiedPackagesMap["web.package1"] = $webPackage1
$debugMetadata.ClassifiedPackagesMap["web.package2"] = $webPackage2
return $debugMetadata
}
$password = ConvertTo-SecureString 'fake' -AsPlainText -Force
$fakeCred = New-Object System.Management.Automation.PSCredential('bogus', $password)
Describe "Get-ServerPackageInformation" {
#region Mocks
Mock -CommandName Write-Host -MockWith {}
Mock -CommandName Write-Warning -MockWith {}
Mock -CommandName Write-Error -MockWith {}
#TODO : Check the return value; possibly needs to be massaged. If so, might need a duplicate in a specific Context.
Mock -CommandName Get-EnvironmentData -MockWith { return $packageData }
#TODO : Check the return value; possibly needs to be massaged. If so, might need a duplicate in a specific Context.
Mock -CommandName Get-PackageServerMapping -MockWith { return $packageData, $debugMetadata }
#TODO : Check the return value; possibly needs to be massaged. If so, might need a duplicate in a specific Context.
Mock -CommandName Get-BadPackages -MockWith { return $packageData }
Mock -CommandName Select-InstallPackages -MockWith { return $packageData }
Mock -CommandName Get-AwsSettings -MockWith {
return @{
"Region" = "courts-of-chaos-1"
"Profile" = "unittest"
}
}
# Cheating for the mock; assume you always get a unique list and just return it.
# Only works if you ensure the input is faked correctly.
Mock -CommandName Select-UniqueServerPackages -MockWith { return $packagesArray }
Mock -CommandName Get-InstalledPackages -MockWith { $installedPackages = @( @{
Version = "1.0.0"
Name = "web.package1"
IsValid = $false
},
@{
Version = "1.0.0"
Name = "web.package2"
IsValid = $false
}
)
return [pscustomobject]$installedPackages
} -ParameterFilter { $ComputerName -like "*web*" }
Mock -CommandName Get-InstalledPackages -MockWith { $installedPackages = @( @{
Version = "1.0.0"
Name = "mic.package1"
IsValid = $false
},
@{
Version = "1.0.0"
Name = "mic.package2"
IsValid = $false
}
)
return [pscustomobject]$installedPackages
} -ParameterFilter { $ComputerName -like "*mic*" -or $ComputerName -like "*fab*" }
Mock -CommandName Get-InstalledPackages -MockWith { $installedPackages = @( @{
Version = "1.0.0"
Name = "app.package1"
IsValid = $false
},
@{
Version = "1.0.0"
Name = "app.package2"
IsValid = $false
}
)
return [pscustomobject]$installedPackages
} -ParameterFilter { $ComputerName -like "*app*" }
# TODO : Check the return value; Possibly needs to be massaged.
# Cheating for the mock; assume you always get a unique list and just return it.
# Only works if you ensure the input is faked correctly.
Mock -CommandName Remove-PackagesThatAreAlreadyInstalled -MockWith {
return $packagesToInstall
}
Mock -CommandName Select-AlkamiAppServers -MockWith {return $true}
Mock -CommandName Select-AlkamiMicServers -MockWith {return $true}
Mock -CommandName Select-AlkamiWebServers -MockWith {return $true}
#endregion Mocks
Context "Checking that Dependencies are used" {
$packageData = Init-PackageData
$debugMetadata = Init-DebugMetadata
It "Gets EnvironmentData" {
Get-ServerPackageInformation -PackageMetadata $packageData -DebugMetadata $debugMetadata `
-BuildCheckoutDirectory "SomePath" -NugetCredential $fakeCred -AwsProfileName "JunkProfile" -DependencyReleaseValue "junkRelease"
Assert-MockCalled -CommandName Get-EnvironmentData
}
It "Builds PackageServerMapping" {
Get-ServerPackageInformation -PackageMetadata $packageData -DebugMetadata $debugMetadata `
-BuildCheckoutDirectory "SomePath" -NugetCredential $fakeCred -AwsProfileName "JunkProfile" -DependencyReleaseValue "junkRelease"
Assert-MockCalled -CommandName Get-PackageServerMapping
}
It "Gets EnvironmentData" {
Get-ServerPackageInformation -PackageMetadata $packageData -DebugMetadata $debugMetadata `
-BuildCheckoutDirectory "SomePath" -NugetCredential $fakeCred -AwsProfileName "JunkProfile" -DependencyReleaseValue "junkRelease"
Assert-MockCalled -CommandName Get-BadPackages
}
It "Gets EnvironmentData" {
Get-ServerPackageInformation -PackageMetadata $packageData -DebugMetadata $debugMetadata `
-BuildCheckoutDirectory "SomePath" -NugetCredential $fakeCred -AwsProfileName "JunkProfile" -DependencyReleaseValue "junkRelease"
Assert-MockCalled -CommandName Get-AwsSettings
}
}
# We force reinstall Widgets & Providers if it's an orb deploy. We don't if it's a package install.
Context "When Force Re-installing Packages" {
$packageData = Init-PackageData
$debugMetadata = Init-DebugMetadata
# Create Pre-installed packages
$appReInstallPackage = New-DummyPackageInstallationData -packagename "app.reinstall.package" -packageversion "1.0.0" -isapponly
$webReInstallPackage = New-DummyPackageInstallationData -packagename "web.reinstall.package" -packageversion "1.0.0" -iswebonly
# Create Packages to be uninstalled
$appUninstallPackage = New-DummyPackageInstallationData -packagename "app.uninstall.package" -packageversion "1.0.0" -isapponly
$webuninstallPackage = New-DummyPackageInstallationData -packagename "web.uninstall.package" -packageversion "1.0.0" -iswebonly
# Create pre installed Packages to be uninstalled and reinstalled.
$appReUninstallPackage = New-DummyPackageInstallationData -packagename "app.re.uninstall.package" -packageversion "1.0.0" -isapponly
$webReUninstallPackage = New-DummyPackageInstallationData -packagename "web.re.uninstall.package" -packageversion "1.0.0" -iswebonly
# Add packages to install/uninstall lists
$packagedata.AppPackagesToUninstall += @($appReUninstallPackage)
$packagedata.WebPackagesToUninstall += @($webReUninstallPackage)
$packagedata.AppPackagesToUninstall += @($appUninstallPackage)
$packagedata.WebPackagesToUninstall += @($webUninstallPackage)
$packageData.AppPackagesToInstall += @($appReUninstallPackage)
$packageData.WebPackagesToInstall += @($webReUninstallPackage)
# Make this an orb run
$packageData.ForceReinstallPackages = $true
# Add packages to preinstalled lists
$debugMetadata.AppServerPackages += $appReInstallPackage
$debugMetadata.WebServerPackages += $webReInstallPackage
$debugMetadata.AppServerPackages += $appUninstallPackage
$debugMetadata.WebServerPackages += $webUninstallPackage
$debugMetadata.AppServerPackages += $appReUninstallPackage
$debugMetadata.WebServerPackages += $webReUninstallPackage
# Pretend packages to be reinstalled are everywhere
Mock -CommandName Select-InstallPackages -MockWith {
$appReInstallPackage.ForceSameVersion = $true
$webReInstallPackage.ForceSameVersion = $true
$newPackages = @()
$newPackages += $appReInstallPackage
$newPackages += $webReInstallPackage
# TODO: Change this to be uninstall/reinstall packages.
$newPackages += $appReUninstallPackage
$newPackages += $webReUninstallPackage
$newPackages += $packages
return $newPackages
}
Mock -CommandName Get-PackageServerMapping -MockWith{
$PackageMetadata.AppPackagesToInstall = $AllAppTierPackages
$PackageMetadata.WebPackagesToInstall = $AllWebTierPackages
return $PackageMetadata, $DebugMetadata
}
Mock -CommandName Add-OldHotfixPackagesToUninstallList -MockWith {
return $PackageMetadata, $DebugMetadata
}
$packages, $debugpackagses = Get-ServerPackageInformation -packagemetadata $packageData -debugmetadata $debugmetadata `
-buildcheckoutdirectory "somepath" -nugetcredential $fakecred -DependencyReleaseValue "123" -AwsProfileName "JunkProfile"
It "Calls Add-OldHotfixPackagesToUninstallList" {
Assert-MockCalled Add-OldHotfixPackagesToUninstallList
}
# Test App Packages
It "Keeps Providers To Be Reinstalled"{
$packages.AppPackagesToInstall | Should -Contain $appReInstallPackage
}
# Test Web Packages
It "Keeps Widgets To Be Reinstalled" {
$packages.WebPackagesToInstall | Should -Contain $WebReInstallPackage
}
It "Does Not Reinstall Packages Which Are Being Uninstalled" {
$packages.AppPackagesToInstall | Should -Not -Contain $appUninstallPackage
$packages.WebPackagesToInstall | Should -Not -Contain $webUninstallPackage
}
It "Does Reinstall Packages Which Are Being Uninstalled And Reinstalled" {
$packages.AppPackagesToInstall | Should -Contain $appReUninstallPackage
$packages.WebPackagesToInstall | Should -Contain $webReUninstallPackage
}
}
Context "When Told To Install Chocolatey" {
$packageData = Init-PackageData
$debugMetadata = Init-DebugMetadata
$packageData.AppPackagesToInstall += New-DummyPackageInstallationData -PackageName "chocolatey" -PackageVersion "1.0.0" -IsAppOnly
$packageData.WebPackagesToInstall += New-DummyPackageInstallationData -PackageName "chocolatey" -PackageVersion "1.0.0" -IsWebOnly
# This is the function that strips out chocolatey based on allWebTierPackages and allAppTierPackages. Do that here.
Mock -CommandName Get-PackageServerMapping -MockWith {
$packageData.AppPackagesToInstall = $AllAppTierPackages
$packageData.WebPackagesToInstall = $AllWebTierPackages
return $packageData, $debugMetadata }
$packages, $debugPackagses = Get-ServerPackageInformation -PackageMetadata $packageData -DebugMetadata $debugMetadata `
-BuildCheckoutDirectory "SomePath" -NugetCredential $fakeCred -AwsProfileName "JunkProfile" -DependencyReleaseValue "junkRelease"
It "Writes a Warning on Apps" {
Assert-MockCalled -CommandName Write-Warning -Scope Context -Exactly 1 `
-ParameterFilter {$Message -eq "The Chocolatey Package Manager Program package (chocolatey) was passed in to be installed on the App Tier. At this time we explicitly dissallow that. It has been skipped."}
}
It "Writes a Warning on Webs" {
Assert-MockCalled -CommandName Write-Warning -Scope Context -Exactly 1 `
-ParameterFilter {$Message -eq "The Chocolatey Package Manager Program package (chocolatey) was passed in to be installed on the Web Tier. At this time we explicitly dissallow that. It has been skipped."}
}
It "Removes Chocolatey From the Install List on Apps" {
$packages.AppPackagesToInstall | ForEach-Object {$_.Name | Should -Not -BeExactly "chocolatey"}
}
It "Removes Chocolatey from The Install List on Webs" {
$packages.WebPackagesToInstall | ForEach-Object {$_.Name | Should -Not -BeExactly "chocolatey"}
}
}
# TODO: Need changes from SRE-16772 before we write tests
Context "When Different Servers Have Different Package Versions" {
$packageData = Init-PackageData
$debugMetadata = Init-DebugMetadata
$packageData.ServersToQuery = @("fake.appserver.1", "fake.appserver.2", "fake.fabserver.1", "fake.fabserver.2", "fake.micserver.1", "fake.micserver.2", "fake.webserver.1", "fake.webserver.2")
# Need one mock per server based on computer name. So, 8 mocks.
Mock -CommandName Get-InstalledPackages -MockWith { $installedPackages = @( @{
Version = "1.0.1"
Name = "web.package1"
IsValid = $false
},
@{
Version = "1.0.1"
Name = "web.package2"
IsValid = $false
}
)
return [pscustomobject]$installedPackages
} -ParameterFilter { $ComputerName -like "*fake.webserver.1*" }
Mock -CommandName Get-InstalledPackages -MockWith { $installedPackages = @( @{
Version = "1.0.1"
Name = "web.package1"
IsValid = $false
},
@{
Version = "1.0.2"
Name = "web.package2"
IsValid = $false
}
)
return [pscustomobject]$installedPackages
} -ParameterFilter { $ComputerName -like "*fake.webserver.2*" }
Mock -CommandName Get-InstalledPackages -MockWith { $installedPackages = @( @{
Version = "1.0.1"
Name = "mic.package1"
IsValid = $false
},
@{
Version = "1.0.1"
Name = "mic.package2"
IsValid = $false
}
)
return [pscustomobject]$installedPackages
} -ParameterFilter { $ComputerName -like "*fake.micserver.1*" }
Mock -CommandName Get-InstalledPackages -MockWith { $installedPackages = @( @{
Version = "1.0.1"
Name = "mic.package1"
IsValid = $false
},
@{
Version = "1.0.2"
Name = "mic.package2"
IsValid = $false
}
)
return [pscustomobject]$installedPackages
} -ParameterFilter { $ComputerName -like "*fake.micserver.2*" }
Mock -CommandName Get-InstalledPackages -MockWith { $installedPackages = @( @{
Version = "1.0.1"
Name = "mic.package1"
IsValid = $false
},
@{
Version = "1.0.1"
Name = "mic.package2"
IsValid = $false
}
)
return [pscustomobject]$installedPackages
} -ParameterFilter { $ComputerName -like "*fake.fabserver.1*" }
Mock -CommandName Get-InstalledPackages -MockWith { $installedPackages = @( @{
Version = "1.0.1"
Name = "mic.package1"
IsValid = $false
},
@{
Version = "1.0.2"
Name = "mic.package2"
IsValid = $false
}
)
return [pscustomobject]$installedPackages
} -ParameterFilter { $ComputerName -like "*fake.fabserver.2*" }
Mock -CommandName Get-InstalledPackages -MockWith { $installedPackages = @( @{
Version = "1.0.1"
Name = "app.package1"
IsValid = $false
},
@{
Version = "1.0.1"
Name = "app.package2"
IsValid = $false
}
)
return [pscustomobject]$installedPackages
} -ParameterFilter { $ComputerName -like "*fake.appserver.1*" }
Mock -CommandName Get-InstalledPackages -MockWith { $installedPackages = @( @{
Version = "1.0.1"
Name = "app.package1"
IsValid = $false
},
@{
Version = "1.0.2"
Name = "app.package2"
IsValid = $false
}
)
return [pscustomobject]$installedPackages
} -ParameterFilter { $ComputerName -like "*fake.appserver.2*" }
$packages, $debugPackagses = Get-ServerPackageInformation -PackageMetadata $packageData -DebugMetadata $debugMetadata `
-BuildCheckoutDirectory "SomePath" -NugetCredential $fakeCred -AwsProfileName "JunkProfile" -DependencyReleaseValue "junkRelease"
it "Reduces Them to Unique Values" {
$packages.PackageToVersions | should -not -BeNullOrEmpty
foreach ($h in $packages.packagetoversions.getenumerator()) {
$versions = $h.value
foreach ($version in $versions) {
($versions | Where-Object { $_ -eq $version }).Count | Should Be 1
}
}
}
}
Context "When Already Installed Packages Are To Be Re-installed" {
$packageData = Init-PackageData
$debugMetadata = Init-DebugMetadata
# Create pre-installed package
$appInstalledPackage = New-DummyPackageInstallationData -packagename "app.package1" -packageversion "1.0.0" -isapponly
# Create package to install
$appPackageV2 = New-DummyPackageInstallationData -PackageName "app.package1" -PackageVersion "2.1.0" -IsAppOnly
# Add package to preinstalled list
$debugMetadata.AppServerPackages += $appInstalledPackage
# Add package to list to be installed
$packageData.AppPackagesToInstall += @($appPackageV2)
$packages, $debugPackagses = Get-ServerPackageInformation -PackageMetadata $packageData -DebugMetadata $debugMetadata `
-BuildCheckoutDirectory "SomePath" -NugetCredential $fakeCred -AwsProfileName "JunkProfile" -DependencyReleaseValue "junkRelease"
It "Calls Remove-PackagesThatAreAlreadyInstalled" {
Assert-MockCalled -CommandName Remove-PackagesThatAreAlreadyInstalled -Scope Context
}
It "Installs The Version From The Install List" {
$packages.AppPackagesToInstall | Should -Contain $appPackageV2
}
It "Does Not Install The Existing Version" {
$packages.AppPackagesToInstall | Should -Not -Contain $appInstalledPackage
}
}
Context "When Uninstalling Packages" {
$packageData = Init-PackageData
$debugMetadata = Init-DebugMetadata
$appUninstallPackage = New-DummyPackageInstallationData -PackageName "app.uninstall.package" -PackageVersion "1.0.0" -IsAppOnly
$micUninstallPackage = New-DummyPackageInstallationData -PackageName "mic.uninstall.package" -PackageVersion "1.0.0" -IsMicOnly
$webUninstallPackage = New-DummyPackageInstallationData -PackageName "web.uninstall.package" -PackageVersion "1.0.0" -IsWebOnly
# Starts off in the same array, split inside the function we're testing.
$packageData.AppPackagesToUninstall += @($appUninstallPackage)
$packageData.AppPackagesToUninstall += @($micUninstallPackage)
$packageData.WebPackagesToUninstall += @($webUninstallPackage)
$debugMetadata.AppServerPackages += $appUninstallPackage
$debugMetadata.MicServerPackages += $micUninstallPackage
$debugMetadata.WebServerPackages += $webUninstallPackage
$packages, $debugPackagses = Get-ServerPackageInformation -PackageMetadata $packageData -DebugMetadata $debugMetadata `
-BuildCheckoutDirectory "SomePath" -NugetCredential $fakeCred -AwsProfileName "JunkProfile" -DependencyReleaseValue "junkRelease"
It "Removes Packages from App Servers" {
$packages.AppPackagesToUninstall | Should -Not -BeNullOrEmpty
$packages.AppPackagesToUninstall | Should -Match $packageData.AppPackagesToUninstall
}
It "Removes Packages from Mic Servers" {
$packages.MicPackagesToUninstall | Should -Not -BeNullOrEmpty
$packages.MicPackagesToUninstall | Should -Match $packageData.MicPackagesToUninstall
}
It "Removes Packages from Web Servers" {
$packages.WebPackagesToUninstall | Should -Not -BeNullOrEmpty
$packages.WebPackagesToUninstall | Should -Match $packageData.WebPackagesToUninstall
}
It "Correctly Labels Has App Uninstalls" {
$packages.HasAppUninstalls | Should -BeTrue
}
It "Correctly Labels Has Mic Uninstalls" {
$packages.HasMicUninstalls | Should -BeTrue
}
It "Correctly Labels Has Web Uninstalls" {
$packages.HasWebUninstalls | Should -BeTrue
}
}
Context "When Packages Are Found On The Wrong Server Type" {
$packageData = Init-PackageData
$debugMetadata = Init-DebugMetadata
$appUninstallPackage = New-DummyPackageInstallationData -PackageName "app.uninstall.package" -PackageVersion "1.0.0" -IsAppOnly
$micUninstallPackage = New-DummyPackageInstallationData -PackageName "mic.uninstall.package" -PackageVersion "1.0.0" -IsMicOnly
$webUninstallPackage = New-DummyPackageInstallationData -PackageName "web.uninstall.package" -PackageVersion "1.0.0" -IsWebOnly
Mock -CommandName Get-BadPackages -MockWith {
$packageData.BadMicPackagesToUninstall += @($micUninstallPackage)
$packageData.BadAppPackagesToUninstall += @($webUninstallPackage)
$packageData.BadWebPackagesToUninstall += @($appUninstallPackage)
return $packageData
}
$packages, $debugPackagses = Get-ServerPackageInformation -PackageMetadata $packageData -DebugMetadata $debugMetadata `
-BuildCheckoutDirectory "SomePath" -NugetCredential $fakeCred -AwsProfileName "JunkProfile" -DependencyReleaseValue "junkRelease"
It "Removes Bad Packages from App Servers" {
$packages.AppPackagesToUninstall | Should -Not -BeNullOrEmpty
$packages.AppPackagesToUninstall | Should -Match $packageData.AppPackagesToUninstall
}
It "Removes Bad Packages from Mic Servers" {
$packages.MicPackagesToUninstall | Should -Not -BeNullOrEmpty
$packages.MicPackagesToUninstall | Should -Match $packageData.MicPackagesToUninstall
}
It "Removes Bad Packages from Web Servers" {
$packages.WebPackagesToUninstall | Should -Not -BeNullOrEmpty
$packages.WebPackagesToUninstall | Should -Match $packageData.WebPackagesToUninstall
}
}
Context "When Getting Install Information" {
$packageData = Init-PackageData
$debugMetadata = Init-DebugMetadata
$packages, $debugPackagses = Get-ServerPackageInformation -PackageMetadata $packageData -DebugMetadata $debugMetadata `
-BuildCheckoutDirectory "SomePath" -NugetCredential $fakeCred -AwsProfileName "JunkProfile" -DependencyReleaseValue "junkRelease"
It "Correctly Labels Has App Installs" {
$packages.HasAppInstalls | Should -BeTrue
}
It "Correctly Labels Has Mic Installs" {
$packages.HasMicInstalls | Should -BeTrue
}
It "Correctly Labels Has Web Installs" {
$packages.HasWebInstalls | Should -BeTrue
}
It "Returns Package Metadata" {
$packages | Should -Not -BeNullOrEmpty
}
It "Returns DebugMetadata" {
$debugPackagses | Should -Not -BeNullOrEmpty
}
}
}