Are my resources loaded?
Often I will create a new resource thinking it will work only to not have it loaded for some reason. At the moment all my resources are in the same module. So I have this test to use my folder structure to test for a loaded resource.
$LoadedResources = Get-DscResource
Describe “DSCResources
located in $PSScriptRoot\DSCResources" {
$ResourceList
= Get-ChildItem
"$PSScriptRoot\DSCResources"
Foreach($Resource in
$ResourceList){
It "$Resource Is Loaded [Dynamic]" {
$LoadedResources
|
Where-Object{$_.name -eq $Resource}
|
Should
Not BeNullOrEmpty
}
}
}
Can my resource generate a mof file?
The next thing I want to know is if it will generate a mof file. I create a test like this for every DSC resource. I use the TestDrive: location to manage temporary files.
Describe "Firewall"{
It "Creates a mof file"{
configuration
DSCTest{
Import-DscResource
-modulename MyModule
Node
Localhost{
Firewall
SampleConfig{
State
= "ON"
}
}
}
DSCTest
-OutputPath Testdrive:\dsc
"TestDrive:\dsc\localhost.mof"
| Should Exist
}
}
Do my Test and Get functions work?
For some of my resources, I even test the Get and Test functions inside the module. I first have to rename the script so I can load it. Also notice I use a Mock function to keep the Export-Module from throwing errors.
$here = Split-Path -Parent $MyInvocation.MyCommand.Path
Describe "Firewall"{
Copy-Item "$here\Firewall.psm1" TestDrive:\script.ps1
Mock Export-ModuleMember {return
$true}
. "TestDrive:\script.ps1"
It "Test-TargetResource returns true or false"
{
Test-TargetResource
-state "ON"
|
Should
Not BeNullOrEmpty
}
It "Get-TargetResource returns State = on or off"
{
(Get-TargetResource
-state "ON").state |
Should
Match "on|off"
}
}
Edit: I added a part 2.
No comments:
Post a Comment