123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- [System.Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSAvoidUsingConvertToSecureStringWithPlainText', '')]
- param ()
- $script:DSCModuleName = 'xCertificate'
- $script:DSCResourceName = 'MSFT_xPfxImport'
- #region HEADER
- # Integration Test Template Version: 1.1.0
- [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 "xPfxImport-$($Certificate.Thumbprint).pfx"
- $testUsername = 'DummyUsername'
- $testPassword = 'DummyPassword'
- $testCredential = New-Object System.Management.Automation.PSCredential $testUsername, (ConvertTo-SecureString $testPassword -AsPlainText -Force)
- $null = Export-PfxCertificate `
- -Cert $Certificate `
- -FilePath $CertificatePath `
- -Password $testCredential.Password
- $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 without throwing' {
- {
- $configData = @{
- AllNodes = @(
- @{
- NodeName = 'localhost';
- PSDscAllowPlainTextPassword = $true
- }
- )
- }
- & "$($script:DSCResourceName)_Add_Config" `
- -OutputPath $TestDrive `
- -ConfigurationData $configData `
- -Path $CertificatePath `
- -Thumbprint $Certificate.Thumbprint `
- -Credential $testCredential
- 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
- }
|