tests/dataconnection.tests.ps1
Get-Module Qlik-Cli | Remove-Module -Force Import-Module (Resolve-Path "$PSScriptRoot\..\Qlik-Cli.psm1").Path . (Resolve-Path "$PSScriptRoot\..\resources\dataconnection.ps1").Path . (Resolve-Path "$PSScriptRoot\..\functions\helper.ps1").Path . (Resolve-Path "$PSScriptRoot\..\resources\tag.ps1").Path . (Resolve-Path "$PSScriptRoot\..\resources\customproperty.ps1").Path Describe "New-QlikDataConnection" { Mock Invoke-QlikPost -Verifiable { return ConvertFrom-Json $body } Context 'Password' { Mock Get-QlikTag { return @(@{ id = '177cf33f-1ace-41e8-8382-1c443a51352d' }) } Mock Get-QlikCustomProperty { return @(@{ id = 'daa5005e-5f3b-45c5-b2fd-1a1c92c5f367' }) } It 'should create a connection with all parameters' { $password = ConvertTo-SecureString -String 'password' -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential("username", $password) $dc = New-QlikDataConnection ` -name 'My Connection' ` -type 'Folder' ` -connectionString 'C:\Data' ` -Credential $credential ` -tags 'testing' ` -customProperties 'environment=development' $dc.name | Should Be 'My Connection' $dc.username | Should Be 'username' $dc.password | Should Be 'password' $dc.connectionString | Should Be 'C:\Data' $dc.type | Should Be 'Folder' $dc.tags | Should -HaveCount 1 $dc.customProperties | Should -HaveCount 1 Assert-VerifiableMock } } } Describe "Update-QlikDataConnection" { Mock Invoke-QlikPut -Verifiable { return ConvertFrom-Json $body } Mock Get-QlikDataConnection -ParameterFilter { $id -eq '158e743b-c59f-490e-900c-b57e66cf8185' } { # return '{"id": "158e743b-c59f-490e-900c-b57e66cf8185", "username": "username", "connectionString": "C:\\Data", "tags": {"id": "1b029edc-9c86-4e01-8c39-a10b1d9c4424"}' | ConvertFrom-Json return @" { "id": "158e743b-c59f-490e-900c-b57e66cf8185", "username": "username", "connectionString": "C:\\Data", "tags": [{ "id": "1b029edc-9c86-4e01-8c39-a10b1d9c4424" }], "customProperties": [{ "id": "a834722d-1306-499e-b028-11454240381b" }] } "@ | ConvertFrom-Json } Context 'Password' { It 'should be updated when a credential is provided' { $password = ConvertTo-SecureString -String 'password' -AsPlainText -Force $credential = New-Object System.Management.Automation.PSCredential("username", $password) $dc = Update-QlikDataConnection ` -id '158e743b-c59f-490e-900c-b57e66cf8185' ` -Credential $credential $dc.password | Should Be 'password' Assert-VerifiableMock } } Context 'ConnectionString' { It 'should be updated when provided' { $dc = Update-QlikDataConnection ` -id '158e743b-c59f-490e-900c-b57e66cf8185' ` -connectionString 'C:\QlikSense' $dc.connectionString | Should Be 'C:\QlikSense' Assert-VerifiableMock } It 'should not change when parameter is not specified' { $dc = Update-QlikDataConnection ` -id '158e743b-c59f-490e-900c-b57e66cf8185' $dc.connectionString | Should Be 'C:\Data' Assert-VerifiableMock } } Context 'tags' { Mock Get-QlikTag { return $null } It 'should be possible to remove all tags' { $dc = Update-QlikDataConnection ` -id '158e743b-c59f-490e-900c-b57e66cf8185' ` -tags $null $dc.tags | Should -BeNullOrEmpty Assert-VerifiableMock } It 'should not remove tags if parameter not provided' { $dc = Update-QlikDataConnection ` -id '158e743b-c59f-490e-900c-b57e66cf8185' $dc.tags | Should -HaveCount 1 Assert-VerifiableMock } } Context 'custom property' { Mock Get-QlikCustomProperty { return $null } It 'should be possible to remove all custom properties' { $dc = Update-QlikDataConnection ` -id '158e743b-c59f-490e-900c-b57e66cf8185' ` -customProperties $null $dc.customProperties | Should -BeNullOrEmpty Assert-VerifiableMock } It 'should not remove custom properties if parameter not provided' { $dc = Update-QlikDataConnection ` -id '158e743b-c59f-490e-900c-b57e66cf8185' $dc.customProperties | Should -HaveCount 1 Assert-VerifiableMock } } } |