kitchen-hyperv 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,160 +1,194 @@
1
- . $PSScriptRoot\..\..\support\hyperv.ps1
2
-
3
- describe 'New-DifferencingDisk' {
4
- mock new-vhd -Verifiable -MockWith {}
5
-
6
- context 'mandatory parameters' {
7
- mock Test-Path -MockWith {}
8
-
9
- $command = get-command new-differencingDisk
10
-
11
- it 'Path is mandatory' {
12
- $Command.Parameters['Path'].Attributes.Mandatory | should be $true
13
- }
14
- it 'ParentPath is mandatory' {
15
- $Command.Parameters['ParentPath'].Attributes.Mandatory | should be $true
16
- }
17
- }
18
-
19
- context 'when differencing disk exists' {
20
- mock Test-Path -ParameterFilter {$Path -eq 'c:\.kitchen\diff.vhd'} -MockWith {$true}
21
-
22
- new-differencingDisk -Path 'c:\.kitchen\diff.vhd' -parentpath 'c:\source.vhd'
23
-
24
- it 'does not create a new vhd' {
25
- Assert-MockCalled new-vhd -Times 0
26
- }
27
- }
28
-
29
- context 'when a differencing disk does not exist' {
30
- mock Test-Path -ParameterFilter {$Path -eq 'c:\.kitchen\diff.vhd'} -MockWith {$false}
31
-
32
- new-differencingDisk -Path 'c:\.kitchen\diff.vhd' -parentpath 'c:\source.vhd'
33
-
34
- it 'creates a new differencing disk' {
35
- Assert-MockCalled new-vhd -Times 1 -ParameterFilter {
36
- $Path -eq 'c:\.kitchen\diff.vhd' -and
37
- $ParentPath -eq 'c:\source.vhd' -and
38
- $Differencing -eq $true
39
- }
40
- }
41
- }
42
- }
43
-
44
- Describe "New-KitchenVM with VlanId" {
45
- function New-VM {}
46
- function Set-VM {}
47
- function Set-VMMemory {}
48
- function Set-VMNetworkAdapterVlan {param ($VM, [Switch]$Access, $VlanId)}
49
- function Start-VM {}
50
-
51
- Mock New-VM
52
- Mock Set-VM
53
- Mock Set-VMMemory
54
- Mock Set-VMNetworkAdapterVlan
55
- Mock Start-VM
56
-
57
- Context "When VlanId is not specified" {
58
- New-KitchenVM
59
-
60
- It "Should not set the VlanId for the VM" {
61
- Assert-MockCalled Set-VMNetworkAdapterVlan -Times 0
62
- }
63
- }
64
-
65
- Context "When VlanId is specified" {
66
- $testVlanId = 1
67
- New-KitchenVM -VlanId $testVlanId
68
-
69
- It "Should set the VlanId for the VM" {
70
- Assert-MockCalled Set-VMNetworkAdapterVlan -Times 1 -ParameterFilter {
71
- $VM -eq $null -and
72
- $Access -eq $true -and
73
- $VlanId -eq $testVlanId
74
- }
75
- }
76
- }
77
- }
78
-
79
- Describe "New-KitchenVM with AdditionalDisks" {
80
- function New-VM {}
81
- function Set-VM {}
82
- function Set-VMMemory {}
83
- function Add-VMHardDiskDrive {param ($Path)}
84
- function Start-VM {}
85
-
86
- Mock New-VM
87
- Mock Set-VM
88
- Mock Set-VMMemory
89
- Mock Add-VMHardDiskDrive
90
- Mock Start-VM
91
-
92
- Context "When AdditionalDisks is not specified" {
93
- New-KitchenVM
94
-
95
- It "Should not add additional disks to the VM" {
96
- Assert-MockCalled Add-VMHardDiskDrive -Times 0
97
- }
98
- }
99
-
100
- Context "When AdditionalDisks is specified" {
101
- $AdditionalDisks = @(".\test1.vhd", ".\test2.vhdx")
102
- New-KitchenVM -AdditionalDisks $AdditionalDisks
103
-
104
- It "Should add additinoal disks to the VM" {
105
- Assert-MockCalled Add-VMHardDiskDrive -Times $AdditionalDisks.Count -ParameterFilter {
106
- $VM -eq $null -and
107
- $Path -in $AdditionalDisks
108
- }
109
- }
110
- }
111
- }
112
-
113
- Describe "New-KitchenVM with DisableSecureBoot" {
114
- function New-VM {}
115
- function Set-VM {}
116
- function Set-VMMemory {}
117
- function Set-VMFirmware {param ($EnableSecureBoot)}
118
- function Start-VM {}
119
-
120
- Mock New-VM
121
- Mock Set-VM
122
- Mock Set-VMMemory
123
- Mock Set-VMFirmware
124
- Mock Start-VM
125
-
126
- Context "When DisableSecureBoot is not specified" {
127
- New-KitchenVM
128
-
129
- It "Should not set firmware settings on the VM" {
130
- Assert-MockCalled Set-VMFirmware -Times 0
131
- }
132
- }
133
-
134
- Context "When DisableSecureBoot is False" {
135
- New-KitchenVM -DisableSecureBoot $false
136
-
137
- It "Should not set firmware settings on the VM" {
138
- Assert-MockCalled Set-VMFirmware -Times 0
139
- }
140
- }
141
-
142
- Context "When DisableSecureBoot is True and Generation is 1" {
143
- New-KitchenVM -Generation 1 -DisableSecureBoot $true
144
-
145
- It "Should not set firmware settings on the VM" {
146
- Assert-MockCalled Set-VMFirmware -Times 0
147
- }
148
- }
149
-
150
- Context "When DisableSecureBoot is True and Generation is 2" {
151
- New-KitchenVM -Generation 2 -DisableSecureBoot $true
152
-
153
- It "Should disable secure boot on the VM" {
154
- Assert-MockCalled Set-VMFirmware -Times 1 -ParameterFilter {
155
- $VM -eq $null -and
156
- $EnableSecureBoot -eq "Off"
157
- }
158
- }
159
- }
160
- }
1
+ . $PSScriptRoot\..\..\support\hyperv.ps1
2
+
3
+ describe 'New-DifferencingDisk' {
4
+ mock new-vhd -Verifiable -MockWith {}
5
+
6
+ context 'mandatory parameters' {
7
+ mock Test-Path -MockWith {}
8
+
9
+ $command = get-command new-differencingDisk
10
+
11
+ it 'Path is mandatory' {
12
+ $Command.Parameters['Path'].Attributes.Mandatory | should be $true
13
+ }
14
+ it 'ParentPath is mandatory' {
15
+ $Command.Parameters['ParentPath'].Attributes.Mandatory | should be $true
16
+ }
17
+ }
18
+
19
+ context 'when differencing disk exists' {
20
+ mock Test-Path -ParameterFilter {$Path -eq 'c:\.kitchen\diff.vhd'} -MockWith {$true}
21
+
22
+ new-differencingDisk -Path 'c:\.kitchen\diff.vhd' -parentpath 'c:\source.vhd'
23
+
24
+ it 'does not create a new vhd' {
25
+ Assert-MockCalled new-vhd -Times 0
26
+ }
27
+ }
28
+
29
+ context 'when a differencing disk does not exist' {
30
+ mock Test-Path -ParameterFilter {$Path -eq 'c:\.kitchen\diff.vhd'} -MockWith {$false}
31
+
32
+ new-differencingDisk -Path 'c:\.kitchen\diff.vhd' -parentpath 'c:\source.vhd'
33
+
34
+ it 'creates a new differencing disk' {
35
+ Assert-MockCalled new-vhd -Times 1 -ParameterFilter {
36
+ $Path -eq 'c:\.kitchen\diff.vhd' -and
37
+ $ParentPath -eq 'c:\source.vhd' -and
38
+ $Differencing -eq $true
39
+ }
40
+ }
41
+ }
42
+ }
43
+
44
+ Describe "New-KitchenVM with VlanId" {
45
+ function New-VM {}
46
+ function Set-VM {}
47
+ function Set-VMMemory {}
48
+ function Set-VMNetworkAdapterVlan {param ($VM, [Switch]$Access, $VlanId)}
49
+ function Start-VM {}
50
+
51
+ Mock New-VM
52
+ Mock Set-VM
53
+ Mock Set-VMMemory
54
+ Mock Set-VMNetworkAdapterVlan
55
+ Mock Start-VM
56
+
57
+ Context "When VlanId is not specified" {
58
+ New-KitchenVM
59
+
60
+ It "Should not set the VlanId for the VM" {
61
+ Assert-MockCalled Set-VMNetworkAdapterVlan -Times 0
62
+ }
63
+ }
64
+
65
+ Context "When VlanId is specified" {
66
+ $testVlanId = 1
67
+ New-KitchenVM -VlanId $testVlanId
68
+
69
+ It "Should set the VlanId for the VM" {
70
+ Assert-MockCalled Set-VMNetworkAdapterVlan -Times 1 -ParameterFilter {
71
+ $VM -eq $null -and
72
+ $Access -eq $true -and
73
+ $VlanId -eq $testVlanId
74
+ }
75
+ }
76
+ }
77
+ }
78
+
79
+ Describe "New-KitchenVM with AdditionalDisks" {
80
+ function New-VM {}
81
+ function Set-VM {}
82
+ function Set-VMMemory {}
83
+ function Add-VMHardDiskDrive {param ($Path)}
84
+ function Start-VM {}
85
+
86
+ Mock New-VM
87
+ Mock Set-VM
88
+ Mock Set-VMMemory
89
+ Mock Add-VMHardDiskDrive
90
+ Mock Start-VM
91
+
92
+ Context "When AdditionalDisks is not specified" {
93
+ New-KitchenVM
94
+
95
+ It "Should not add additional disks to the VM" {
96
+ Assert-MockCalled Add-VMHardDiskDrive -Times 0
97
+ }
98
+ }
99
+
100
+ Context "When AdditionalDisks is specified" {
101
+ $AdditionalDisks = @(".\test1.vhd", ".\test2.vhdx")
102
+ New-KitchenVM -AdditionalDisks $AdditionalDisks
103
+
104
+ It "Should add additinoal disks to the VM" {
105
+ Assert-MockCalled Add-VMHardDiskDrive -Times $AdditionalDisks.Count -ParameterFilter {
106
+ $VM -eq $null -and
107
+ $Path -in $AdditionalDisks
108
+ }
109
+ }
110
+ }
111
+ }
112
+
113
+ Describe "New-KitchenVM with DisableSecureBoot" {
114
+ function New-VM {}
115
+ function Set-VM {}
116
+ function Set-VMMemory {}
117
+ function Set-VMFirmware {param ($EnableSecureBoot)}
118
+ function Start-VM {}
119
+
120
+ Mock New-VM
121
+ Mock Set-VM
122
+ Mock Set-VMMemory
123
+ Mock Set-VMFirmware
124
+ Mock Start-VM
125
+
126
+ Context "When DisableSecureBoot is not specified" {
127
+ New-KitchenVM
128
+
129
+ It "Should not set firmware settings on the VM" {
130
+ Assert-MockCalled Set-VMFirmware -Times 0
131
+ }
132
+ }
133
+
134
+ Context "When DisableSecureBoot is False" {
135
+ New-KitchenVM -DisableSecureBoot $false
136
+
137
+ It "Should not set firmware settings on the VM" {
138
+ Assert-MockCalled Set-VMFirmware -Times 0
139
+ }
140
+ }
141
+
142
+ Context "When DisableSecureBoot is True and Generation is 1" {
143
+ New-KitchenVM -Generation 1 -DisableSecureBoot $true
144
+
145
+ It "Should not set firmware settings on the VM" {
146
+ Assert-MockCalled Set-VMFirmware -Times 0
147
+ }
148
+ }
149
+
150
+ Context "When DisableSecureBoot is True and Generation is 2" {
151
+ New-KitchenVM -Generation 2 -DisableSecureBoot $true
152
+
153
+ It "Should disable secure boot on the VM" {
154
+ Assert-MockCalled Set-VMFirmware -Times 1 -ParameterFilter {
155
+ $VM -eq $null -and
156
+ $EnableSecureBoot -eq "Off"
157
+ }
158
+ }
159
+ }
160
+ }
161
+
162
+ Describe "New-KitchenVM with StaticMacAddress" {
163
+ function New-VM {}
164
+ function Set-VM {}
165
+ function Set-VMMemory {}
166
+ function Set-VMNetworkAdapter {param ($VM, $StaticMacAddress)}
167
+ function Start-VM {}
168
+
169
+ Mock New-VM
170
+ Mock Set-VM
171
+ Mock Set-VMMemory
172
+ Mock Set-VMNetworkAdapter
173
+ Mock Start-VM
174
+
175
+ Context "When StaticMacAddress is not specified" {
176
+ New-KitchenVM -StaticMacAddress ""
177
+
178
+ It "Should not set the StaticMacAddress for the VM" {
179
+ Assert-MockCalled Set-VMNetworkAdapter -Times 1
180
+ }
181
+ }
182
+
183
+ Context "When StaticMacAddress is specified" {
184
+ $testStaticMacAddress = "00155D01B532"
185
+ New-KitchenVM -StaticMacAddress $testStaticMacAddress
186
+
187
+ It "Should set the StaticMacAddress for the VM" {
188
+ Assert-MockCalled Set-VMNetworkAdapter -Times 1 -ParameterFilter {
189
+ $VM -eq $VM.VMName -and
190
+ $StaticMacAddress -eq $testStaticMacAddress
191
+ }
192
+ }
193
+ }
194
+ }
@@ -59,6 +59,7 @@ function New-KitchenVM {
59
59
  $Generation = 1,
60
60
  $DisableSecureBoot,
61
61
  $MemoryStartupBytes,
62
+ $StaticMacAddress,
62
63
  $Name,
63
64
  $Path,
64
65
  $VHDPath,
@@ -74,6 +75,7 @@ function New-KitchenVM {
74
75
  )
75
76
  $null = $psboundparameters.remove('DisableSecureBoot')
76
77
  $null = $psboundparameters.remove('ProcessorCount')
78
+ $null = $psboundparameters.remove('StaticMacAddress')
77
79
  $null = $psboundparameters.remove('UseDynamicMemory')
78
80
  $null = $psboundparameters.remove('DynamicMemoryMinBytes')
79
81
  $null = $psboundparameters.remove('DynamicMemoryMaxBytes')
@@ -97,6 +99,9 @@ function New-KitchenVM {
97
99
  if (-not [string]::IsNullOrEmpty($boot_iso_path)) {
98
100
  Mount-VMISO -Id $vm.Id -Path $boot_iso_path
99
101
  }
102
+ if ($StaticMacAddress -ne $null) {
103
+ Set-VMNetworkAdapter -VMName $vm.VMName -StaticMacAddress $StaticMacAddress
104
+ }
100
105
  if ($EnableGuestServices -and (Get-command Enable-VMIntegrationService -ErrorAction SilentlyContinue)) {
101
106
  Enable-VMIntegrationService -VM $vm -Name 'Guest Service Interface'
102
107
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-hyperv
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steven Murawski
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-29 00:00:00.000000000 Z
11
+ date: 2017-07-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -179,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
179
179
  version: '0'
180
180
  requirements: []
181
181
  rubyforge_project:
182
- rubygems_version: 2.6.10
182
+ rubygems_version: 2.6.11
183
183
  signing_key:
184
184
  specification_version: 4
185
185
  summary: Hyper-V Driver for Test-Kitchen