Tests/Integration/Arcade.Test1s.ps1
$modulePath = Resolve-Path -Path "$PSScriptRoot\..\..\.." | Select-Object -ExpandProperty Path $moduleName = Resolve-Path -Path "$PSScriptRoot\..\.." | Get-Item | Select-Object -ExpandProperty BaseName Remove-Module -Name $moduleName -Force -ErrorAction SilentlyContinue Import-Module -Name "$modulePath\$moduleName" -Force Describe 'Arcade' { Context 'Session' { It 'Should not return the adb session' { # Act $actual = Adb\Get-AdbSession # Assert $actual | Should -BeNullOrEmpty } It 'Should conncet to the adb server' { # Arrange $uri = 'https://adb-test.arcade.ch' $credential = Use-VaultCredential -TargetName $uri # Act $actual = Adb\Connect-AdbServer -Uri $uri -Credential $credential -PassThru # Assert $actual.PSObject.TypeNames[0] | Should -Be 'Adb.Session' $actual.Type | Should -Be 'Credential' $actual.Uri | Should -Be "$uri/api/v1" $actual.Token | Should -Not -BeNullOrEmpty } It 'Should return the adb session' { # Arrange $uri = 'https://adb-test.arcade.ch' # Act $actual = Adb\Get-AdbSession # Assert $actual.PSObject.TypeNames[0] | Should -Be 'Adb.Session' $actual.Type | Should -Be 'Credential' $actual.Uri | Should -Be "$uri/api/v1" $actual.Token | Should -Not -BeNullOrEmpty } It 'Should disconnect from the adb server' { # Act & Assert { Adb\Disconnect-AdbServer } | Should -Not -Throw } } Context 'User' { BeforeAll { $uri = 'https://adb-test.arcade.ch' $credential = Use-VaultCredential -TargetName $uri Adb\Connect-AdbServer -Uri $uri -Credential $credential } AfterAll { Adb\Disconnect-AdbServer } It 'Should return the correct user' { # Arrange $expectedUser = $credential.UserName # Act $actual = Adb\Get-AdbUser # Assert $actual.User | Should -Be $expectedUser $actual.Role[0] | Should -Be 'admin' } } Context 'Item' { $namePipeline = 't_{0}' -f [System.Guid]::NewGuid() $nameParameter = 't_{0}' -f [System.Guid]::NewGuid() BeforeAll { $uri = 'https://adb-test.arcade.ch' $credential = Use-VaultCredential -TargetName $uri Adb\Connect-AdbServer -Uri $uri -Credential $credential } AfterAll { Adb\Disconnect-AdbServer } It 'Should create and return an item piped via pipeline' { # Act Adb\New-AdbResource -Type 'Item' -Resource @{ name = $namePipeline } $actual = Adb\Get-AdbItem -Name $namePipeline # Assert $actual.name | Should -Be $namePipeline } It 'Should create and return an item specified via parameter' { # Act Adb\New-AdbResource -Type 'Item' -Resource @{ name = $nameParameter } $actual = Adb\Get-AdbItem -Name $nameParameter # Assert $actual.name | Should -Be $nameParameter } It 'Should update the pipeline item' { # Act $item = Adb\Get-AdbItem -Name $namePipeline $item.properties | Add-Member 'demo' 'foo bar' $item | Adb\Set-AdbResource $actual = Adb\Get-AdbItem -Name $namePipeline # Assert $actual.name | Should -Be $namePipeline $actual.properties.net_ipaddress | Should -Be 'foo bar' } It 'Should update the parameter item' { } It 'Should create and delete an item specified via paramter' { # Act Adb\New-AdbResource -Type 'Item' -Resource @{ name = $nameParameter } $actual = Adb\Get-AdbItem -Name $nameParameter Adb\Remove-AdbResource -Name $nameParameter -Type 'Item' # Assert $actual.name | Should -Be $nameParameter { Adb\Get-AdbItem -Name $nameParameter } | Should -Throw } It 'Should create and delete an item piped via pipeline' { # Arrange $name = 'z_test_{0}' -f [System.Guid]::NewGuid() # Act New-AdbResource -Type 'Item' -Resource @{ name = $name } $actual = Adb\Get-AdbItem -Name $name Adb\Get-AdbItem -Name $name | Adb\Remove-AdbResource # Assert $actual.name | Should -Be $name { Adb\Get-AdbItem -Name $name } | Should -Throw } } Context 'Validation' { BeforeAll { $uri = 'https://adb-test.arcade.ch' $credential = Use-VaultCredential -TargetName $uri Adb\Connect-AdbServer -Uri $uri -Credential $credential } AfterAll { Adb\Disconnect-AdbServer } It 'Should validate a valid object and return a result object' { # Act $actual = Adb\Test-AdbItemValidation -Template 'g_customer' -Name 'g_customer_lab' # Assert $actual.Result | Should -BeTrue $actual.Message | Should -BeNullOrEmpty } It 'Should validate a valid object and return nothing' { # Act & Assert { Adb\Test-AdbItemValidation -Template 'g_customer' -Name 'g_customer_lab' -Quiet } | Should -Not -Throw } It 'Should return an error for a invalid objectand return a result object' { # Act $actual = Adb\Test-AdbItemValidation -Template 'g_customer' -Name 'c_automation' # Assert $actual.Result | Should -BeFalse $actual.Message | Should -Be 'path ".name": should match pattern "^g_customer_.*$", path ".properties": should have required property ''customer'', path ".properties": should have required property ''customer_short''' } It 'Should return an error for a invalid object' { # Act & Assert { Adb\Test-AdbItemValidation -Template 'g_customer' -Name 'c_automation' -Quiet } | Should -Throw } } } |