Tests/OctopusServer.ps1
$currentFolder = Split-Path -Parent -Path $MyInvocation.MyCommand.Definition $Module = 'Octopus' $DSCResource = 'OctopusServer' $moduleFolder = Split-Path -Parent -Path $currentFolder Describe "$DSCResource Test-TargetResource"{ Copy-Item "$moduleFolder\DSCResources\$DSCResource\$DSCResource.psm1" TestDrive:\script.ps1 -Force Mock Export-ModuleMember {return $true} . "TestDrive:\script.ps1" Context "Octopus server is installed and ensure is Present"{ Mock Get-InstalledApp { $installedApps = New-Object psobject -Property @{ DisplayName = 'Octopus Deploy Server' DisplayVersion = '1.2.2' UninstallString = 'UninstallOcopus.exe' } return $installedApps } It "Should return true"{ $secpasswd = ConvertTo-SecureString "MyPassword" -AsPlainText -Force $mycreds = New-Object System.Management.Automation.PSCredential("admin", $secpasswd) Test-TargetResource -ServerName $env:COMPUTERNAME -Port 8085 -Credentials $mycreds -Ensure "Present" | Should Be $True } } Context "Octopus server is not installed and ensure is present"{ Mock Get-InstalledApp { $installedApps = New-Object psobject -Property @{ DisplayName = 'Other application' DisplayVersion = '1.0.0' UninstallString = 'uninstallapp.exe' } return $installedApps } It "Should return false"{ $secpasswd = ConvertTo-SecureString "MyPassword" -AsPlainText -Force $mycreds = New-Object System.Management.Automation.PSCredential ("admin", $secpasswd) Test-TargetResource -ServerName $env:COMPUTERNAME -Port 8085 -Credentials $mycreds -Ensure "Present" | Should Be $False } } Context "Octopus server is installed and ensure is Absent"{ Mock Get-InstalledApp { $installedApps = New-Object psobject -Property @{ DisplayName = 'Octopus Deploy Server' DisplayVersion = '1.2.2' UninstallString = 'UninstallOcopus.exe' } return $installedApps } It "Should return false"{ $secpasswd = ConvertTo-SecureString "MyPassword" -AsPlainText -Force $mycreds = New-Object System.Management.Automation.PSCredential("admin", $secpasswd) Test-TargetResource -ServerName $env:COMPUTERNAME -Port 8085 -Credentials $mycreds -Ensure "Absent" | Should Be $False } } Context "Octopus server is not installed and ensure is Absent"{ Mock Get-InstalledApp { $installedApps = New-Object psobject -Property @{ DisplayName = 'Other application' DisplayVersion = '1.0.0' UninstallString = 'uninstallapp.exe' } return $installedApps } It "Should return true"{ $secpasswd = ConvertTo-SecureString "MyPassword" -AsPlainText -Force $mycreds = New-Object System.Management.Automation.PSCredential ("admin", $secpasswd) Test-TargetResource -ServerName $env:COMPUTERNAME -Port 8085 -Credentials $mycreds -Ensure "Absent" | Should Be $True } } } Describe "$DSCResource Get-TargetResource"{ Copy-Item "$moduleFolder\DSCResources\$DSCResource\$DSCResource.psm1" TestDrive:\script.ps1 -Force Mock Export-ModuleMember {return $true} . "TestDrive:\script.ps1" Context "Octopus server is installed"{ Mock Get-InstalledApp { $installedApps = New-Object psobject -Property @{ DisplayName = 'Octopus Deploy Server' DisplayVersion = '1.2.2' UninstallString = 'UninstallOcopus.exe' } return $installedApps } It "Should return hashtable with Ensure Present"{ $value = Get-TargetResource -ServerName $env:COMPUTERNAME $value.Ensure | Should Be 'Present' } } Context "Octopus server is not installed"{ Mock Get-InstalledApp { $installedApps = New-Object psobject -Property @{ DisplayName = 'Mock app' DisplayVersion = '1.0.0' UninstallString = 'MockApp.exe' } return $installedApps } It "Should return hashtable with Ensure Absent"{ $value = Get-TargetResource -ServerName $env:COMPUTERNAME $value.Ensure | Should Be 'Absent' } } } Describe "$DSCResource Set-TargetResource"{ Copy-Item "$moduleFolder\DSCResources\$DSCResource\$DSCResource.psm1" TestDrive:\script.ps1 -Force Mock Export-ModuleMember {return $true} . "TestDrive:\script.ps1" Mock Get-InstalledApp { $installedApps = New-Object psobject -Property @{ DisplayName = 'Octopus Deploy Server' DisplayVersion = '1.2.2' UninstallString = 'UninstallOcopus.exe' } return $installedApps } Context "Ensure is Present"{ Mock Install-OctopusServer {} -Verifiable Mock Set-OctopusConfiguration {} -Verifiable It "Should call Install-OctopusServer and Set-OctopusConfiguration"{ $secpasswd = ConvertTo-SecureString "MyPassword" -AsPlainText -Force $mycreds = New-Object System.Management.Automation.PSCredential ("admin", $secpasswd) Set-TargetResource -ServerName $env:COMPUTERNAME -Port 8085 -Credentials $mycreds -Ensure "Present" Assert-VerifiableMocks } } Context "Ensure is Absent"{ Mock Uninstall-OctopusServer {} -Verifiable Mock Remove-OctopusConfiguration {} -Verifiable It "Should call Install-OctopusServer and Set-OctopusConfiguration"{ $secpasswd = ConvertTo-SecureString "MyPassword" -AsPlainText -Force $mycreds = New-Object System.Management.Automation.PSCredential ("admin", $secpasswd) Set-TargetResource -ServerName $env:COMPUTERNAME -Port 8085 -Credentials $mycreds -Ensure "Absent" Assert-VerifiableMocks } } } |