137 lines
6.7 KiB
PowerShell
137 lines
6.7 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 = ""
|
|||
|
|
|||
|
|
|||
|
Describe "Compare-InstalledChocoPackages" {
|
|||
|
|
|||
|
Mock Get-RemoteInstalledChocoPackages -ModuleName $moduleForMock {
|
|||
|
|
|||
|
[hashtable]$hostobjectProperty = @{ }
|
|||
|
$hostobjectProperty.Add('foo.fh.local',
|
|||
|
@("expectedPackage|1.1.1",
|
|||
|
"MissingFromTargetPackage|3.3.3",
|
|||
|
"OutOfOrderexpectedPackage|1.1.2",
|
|||
|
"expectedPackageTargetVersionDiff|6.6.6",
|
|||
|
"expectedPackageSourceVersionDiff|2.0.1"
|
|||
|
)
|
|||
|
)
|
|||
|
$hostobjectProperty.Add('PSComputerName', "foo.fh.local")
|
|||
|
$hostobjectProperty.Add("RunspaceId", "1c40b61f-fake-4f6e-bf42-1ff77d9e7e19")
|
|||
|
$hostobjectProperty.Add('PSShowComputerName', $true)
|
|||
|
|
|||
|
[hashtable]$hostobjectProperty2 = @{ }
|
|||
|
$hostobjectProperty2.Add('PSComputerName', "bar.fh.local")
|
|||
|
$hostobjectProperty2.Add("RunspaceId", "1c40b61f-fake-4f6e-bf42-1ff77d9e7e19")
|
|||
|
$hostobjectProperty2.Add('PSShowComputerName', $true)
|
|||
|
$hostobjectProperty2.Add('bar.fh.local',
|
|||
|
@("Chocolatey v0.10.11",
|
|||
|
"expectedPackage|1.1.1",
|
|||
|
"missingFromSourcePackage|2.2.2",
|
|||
|
"expectedPackageTargetVersionDiff|9.9.9",
|
|||
|
"expectedPackageSourceVersionDiff|0.0.1",
|
|||
|
"OutOfOrderexpectedPackage|1.1.2"
|
|||
|
)
|
|||
|
)
|
|||
|
|
|||
|
$mockedDict = @()
|
|||
|
$mockedDict += @($hostobjectProperty)
|
|||
|
$mockedDict += @($hostobjectProperty2)
|
|||
|
$mockeddict | convertto-json | Write-Host
|
|||
|
|
|||
|
return $mockedDict
|
|||
|
}
|
|||
|
|
|||
|
$mockedResults = Compare-InstalledChocoPackages -sourceServer foo.fh.local -targetServer bar.fh.local
|
|||
|
$mockedResults | convertto-json | Write-Host
|
|||
|
Context "Full Match" {
|
|||
|
BeforeEach {
|
|||
|
$expectedPackageName = 'expectedPackage'
|
|||
|
$OutOfOrderexpectedPackageName = "OutOfOrderexpectedPackage"
|
|||
|
}
|
|||
|
It "Identical results returned in `$fullyMatchedPackages" {
|
|||
|
$mockedResults.fullyMatchedPackages.Name | Should -contain $expectedPackageName
|
|||
|
}
|
|||
|
It "Identical results not returned in `$missingFromSource" {
|
|||
|
$mockedResults.missingFromSource.Name | Should -not -Contain $expectedPackageName
|
|||
|
}
|
|||
|
It "Identical results not returned in `$missingFromTarget" {
|
|||
|
$mockedResults.missingFromTarget.Name | Should -not -Contain $expectedPackageName
|
|||
|
}
|
|||
|
It "Identical results not returned in `$packageVersionMismatch" {
|
|||
|
$mockedResults.packageVersionMismatch.Name | Should -not -Contain $expectedPackageName
|
|||
|
}
|
|||
|
It "Out of order full match results returned in `$fullyMatchedPackages" {
|
|||
|
$mockedResults.fullyMatchedPackages.Name | Should -Contain $OutOfOrderexpectedPackageName
|
|||
|
}
|
|||
|
It "Out of order results not returned in `$missingFromSource" {
|
|||
|
$mockedResults.missingFromSource.Name | Should -not -Contain $OutOfOrderexpectedPackageName
|
|||
|
}
|
|||
|
It "Out of order results not returned in `$missingFromTarget" {
|
|||
|
$mockedResults.missingFromTarget.Name | Should -not -Contain $OutOfOrderexpectedPackageName
|
|||
|
}
|
|||
|
It "Out of order results not returned in `$packageVersionMismatch" {
|
|||
|
$mockedResults.packageVersionMismatch.Name | Should -not -Contain $OutOfOrderexpectedPackageName
|
|||
|
}
|
|||
|
}
|
|||
|
Context "Missing from Source" {
|
|||
|
BeforeEach {
|
|||
|
$expectedPackageName = 'missingFromSourcePackage'
|
|||
|
}
|
|||
|
It "Target has entry not in source - returned in `$missingFromSource" {
|
|||
|
$mockedResults.missingFromSource.Name | Should -contain $expectedPackageName
|
|||
|
}
|
|||
|
It "Target has entry not in source - not returned in `$fullyMatchedPackages" {
|
|||
|
$mockedResults.fullyMatchedPackages.Name | Should -not -contain $expectedPackageName
|
|||
|
}
|
|||
|
It "Target has entry not in source - not returned in `$missingFromTarget" {
|
|||
|
$mockedResults.missingFromTarget.Name | Should -not -contain $expectedPackageName
|
|||
|
}
|
|||
|
It "Target has entry not in source - not returned in `$packageVersionMismatch" {
|
|||
|
$mockedResults.packageVersionMismatch.Name | Should -not -contain $expectedPackageName
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
Context "Missing from Target" {
|
|||
|
BeforeEach {
|
|||
|
$expectedPackageName = 'MissingFromTargetPackage'
|
|||
|
}
|
|||
|
It "Source has entry not in target - returned in `$missingFromTarget" {
|
|||
|
$mockedResults.missingFromTarget.Name | Should -contain $expectedPackageName
|
|||
|
}
|
|||
|
It "Source has entry not in target - not returned in `$fullyMatchedPackages" {
|
|||
|
$mockedResults.fullyMatchedPackages.Name | Should -not -contain $expectedPackageName
|
|||
|
}
|
|||
|
It "Source has entry not in target - not returned in `$missingFromSource" {
|
|||
|
$mockedResults.missingFromSource.Name | Should -not -contain $expectedPackageName
|
|||
|
}
|
|||
|
It "Source has entry not in target - not returned in `$packageVersionMismatch" {
|
|||
|
$mockedResults.packageVersionMismatch.Name | Should -not -contain $expectedPackageName
|
|||
|
}
|
|||
|
}
|
|||
|
Context "Version mismatch" {
|
|||
|
BeforeEach {
|
|||
|
$expectedPackageNameTargetVersionDiff = 'expectedPackageTargetVersionDiff'
|
|||
|
$expectedPackageNameSourceVersionDiff = 'expectedPackageSourceVersionDiff'
|
|||
|
}
|
|||
|
It "Package Name matches but Target version differs - returned in `$packageVersionMismatch" {
|
|||
|
$mockedResults.packageVersionMismatch.name | Should -Contain $expectedPackageNameTargetVersionDiff
|
|||
|
}
|
|||
|
It "Package Name matches but Source version differs - returned in `$packageVersionMismatch" {
|
|||
|
$mockedResults.packageVersionMismatch.name | Should -Contain $expectedPackageNameSourceVersionDiff
|
|||
|
}
|
|||
|
It "Package Name matches but Target version differs - not returned in`$missingFromTarget" {
|
|||
|
$mockedResults.missingFromTarget.name | Should -not -Contain $expectedPackageNameTargetVersionDiff
|
|||
|
}
|
|||
|
It "Package Name matches but Target version differs - not returned in `$missingFromSource" {
|
|||
|
$mockedResults.missingFromSource.name | Should -not -Contain $expectedPackageNameTargetVersionDiff
|
|||
|
}
|
|||
|
It "Package Name matches but Target version differs - not returned in `$fullyMatchedPackages" {
|
|||
|
$mockedResults.fullyMatchedPackages.Name | Should -not -contain $expectedPackageNameTargetVersionDiff
|
|||
|
}
|
|||
|
}
|
|||
|
}
|