dsc/ext/PsGallery/xPSDesiredStateConfiguration.6.4.0.0/DSCPullServerSetup/PullServerDeploymentVerificationTest/PullServerSetupTests.ps1
<#
* * Once you setup your pull server with registration, run the following set of tests on the pull server machine * to verify if the pullserver is setup properly and ready to go. #> <# * Prerequisites: * You need Pester module to run this test. * With PowerShell 5, use Install-Module Pester to install the module if it is not on pull server node. * With older PowerShell, install PackageManagement extensions first. #> <# * Run the test via Invoke-Pester ./PullServerSetupTests.ps1 * This test assumes default values are used during deployment for the location of web.config and pull server URL. * If default values are not used during deployment , please update these values in the 'BeforeAll' block accordingly. #> Describe PullServerInstallationTests { BeforeAll{ # UPDATE THE PULLSERVER URL, If it is different from the default value. $DscHostFQDN = [System.Net.Dns]::GetHostEntry([string]$env:computername).HostName $DscPullServerURL = "https://$($DscHostFQDN):8080/PSDSCPullserver.svc" # UPDATE THE LOCATION OF WEB.CONFIG, if it is differnet from the default path. $DscWebConfigChildPath = '\inetpub\wwwroot\psdscpullserver\web.config' $DscWebConfigPath = Join-Path -Path $env:SystemDrive -ChildPath $DscWebConfigChildPath # Skip all tests if web.config is not found if (-not (Test-Path $DscWebConfigPath)){ Write-Error 'No pullserver web.config found.' -ErrorAction Stop } # Get web.config content as XML $DscWebConfigXML = [xml](Get-Content $DscWebConfigPath) # Registration Keys info. $DscRegKeyName = 'RegistrationKeys.txt' $DscRegKeyXMLNode = "//appSettings/add[@key = 'RegistrationKeyPath']" $DscRegKeyParentPath = ($DscWebConfigXML.SelectNodes($DscRegKeyXMLNode)).value $DscRegKeyPath = Join-Path -Path $DscRegKeyParentPath -ChildPath $DscRegKeyName $DscRegKey = Get-Content $DscRegKeyPath # Configuration repository info. $DscConfigPathXMLNode = "//appSettings/add[@key = 'ConfigurationPath']" $DscConfigPath = ($DscWebConfigXML.SelectNodes($DscConfigPathXMLNode)).value # Module repository info. $DscModulePathXMLNode = "//appSettings/add[@key = 'ModulePath']" $DscModulePath = ($DscWebConfigXML.SelectNodes($DscModulePathXMLNode)).value # Testing Files/Variables $DscTestMetaConfigName = 'PullServerSetupTestMetaConfig' $DscTestMetaConfigPath = Join-Path -Path $PSScriptRoot -ChildPath $DscTestMetaConfigName $DscTestConfigName = 'PullServerSetUpTest' $DscTestMofPath = Join-Path -Path $DscConfigPath -ChildPath "$DscTestConfigName.mof" } Context "Verify general pull server functionality" { It "$DscRegKeyPath exists" { $DscRegKeyPath | Should Exist } It "Module repository $DscModulePath exists" { $DscModulePath | Should Exist } It "Configuration repository $DscConfigPath exists" { $DscConfigPath | Should Exist } It "Verify server $DscPullServerURL is up and running" { $DscPullServerResponse = Invoke-WebRequest -Uri $DscPullServerURL -UseBasicParsing $DscPullServerResponse.StatusCode | Should Be 200 } } Context "Verify pull end to end works" { It 'Tests local configuration manager' { [DscLocalConfigurationManager()] Configuration $DscTestMetaConfigName { Settings { RefreshMode = "PULL" } ConfigurationRepositoryWeb ConfigurationManager { ServerURL = $DscPullServerURL RegistrationKey = $DscRegKey ConfigurationNames = @($DscTestConfigName) } } PullServerSetupTestMetaConfig -OutputPath $DscTestMetaConfigPath Set-DscLocalConfigurationManager -Path $DscTestMetaConfigPath -Verbose:$VerbosePreference -Force $DscLocalConfigNames = (Get-DscLocalConfigurationManager).ConfigurationDownloadManagers.ConfigurationNames $DscLocalConfigNames -contains $DscTestConfigName | Should Be True } It "Creates mof and checksum files in $DscConfigPath" { # Sample test configuration Configuration NoOpConfig { Import-DscResource -ModuleName PSDesiredStateConfiguration Node ($DscTestConfigName) { Script script { GetScript = "@{}" SetScript = "{}" TestScript = { if ($false) { return $true } else {return $false} } } } } # Create a mof file copy it to NoOpConfig -OutputPath $DscConfigPath -Verbose:$VerbosePreference $DscTestMofPath | Should Exist # Create checksum New-DscChecksum $DscConfigPath -Verbose:$VerbosePreference -Force "$DscTestMofPath.checksum" | Should Exist } It 'Updates DscConfiguration Successfully' { Update-DscConfiguration -Wait -Verbose:$VerbosePreference (Get-DscConfiguration).ConfigurationName | Should Be "NoOpConfig" } } } |