tests/node.tests.ps1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
Get-Module Qlik-Cli | Remove-Module -Force
Import-Module (Resolve-Path "$PSScriptRoot\..\Qlik-Cli.psm1").Path
. (Resolve-Path "$PSScriptRoot\..\resources\node.ps1").Path

Describe "New-QlikNode" {
  Mock Invoke-QlikPost { $script:node = ConvertFrom-Json $body } -Verifiable
  Mock Invoke-QlikGet {}

  Context 'Service activation' {
    It 'should have all services deactivated by default' {
      New-QlikNode `
        -Hostname 'sense-rim.domain.com'

      $node.configuration.engineEnabled | Should BeNullOrEmpty
      $node.configuration.printingEnabled | Should BeNullOrEmpty
      $node.configuration.proxyEnabled | Should BeNullOrEmpty
      $node.configuration.schedulerEnabled | Should BeNullOrEmpty
      $node.configuration.failoverCandidate | Should BeNullOrEmpty

      Assert-VerifiableMock
    }

    It 'should have all services activated when switches are set' {
      New-QlikNode `
        -Hostname 'sense-rim.domain.com' `
        -engineEnabled `
        -printingEnabled `
        -proxyEnabled `
        -schedulerEnabled `
        -failoverCandidate

      $node.configuration.engineEnabled | Should Be $true
      $node.configuration.printingEnabled | Should Be $true
      $node.configuration.proxyEnabled | Should Be $true
      $node.configuration.schedulerEnabled | Should Be $true
      $node.configuration.failoverCandidate | Should Be $true

      Assert-VerifiableMock
    }
  }
}

Describe "Update-QlikNode" {
  Mock Invoke-QlikPut -Verifiable {
    return ConvertFrom-Json $body
  }

  Mock Get-QlikNode -ParameterFilter {
    $id -eq '8eded805-b9d5-49fb-a40f-2f08ee7acbf2'
  } {
    return @{
      id = '8eded805-b9d5-49fb-a40f-2f08ee7acbf2'
      engineEnabled = $true
      printingEnabled = $true
      proxyEnabled = $true
      schedulerEnabled = $true
      failoverCandidate = $true
    }
  }
  Mock Get-QlikNode -ParameterFilter {
    $id -eq 'b55e8ac0-dc74-49a9-8ae2-acda027cc8af'
  } {
    return @{
      id = 'b55e8ac0-dc74-49a9-8ae2-acda027cc8af'
      engineEnabled = $false
      printingEnabled = $false
      proxyEnabled = $false
      schedulerEnabled = $false
      failoverCandidate = $false
    }
  }

  Context 'Service activation' {
    It 'should not change service activation when switches not provided' {
      $node = Update-QlikNode `
        -id '8eded805-b9d5-49fb-a40f-2f08ee7acbf2'

      $node.engineEnabled | Should Be $true
      $node.printingEnabled | Should Be $true
      $node.proxyEnabled | Should Be $true
      $node.schedulerEnabled | Should Be $true
      $node.failoverCandidate | Should Be $true

      Assert-MockCalled Get-QlikNode -ParameterFilter { $id -eq '8eded805-b9d5-49fb-a40f-2f08ee7acbf2' }
    }

    It 'should disable services when switches are set to false' {
      $node = Update-QlikNode `
        -id '8eded805-b9d5-49fb-a40f-2f08ee7acbf2' `
        -engineEnabled:$false `
        -printingEnabled:$false `
        -proxyEnabled:$false `
        -schedulerEnabled:$false `
        -failoverCandidate:$false

      $node.engineEnabled | Should Be $false
      $node.printingEnabled | Should Be $false
      $node.proxyEnabled | Should Be $false
      $node.schedulerEnabled | Should Be $false
      $node.failoverCandidate | Should Be $false

      Assert-MockCalled Get-QlikNode -ParameterFilter { $id -eq '8eded805-b9d5-49fb-a40f-2f08ee7acbf2' }
    }

    It 'should enable services when switches are provided' {
      $node = Update-QlikNode `
        -id 'b55e8ac0-dc74-49a9-8ae2-acda027cc8af' `
        -engineEnabled `
        -printingEnabled `
        -proxyEnabled `
        -schedulerEnabled `
        -failoverCandidate

      $node.engineEnabled | Should Be $true
      $node.printingEnabled | Should Be $true
      $node.proxyEnabled | Should Be $true
      $node.schedulerEnabled | Should Be $true
      $node.failoverCandidate | Should Be $true

      Assert-MockCalled Get-QlikNode -ParameterFilter { $id -eq 'b55e8ac0-dc74-49a9-8ae2-acda027cc8af' }
    }
  }
}