138 lines
5.7 KiB
PowerShell
138 lines
5.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 "Invoke-ServiceInstall" {
|
|
|
|
Mock -ModuleName $moduleForMock -CommandName Get-LogLeadName -MockWith { }
|
|
Mock -ModuleName $moduleForMock -CommandName Split-Path -MockWith { }
|
|
Mock -ModuleName $moduleForMock -CommandName Get-PackageManifest -MockWith { return @{
|
|
ServiceManifest = @{
|
|
runtime = "core"
|
|
Migrations = @{
|
|
Assembly = @{
|
|
role = "MyAssemblyRole"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Mock -ModuleName $moduleForMock -CommandName Test-ServiceManifestHasMigrations -MockWith { }
|
|
Mock -ModuleName $moduleForMock -CommandName Split-Path -MockWith { return "Path" }
|
|
Mock -ModuleName $moduleForMock -CommandName Test-IsDeveloperMachine -MockWith { }
|
|
Mock -ModuleName $moduleForMock -CommandName Test-IsAws -MockWith { }
|
|
Mock -ModuleName $moduleForMock -CommandName Get-ChildItem -MockWith { return @{ FullName = "SomeName" } }
|
|
Mock -ModuleName $moduleForMock -CommandName Get-Content -MockWith {
|
|
$nuspec = @"
|
|
<package>
|
|
<metadata>
|
|
<id>SomePackageId</id>
|
|
<version>1.0.0</version>
|
|
</metadata>
|
|
</package>
|
|
"@
|
|
|
|
return ($nuspec)
|
|
}
|
|
|
|
Mock -ModuleName $moduleForMock -CommandName Invoke-AlkamiMigrationRunner -MockWith { }
|
|
Mock -ModuleName $moduleForMock -CommandName Write-Host -MockWith { }
|
|
Mock -ModuleName $moduleForMock -CommandName Write-Error -MockWith { }
|
|
Mock -ModuleName $moduleForMock -CommandName Install-AlkamiService -MockWith { }
|
|
Mock -ModuleName $moduleForMock -CommandName Install-LegacyMicroservice -MockWith { }
|
|
|
|
Mock -ModuleName $moduleForMock -CommandName Test-Path -MockWith { $true } -ParameterFilter {
|
|
$CallingFolder -eq "SomeFolder" -and $PathType -eq "Container" }
|
|
|
|
|
|
Context "When Migrations Should Be Run On A Developer Machine" {
|
|
Mock -ModuleName $moduleForMock -CommandName Test-ServiceManifestRequiresDbAccess -MockWith { $true }
|
|
Mock -ModuleName $moduleForMock -CommandName Test-ServiceManifestHasMigrations -MockWith { return $true }
|
|
Mock -ModuleName $moduleForMock -CommandName Test-IsDeveloperMachine -MockWith { return $true }
|
|
|
|
It "Runs Migrations" {
|
|
Invoke-ServiceInstall -CallingFolder "SomeFolder"
|
|
|
|
Assert-MockCalled -ModuleName $moduleForMock -CommandName Invoke-AlkamiMigrationRunner
|
|
}
|
|
}
|
|
|
|
Context "When Installing A DotNetCore Service" {
|
|
Mock -ModuleName $moduleForMock -CommandName Get-PackageManifest -MockWith { return @{
|
|
ServiceManifest = @{
|
|
runtime = "core"
|
|
Migrations = @{
|
|
Assembly = @{
|
|
role = "MyAssemblyRole"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Mock -ModuleName $moduleForMock -CommandName Test-ServiceManifestRequiresDbAccess -MockWith { $true }
|
|
Mock -ModuleName $moduleForMock -CommandName Test-ServiceManifestHasMigrations -MockWith { return $true }
|
|
Mock -ModuleName $moduleForMock -CommandName Test-IsDeveloperMachine -MockWith { return $false }
|
|
|
|
It "Calls Install-AlkamiService" {
|
|
Invoke-ServiceInstall -CallingFolder "SomeFolder"
|
|
|
|
Assert-MockCalled -ModuleName $moduleForMock -CommandName Install-AlkamiService
|
|
}
|
|
}
|
|
|
|
Context "When Installing A Legacy Framework Service" {
|
|
|
|
Mock -ModuleName $moduleForMock -CommandName Get-PackageManifest -MockWith { return @{
|
|
ServiceManifest = @{
|
|
runtime = "legacy"
|
|
Migrations = @{
|
|
Assembly = @{
|
|
role = "MyAssemblyRole"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Mock -ModuleName $moduleForMock -CommandName Test-ServiceManifestRequiresDbAccess -MockWith { $true }
|
|
Mock -ModuleName $moduleForMock -CommandName Test-ServiceManifestHasMigrations -MockWith { return $true }
|
|
Mock -ModuleName $moduleForMock -CommandName Test-IsDeveloperMachine -MockWith { return $false }
|
|
|
|
It "Calls Install-LegacyMicroservice" {
|
|
Invoke-ServiceInstall -CallingFolder "SomeFolder"
|
|
|
|
Assert-MockCalled -ModuleName $moduleForMock -CommandName Install-LegacyMicroservice
|
|
}
|
|
}
|
|
|
|
|
|
Context "When Framework Cannot Be Determined" {
|
|
Mock -ModuleName $moduleForMock -CommandName Get-PackageManifest -MockWith { return @{
|
|
ServiceManifest = @{
|
|
runtime = "blargh"
|
|
Migrations = @{
|
|
Assembly = @{
|
|
role = "MyAssemblyRole"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
Mock -ModuleName $moduleForMock -CommandName Test-ServiceManifestRequiresDbAccess -MockWith { $true }
|
|
Mock -ModuleName $moduleForMock -CommandName Test-ServiceManifestHasMigrations -MockWith { return $true }
|
|
Mock -ModuleName $moduleForMock -CommandName Test-IsDeveloperMachine -MockWith { return $false }
|
|
|
|
It "Writes An Error" {
|
|
Invoke-ServiceInstall -CallingFolder "SomeFolder"
|
|
|
|
Assert-MockCalled -ModuleName $moduleForMock -CommandName Write-Error -ParameterFilter { $Message -match "Nothing to install for" }
|
|
}
|
|
}
|
|
} |