Tests/LMUptimeDevice.Tests.ps1
|
Describe 'Uptime Device Testing New/Get/Set/Remove' { BeforeAll { Import-Module $Module -Force Connect-LMAccount -AccessId $AccessId -AccessKey $AccessKey -AccountName $AccountName -DisableConsoleLogging -SkipCredValidation $script:UptimeDeviceName = "Uptime.Build.Test." + ([guid]::NewGuid().ToString('N').Substring(0, 8)) $script:UptimeDomain = "uptime-" + ([guid]::NewGuid().ToString('N').Substring(0, 6)) + ".example.com" $script:UptimePingHost = "ping-" + ([guid]::NewGuid().ToString('N').Substring(0, 6)) + ".example.com" } Describe 'New-LMUptimeDevice' { It 'When given mandatory parameters for WebExternal, returns a created uptime device with matching values' { $script:NewUptimeDevice = New-LMUptimeDevice ` -Name $script:UptimeDeviceName ` -HostGroupIds @('1') ` -Domain $script:UptimeDomain ` -Description 'BuildUptimeTest' ` -TestLocationSmgIds @(2, 3) ` -Properties @{ 'testprop' = 'BuildTest' } $script:NewUptimeDevice | Should -Not -BeNullOrEmpty $script:NewUptimeDevice.description | Should -BeExactly 'BuildUptimeTest' $script:NewUptimeDevice.deviceType | Should -Be 18 ($script:NewUptimeDevice.customProperties | Where-Object { $_.name -eq 'testprop' }).value | Should -BeExactly 'BuildTest' } It 'When given PingExternal parameters, returns a ping uptime device' { $script:NewPingDevice = New-LMUptimeDevice ` -Name ("Ping." + $script:UptimeDeviceName) ` -HostGroupIds @('1') ` -Hostname $script:UptimePingHost ` -Description 'BuildPingTest' ` -TestLocationSmgIds @(2, 3) $script:NewPingDevice | Should -Not -BeNullOrEmpty $script:NewPingDevice.deviceType | Should -Be 19 } It 'When given invalid PollingInterval, should throw validation error' { { New-LMUptimeDevice ` -Name "InvalidPolling" ` -HostGroupIds @('1') ` -Domain "invalid.example.com" ` -TestLocationSmgIds @(2) ` -PollingInterval 30 } | Should -Throw } It 'When given invalid PercentPktsNotReceiveInTime, should throw validation error' { { New-LMUptimeDevice ` -Name "InvalidPercent" ` -HostGroupIds @('1') ` -Hostname "invalid.example.com" ` -TestLocationSmgIds @(2) ` -PercentPktsNotReceiveInTime 15 } | Should -Throw } } Describe 'Get-LMUptimeDevice' { It 'When given type parameter, returns uptime devices of that type' { $devices = Get-LMUptimeDevice -Type uptimewebcheck ($devices | Measure-Object).Count | Should -BeGreaterThan 0 } It 'When given an id should return that uptime device' { $device = Get-LMUptimeDevice -Id $script:NewUptimeDevice.id -Type uptimewebcheck ($device | Measure-Object).Count | Should -BeExactly 1 $device.id | Should -BeExactly $script:NewUptimeDevice.id } It 'When given a name should return devices matching that name' { $device = Get-LMUptimeDevice -Name $script:NewUptimeDevice.name -Type uptimewebcheck ($device | Measure-Object).Count | Should -BeExactly 1 $device[0].name | Should -BeExactly $script:NewUptimeDevice.name } It 'When given uptimewebcheck type parameter should return only matching devices' { $devices = Get-LMUptimeDevice -Type uptimewebcheck ($devices | Where-Object { $_.deviceType -ne '18' } | Measure-Object).Count | Should -BeExactly 0 ($devices | Where-Object { $_.deviceType -eq '18' } | Measure-Object).Count | Should -BeGreaterThan 1 } It 'When given uptimepingcheck type parameter should return only matching devices' { $devices = Get-LMUptimeDevice -Type uptimepingcheck ($devices | Where-Object { $_.deviceType -ne '19' } | Measure-Object).Count | Should -BeExactly 0 } } Describe 'Set-LMUptimeDevice' { It 'When given a set of parameters, returns an updated uptime device with matching values' { { $device = Set-LMUptimeDevice -Id $script:NewUptimeDevice.id -Type uptimewebcheck -Description 'UpdatedUptime' -GlobalSmAlertCond half -Properties @{ 'testpropupdated' = 'UpdatedValue' } -ErrorAction Stop $device.description | Should -BeExactly 'UpdatedUptime' ($device.customProperties | Where-Object { $_.name -eq 'testpropupdated' }).value | Should -BeExactly 'UpdatedValue' } | Should -Not -Throw } } Describe 'Remove-LMUptimeDevice' { It 'When given an id, removes the uptime device from LogicMonitor' { { Remove-LMUptimeDevice -Id $script:NewUptimeDevice.id -Confirm:$false -HardDelete $true -ErrorAction Stop } | Should -Not -Throw $script:NewUptimeDevice = $null } It 'When given a name, removes the uptime device from LogicMonitor' { if ($script:NewPingDevice) { { Remove-LMUptimeDevice -Name $script:NewPingDevice.name -Confirm:$false -HardDelete $true -ErrorAction Stop } | Should -Not -Throw $script:NewPingDevice = $null } } It 'When given a non-existent name, returns an error' { { Remove-LMUptimeDevice -Name "NonExistentDevice12345" -Confirm:$false -ErrorAction Stop } | Should -Throw } } AfterAll { if ($script:NewUptimeDevice) { try { Remove-LMUptimeDevice -Id $script:NewUptimeDevice.id -Confirm:$false -HardDelete $true -ErrorAction Stop } catch { } } if ($script:NewPingDevice) { try { Remove-LMUptimeDevice -Id $script:NewPingDevice.id -Confirm:$false -HardDelete $true -ErrorAction Stop } catch { } } Disconnect-LMAccount } } |