internal/functions/Get-PuppetDataType.Tests.ps1
Describe 'Get-PuppetDataType' -Tag 'Unit' { BeforeAll { $ModuleRootPath = Split-Path -Parent $PSCommandPath | Split-Path -Parent | Split-Path -Parent Import-Module "$ModuleRootPath/Puppet.Dsc.psd1" . $PSCommandPath.Replace('.Tests.ps1', '.ps1') } InModuleScope Puppet.Dsc { BeforeAll { Function New-DscParameter { Param ( [string]$Name = 'foo', [string]$PropertyType = '[string]', [string[]]$Values = @(), [switch]$IsMandatory ) [pscustomobject]@{ Name = $Name PropertyType = $PropertyType IsMandatory = $IsMandatory Values = $Values } } } Context 'Basic Functionality' { It 'Distinguishes between optional and mandatory parameters' { Get-PuppetDataType -DscResourceProperty (New-DscParameter) | Should -BeExactly 'Optional[String]' Get-PuppetDataType -DscResourceProperty (New-DscParameter -IsMandatory) | Should -BeExactly 'String' } It 'Handles arrays' { Get-PuppetDataType -DscResourceProperty (New-DscParameter -PropertyType '[string[]]') | Should -BeExactly 'Optional[Array[String]]' } It 'Handles embedded instances' { Get-PuppetDataType -DscResourceProperty (New-DscParameter -PropertyType 'foo') | Should -BeExactly 'Optional[Hash]' } It 'Handles Enums' { Get-PuppetDataType -DscResourceProperty (New-DscParameter -Values @('Foo', 'Bar', 'Baz')) | Should -BeExactly "Optional[Enum['Foo', 'foo', 'Bar', 'bar', 'Baz', 'baz']]" Get-PuppetDataType -DscResourceProperty (New-DscParameter -Values @('Yes')) | Should -BeExactly "Optional[Enum['Yes', 'yes']]" Get-PuppetDataType -DscResourceProperty (New-DscParameter -Values @('No')) | Should -BeExactly "Optional[Enum['No', 'no']]" } It 'Handles well-known types' { Get-PuppetDataType -DscResourceProperty (New-DscParameter -PropertyType '[Bool]') | Should -BeExactly 'Optional[Boolean]' Get-PuppetDataType -DscResourceProperty (New-DscParameter -PropertyType '[Byte]') | Should -BeExactly 'Optional[Integer[0, 255]]' Get-PuppetDataType -DscResourceProperty (New-DscParameter -PropertyType '[int]') | Should -BeExactly 'Optional[Integer[-2147483648, 2147483647]]' Get-PuppetDataType -DscResourceProperty (New-DscParameter -PropertyType '[PSCredential]') | Should -BeExactly 'Optional[Struct[{ user => String[1], password => Sensitive[String[1]] }]]' Get-PuppetDataType -DscResourceProperty (New-DscParameter -PropertyType '[SecureString]') | Should -BeExactly 'Optional[Sensitive[String]]' Get-PuppetDataType -DscResourceProperty (New-DscParameter -PropertyType '[DateTime]') | Should -BeExactly 'Optional[Timestamp]' Get-PuppetDataType -DscResourceProperty (New-DscParameter -PropertyType '[HashTable]') | Should -BeExactly 'Optional[Hash]' Get-PuppetDataType -DscResourceProperty (New-DscParameter -PropertyType '[Char]') | Should -BeExactly 'Optional[String[1,1]]' Get-PuppetDataType -DscResourceProperty (New-DscParameter -PropertyType '[Object]') | Should -BeExactly 'Optional[Any]' } } } } |