Tests/Get-SubnetInformation.Unit.Tests.ps1
$ModuleName = 'IPv4Toolbox' $ParentPath = Split-Path -Path $PSScriptRoot -Parent $ModulePath = Join-Path -Path $ParentPath -ChildPath "$($ModuleName).psm1" Get-Module -Name $ModuleName | Remove-Module -Force Import-Module $ModulePath -Force InModuleScope $ModuleName { Describe 'Basic function unit tests for Get-SubnetInformation' -Tags @('Build', 'Unit') { $PropertyList = @( 'AWSFirstIPv4Address' 'AWSTotalHosts' 'BroadcastAddress' 'FirstIPv4Address' 'LastIPv4Address' 'Prefix' 'Subnet' 'SubnetId' 'SubnetMask' 'TotalHosts' ) $ReferenceObject = [PSCustomObject]@{ SubnetId = '192.168.0.0' BroadcastAddress = '192.168.0.255' SubnetMask = '255.255.255.0' Prefix = 24 Subnet = '192.168.0.0/24' FirstIPv4Address = '192.168.0.1' LastIPv4Address = '192.168.0.254' TotalHosts = 254 AWSFirstIPv4Address = '192.168.0.3' AWSTotalHosts = 252 } $IPv4Address = $ReferenceObject.SubnetId $Prefix = $ReferenceObject.Prefix $SubnetMask = $ReferenceObject.SubnetMask Context 'Object returned by Get-SubnetInformation has the correct properties' { $TestObject = Get-SubnetInformation -IPv4Address $IPv4Address -Prefix $Prefix foreach ($Property in $PropertyList) { $TestCase = @{ Properties = @( $TestObject | Get-Member -MemberType 'NoteProperty' | Select-Object -ExpandProperty 'Name' | Sort-Object -Unique ) Property = $Property } It "Return should have a property of $Property" -TestCases $TestCase { param( $Properties, $Property ) $Properties -contains $Property | Should -Be $true } } } Context 'Simple Output with Prefix' { $TestObject = Get-SubnetInformation -IPv4Address $IPv4Address -Prefix $Prefix foreach($Property in $PropertyList) { $TestCase = @{ ReferenceObject = $ReferenceObject.$Property DifferenceObject = $TestObject.$Property } It "Return the proper $Property value for $($ReferenceObject.SubnetId)" -TestCases $TestCase { param( $ReferenceObject, $DifferenceObject ) $DifferenceObject | Should -Be $ReferenceObject } } } Context 'Simple Output with SubnetMask' { $TestObject = Get-SubnetInformation -IPv4Address $IPv4Address -Mask $SubnetMask foreach($Property in $PropertyList) { $TestCase = @{ ReferenceObject = $ReferenceObject.$Property DifferenceObject = $TestObject.$Property } It "Return the proper $Property value for $($ReferenceObject.SubnetId)" -TestCases $TestCase { param( $ReferenceObject, $DifferenceObject ) $DifferenceObject | Should -Be $ReferenceObject } } } } } |