134 lines
5.2 KiB
PowerShell
134 lines
5.2 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 = ""
|
|
|
|
# Make tests not fail if ServiceFabric SDK not installed
|
|
$serviceFabricSDKIsInstalled = (Test-Path "C:\Program Files\Microsoft Service Fabric")
|
|
if (!$serviceFabricSDKIsInstalled) {
|
|
|
|
Write-Warning "The Service Fabric SDK must be installed to execute these tests. They will be skipped"
|
|
}
|
|
|
|
Describe "Publish-AlkamiServiceFabricPackages" {
|
|
$podName = "AWS Production 5";
|
|
|
|
Mock Get-AppSetting -ModuleName $moduleForMock {
|
|
param($appSettingKey, $filePath, $computername,$SuppressWarnings)
|
|
|
|
if($appSettingKey -eq "Environment.Name") {
|
|
return $podName;
|
|
}
|
|
if($appSettingKey -eq "Environment.Type") {
|
|
return "FakeEnvironment";
|
|
}
|
|
return "FakeValue";
|
|
}
|
|
|
|
# Setup
|
|
$packageString = "Alkami.Fake.Package 1.2.3";
|
|
$packages = Format-ParseChocoPackages -text $packageString -delimiter " ";
|
|
foreach($package in $packages) {
|
|
$package.Feed = @{ Source = "https://www.fakesource.com/nuget/choco.fake" };
|
|
}
|
|
$podShortName = Format-AlkamiEnvironmentName -name $podName;
|
|
|
|
Context "Deploy Packages" {
|
|
|
|
if ($serviceFabricSDKIsInstalled) {
|
|
|
|
# Inside IF statement to avoid errors mocking functions that don't exist
|
|
Mock Remove-Item -ModuleName $moduleForMock { }
|
|
Mock Set-ChocoPackageSourceFeeds -ModuleName $moduleForMock { }
|
|
Mock Connect-AlkamiServiceFabricCluster -ModuleName $moduleForMock { }
|
|
Mock New-AlkamiServiceFabricPackage -ModuleName $moduleForMock { }
|
|
Mock New-AlkamiServiceFabricReliableServicePackage -ModuleName $moduleForMock { }
|
|
Mock Copy-ServiceFabricApplicationPackage -ModuleName $moduleForMock { }
|
|
Mock Register-ServiceFabricApplicationType -ModuleName $moduleForMock { }
|
|
Mock Format-AlkamiServiceFabricApplicationName -ModuleName $moduleForMock { }
|
|
Mock Test-IsPackageReliableService -ModuleName $moduleForMock { }
|
|
Mock Get-AlkamiServiceFabricApplications -Module $moduleForMock { return $null }
|
|
|
|
Mock Get-AlkamiServiceFabricNode -ModuleName $moduleForMock {
|
|
$numServers = 5;
|
|
$results = @();
|
|
for($i = 0; $i -lt $numServers; $i++) {
|
|
$results += "FABFAKE$i";
|
|
}
|
|
return $results;
|
|
}
|
|
|
|
Mock Get-AlkamiServiceFabricPackageServiceTypeName -ModuleName $moduleForMock {
|
|
return "Alkami.Fake.Package";
|
|
}
|
|
|
|
Mock Get-ServiceFabricApplicationType -ModuleName $moduleForMock {
|
|
return $null;
|
|
}
|
|
|
|
Mock Test-IsPackageReliableService -ModuleName $moduleForMock {
|
|
return $true;
|
|
}
|
|
|
|
Mock Get-ServiceFabricNode -ModuleName $moduleForMock {
|
|
return @("APP12345.fh.local");
|
|
}
|
|
}
|
|
|
|
It "Correctly Builds a Reliable Service Package" {
|
|
|
|
if (!$serviceFabricSDKIsInstalled) {
|
|
|
|
Set-ItResult -Inconclusive -Because "Service Fabric SDK Not Installed"
|
|
|
|
} else {
|
|
|
|
Mock Test-IsPackageReliableService -ModuleName $moduleForMock {
|
|
return $true;
|
|
}
|
|
|
|
Publish-AlkamiServiceFabricPackages -packages $packages;
|
|
Assert-MockCalled -ModuleName $moduleForMock New-AlkamiServiceFabricReliableServicePackage -Times 1 -Exactly -Scope It;
|
|
}
|
|
}
|
|
|
|
It "Correctly Builds a Microservice Package" {
|
|
|
|
if (!$serviceFabricSDKIsInstalled) {
|
|
|
|
Set-ItResult -Inconclusive -Because "Service Fabric SDK Not Installed"
|
|
|
|
} else {
|
|
|
|
Mock Test-IsPackageReliableService -ModuleName $moduleForMock {
|
|
return $false;
|
|
}
|
|
|
|
Publish-AlkamiServiceFabricPackages -packages $packages;
|
|
Assert-MockCalled -ModuleName $moduleForMock New-AlkamiServiceFabricPackage -Times 1 -Exactly -Scope It;
|
|
Assert-MockCalled -ModuleName $moduleForMock Format-AlkamiServiceFabricApplicationName -Times 1 -ParameterFilter {![string]::IsNullOrWhiteSpace($environmentName)} -Exactly -Scope It;
|
|
}
|
|
}
|
|
|
|
It "Registers Image with Full Name/Version/Environment" {
|
|
|
|
if (!$serviceFabricSDKIsInstalled) {
|
|
|
|
Set-ItResult -Inconclusive -Because "Service Fabric SDK Not Installed"
|
|
|
|
} else {
|
|
|
|
$podShortName = Format-AlkamiEnvironmentName -name $podName;
|
|
|
|
Publish-AlkamiServiceFabricPackages -packages $packages;
|
|
$package = $packages[0];
|
|
$imagePathName = "$($package.Name)-$($package.Version)-$podShortName";
|
|
Assert-MockCalled -ModuleName $moduleForMock Copy-ServiceFabricApplicationPackage -Times 1 #-ParameterFilter {$ApplicationPackagePathInImageStore -eq "$imagePathName"} -Exactly -Scope It;
|
|
}
|
|
}
|
|
}
|
|
}
|