Skip to content

Commit

Permalink
Merge pull request #2 from raandree/feature/UpdatePester5
Browse files Browse the repository at this point in the history
Feature/update pester5
  • Loading branch information
raandree authored Apr 16, 2022
2 parents cc15073 + 4d548db commit 4b766e4
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 88 deletions.
22 changes: 1 addition & 21 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,6 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

## [Unreleased]

### Added

- For new features.

### Changed

- For changes in existing functionality.

### Deprecated

- For soon-to-be removed features.

### Removed

- For now removed features.

### Fixed

- For any bug fix.

### Security

- In case of vulnerabilities.
- Migrated tests to Pester 5.
8 changes: 4 additions & 4 deletions RequiredModules.psd1
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,15 @@
'powershell-yaml' = 'latest'
InvokeBuild = 'latest'
PSScriptAnalyzer = 'latest'
Pester = '4.10.1'
Pester = 'latest'
Plaster = 'latest'
ModuleBuilder = 'latest'
ChangelogManagement = 'latest'
Sampler = 'latest'
'Sampler.GitHubTasks' = 'latest'
Datum = '0.39.0'
'Datum.ProtectedData' = '0.0.1'
DscBuildHelpers = '0.0.42'
Datum = 'latest'
'Datum.ProtectedData' = 'latest'
DscBuildHelpers = 'latest'
'DscResource.Test' = 'latest'
MarkdownLinkCheck = 'latest'
'DscResource.AnalyzerRules' = 'latest'
Expand Down
119 changes: 56 additions & 63 deletions tests/Unit/DSCResources/DscResources.Tests.ps1
Original file line number Diff line number Diff line change
@@ -1,88 +1,80 @@
$dscResources = Get-DscResource -Module DscConfig.Demo
$here = $PSScriptRoot
BeforeDiscovery {
$dscResources = Get-DscResource -Module DscConfig.Demo
$here = $PSScriptRoot

$skippedDscResources = 'PowerShellRepositories'
$skippedDscResources = 'PowerShellRepositories'

Import-Module -Name datum
Import-Module -Name datum

$datum = New-DatumStructure -DefinitionFile $here\Assets\Datum.yml
$allNodes = Get-Content -Path $here\Assets\AllNodes.yml -Raw | ConvertFrom-Yaml
$datum = New-DatumStructure -DefinitionFile $here\Assets\Datum.yml
$allNodes = Get-Content -Path $here\Assets\AllNodes.yml -Raw | ConvertFrom-Yaml

$global:configurationData = @{
AllNodes = [array]$allNodes
Datum = $Datum
}
Write-Build DarkGray 'Reading DSC Resource metadata for supporting CIM based DSC parameters...'
Initialize-DscResourceMetaInfo -ModulePath $RequiredModulesDirectory
Write-Build DarkGray 'Done'

foreach ($dscResourceName in $dscResources.Name)
{
Describe "'$dscResourceName' DSC Resource compiles" -Tags FunctionalQuality {
$global:configurationData = @{
AllNodes = [array]$allNodes
Datum = $Datum
}

[hashtable[]]$testCases = @()
foreach ($dscResource in $dscResources)
{
[PSCustomObject]$dscResourceModuleTable = @()
$testCases += @{
DscResourceName = $dscResource.Name
Skip = ($dscResource.Name -in $skippedDscResources)
}
}

BeforeAll {
$tempExists = Test-Path -Path C:\Temp
if (-not $tempExists)
{
New-Item -Path C:\Temp -ItemType Directory | Out-Null
}
@'
function f1 {
Get-Date
}

f1
'@ | Set-Content -Path C:\Temp\JeaRoleTest.ps1 -Force
}
Describe 'DSC Composite Resources compile' -Tags FunctionalQuality {

It "'$dscResourceName' compiles" {
It "'<DscResourceName>' compiles"-TestCases $testCases {

if ($dscResourceName -in $skippedDscResources)
{
Set-ItResult -Skipped -Because "Tests for '$dscResourceName' are skipped"
}
if ($Skip)
{
Set-ItResult -Skipped -Because "Tests for '$DscResourceName' are skipped"
}

$nodeData = @{
NodeName = "localhost_$dscResourceName"
PSDscAllowPlainTextPassword = $true
PSDscAllowDomainUser = $true
}
$configurationData.AllNodes += $nodeData
$nodeData = @{
NodeName = "localhost_$dscResourceName"
PSDscAllowPlainTextPassword = $true
PSDscAllowDomainUser = $true
}
$configurationData.AllNodes = @($nodeData)

configuration "Config_$dscResourceName" {
configuration "Config_$dscResourceName" {

Import-DscResource -ModuleName DscConfig.Demo
Import-DscResource -ModuleName DscConfig.Demo

node "localhost_$dscResourceName" {
node "localhost_$dscResourceName" {

$data = $configurationData.Datum.Config."$dscResourceName"
if (-not $data)
{
$data = @{}
}
(Get-DscSplattedResource -ResourceName $dscResourceName -ExecutionName $dscResourceName -Properties $data -NoInvoke).Invoke($data)
$data = $configurationData.Datum.Config."$dscResourceName"
if (-not $data)
{
$data = @{}
}
}

{
& "Config_$dscResourceName" -ConfigurationData $configurationData -OutputPath $OutputDirectory -ErrorAction Stop
} | Should -Not -Throw
(Get-DscSplattedResource -ResourceName $dscResourceName -ExecutionName $dscResourceName -Properties $data -NoInvoke).Invoke($data)
}
}

It "'$dscResourceName' should have created a mof file" {
if ($dscResourceName -in $skippedDscResources)
{
Set-ItResult -Skipped -Because "Tests for '$dscResourceName' are skipped"
}
{
& "Config_$dscResourceName" -ConfigurationData $configurationData -OutputPath $OutputDirectory -ErrorAction Stop
} | Should -Not -Throw
}

$mofFile = Get-Item -Path "$($OutputDirectory)\localhost_$dscResourceName.mof" -ErrorAction SilentlyContinue
$mofFile | Should -BeOfType System.IO.FileInfo
It "'<DscResourceName>' should have created a mof file" -TestCases $testCases {
if ($DscResourceName -in $skippedDscResources)
{
Set-ItResult -Skipped -Because "Tests for '$DscResourceName' are skipped"
}

AfterAll {
Remove-Item -Path C:\Temp\JeaRoleTest.ps1
if (-not $tempExists)
{
Remove-Item -Path C:\Temp
}
}
$mofFile = Get-Item -Path "$($OutputDirectory)\localhost_$DscResourceName.mof" -ErrorAction SilentlyContinue
$mofFile | Should -BeOfType System.IO.FileInfo
}
}

Expand Down Expand Up @@ -112,5 +104,6 @@ Describe 'Final tests' -Tags FunctionalQuality {
Write-Host (Compare-Object -ReferenceObject $compositeResouceFolders.Name -DifferenceObject $compositeResouces.Name | Out-String) -ForegroundColor Yellow

$compositeResouces.Count | Should -Be $compositeResouceFolders.Count

}
}

0 comments on commit 4b766e4

Please sign in to comment.