Tests/Integration/MSFT_CertificateImport.Integration.Tests.ps1
$script:DSCModuleName = 'CertificateDsc' $script:DSCResourceName = 'MSFT_CertificateImport' #region HEADER # Integration Test Template Version: 1.1.0 [System.String] $script:moduleRoot = Split-Path -Parent (Split-Path -Parent $PSScriptRoot) if ( (-not (Test-Path -Path (Join-Path -Path $script:moduleRoot -ChildPath 'DSCResource.Tests'))) -or ` (-not (Test-Path -Path (Join-Path -Path $script:moduleRoot -ChildPath 'DSCResource.Tests\TestHelper.psm1'))) ) { & git @('clone','https://github.com/PowerShell/DscResource.Tests.git',(Join-Path -Path $script:moduleRoot -ChildPath '\DSCResource.Tests\')) } Import-Module (Join-Path -Path $script:moduleRoot -ChildPath 'DSCResource.Tests\TestHelper.psm1') -Force $TestEnvironment = Initialize-TestEnvironment ` -DSCModuleName $script:DSCModuleName ` -DSCResourceName $script:DSCResourceName ` -TestType Integration #endregion # Using try/finally to always cleanup even if something awful happens. try { <# Generate a self-signed certificate, export it and remove it from the store to use for testing. Don't use CurrentUser certificates for this test because they won't be found because DSC LCM runs under a different context (Local System). #> $Certificate = New-SelfSignedCertificate ` -DnsName $env:ComputerName ` -CertStoreLocation Cert:\LocalMachine\My $CertificatePath = Join-Path ` -Path $env:Temp ` -ChildPath "CertificateImport-$($Certificate.Thumbprint).cer" $null = Export-Certificate ` -Cert $Certificate ` -Type CERT ` -FilePath $CertificatePath $null = Remove-Item ` -Path $Certificate.PSPath ` -Force #region Integration Tests $ConfigFile = Join-Path -Path $PSScriptRoot -ChildPath "$($script:DSCResourceName)_Add.config.ps1" . $ConfigFile Describe "$($script:DSCResourceName)_Add_Integration" { #region DEFAULT TESTS It 'Should compile and apply the MOF without throwing' { { & "$($script:DSCResourceName)_Add_Config" ` -OutputPath $TestDrive ` -Path $CertificatePath ` -Thumbprint $Certificate.Thumbprint Start-DscConfiguration -Path $TestDrive -ComputerName localhost -Wait -Verbose -Force } | Should -Not -Throw } It 'Should be able to call Get-DscConfiguration without throwing' { { Get-DscConfiguration -Verbose -ErrorAction Stop } | Should -Not -Throw } #endregion It 'Should have set the resource and all the parameters should match' { # Get the Certificate details $CertificateNew = Get-Item ` -Path "Cert:\LocalMachine\My\$($Certificate.Thumbprint)" $CertificateNew | Should -BeOfType System.Security.Cryptography.X509Certificates.X509Certificate2 $CertificateNew.Thumbprint | Should -Be $Certificate.Thumbprint $CertificateNew.Subject | Should -Be $Certificate.Subject } } #endregion #region Integration Tests $ConfigFile = Join-Path -Path $PSScriptRoot -ChildPath "$($script:DSCResourceName)_Remove.config.ps1" . $ConfigFile Describe "$($script:DSCResourceName)_Remove_Integration" { #region DEFAULT TESTS It 'Should compile without throwing' { { & "$($script:DSCResourceName)_Remove_Config" ` -OutputPath $TestDrive ` -Path $CertificatePath ` -Thumbprint $Certificate.Thumbprint Start-DscConfiguration -Path $TestDrive -ComputerName localhost -Wait -Verbose -Force } | Should -Not -Throw } It 'should be able to call Get-DscConfiguration without throwing' { { Get-DscConfiguration -Verbose -ErrorAction Stop } | Should -Not -Throw } #endregion It 'Should have set the resource and all the parameters should match' { # Get the Certificate details $CertificateNew = Get-Item ` -Path "Cert:\LocalMachine\My\$($Certificate.Thumbprint)" ` -ErrorAction SilentlyContinue $CertificateNew | Should -BeNullOrEmpty } } #endregion } finally { # Clean up $null = Remove-Item ` -Path $CertificatePath ` -Force ` -ErrorAction SilentlyContinue $null = Remove-Item ` -Path $Certificate.PSPath ` -Force ` -ErrorAction SilentlyContinue #region FOOTER Restore-TestEnvironment -TestEnvironment $TestEnvironment #endregion } |