test-kitchen 1.23.3 → 1.23.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. checksums.yaml +4 -4
  2. data/lib/kitchen/version.rb +1 -1
  3. data/support/chef-client-zero.rb +1 -1
  4. metadata +5 -324
  5. data/.gitattributes +0 -3
  6. data/.github/ISSUE_TEMPLATE.md +0 -56
  7. data/.github/lock.yml +0 -1
  8. data/.gitignore +0 -38
  9. data/.gitmodules +0 -0
  10. data/.kitchen.appveyor.yml +0 -25
  11. data/.kitchen.dokken.yml +0 -31
  12. data/.kitchen.proxy.yml +0 -27
  13. data/.rubocop.yml +0 -5
  14. data/.travis.yml +0 -57
  15. data/.yardopts +0 -3
  16. data/Berksfile +0 -3
  17. data/CHANGELOG.md +0 -1510
  18. data/CONTRIBUTING.md +0 -14
  19. data/ECOSYSTEM.md +0 -93
  20. data/Gemfile +0 -40
  21. data/Gemfile.proxy_tests +0 -4
  22. data/Guardfile +0 -42
  23. data/MAINTAINERS.md +0 -29
  24. data/README.md +0 -138
  25. data/RELEASE_NOTES.md +0 -167
  26. data/Rakefile +0 -77
  27. data/appveyor.yml +0 -47
  28. data/docs/CONTRIBUTING.md +0 -8
  29. data/docs/LICENSE +0 -22
  30. data/docs/README.md +0 -78
  31. data/docs/archetypes/default.md +0 -6
  32. data/docs/config.toml +0 -36
  33. data/docs/content/docs/_index.md +0 -5
  34. data/docs/content/docs/drivers/_index.md +0 -27
  35. data/docs/content/docs/drivers/azurerm.md +0 -44
  36. data/docs/content/docs/drivers/vagrant.md +0 -39
  37. data/docs/content/docs/getting-started/00-introduction.md +0 -14
  38. data/docs/content/docs/getting-started/01-installing.md +0 -64
  39. data/docs/content/docs/getting-started/02-getting-help.md +0 -59
  40. data/docs/content/docs/getting-started/03-creating-cookbook.md +0 -46
  41. data/docs/content/docs/getting-started/04-kitchen-yml.md +0 -56
  42. data/docs/content/docs/getting-started/05-instances.md +0 -79
  43. data/docs/content/docs/getting-started/06-writing-recipe.md +0 -21
  44. data/docs/content/docs/getting-started/07-running-converge.md +0 -134
  45. data/docs/content/docs/getting-started/08-manually-verifying.md +0 -55
  46. data/docs/content/docs/getting-started/09-writing-test.md +0 -49
  47. data/docs/content/docs/getting-started/10-running-verify.md +0 -120
  48. data/docs/content/docs/getting-started/11-running-test.md +0 -168
  49. data/docs/content/docs/getting-started/12-adding-platform.md +0 -206
  50. data/docs/content/docs/getting-started/13-adding-feature.md +0 -30
  51. data/docs/content/docs/getting-started/14-adding-suite.md +0 -60
  52. data/docs/content/docs/getting-started/15-adding-test.md +0 -66
  53. data/docs/content/docs/getting-started/16-adding-recipe.md +0 -53
  54. data/docs/content/docs/getting-started/17-excluding-platforms.md +0 -101
  55. data/docs/content/docs/getting-started/18-next-steps.md +0 -23
  56. data/docs/content/docs/getting-started/_index.md +0 -5
  57. data/docs/content/docs/provisioners/_index.md +0 -36
  58. data/docs/content/docs/provisioners/chef.md +0 -69
  59. data/docs/content/docs/provisioners/shell.md +0 -31
  60. data/docs/content/docs/reference/_index.md +0 -5
  61. data/docs/content/docs/reference/configuration.md +0 -53
  62. data/docs/content/docs/reference/examples.md +0 -97
  63. data/docs/content/docs/reference/faq.md +0 -58
  64. data/docs/content/docs/reference/fixtures.md +0 -32
  65. data/docs/content/docs/reference/glossary.md +0 -34
  66. data/docs/content/docs/reference/lifecycle-hooks.md +0 -68
  67. data/docs/content/docs/reference/reboots.md +0 -24
  68. data/docs/content/docs/verifiers/_index.md +0 -14
  69. data/docs/content/docs/verifiers/inspec.md +0 -44
  70. data/docs/content/docs/verifiers/serverspec.md +0 -20
  71. data/docs/static/images/chef-logo.png +0 -0
  72. data/docs/static/images/chef-logo.svg +0 -1
  73. data/docs/static/images/github-banner.png +0 -0
  74. data/docs/static/images/github-banner.svg +0 -71
  75. data/docs/static/images/kitchen-logo.png +0 -0
  76. data/docs/static/images/logo-block.svg +0 -222
  77. data/docs/static/images/logo.png +0 -0
  78. data/docs/static/images/logos-group.png +0 -0
  79. data/docs/static/images/terminal-1.png +0 -0
  80. data/docs/static/images/terminal-1.svg +0 -589
  81. data/docs/static/images/terminal-2.png +0 -0
  82. data/docs/static/images/terminal-2.svg +0 -235
  83. data/docs/static/images/terminal-3.png +0 -0
  84. data/docs/static/images/terminal-3.svg +0 -439
  85. data/docs/static/index.html +0 -59
  86. data/docs/static/javascripts/all.js +0 -348
  87. data/docs/static/javascripts/vendor/foundation.min.js +0 -4
  88. data/docs/static/javascripts/vendor/jquery.min.js +0 -5
  89. data/docs/static/javascripts/vendor/what-input.js +0 -336
  90. data/docs/static/stylesheets/site.css +0 -4667
  91. data/docs/themes/kitchen/layouts/_default/baseof.html +0 -53
  92. data/docs/themes/kitchen/layouts/_default/list.html +0 -4
  93. data/docs/themes/kitchen/layouts/_default/redirect.html +0 -10
  94. data/docs/themes/kitchen/layouts/_default/single.html +0 -6
  95. data/docs/themes/kitchen/layouts/partials/core/head.html +0 -6
  96. data/docs/themes/kitchen/layouts/partials/kitchen/footer.html +0 -18
  97. data/docs/themes/kitchen/layouts/partials/kitchen/head.html +0 -4
  98. data/docs/themes/kitchen/layouts/partials/kitchen/header.html +0 -26
  99. data/docs/themes/kitchen/layouts/partials/search-docs.html +0 -3
  100. data/docs/themes/kitchen/layouts/partials/sidebar.html +0 -33
  101. data/docs/themes/kitchen/layouts/shortcodes/button.html +0 -1
  102. data/docs/themes/kitchen/layouts/shortcodes/codeblock.html +0 -8
  103. data/docs/themes/kitchen/layouts/shortcodes/cta.html +0 -5
  104. data/docs/themes/kitchen/layouts/shortcodes/danger.html +0 -1
  105. data/docs/themes/kitchen/layouts/shortcodes/example_fqdn.html +0 -1
  106. data/docs/themes/kitchen/layouts/shortcodes/info.html +0 -1
  107. data/docs/themes/kitchen/layouts/shortcodes/ol-styled.html +0 -3
  108. data/docs/themes/kitchen/layouts/shortcodes/success.html +0 -1
  109. data/docs/themes/kitchen/layouts/shortcodes/tip.html +0 -1
  110. data/docs/themes/kitchen/layouts/shortcodes/warning.html +0 -1
  111. data/docs/themes/kitchen/static/css/kitchen.css +0 -10
  112. data/docs/themes/kitchen/static/css/kitchen.css.map +0 -7
  113. data/docs/themes/kitchen/static/fonts/Muli-Bold.ttf +0 -0
  114. data/docs/themes/kitchen/static/fonts/Muli-Regular.ttf +0 -0
  115. data/docs/themes/kitchen/static/fonts/Muli-SemiBold.ttf +0 -0
  116. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.eot +0 -0
  117. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.svg +0 -1104
  118. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.ttf +0 -0
  119. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.woff +0 -0
  120. data/docs/themes/kitchen/static/fonts/fontawesome/fa-brands-400.woff2 +0 -0
  121. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.eot +0 -0
  122. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.svg +0 -372
  123. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.ttf +0 -0
  124. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.woff +0 -0
  125. data/docs/themes/kitchen/static/fonts/fontawesome/fa-regular-400.woff2 +0 -0
  126. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.eot +0 -0
  127. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.svg +0 -1896
  128. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.ttf +0 -0
  129. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.woff +0 -0
  130. data/docs/themes/kitchen/static/fonts/fontawesome/fa-solid-900.woff2 +0 -0
  131. data/docs/themes/kitchen/static/images/chef-logo-light.svg +0 -36
  132. data/docs/themes/kitchen/static/images/chef-logo-white.svg +0 -38
  133. data/docs/themes/kitchen/static/images/chef-logo.svg +0 -37
  134. data/docs/themes/kitchen/static/images/favicon.ico +0 -0
  135. data/docs/themes/kitchen/static/js/scripts-all.js +0 -7
  136. data/docs/themes/kitchen/static/js/source/chef-hugo.js +0 -116
  137. data/docs/themes/kitchen/static/js/source/omnitruck.js +0 -82
  138. data/docs/themes/kitchen/static/js/source/segment.js +0 -52
  139. data/docs/themes/kitchen/static/sass/_buttons.scss +0 -161
  140. data/docs/themes/kitchen/static/sass/_core.scss +0 -24
  141. data/docs/themes/kitchen/static/sass/_forms.scss +0 -14
  142. data/docs/themes/kitchen/static/sass/_mixins.scss +0 -133
  143. data/docs/themes/kitchen/static/sass/_typography.scss +0 -34
  144. data/docs/themes/kitchen/static/sass/_variables.scss +0 -82
  145. data/docs/themes/kitchen/static/sass/kitchen.scss +0 -7
  146. data/docs/themes/kitchen/static/sass/kitchen/_footer.scss +0 -50
  147. data/docs/themes/kitchen/static/sass/kitchen/_header.scss +0 -187
  148. data/docs/themes/kitchen/static/sass/kitchen/_homepage.scss +0 -27
  149. data/docs/themes/kitchen/static/sass/kitchen/_utility-bar.scss +0 -173
  150. data/docs/themes/kitchen/static/sass/partials/_alerts.scss +0 -32
  151. data/docs/themes/kitchen/static/sass/partials/_bg.scss +0 -19
  152. data/docs/themes/kitchen/static/sass/partials/_blurbs.scss +0 -25
  153. data/docs/themes/kitchen/static/sass/partials/_callout.scss +0 -15
  154. data/docs/themes/kitchen/static/sass/partials/_cards.scss +0 -54
  155. data/docs/themes/kitchen/static/sass/partials/_dropdown.scss +0 -77
  156. data/docs/themes/kitchen/static/sass/partials/_grid.scss +0 -87
  157. data/docs/themes/kitchen/static/sass/partials/_padding.scss +0 -73
  158. data/docs/themes/kitchen/static/sass/partials/_sidebar.scss +0 -71
  159. data/docs/themes/kitchen/static/sass/partials/_tabs.scss +0 -125
  160. data/docs/themes/kitchen/static/sass/typography/_chroma.scss +0 -366
  161. data/docs/themes/kitchen/static/sass/typography/_code.scss +0 -72
  162. data/docs/themes/kitchen/static/sass/typography/_headers.scss +0 -90
  163. data/docs/themes/kitchen/static/sass/typography/_links.scss +0 -127
  164. data/docs/themes/kitchen/static/sass/typography/_lists.scss +0 -155
  165. data/docs/themes/kitchen/static/sass/typography/_prose.scss +0 -29
  166. data/docs/themes/kitchen/static/sass/typography/_text.scss +0 -221
  167. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_animated.scss +0 -20
  168. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_bordered-pulled.scss +0 -20
  169. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_core.scss +0 -16
  170. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_fixed-width.scss +0 -6
  171. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_icons.scss +0 -992
  172. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_larger.scss +0 -23
  173. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_list.scss +0 -18
  174. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_mixins.scss +0 -57
  175. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_rotated-flipped.scss +0 -23
  176. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_screen-reader.scss +0 -5
  177. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_stacked.scss +0 -31
  178. data/docs/themes/kitchen/static/sass/vendor/fontawesome/_variables.scss +0 -1005
  179. data/docs/themes/kitchen/static/sass/vendor/fontawesome/fa-brands.scss +0 -21
  180. data/docs/themes/kitchen/static/sass/vendor/fontawesome/fa-regular.scss +0 -22
  181. data/docs/themes/kitchen/static/sass/vendor/fontawesome/fa-solid.scss +0 -23
  182. data/docs/themes/kitchen/static/sass/vendor/fontawesome/fontawesome.scss +0 -16
  183. data/docs/themes/kitchen/theme.toml +0 -8
  184. data/features/kitchen_action_commands.feature +0 -164
  185. data/features/kitchen_command.feature +0 -16
  186. data/features/kitchen_console_command.feature +0 -35
  187. data/features/kitchen_defaults.feature +0 -38
  188. data/features/kitchen_diagnose_command.feature +0 -96
  189. data/features/kitchen_help_command.feature +0 -16
  190. data/features/kitchen_init_command.feature +0 -254
  191. data/features/kitchen_list_command.feature +0 -140
  192. data/features/kitchen_login_command.feature +0 -62
  193. data/features/kitchen_sink_command.feature +0 -30
  194. data/features/kitchen_test_command.feature +0 -88
  195. data/features/step_definitions/gem_steps.rb +0 -24
  196. data/features/step_definitions/git_steps.rb +0 -5
  197. data/features/step_definitions/output_steps.rb +0 -5
  198. data/features/support/env.rb +0 -74
  199. data/spec/kitchen/base64_stream_spec.rb +0 -74
  200. data/spec/kitchen/cli_spec.rb +0 -54
  201. data/spec/kitchen/collection_spec.rb +0 -76
  202. data/spec/kitchen/color_spec.rb +0 -51
  203. data/spec/kitchen/config_spec.rb +0 -434
  204. data/spec/kitchen/configurable_spec.rb +0 -1113
  205. data/spec/kitchen/data_munger_spec.rb +0 -2800
  206. data/spec/kitchen/diagnostic_spec.rb +0 -128
  207. data/spec/kitchen/driver/base_spec.rb +0 -132
  208. data/spec/kitchen/driver/dummy_spec.rb +0 -193
  209. data/spec/kitchen/driver/exec_spec.rb +0 -75
  210. data/spec/kitchen/driver/proxy_spec.rb +0 -127
  211. data/spec/kitchen/driver/ssh_base_spec.rb +0 -1136
  212. data/spec/kitchen/driver_spec.rb +0 -106
  213. data/spec/kitchen/errors_spec.rb +0 -317
  214. data/spec/kitchen/instance_spec.rb +0 -1372
  215. data/spec/kitchen/lazy_hash_spec.rb +0 -113
  216. data/spec/kitchen/lifecycle_hooks_spec.rb +0 -171
  217. data/spec/kitchen/loader/yaml_spec.rb +0 -787
  218. data/spec/kitchen/logger_spec.rb +0 -425
  219. data/spec/kitchen/logging_spec.rb +0 -56
  220. data/spec/kitchen/login_command_spec.rb +0 -67
  221. data/spec/kitchen/metadata_chopper_spec.rb +0 -79
  222. data/spec/kitchen/platform_spec.rb +0 -88
  223. data/spec/kitchen/provisioner/base_spec.rb +0 -393
  224. data/spec/kitchen/provisioner/chef/policyfile_spec.rb +0 -140
  225. data/spec/kitchen/provisioner/chef_apply_spec.rb +0 -131
  226. data/spec/kitchen/provisioner/chef_base_spec.rb +0 -1565
  227. data/spec/kitchen/provisioner/chef_solo_spec.rb +0 -602
  228. data/spec/kitchen/provisioner/chef_zero_spec.rb +0 -1013
  229. data/spec/kitchen/provisioner/dummy_spec.rb +0 -96
  230. data/spec/kitchen/provisioner/shell_spec.rb +0 -623
  231. data/spec/kitchen/provisioner_spec.rb +0 -101
  232. data/spec/kitchen/shell_out_spec.rb +0 -146
  233. data/spec/kitchen/ssh_spec.rb +0 -584
  234. data/spec/kitchen/state_file_spec.rb +0 -122
  235. data/spec/kitchen/suite_spec.rb +0 -61
  236. data/spec/kitchen/transport/base_spec.rb +0 -140
  237. data/spec/kitchen/transport/exec_spec.rb +0 -79
  238. data/spec/kitchen/transport/ssh_spec.rb +0 -1317
  239. data/spec/kitchen/transport/winrm_spec.rb +0 -1320
  240. data/spec/kitchen/transport_spec.rb +0 -106
  241. data/spec/kitchen/util_spec.rb +0 -250
  242. data/spec/kitchen/verifier/base_spec.rb +0 -346
  243. data/spec/kitchen/verifier/busser_spec.rb +0 -580
  244. data/spec/kitchen/verifier/dummy_spec.rb +0 -96
  245. data/spec/kitchen/verifier/shell_spec.rb +0 -157
  246. data/spec/kitchen/verifier_spec.rb +0 -114
  247. data/spec/kitchen_spec.rb +0 -112
  248. data/spec/spec_helper.rb +0 -110
  249. data/spec/support/powershell_max_size_spec.rb +0 -39
  250. data/test-kitchen.gemspec +0 -49
  251. data/test/cookbooks/test_cookbook/metadata.rb +0 -6
  252. data/test/cookbooks/test_cookbook/recipes/default.rb +0 -1
  253. data/test/integration/default/default_spec.rb +0 -3
  254. data/testing_windows.md +0 -38
@@ -1,2800 +0,0 @@
1
- # -*- encoding: utf-8 -*-
2
- #
3
- # Author:: Fletcher Nichol (<fnichol@nichol.ca>)
4
- #
5
- # Copyright (C) 2013, Fletcher Nichol
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
-
19
- require_relative "../spec_helper"
20
-
21
- require "kitchen/data_munger"
22
-
23
- module Kitchen # rubocop:disable Metrics/ModuleLength
24
- describe DataMunger do
25
- describe "#platform_data" do
26
- it "returns an array of platform data" do
27
- DataMunger.new(
28
- platforms: [
29
- {
30
- name: "one",
31
- stuff: "junk",
32
- },
33
- {
34
- name: "two",
35
- misc: "things",
36
- },
37
- ]
38
- ).platform_data.must_equal([
39
- {
40
- name: "one",
41
- stuff: "junk",
42
- },
43
- {
44
- name: "two",
45
- misc: "things",
46
- },
47
- ])
48
- end
49
-
50
- it "returns an empty array if platforms is not defined" do
51
- DataMunger.new({}).platform_data.must_equal([])
52
- end
53
- end
54
-
55
- describe "#suite_data" do
56
- it "returns an array of suite data" do
57
- DataMunger.new(
58
- suites: [
59
- {
60
- name: "one",
61
- stuff: "junk",
62
- },
63
- {
64
- name: "two",
65
- misc: "things",
66
- },
67
- ]
68
- ).suite_data.must_equal([
69
- {
70
- name: "one",
71
- stuff: "junk",
72
- },
73
- {
74
- name: "two",
75
- misc: "things",
76
- },
77
- ])
78
- end
79
-
80
- it "returns an empty array if suites is not defined" do
81
- DataMunger.new({}).suite_data.must_equal([])
82
- end
83
- end
84
-
85
- DATA_KEYS = {
86
- driver: :name,
87
- provisioner: :name,
88
- transport: :name,
89
- verifier: :name,
90
- }.freeze
91
-
92
- DATA_KEYS.each_pair do |key, default_key|
93
- describe "##{key}" do
94
- describe "from single source" do
95
- it "returns empty hash if no common #{key} hash is provided" do
96
- DataMunger.new(
97
- {},
98
- {}
99
- ).public_send("#{key}_data_for", "suite", "platform").must_equal({})
100
- end
101
-
102
- it "drops common #{key} if hash is nil" do
103
- DataMunger.new(
104
- {
105
- key => nil,
106
- },
107
- {}
108
- ).public_send("#{key}_data_for", "suite", "plat").must_equal({})
109
- end
110
-
111
- it "returns kitchen config #{key} name" do
112
- DataMunger.new(
113
- {},
114
- defaults: {
115
- key => "thenoseknows",
116
- }
117
- ).public_send("#{key}_data_for", "suite", "platform").must_equal(
118
- default_key => "thenoseknows"
119
- )
120
- end
121
-
122
- it "returns kitchen config #{key} name from callable" do
123
- DataMunger.new(
124
- {},
125
- defaults: {
126
- key => ->(suite, platform) { "#{suite}++#{platform}" },
127
- }
128
- ).public_send("#{key}_data_for", "suite", "platform").must_equal(
129
- default_key => "suite++platform"
130
- )
131
- end
132
-
133
- it "returns common #{key} name" do
134
- DataMunger.new(
135
- {
136
- key => "starship",
137
- },
138
- {}
139
- ).public_send("#{key}_data_for", "suite", "platform").must_equal(
140
- default_key => "starship"
141
- )
142
- end
143
-
144
- it "returns common #{key} config" do
145
- DataMunger.new(
146
- {
147
- key => {
148
- default_key => "starship",
149
- :speed => 42,
150
- },
151
- },
152
- {}
153
- ).public_send("#{key}_data_for", "suite", "platform").must_equal(
154
- default_key => "starship",
155
- :speed => 42
156
- )
157
- end
158
-
159
- it "returns empty hash if platform config doesn't have #{key} hash" do
160
- DataMunger.new(
161
- {
162
- platforms: [
163
- { name: "plat" },
164
- ],
165
- },
166
- {}
167
- ).public_send("#{key}_data_for", "suite", "plat").must_equal({})
168
- end
169
-
170
- it "drops platform #{key} if hash is nil" do
171
- DataMunger.new(
172
- {
173
- platforms: [
174
- {
175
- :name => "plat",
176
- key => nil,
177
- },
178
- ],
179
- },
180
- {}
181
- ).public_send("#{key}_data_for", "suite", "plat").must_equal({})
182
- end
183
-
184
- it "returns platform #{key} name" do
185
- DataMunger.new(
186
- {
187
- platforms: [
188
- {
189
- :name => "plat",
190
- key => "flip",
191
- },
192
- ],
193
- },
194
- {}
195
- ).public_send("#{key}_data_for", "suite", "plat").must_equal(
196
- default_key => "flip"
197
- )
198
- end
199
-
200
- it "returns platform config containing #{key} hash" do
201
- DataMunger.new(
202
- {
203
- platforms: [
204
- {
205
- :name => "plat",
206
- key => {
207
- default_key => "flip",
208
- :flop => "yep",
209
- },
210
- },
211
- ],
212
- },
213
- {}
214
- ).public_send("#{key}_data_for", "suite", "plat").must_equal(
215
- default_key => "flip",
216
- :flop => "yep"
217
- )
218
- end
219
-
220
- it "returns empty hash if suite config doesn't have #{key} hash" do
221
- DataMunger.new(
222
- {
223
- suites: [
224
- { name: "sweet" },
225
- ],
226
- },
227
- {}
228
- ).public_send("#{key}_data_for", "sweet", "platform").must_equal({})
229
- end
230
-
231
- it "drops suite #{key} hash is nil" do
232
- DataMunger.new(
233
- {
234
- suites: [
235
- {
236
- :name => "suite",
237
- key => nil,
238
- },
239
- ],
240
- },
241
- {}
242
- ).public_send("#{key}_data_for", "suite", "plat").must_equal({})
243
- end
244
-
245
- it "returns suite #{key} name" do
246
- DataMunger.new(
247
- {
248
- suites: [
249
- {
250
- :name => "sweet",
251
- key => "waz",
252
- },
253
- ],
254
- },
255
- {}
256
- ).public_send("#{key}_data_for", "sweet", "platform").must_equal(
257
- default_key => "waz"
258
- )
259
- end
260
-
261
- it "returns suite config containing #{key} hash" do
262
- DataMunger.new(
263
- {
264
- suites: [
265
- {
266
- :name => "sweet",
267
- key => {
268
- default_key => "waz",
269
- :up => "nope",
270
- },
271
- },
272
- ],
273
- },
274
- {}
275
- ).public_send("#{key}_data_for", "sweet", "platform").must_equal(
276
- default_key => "waz",
277
- :up => "nope"
278
- )
279
- end
280
- end
281
-
282
- describe "from multiple sources merging" do
283
- it "suite into platform into common" do
284
- DataMunger.new(
285
- {
286
- key => {
287
- default_key => "commony",
288
- :color => "purple",
289
- :fruit => %w{apple pear},
290
- :deep => { common: "junk" },
291
- },
292
- :platforms => [
293
- {
294
- :name => "plat",
295
- key => {
296
- default_key => "platformy",
297
- :fruit => ["banana"],
298
- :deep => { platform: "stuff" },
299
- },
300
- },
301
- ],
302
- :suites => [
303
- {
304
- :name => "sweet",
305
- key => {
306
- default_key => "suitey",
307
- :vehicle => "car",
308
- :deep => { suite: "things" },
309
- },
310
- },
311
- ],
312
- },
313
- {}
314
- ).public_send("#{key}_data_for", "sweet", "plat").must_equal(
315
- default_key => "suitey",
316
- :color => "purple",
317
- :fruit => ["banana"],
318
- :vehicle => "car",
319
- :deep => {
320
- common: "junk",
321
- platform: "stuff",
322
- suite: "things",
323
- }
324
- )
325
- end
326
-
327
- it "platform into common" do
328
- DataMunger.new(
329
- {
330
- key => {
331
- default_key => "commony",
332
- :color => "purple",
333
- :fruit => %w{apple pear},
334
- :deep => { common: "junk" },
335
- },
336
- :platforms => [
337
- {
338
- :name => "plat",
339
- key => {
340
- default_key => "platformy",
341
- :fruit => ["banana"],
342
- :deep => { platform: "stuff" },
343
- },
344
- },
345
- ],
346
- },
347
- {}
348
- ).public_send("#{key}_data_for", "sweet", "plat").must_equal(
349
- default_key => "platformy",
350
- :color => "purple",
351
- :fruit => ["banana"],
352
- :deep => {
353
- common: "junk",
354
- platform: "stuff",
355
- }
356
- )
357
- end
358
-
359
- it "suite into common" do
360
- DataMunger.new(
361
- {
362
- key => {
363
- default_key => "commony",
364
- :color => "purple",
365
- :fruit => %w{apple pear},
366
- :deep => { common: "junk" },
367
- },
368
- :suites => [
369
- {
370
- :name => "sweet",
371
- key => {
372
- default_key => "suitey",
373
- :vehicle => "car",
374
- :deep => { suite: "things" },
375
- },
376
- },
377
- ],
378
- },
379
- {}
380
- ).public_send("#{key}_data_for", "sweet", "plat").must_equal(
381
- default_key => "suitey",
382
- :color => "purple",
383
- :fruit => %w{apple pear},
384
- :vehicle => "car",
385
- :deep => {
386
- common: "junk",
387
- suite: "things",
388
- }
389
- )
390
- end
391
-
392
- it "suite into platform" do
393
- DataMunger.new(
394
- {
395
- platforms: [
396
- {
397
- :name => "plat",
398
- key => {
399
- default_key => "platformy",
400
- :fruit => ["banana"],
401
- :deep => { platform: "stuff" },
402
- },
403
- },
404
- ],
405
- suites: [
406
- {
407
- :name => "sweet",
408
- key => {
409
- default_key => "suitey",
410
- :vehicle => "car",
411
- :deep => { suite: "things" },
412
- },
413
- },
414
- ],
415
- },
416
- {}
417
- ).public_send("#{key}_data_for", "sweet", "plat").must_equal(
418
- default_key => "suitey",
419
- :fruit => ["banana"],
420
- :vehicle => "car",
421
- :deep => {
422
- platform: "stuff",
423
- suite: "things",
424
- }
425
- )
426
- end
427
- end
428
- end
429
- end
430
-
431
- describe "primary Chef data" do
432
- describe "in a suite" do
433
- it "moves attributes into provisioner" do
434
- DataMunger.new(
435
- {
436
- provisioner: "chefy",
437
- suites: [
438
- {
439
- name: "sweet",
440
- attributes: { one: "two" },
441
- },
442
- ],
443
- },
444
- {}
445
- ).provisioner_data_for("sweet", "plat").must_equal(
446
- name: "chefy",
447
- attributes: { one: "two" }
448
- )
449
- end
450
-
451
- it "moves run_list into provisioner" do
452
- DataMunger.new(
453
- {
454
- provisioner: "chefy",
455
- suites: [
456
- {
457
- name: "sweet",
458
- run_list: %w{one two},
459
- },
460
- ],
461
- },
462
- {}
463
- ).provisioner_data_for("sweet", "plat").must_equal(
464
- name: "chefy",
465
- run_list: %w{one two}
466
- )
467
- end
468
-
469
- it "moves named_run_list into provisioner" do
470
- DataMunger.new(
471
- {
472
- provisioner: "chefy",
473
- suites: [
474
- {
475
- name: "sweet",
476
- named_run_list: "other_run_list",
477
- },
478
- ],
479
- },
480
- {}
481
- ).provisioner_data_for("sweet", "plat").must_equal(
482
- name: "chefy",
483
- named_run_list: "other_run_list"
484
- )
485
- end
486
- it "maintains run_list in provisioner" do
487
- DataMunger.new(
488
- {
489
- provisioner: "chefy",
490
- suites: [
491
- {
492
- name: "sweet",
493
- provisioner: {
494
- run_list: %w{one two},
495
- },
496
- },
497
- ],
498
- },
499
- {}
500
- ).provisioner_data_for("sweet", "plat").must_equal(
501
- name: "chefy",
502
- run_list: %w{one two}
503
- )
504
- end
505
-
506
- it "merge provisioner into attributes if provisioner exists" do
507
- DataMunger.new(
508
- {
509
- suites: [
510
- {
511
- name: "sweet",
512
- attributes: { one: "two" },
513
- provisioner: "chefy",
514
- },
515
- ],
516
- },
517
- {}
518
- ).provisioner_data_for("sweet", "plat").must_equal(
519
- name: "chefy",
520
- attributes: { one: "two" }
521
- )
522
- end
523
-
524
- it "merge provisioner into run_list if provisioner exists" do
525
- DataMunger.new(
526
- {
527
- suites: [
528
- {
529
- name: "sweet",
530
- run_list: %w{one two},
531
- provisioner: "chefy",
532
- },
533
- ],
534
- },
535
- {}
536
- ).provisioner_data_for("sweet", "plat").must_equal(
537
- name: "chefy",
538
- run_list: %w{one two}
539
- )
540
- end
541
-
542
- it "merge provisioner into named_run_list if provisioner exists" do
543
- DataMunger.new(
544
- {
545
- suites: [
546
- {
547
- name: "sweet",
548
- named_run_list: "other_run_list",
549
- provisioner: "chefy",
550
- },
551
- ],
552
- },
553
- {}
554
- ).provisioner_data_for("sweet", "plat").must_equal(
555
- name: "chefy",
556
- named_run_list: "other_run_list"
557
- )
558
- end
559
- it "drops nil run_list" do
560
- DataMunger.new(
561
- {
562
- suites: [
563
- {
564
- name: "sweet",
565
- run_list: nil,
566
- provisioner: "chefy",
567
- },
568
- ],
569
- },
570
- {}
571
- ).provisioner_data_for("sweet", "plat").must_equal(
572
- name: "chefy"
573
- )
574
- end
575
-
576
- it "drops nil attributes" do
577
- DataMunger.new(
578
- {
579
- suites: [
580
- {
581
- name: "sweet",
582
- attributes: nil,
583
- provisioner: "chefy",
584
- },
585
- ],
586
- },
587
- {}
588
- ).provisioner_data_for("sweet", "plat").must_equal(
589
- name: "chefy"
590
- )
591
- end
592
- end
593
-
594
- describe "in a platform" do
595
- it "moves attributes into provisioner" do
596
- DataMunger.new(
597
- {
598
- provisioner: "chefy",
599
- platforms: [
600
- {
601
- name: "plat",
602
- attributes: { one: "two" },
603
- },
604
- ],
605
- },
606
- {}
607
- ).provisioner_data_for("sweet", "plat").must_equal(
608
- name: "chefy",
609
- attributes: { one: "two" }
610
- )
611
- end
612
-
613
- it "moves run_list into provisioner" do
614
- DataMunger.new(
615
- {
616
- provisioner: "chefy",
617
- platforms: [
618
- {
619
- name: "plat",
620
- run_list: %w{one two},
621
- },
622
- ],
623
- },
624
- {}
625
- ).provisioner_data_for("sweet", "plat").must_equal(
626
- name: "chefy",
627
- run_list: %w{one two}
628
- )
629
- end
630
-
631
- it "moves named_run_list into provisioner" do
632
- DataMunger.new(
633
- {
634
- provisioner: "chefy",
635
- platforms: [
636
- {
637
- name: "plat",
638
- named_run_list: "other_run_list",
639
- },
640
- ],
641
- },
642
- {}
643
- ).provisioner_data_for("sweet", "plat").must_equal(
644
- name: "chefy",
645
- named_run_list: "other_run_list"
646
- )
647
- end
648
- it "maintains run_list in provisioner" do
649
- DataMunger.new(
650
- {
651
- provisioner: "chefy",
652
- platforms: [
653
- {
654
- name: "plat",
655
- provisioner: {
656
- run_list: %w{one two},
657
- },
658
- },
659
- ],
660
- },
661
- {}
662
- ).provisioner_data_for("sweet", "plat").must_equal(
663
- name: "chefy",
664
- run_list: %w{one two}
665
- )
666
- end
667
-
668
- it "merge provisioner into attributes if provisioner exists" do
669
- DataMunger.new(
670
- {
671
- platforms: [
672
- {
673
- name: "plat",
674
- attributes: { one: "two" },
675
- provisioner: "chefy",
676
- },
677
- ],
678
- },
679
- {}
680
- ).provisioner_data_for("sweet", "plat").must_equal(
681
- name: "chefy",
682
- attributes: { one: "two" }
683
- )
684
- end
685
-
686
- it "merge provisioner into run_list if provisioner exists" do
687
- DataMunger.new(
688
- {
689
- platforms: [
690
- {
691
- name: "plat",
692
- run_list: %w{one two},
693
- provisioner: "chefy",
694
- },
695
- ],
696
- },
697
- {}
698
- ).provisioner_data_for("sweet", "plat").must_equal(
699
- name: "chefy",
700
- run_list: %w{one two}
701
- )
702
- end
703
-
704
- it "merge provisioner into named_run_list if provisioner exists" do
705
- DataMunger.new(
706
- {
707
- platforms: [
708
- {
709
- name: "plat",
710
- named_run_list: "other_run_list",
711
- provisioner: "chefy",
712
- },
713
- ],
714
- },
715
- {}
716
- ).provisioner_data_for("sweet", "plat").must_equal(
717
- name: "chefy",
718
- named_run_list: "other_run_list"
719
- )
720
- end
721
- it "drops nil run_list" do
722
- DataMunger.new(
723
- {
724
- platforms: [
725
- {
726
- name: "plat",
727
- run_list: nil,
728
- provisioner: "chefy",
729
- },
730
- ],
731
- },
732
- {}
733
- ).provisioner_data_for("sweet", "plat").must_equal(
734
- name: "chefy"
735
- )
736
- end
737
-
738
- it "drops nil attributes" do
739
- DataMunger.new(
740
- {
741
- platforms: [
742
- {
743
- name: "plat",
744
- attributes: nil,
745
- provisioner: "chefy",
746
- },
747
- ],
748
- },
749
- {}
750
- ).provisioner_data_for("sweet", "plat").must_equal(
751
- name: "chefy"
752
- )
753
- end
754
- end
755
-
756
- describe "in a suite and platform" do
757
- it "merges suite attributes into platform attributes" do
758
- DataMunger.new(
759
- {
760
- provisioner: "chefy",
761
- platforms: [
762
- {
763
- name: "plat",
764
- attributes: {
765
- color: "blue",
766
- deep: { platform: "much" },
767
- },
768
- },
769
- ],
770
- suites: [
771
- {
772
- name: "sweet",
773
- attributes: {
774
- color: "pink",
775
- deep: { suite: "wow" },
776
- },
777
- },
778
- ],
779
- },
780
- {}
781
- ).provisioner_data_for("sweet", "plat").must_equal(
782
- name: "chefy",
783
- attributes: {
784
- color: "pink",
785
- deep: {
786
- suite: "wow",
787
- platform: "much",
788
- },
789
- }
790
- )
791
- end
792
-
793
- it "concats suite run_list to platform run_list" do
794
- DataMunger.new(
795
- {
796
- provisioner: "chefy",
797
- platforms: [
798
- {
799
- name: "plat",
800
- run_list: %w{one two},
801
- },
802
- ],
803
- suites: [
804
- {
805
- name: "sweet",
806
- run_list: %w{three four},
807
- },
808
- ],
809
- },
810
- {}
811
- ).provisioner_data_for("sweet", "plat").must_equal(
812
- name: "chefy",
813
- run_list: %w{one two three four}
814
- )
815
- end
816
-
817
- it "concats suite run_list in provisioner to platform run_list" do
818
- DataMunger.new(
819
- {
820
- provisioner: "chefy",
821
- platforms: [
822
- {
823
- name: "plat",
824
- run_list: %w{one two},
825
- },
826
- ],
827
- suites: [
828
- {
829
- name: "sweet",
830
- provisioner: {
831
- run_list: %w{three four},
832
- },
833
- },
834
- ],
835
- },
836
- {}
837
- ).provisioner_data_for("sweet", "plat").must_equal(
838
- name: "chefy",
839
- run_list: %w{one two three four}
840
- )
841
- end
842
-
843
- it "concats suite run_list to platform run_list in provisioner" do
844
- DataMunger.new(
845
- {
846
- provisioner: "chefy",
847
- platforms: [
848
- {
849
- name: "plat",
850
- provisioner: {
851
- run_list: %w{one two},
852
- },
853
- },
854
- ],
855
- suites: [
856
- {
857
- name: "sweet",
858
- run_list: %w{three four},
859
- },
860
- ],
861
- },
862
- {}
863
- ).provisioner_data_for("sweet", "plat").must_equal(
864
- name: "chefy",
865
- run_list: %w{one two three four}
866
- )
867
- end
868
-
869
- it "concats to nil run_lists into an empty Array" do
870
- DataMunger.new(
871
- {
872
- provisioner: "chefy",
873
- platforms: [
874
- {
875
- name: "plat",
876
- provisioner: {
877
- run_list: nil,
878
- },
879
- },
880
- ],
881
- suites: [
882
- {
883
- name: "sweet",
884
- run_list: nil,
885
- },
886
- ],
887
- },
888
- {}
889
- ).provisioner_data_for("sweet", "plat").must_equal(
890
- name: "chefy",
891
- run_list: []
892
- )
893
- end
894
-
895
- it "does not corrupt run_list data for multiple suite/platform pairs" do
896
- munger = DataMunger.new(
897
- {
898
- provisioner: "chefy",
899
- platforms: [
900
- {
901
- name: "p1",
902
- },
903
- {
904
- name: "p2",
905
- run_list: %w{one two},
906
- },
907
- ],
908
- suites: [
909
- {
910
- name: "s1",
911
- run_list: %w{alpha beta},
912
- },
913
- {
914
- name: "s2",
915
- provisioner: {
916
- run_list: %w{three four},
917
- },
918
- },
919
- ],
920
- },
921
- {}
922
- )
923
-
924
- # call munger for other data to cause any necessary internal
925
- # data mutation
926
- munger.provisioner_data_for("s1", "p1")
927
- munger.provisioner_data_for("s1", "p2")
928
- munger.provisioner_data_for("s2", "p1")
929
-
930
- munger.provisioner_data_for("s2", "p2").must_equal(
931
- name: "chefy",
932
- run_list: %w{one two three four}
933
- )
934
- end
935
- end
936
- end
937
-
938
- describe "kitchen config" do
939
- [:kitchen_root, :test_base_path].each do |key|
940
- describe "for #{key}" do
941
- describe "for #driver_data_for" do
942
- it "is returned when provided" do
943
- DataMunger.new(
944
- {
945
- driver: "chefy",
946
- platforms: [
947
- { name: "plat" },
948
- ],
949
- suites: [
950
- { name: "sweet" },
951
- ],
952
- },
953
- key => "datvalue"
954
- ).driver_data_for("sweet", "plat").must_equal(
955
- :name => "chefy",
956
- key => "datvalue"
957
- )
958
- end
959
-
960
- it "is returned when provided in user data" do
961
- DataMunger.new(
962
- {
963
- kitchen: {
964
- key => "datvalue",
965
- },
966
- driver: "chefy",
967
- platforms: [
968
- { name: "plat" },
969
- ],
970
- suites: [
971
- { name: "sweet" },
972
- ],
973
- },
974
- {}
975
- ).driver_data_for("sweet", "plat").must_equal(
976
- :name => "chefy",
977
- key => "datvalue"
978
- )
979
- end
980
-
981
- it "user data value beats provided value" do
982
- DataMunger.new(
983
- {
984
- kitchen: {
985
- key => "datvalue",
986
- },
987
- driver: "chefy",
988
- platforms: [
989
- { name: "plat" },
990
- ],
991
- suites: [
992
- { name: "sweet" },
993
- ],
994
- },
995
- key => "ilose"
996
- ).driver_data_for("sweet", "plat").must_equal(
997
- :name => "chefy",
998
- key => "datvalue"
999
- )
1000
- end
1001
-
1002
- it "rejects any value in driver data" do
1003
- DataMunger.new(
1004
- {
1005
- driver: {
1006
- :name => "chefy",
1007
- key => "imevil",
1008
- },
1009
- platforms: [
1010
- { name: "plat" },
1011
- ],
1012
- suites: [
1013
- { name: "sweet" },
1014
- ],
1015
- },
1016
- {}
1017
- ).driver_data_for("sweet", "plat").must_equal(
1018
- name: "chefy"
1019
- )
1020
- end
1021
- end
1022
-
1023
- describe "for #provisioner_data_for" do
1024
- it "is returned when provided" do
1025
- DataMunger.new(
1026
- {
1027
- provisioner: "chefy",
1028
- platforms: [
1029
- { name: "plat" },
1030
- ],
1031
- suites: [
1032
- { name: "sweet" },
1033
- ],
1034
- },
1035
- key => "datvalue"
1036
- ).provisioner_data_for("sweet", "plat").must_equal(
1037
- :name => "chefy",
1038
- key => "datvalue"
1039
- )
1040
- end
1041
-
1042
- it "is returned when provided in user data" do
1043
- DataMunger.new(
1044
- {
1045
- kitchen: {
1046
- key => "datvalue",
1047
- },
1048
- provisioner: "chefy",
1049
- platforms: [
1050
- { name: "plat" },
1051
- ],
1052
- suites: [
1053
- { name: "sweet" },
1054
- ],
1055
- },
1056
- {}
1057
- ).provisioner_data_for("sweet", "plat").must_equal(
1058
- :name => "chefy",
1059
- key => "datvalue"
1060
- )
1061
- end
1062
-
1063
- it "user data value beats provided value" do
1064
- DataMunger.new(
1065
- {
1066
- kitchen: {
1067
- key => "datvalue",
1068
- },
1069
- provisioner: "chefy",
1070
- platforms: [
1071
- { name: "plat" },
1072
- ],
1073
- suites: [
1074
- { name: "sweet" },
1075
- ],
1076
- },
1077
- key => "ilose"
1078
- ).provisioner_data_for("sweet", "plat").must_equal(
1079
- :name => "chefy",
1080
- key => "datvalue"
1081
- )
1082
- end
1083
-
1084
- it "rejects any value in provisioner data" do
1085
- DataMunger.new(
1086
- {
1087
- provisioner: {
1088
- :name => "chefy",
1089
- key => "imevil",
1090
- },
1091
- platforms: [
1092
- { name: "plat" },
1093
- ],
1094
- suites: [
1095
- { name: "sweet" },
1096
- ],
1097
- },
1098
- {}
1099
- ).provisioner_data_for("sweet", "plat").must_equal(
1100
- name: "chefy"
1101
- )
1102
- end
1103
- end
1104
-
1105
- describe "for #verifier_data_for" do
1106
- it "is returned when provided" do
1107
- DataMunger.new(
1108
- {
1109
- verifier: "chefy",
1110
- platforms: [
1111
- { name: "plat" },
1112
- ],
1113
- suites: [
1114
- { name: "sweet" },
1115
- ],
1116
- },
1117
- key => "datvalue"
1118
- ).verifier_data_for("sweet", "plat").must_equal(
1119
- :name => "chefy",
1120
- key => "datvalue"
1121
- )
1122
- end
1123
-
1124
- it "is returned when provided in user data" do
1125
- DataMunger.new(
1126
- {
1127
- kitchen: {
1128
- key => "datvalue",
1129
- },
1130
- verifier: "chefy",
1131
- platforms: [
1132
- { name: "plat" },
1133
- ],
1134
- suites: [
1135
- { name: "sweet" },
1136
- ],
1137
- },
1138
- {}
1139
- ).verifier_data_for("sweet", "plat").must_equal(
1140
- :name => "chefy",
1141
- key => "datvalue"
1142
- )
1143
- end
1144
-
1145
- it "user data value beats provided value" do
1146
- DataMunger.new(
1147
- {
1148
- kitchen: {
1149
- key => "datvalue",
1150
- },
1151
- verifier: "chefy",
1152
- platforms: [
1153
- { name: "plat" },
1154
- ],
1155
- suites: [
1156
- { name: "sweet" },
1157
- ],
1158
- },
1159
- key => "ilose"
1160
- ).verifier_data_for("sweet", "plat").must_equal(
1161
- :name => "chefy",
1162
- key => "datvalue"
1163
- )
1164
- end
1165
-
1166
- it "rejects any value in verifier data" do
1167
- DataMunger.new(
1168
- {
1169
- verifier: {
1170
- :version => "chefy",
1171
- key => "imevil",
1172
- },
1173
- platforms: [
1174
- { name: "plat" },
1175
- ],
1176
- suites: [
1177
- { name: "sweet" },
1178
- ],
1179
- },
1180
- {}
1181
- ).verifier_data_for("sweet", "plat").must_equal(
1182
- version: "chefy"
1183
- )
1184
- end
1185
- end
1186
-
1187
- describe "for #transport_data_for" do
1188
- it "is returned when provided" do
1189
- DataMunger.new(
1190
- {
1191
- transport: "pipes",
1192
- platforms: [
1193
- { name: "plat" },
1194
- ],
1195
- suites: [
1196
- { name: "sweet" },
1197
- ],
1198
- },
1199
- key => "datvalue"
1200
- ).transport_data_for("sweet", "plat").must_equal(
1201
- :name => "pipes",
1202
- key => "datvalue"
1203
- )
1204
- end
1205
-
1206
- it "is returned when provided in user data" do
1207
- DataMunger.new(
1208
- {
1209
- kitchen: {
1210
- key => "datvalue",
1211
- },
1212
- transport: "pipes",
1213
- platforms: [
1214
- { name: "plat" },
1215
- ],
1216
- suites: [
1217
- { name: "sweet" },
1218
- ],
1219
- },
1220
- {}
1221
- ).transport_data_for("sweet", "plat").must_equal(
1222
- :name => "pipes",
1223
- key => "datvalue"
1224
- )
1225
- end
1226
-
1227
- it "user data value beats provided value" do
1228
- DataMunger.new(
1229
- {
1230
- kitchen: {
1231
- key => "datvalue",
1232
- },
1233
- transport: "pipes",
1234
- platforms: [
1235
- { name: "plat" },
1236
- ],
1237
- suites: [
1238
- { name: "sweet" },
1239
- ],
1240
- },
1241
- key => "ilose"
1242
- ).transport_data_for("sweet", "plat").must_equal(
1243
- :name => "pipes",
1244
- key => "datvalue"
1245
- )
1246
- end
1247
-
1248
- it "rejects any value in transport data" do
1249
- DataMunger.new(
1250
- {
1251
- transport: {
1252
- :name => "pipes",
1253
- key => "imevil",
1254
- },
1255
- platforms: [
1256
- { name: "plat" },
1257
- ],
1258
- suites: [
1259
- { name: "sweet" },
1260
- ],
1261
- },
1262
- {}
1263
- ).transport_data_for("sweet", "plat").must_equal(
1264
- name: "pipes"
1265
- )
1266
- end
1267
- end
1268
- end
1269
- end
1270
-
1271
- [:log_level].each do |key|
1272
- describe "for #{key}" do
1273
- describe "for #driver_data_for" do
1274
- it "is returned when provided" do
1275
- DataMunger.new(
1276
- {
1277
- driver: "chefy",
1278
- platforms: [
1279
- { name: "plat" },
1280
- ],
1281
- suites: [
1282
- { name: "sweet" },
1283
- ],
1284
- },
1285
- key => "datvalue"
1286
- ).driver_data_for("sweet", "plat").must_equal(
1287
- :name => "chefy",
1288
- key => "datvalue"
1289
- )
1290
- end
1291
-
1292
- it "is returned when provided in user data" do
1293
- DataMunger.new(
1294
- {
1295
- kitchen: {
1296
- key => "datvalue",
1297
- },
1298
- driver: "chefy",
1299
- platforms: [
1300
- { name: "plat" },
1301
- ],
1302
- suites: [
1303
- { name: "sweet" },
1304
- ],
1305
- },
1306
- {}
1307
- ).driver_data_for("sweet", "plat").must_equal(
1308
- :name => "chefy",
1309
- key => "datvalue"
1310
- )
1311
- end
1312
-
1313
- it "user data value beats provided value" do
1314
- DataMunger.new(
1315
- {
1316
- kitchen: {
1317
- key => "datvalue",
1318
- },
1319
- driver: "chefy",
1320
- platforms: [
1321
- { name: "plat" },
1322
- ],
1323
- suites: [
1324
- { name: "sweet" },
1325
- ],
1326
- },
1327
- key => "ilose"
1328
- ).driver_data_for("sweet", "plat").must_equal(
1329
- :name => "chefy",
1330
- key => "datvalue"
1331
- )
1332
- end
1333
-
1334
- it "rejects any value in driver data" do
1335
- DataMunger.new(
1336
- {
1337
- driver: {
1338
- :name => "chefy",
1339
- key => "imevil",
1340
- },
1341
- platforms: [
1342
- { name: "plat" },
1343
- ],
1344
- suites: [
1345
- { name: "sweet" },
1346
- ],
1347
- },
1348
- {}
1349
- ).driver_data_for("sweet", "plat").must_equal(
1350
- name: "chefy"
1351
- )
1352
- end
1353
- end
1354
-
1355
- describe "for #provisioner_data_for" do
1356
- it "uses value in provisioner data" do
1357
- DataMunger.new(
1358
- {
1359
- provisioner: {
1360
- :name => "chefy",
1361
- key => "datvalue",
1362
- },
1363
- platforms: [
1364
- { name: "plat" },
1365
- ],
1366
- suites: [
1367
- { name: "sweet" },
1368
- ],
1369
- },
1370
- {}
1371
- ).provisioner_data_for("sweet", "plat").must_equal(
1372
- :name => "chefy",
1373
- key => "datvalue"
1374
- )
1375
- end
1376
-
1377
- it "rejects any value in user data" do
1378
- DataMunger.new(
1379
- {
1380
- kitchen: {
1381
- key => "imevil",
1382
- },
1383
- provisioner: "chefy",
1384
- platforms: [
1385
- { name: "plat" },
1386
- ],
1387
- suites: [
1388
- { name: "sweet" },
1389
- ],
1390
- },
1391
- {}
1392
- ).provisioner_data_for("sweet", "plat").must_equal(
1393
- name: "chefy"
1394
- )
1395
- end
1396
- end
1397
-
1398
- describe "for #verifier_data_for" do
1399
- it "is returned when provided" do
1400
- DataMunger.new(
1401
- {
1402
- verifier: "chefy",
1403
- platforms: [
1404
- { name: "plat" },
1405
- ],
1406
- suites: [
1407
- { name: "sweet" },
1408
- ],
1409
- },
1410
- key => "datvalue"
1411
- ).verifier_data_for("sweet", "plat").must_equal(
1412
- :name => "chefy",
1413
- key => "datvalue"
1414
- )
1415
- end
1416
-
1417
- it "is returned when provided in user data" do
1418
- DataMunger.new(
1419
- {
1420
- kitchen: {
1421
- key => "datvalue",
1422
- },
1423
- verifier: "chefy",
1424
- platforms: [
1425
- { name: "plat" },
1426
- ],
1427
- suites: [
1428
- { name: "sweet" },
1429
- ],
1430
- },
1431
- {}
1432
- ).verifier_data_for("sweet", "plat").must_equal(
1433
- :name => "chefy",
1434
- key => "datvalue"
1435
- )
1436
- end
1437
-
1438
- it "user data value beats provided value" do
1439
- DataMunger.new(
1440
- {
1441
- kitchen: {
1442
- key => "datvalue",
1443
- },
1444
- verifier: "chefy",
1445
- platforms: [
1446
- { name: "plat" },
1447
- ],
1448
- suites: [
1449
- { name: "sweet" },
1450
- ],
1451
- },
1452
- key => "ilose"
1453
- ).verifier_data_for("sweet", "plat").must_equal(
1454
- :name => "chefy",
1455
- key => "datvalue"
1456
- )
1457
- end
1458
-
1459
- it "rejects any value in verifier data" do
1460
- DataMunger.new(
1461
- {
1462
- verifier: {
1463
- :version => "chefy",
1464
- key => "imevil",
1465
- },
1466
- platforms: [
1467
- { name: "plat" },
1468
- ],
1469
- suites: [
1470
- { name: "sweet" },
1471
- ],
1472
- },
1473
- {}
1474
- ).verifier_data_for("sweet", "plat").must_equal(
1475
- version: "chefy"
1476
- )
1477
- end
1478
- end
1479
-
1480
- describe "for #transport_data_for" do
1481
- it "is returned when provided" do
1482
- DataMunger.new(
1483
- {
1484
- transport: "pipes",
1485
- platforms: [
1486
- { name: "plat" },
1487
- ],
1488
- suites: [
1489
- { name: "sweet" },
1490
- ],
1491
- },
1492
- key => "datvalue"
1493
- ).transport_data_for("sweet", "plat").must_equal(
1494
- :name => "pipes",
1495
- key => "datvalue"
1496
- )
1497
- end
1498
-
1499
- it "is returned when provided in user data" do
1500
- DataMunger.new(
1501
- {
1502
- kitchen: {
1503
- key => "datvalue",
1504
- },
1505
- transport: "pipes",
1506
- platforms: [
1507
- { name: "plat" },
1508
- ],
1509
- suites: [
1510
- { name: "sweet" },
1511
- ],
1512
- },
1513
- {}
1514
- ).transport_data_for("sweet", "plat").must_equal(
1515
- :name => "pipes",
1516
- key => "datvalue"
1517
- )
1518
- end
1519
-
1520
- it "user data value beats provided value" do
1521
- DataMunger.new(
1522
- {
1523
- kitchen: {
1524
- key => "datvalue",
1525
- },
1526
- transport: "pipes",
1527
- platforms: [
1528
- { name: "plat" },
1529
- ],
1530
- suites: [
1531
- { name: "sweet" },
1532
- ],
1533
- },
1534
- key => "ilose"
1535
- ).transport_data_for("sweet", "plat").must_equal(
1536
- :name => "pipes",
1537
- key => "datvalue"
1538
- )
1539
- end
1540
-
1541
- it "rejects any value in transport data" do
1542
- DataMunger.new(
1543
- {
1544
- transport: {
1545
- :name => "pipes",
1546
- key => "imevil",
1547
- },
1548
- platforms: [
1549
- { name: "plat" },
1550
- ],
1551
- suites: [
1552
- { name: "sweet" },
1553
- ],
1554
- },
1555
- {}
1556
- ).transport_data_for("sweet", "plat").must_equal(
1557
- name: "pipes"
1558
- )
1559
- end
1560
- end
1561
- end
1562
- end
1563
- end
1564
-
1565
- describe "legacy driver_config and driver_plugin" do
1566
- describe "from a single source" do
1567
- it "returns common driver name" do
1568
- DataMunger.new(
1569
- {
1570
- driver_plugin: "starship",
1571
- },
1572
- {}
1573
- ).driver_data_for("suite", "platform").must_equal(
1574
- name: "starship"
1575
- )
1576
- end
1577
-
1578
- it "merges driver into driver_plugin if driver exists" do
1579
- DataMunger.new(
1580
- {
1581
- driver_plugin: "starship",
1582
- driver: "zappa",
1583
- },
1584
- {}
1585
- ).driver_data_for("suite", "platform").must_equal(
1586
- name: "zappa"
1587
- )
1588
- end
1589
-
1590
- it "returns common driver config" do
1591
- DataMunger.new(
1592
- {
1593
- driver_plugin: "starship",
1594
- driver_config: {
1595
- speed: 42,
1596
- },
1597
- },
1598
- {}
1599
- ).driver_data_for("suite", "platform").must_equal(
1600
- name: "starship",
1601
- speed: 42
1602
- )
1603
- end
1604
-
1605
- it "merges driver into driver_config if driver with name exists" do
1606
- DataMunger.new(
1607
- {
1608
- driver_config: {
1609
- eh: "yep",
1610
- },
1611
- driver: "zappa",
1612
- },
1613
- {}
1614
- ).driver_data_for("suite", "platform").must_equal(
1615
- name: "zappa",
1616
- eh: "yep"
1617
- )
1618
- end
1619
-
1620
- it "merges driver into driver_config if driver exists" do
1621
- DataMunger.new(
1622
- {
1623
- driver_plugin: "imold",
1624
- driver_config: {
1625
- eh: "yep",
1626
- color: "pink",
1627
- },
1628
- driver: {
1629
- name: "zappa",
1630
- color: "black",
1631
- },
1632
- },
1633
- {}
1634
- ).driver_data_for("suite", "platform").must_equal(
1635
- name: "zappa",
1636
- eh: "yep",
1637
- color: "black"
1638
- )
1639
- end
1640
-
1641
- it "returns platform driver name" do
1642
- DataMunger.new(
1643
- {
1644
- platforms: [
1645
- {
1646
- name: "plat",
1647
- driver_plugin: "flip",
1648
- },
1649
- ],
1650
- },
1651
- {}
1652
- ).driver_data_for("suite", "plat").must_equal(
1653
- name: "flip"
1654
- )
1655
- end
1656
-
1657
- it "returns platform config containing driver hash" do
1658
- DataMunger.new(
1659
- {
1660
- platforms: [
1661
- {
1662
- name: "plat",
1663
- driver_plugin: "flip",
1664
- driver_config: {
1665
- flop: "yep",
1666
- },
1667
- },
1668
- ],
1669
- },
1670
- {}
1671
- ).driver_data_for("suite", "plat").must_equal(
1672
- name: "flip",
1673
- flop: "yep"
1674
- )
1675
- end
1676
-
1677
- it "returns suite driver name" do
1678
- DataMunger.new(
1679
- {
1680
- suites: [
1681
- {
1682
- name: "sweet",
1683
- driver_plugin: "waz",
1684
- },
1685
- ],
1686
- },
1687
- {}
1688
- ).driver_data_for("sweet", "platform").must_equal(
1689
- name: "waz"
1690
- )
1691
- end
1692
-
1693
- it "returns suite config containing driver hash" do
1694
- DataMunger.new(
1695
- {
1696
- suites: [
1697
- {
1698
- name: "sweet",
1699
- driver_plugin: "waz",
1700
- driver_config: {
1701
- up: "nope",
1702
- },
1703
- },
1704
- ],
1705
- },
1706
- {}
1707
- ).driver_data_for("sweet", "platform").must_equal(
1708
- name: "waz",
1709
- up: "nope"
1710
- )
1711
- end
1712
- end
1713
-
1714
- describe "from multiple sources" do
1715
- it "suite into platform into common" do
1716
- DataMunger.new(
1717
- {
1718
- driver_plugin: "commony",
1719
- driver_config: {
1720
- color: "purple",
1721
- fruit: %w{apple pear},
1722
- deep: { common: "junk" },
1723
- },
1724
- platforms: [
1725
- {
1726
- name: "plat",
1727
- driver_plugin: "platformy",
1728
- driver_config: {
1729
- fruit: ["banana"],
1730
- deep: { platform: "stuff" },
1731
- },
1732
- },
1733
- ],
1734
- suites: [
1735
- {
1736
- name: "sweet",
1737
- driver_plugin: "suitey",
1738
- driver_config: {
1739
- vehicle: "car",
1740
- deep: { suite: "things" },
1741
- },
1742
- },
1743
- ],
1744
- },
1745
- {}
1746
- ).driver_data_for("sweet", "plat").must_equal(
1747
- name: "suitey",
1748
- color: "purple",
1749
- fruit: ["banana"],
1750
- vehicle: "car",
1751
- deep: {
1752
- common: "junk",
1753
- platform: "stuff",
1754
- suite: "things",
1755
- }
1756
- )
1757
- end
1758
-
1759
- it "platform into common" do
1760
- DataMunger.new(
1761
- {
1762
- driver_plugin: "commony",
1763
- driver_config: {
1764
- color: "purple",
1765
- fruit: %w{apple pear},
1766
- deep: { common: "junk" },
1767
- },
1768
- platforms: [
1769
- {
1770
- name: "plat",
1771
- driver_plugin: "platformy",
1772
- driver_config: {
1773
- fruit: ["banana"],
1774
- deep: { platform: "stuff" },
1775
- },
1776
- },
1777
- ],
1778
- },
1779
- {}
1780
- ).driver_data_for("sweet", "plat").must_equal(
1781
- name: "platformy",
1782
- color: "purple",
1783
- fruit: ["banana"],
1784
- deep: {
1785
- common: "junk",
1786
- platform: "stuff",
1787
- }
1788
- )
1789
- end
1790
-
1791
- it "suite into common" do
1792
- DataMunger.new(
1793
- {
1794
- driver_plugin: "commony",
1795
- driver_config: {
1796
- color: "purple",
1797
- fruit: %w{apple pear},
1798
- deep: { common: "junk" },
1799
- },
1800
- suites: [
1801
- {
1802
- name: "sweet",
1803
- driver_plugin: "suitey",
1804
- driver_config: {
1805
- vehicle: "car",
1806
- deep: { suite: "things" },
1807
- },
1808
- },
1809
- ],
1810
- },
1811
- {}
1812
- ).driver_data_for("sweet", "plat").must_equal(
1813
- name: "suitey",
1814
- color: "purple",
1815
- fruit: %w{apple pear},
1816
- vehicle: "car",
1817
- deep: {
1818
- common: "junk",
1819
- suite: "things",
1820
- }
1821
- )
1822
- end
1823
-
1824
- it "suite into platform" do
1825
- DataMunger.new(
1826
- {
1827
- platforms: [
1828
- {
1829
- name: "plat",
1830
- driver_plugin: "platformy",
1831
- driver_config: {
1832
- fruit: ["banana"],
1833
- deep: { platform: "stuff" },
1834
- },
1835
- },
1836
- ],
1837
- suites: [
1838
- {
1839
- name: "sweet",
1840
- driver_plugin: "suitey",
1841
- driver_config: {
1842
- vehicle: "car",
1843
- deep: { suite: "things" },
1844
- },
1845
- },
1846
- ],
1847
- },
1848
- {}
1849
- ).driver_data_for("sweet", "plat").must_equal(
1850
- name: "suitey",
1851
- fruit: ["banana"],
1852
- vehicle: "car",
1853
- deep: {
1854
- platform: "stuff",
1855
- suite: "things",
1856
- }
1857
- )
1858
- end
1859
- end
1860
- end
1861
-
1862
- describe "legacy chef paths from suite" do
1863
- LEGACY_CHEF_PATHS = [
1864
- :data_path, :data_bags_path, :environments_path,
1865
- :nodes_path, :roles_path, :encrypted_data_bag_secret_key_path
1866
- ].freeze
1867
-
1868
- LEGACY_CHEF_PATHS.each do |key|
1869
- it "moves #{key} into provisioner" do
1870
- DataMunger.new(
1871
- {
1872
- provisioner: "chefy",
1873
- suites: [
1874
- {
1875
- :name => "sweet",
1876
- key => "mypath",
1877
- },
1878
- ],
1879
- },
1880
- {}
1881
- ).provisioner_data_for("sweet", "plat").must_equal(
1882
- :name => "chefy",
1883
- key => "mypath"
1884
- )
1885
- end
1886
-
1887
- it "merges provisioner into data_path if provisioner exists" do
1888
- DataMunger.new(
1889
- {
1890
- suites: [
1891
- {
1892
- :name => "sweet",
1893
- key => "mypath",
1894
- :provisioner => "chefy",
1895
- },
1896
- ],
1897
- },
1898
- {}
1899
- ).provisioner_data_for("sweet", "plat").must_equal(
1900
- :name => "chefy",
1901
- key => "mypath"
1902
- )
1903
- end
1904
- end
1905
- end
1906
-
1907
- describe "legacy require_chef_omnibus from driver" do
1908
- describe "from a single source" do
1909
- it "common driver value moves into provisioner" do
1910
- DataMunger.new(
1911
- {
1912
- provisioner: "chefy",
1913
- driver: {
1914
- name: "starship",
1915
- require_chef_omnibus: "it's probably fine",
1916
- },
1917
- },
1918
- {}
1919
- ).provisioner_data_for("suite", "platform").must_equal(
1920
- name: "chefy",
1921
- require_chef_omnibus: "it's probably fine"
1922
- )
1923
- end
1924
-
1925
- it "common driver value loses to existing provisioner value" do
1926
- DataMunger.new(
1927
- {
1928
- provisioner: {
1929
- name: "chefy",
1930
- require_chef_omnibus: "it's probably fine",
1931
- },
1932
- driver: {
1933
- name: "starship",
1934
- require_chef_omnibus: "dragons",
1935
- },
1936
- },
1937
- {}
1938
- ).provisioner_data_for("suite", "platform").must_equal(
1939
- name: "chefy",
1940
- require_chef_omnibus: "it's probably fine"
1941
- )
1942
- end
1943
-
1944
- it "suite driver value moves into provisioner" do
1945
- DataMunger.new(
1946
- {
1947
- suites: [
1948
- {
1949
- name: "sweet",
1950
- provisioner: "chefy",
1951
- driver: {
1952
- name: "starship",
1953
- require_chef_omnibus: "it's probably fine",
1954
- },
1955
- },
1956
- ],
1957
- },
1958
- {}
1959
- ).provisioner_data_for("sweet", "platform").must_equal(
1960
- name: "chefy",
1961
- require_chef_omnibus: "it's probably fine"
1962
- )
1963
- end
1964
-
1965
- it "suite driver value loses to existing provisioner value" do
1966
- DataMunger.new(
1967
- {
1968
- suites: [
1969
- {
1970
- name: "sweet",
1971
- provisioner: {
1972
- name: "chefy",
1973
- require_chef_omnibus: "it's probably fine",
1974
- },
1975
- driver: {
1976
- name: "starship",
1977
- require_chef_omnibus: "dragons",
1978
- },
1979
- },
1980
- ],
1981
- },
1982
- {}
1983
- ).provisioner_data_for("sweet", "platform").must_equal(
1984
- name: "chefy",
1985
- require_chef_omnibus: "it's probably fine"
1986
- )
1987
- end
1988
-
1989
- it "platform driver value moves into provisioner" do
1990
- DataMunger.new(
1991
- {
1992
- platforms: [
1993
- {
1994
- name: "plat",
1995
- provisioner: "chefy",
1996
- driver: {
1997
- name: "starship",
1998
- require_chef_omnibus: "it's probably fine",
1999
- },
2000
- },
2001
- ],
2002
- },
2003
- {}
2004
- ).provisioner_data_for("suite", "plat").must_equal(
2005
- name: "chefy",
2006
- require_chef_omnibus: "it's probably fine"
2007
- )
2008
- end
2009
-
2010
- it "platform driver value loses to existing provisioner value" do
2011
- DataMunger.new(
2012
- {
2013
- platforms: [
2014
- {
2015
- name: "plat",
2016
- provisioner: {
2017
- name: "chefy",
2018
- require_chef_omnibus: "it's probably fine",
2019
- },
2020
- driver: {
2021
- name: "starship",
2022
- require_chef_omnibus: "dragons",
2023
- },
2024
- },
2025
- ],
2026
- },
2027
- {}
2028
- ).provisioner_data_for("suite", "plat").must_equal(
2029
- name: "chefy",
2030
- require_chef_omnibus: "it's probably fine"
2031
- )
2032
- end
2033
- end
2034
- end
2035
-
2036
- describe "legacy http_proxy & https_proxy from driver" do
2037
- describe "from a single source" do
2038
- it "common driver value remains in driver" do
2039
- DataMunger.new(
2040
- {
2041
- provisioner: "chefy",
2042
- driver: {
2043
- name: "starship",
2044
- http_proxy: "http://proxy",
2045
- https_proxy: "https://proxy",
2046
- },
2047
- },
2048
- {}
2049
- ).driver_data_for("suite", "platform").must_equal(
2050
- name: "starship",
2051
- http_proxy: "http://proxy",
2052
- https_proxy: "https://proxy"
2053
- )
2054
- end
2055
-
2056
- it "common driver value copies into provisioner" do
2057
- DataMunger.new(
2058
- {
2059
- provisioner: "chefy",
2060
- driver: {
2061
- name: "starship",
2062
- http_proxy: "http://proxy",
2063
- https_proxy: "https://proxy",
2064
- },
2065
- },
2066
- {}
2067
- ).provisioner_data_for("suite", "platform").must_equal(
2068
- name: "chefy",
2069
- http_proxy: "http://proxy",
2070
- https_proxy: "https://proxy"
2071
- )
2072
- end
2073
-
2074
- it "common driver value copies into verifier" do
2075
- DataMunger.new(
2076
- {
2077
- verifier: "bussy",
2078
- driver: {
2079
- name: "starship",
2080
- http_proxy: "http://proxy",
2081
- https_proxy: "https://proxy",
2082
- },
2083
- },
2084
- {}
2085
- ).verifier_data_for("suite", "platform").must_equal(
2086
- name: "bussy",
2087
- http_proxy: "http://proxy",
2088
- https_proxy: "https://proxy"
2089
- )
2090
- end
2091
-
2092
- it "common driver value loses to existing provisioner value" do
2093
- DataMunger.new(
2094
- {
2095
- provisioner: {
2096
- name: "chefy",
2097
- http_proxy: "it's probably fine",
2098
- https_proxy: "la quinta",
2099
- },
2100
- driver: {
2101
- name: "starship",
2102
- http_proxy: "dragons",
2103
- https_proxy: "cats",
2104
- },
2105
- },
2106
- {}
2107
- ).provisioner_data_for("suite", "platform").must_equal(
2108
- name: "chefy",
2109
- http_proxy: "it's probably fine",
2110
- https_proxy: "la quinta"
2111
- )
2112
- end
2113
-
2114
- it "common driver value loses to existing verifier value" do
2115
- DataMunger.new(
2116
- {
2117
- verifier: {
2118
- name: "bussy",
2119
- http_proxy: "it's probably fine",
2120
- https_proxy: "la quinta",
2121
- },
2122
- driver: {
2123
- name: "starship",
2124
- http_proxy: "dragons",
2125
- https_proxy: "cats",
2126
- },
2127
- },
2128
- {}
2129
- ).verifier_data_for("suite", "platform").must_equal(
2130
- name: "bussy",
2131
- http_proxy: "it's probably fine",
2132
- https_proxy: "la quinta"
2133
- )
2134
- end
2135
-
2136
- it "suite driver value remains in driver" do
2137
- DataMunger.new(
2138
- {
2139
- suites: [
2140
- {
2141
- name: "sweet",
2142
- provisioner: "chefy",
2143
- driver: {
2144
- name: "starship",
2145
- http_proxy: "it's probably fine",
2146
- https_proxy: "la quinta",
2147
- },
2148
- },
2149
- ],
2150
- },
2151
- {}
2152
- ).driver_data_for("sweet", "platform").must_equal(
2153
- name: "starship",
2154
- http_proxy: "it's probably fine",
2155
- https_proxy: "la quinta"
2156
- )
2157
- end
2158
-
2159
- it "suite driver value copies into provisioner" do
2160
- DataMunger.new(
2161
- {
2162
- suites: [
2163
- {
2164
- name: "sweet",
2165
- provisioner: "chefy",
2166
- driver: {
2167
- name: "starship",
2168
- http_proxy: "it's probably fine",
2169
- https_proxy: "la quinta",
2170
- },
2171
- },
2172
- ],
2173
- },
2174
- {}
2175
- ).provisioner_data_for("sweet", "platform").must_equal(
2176
- name: "chefy",
2177
- http_proxy: "it's probably fine",
2178
- https_proxy: "la quinta"
2179
- )
2180
- end
2181
-
2182
- it "suite driver value copies into verifier" do
2183
- DataMunger.new(
2184
- {
2185
- suites: [
2186
- {
2187
- name: "sweet",
2188
- verifier: "bussy",
2189
- driver: {
2190
- name: "starship",
2191
- http_proxy: "it's probably fine",
2192
- https_proxy: "la quinta",
2193
- },
2194
- },
2195
- ],
2196
- },
2197
- {}
2198
- ).verifier_data_for("sweet", "platform").must_equal(
2199
- name: "bussy",
2200
- http_proxy: "it's probably fine",
2201
- https_proxy: "la quinta"
2202
- )
2203
- end
2204
-
2205
- it "suite driver value loses to existing provisioner value" do
2206
- DataMunger.new(
2207
- {
2208
- suites: [
2209
- {
2210
- name: "sweet",
2211
- provisioner: {
2212
- name: "chefy",
2213
- http_proxy: "it's probably fine",
2214
- https_proxy: "la quinta",
2215
- },
2216
- driver: {
2217
- name: "starship",
2218
- http_proxy: "dragons",
2219
- https_proxy: "cats",
2220
- },
2221
- },
2222
- ],
2223
- },
2224
- {}
2225
- ).provisioner_data_for("sweet", "platform").must_equal(
2226
- name: "chefy",
2227
- http_proxy: "it's probably fine",
2228
- https_proxy: "la quinta"
2229
- )
2230
- end
2231
-
2232
- it "suite driver value loses to existing verifier value" do
2233
- DataMunger.new(
2234
- {
2235
- suites: [
2236
- {
2237
- name: "sweet",
2238
- verifier: {
2239
- name: "bussy",
2240
- http_proxy: "it's probably fine",
2241
- https_proxy: "la quinta",
2242
- },
2243
- driver: {
2244
- name: "starship",
2245
- http_proxy: "dragons",
2246
- https_proxy: "cats",
2247
- },
2248
- },
2249
- ],
2250
- },
2251
- {}
2252
- ).verifier_data_for("sweet", "platform").must_equal(
2253
- name: "bussy",
2254
- http_proxy: "it's probably fine",
2255
- https_proxy: "la quinta"
2256
- )
2257
- end
2258
-
2259
- it "platform driver value remains in driver" do
2260
- DataMunger.new(
2261
- {
2262
- platforms: [
2263
- {
2264
- name: "plat",
2265
- provisioner: "chefy",
2266
- driver: {
2267
- name: "starship",
2268
- http_proxy: "it's probably fine",
2269
- https_proxy: "la quinta",
2270
- },
2271
- },
2272
- ],
2273
- },
2274
- {}
2275
- ).driver_data_for("suite", "plat").must_equal(
2276
- name: "starship",
2277
- http_proxy: "it's probably fine",
2278
- https_proxy: "la quinta"
2279
- )
2280
- end
2281
-
2282
- it "platform driver value copies into provisioner" do
2283
- DataMunger.new(
2284
- {
2285
- platforms: [
2286
- {
2287
- name: "plat",
2288
- provisioner: "chefy",
2289
- driver: {
2290
- name: "starship",
2291
- http_proxy: "it's probably fine",
2292
- https_proxy: "la quinta",
2293
- },
2294
- },
2295
- ],
2296
- },
2297
- {}
2298
- ).provisioner_data_for("suite", "plat").must_equal(
2299
- name: "chefy",
2300
- http_proxy: "it's probably fine",
2301
- https_proxy: "la quinta"
2302
- )
2303
- end
2304
-
2305
- it "platform driver value copies into verifier" do
2306
- DataMunger.new(
2307
- {
2308
- platforms: [
2309
- {
2310
- name: "plat",
2311
- verifier: "bussy",
2312
- driver: {
2313
- name: "starship",
2314
- http_proxy: "it's probably fine",
2315
- https_proxy: "la quinta",
2316
- },
2317
- },
2318
- ],
2319
- },
2320
- {}
2321
- ).verifier_data_for("suite", "plat").must_equal(
2322
- name: "bussy",
2323
- http_proxy: "it's probably fine",
2324
- https_proxy: "la quinta"
2325
- )
2326
- end
2327
-
2328
- it "platform driver value loses to existing provisioner value" do
2329
- DataMunger.new(
2330
- {
2331
- platforms: [
2332
- {
2333
- name: "plat",
2334
- provisioner: {
2335
- name: "chefy",
2336
- http_proxy: "it's probably fine",
2337
- https_proxy: "la quinta",
2338
- },
2339
- driver: {
2340
- name: "starship",
2341
- http_proxy: "dragons",
2342
- https_proxy: "cats",
2343
- },
2344
- },
2345
- ],
2346
- },
2347
- {}
2348
- ).provisioner_data_for("suite", "plat").must_equal(
2349
- name: "chefy",
2350
- http_proxy: "it's probably fine",
2351
- https_proxy: "la quinta"
2352
- )
2353
- end
2354
-
2355
- it "platform driver value loses to existing verifier value" do
2356
- DataMunger.new(
2357
- {
2358
- platforms: [
2359
- {
2360
- name: "plat",
2361
- verifier: {
2362
- name: "bussy",
2363
- http_proxy: "it's probably fine",
2364
- https_proxy: "la quinta",
2365
- },
2366
- driver: {
2367
- name: "starship",
2368
- http_proxy: "dragons",
2369
- https_proxy: "cats",
2370
- },
2371
- },
2372
- ],
2373
- },
2374
- {}
2375
- ).verifier_data_for("suite", "plat").must_equal(
2376
- name: "bussy",
2377
- http_proxy: "it's probably fine",
2378
- https_proxy: "la quinta"
2379
- )
2380
- end
2381
- end
2382
- end
2383
-
2384
- describe "legacy busser blocks to verifier" do
2385
- describe "from a single source" do
2386
- it "merges old common busser name to version into verifier" do
2387
- DataMunger.new(
2388
- {
2389
- busser: "starship",
2390
- },
2391
- {}
2392
- ).verifier_data_for("suite", "platform").must_equal(
2393
- name: "busser",
2394
- version: "starship"
2395
- )
2396
- end
2397
-
2398
- it "merges old common busser name to version with exising verifier" do
2399
- DataMunger.new(
2400
- {
2401
- busser: "starship",
2402
- verifier: {
2403
- a: "b",
2404
- },
2405
- },
2406
- {}
2407
- ).verifier_data_for("suite", "platform").must_equal(
2408
- name: "busser",
2409
- version: "starship",
2410
- a: "b"
2411
- )
2412
- end
2413
-
2414
- it "merges old common busser name to version into verifier with name" do
2415
- DataMunger.new(
2416
- {
2417
- busser: "starship",
2418
- verifier: "stellar",
2419
- },
2420
- {}
2421
- ).verifier_data_for("suite", "platform").must_equal(
2422
- name: "stellar",
2423
- version: "starship"
2424
- )
2425
- end
2426
-
2427
- it "merges old busser data into verifier with name" do
2428
- DataMunger.new(
2429
- {
2430
- busser: {
2431
- a: "b",
2432
- },
2433
- verifier: "stellar",
2434
- },
2435
- {}
2436
- ).verifier_data_for("suite", "platform").must_equal(
2437
- name: "stellar",
2438
- a: "b"
2439
- )
2440
- end
2441
-
2442
- it "merges old busser data into verifier data" do
2443
- DataMunger.new(
2444
- {
2445
- busser: {
2446
- a: "b",
2447
- both: "legacy",
2448
- },
2449
- verifier: {
2450
- name: "stellar",
2451
- c: "d",
2452
- both: "modern",
2453
- },
2454
- },
2455
- {}
2456
- ).verifier_data_for("suite", "platform").must_equal(
2457
- name: "stellar",
2458
- a: "b",
2459
- c: "d",
2460
- both: "modern"
2461
- )
2462
- end
2463
-
2464
- it "returns platform verifier name" do
2465
- DataMunger.new(
2466
- {
2467
- platforms: [
2468
- {
2469
- name: "plat",
2470
- busser: "flip",
2471
- },
2472
- ],
2473
- },
2474
- {}
2475
- ).verifier_data_for("suite", "plat").must_equal(
2476
- name: "busser",
2477
- version: "flip"
2478
- )
2479
- end
2480
-
2481
- it "return platform config containing verifier hash" do
2482
- DataMunger.new(
2483
- {
2484
- platforms: [
2485
- {
2486
- name: "plat",
2487
- busser: "flip",
2488
- verifier: {
2489
- flop: "yep",
2490
- },
2491
- },
2492
- ],
2493
- },
2494
- {}
2495
- ).verifier_data_for("suite", "plat").must_equal(
2496
- name: "busser",
2497
- version: "flip",
2498
- flop: "yep"
2499
- )
2500
- end
2501
-
2502
- it "returns suite driver name" do
2503
- DataMunger.new(
2504
- {
2505
- suites: [
2506
- {
2507
- name: "sweet",
2508
- busser: "waz",
2509
- },
2510
- ],
2511
- },
2512
- {}
2513
- ).verifier_data_for("sweet", "platform").must_equal(
2514
- name: "busser",
2515
- version: "waz"
2516
- )
2517
- end
2518
-
2519
- it "returns suite config containing verifier hash" do
2520
- DataMunger.new(
2521
- {
2522
- suites: [
2523
- {
2524
- name: "sweet",
2525
- busser: "waz",
2526
- verifier: {
2527
- up: "nope",
2528
- },
2529
- },
2530
- ],
2531
- },
2532
- {}
2533
- ).verifier_data_for("sweet", "platform").must_equal(
2534
- name: "busser",
2535
- version: "waz",
2536
- up: "nope"
2537
- )
2538
- end
2539
- end
2540
-
2541
- describe "from multiple sources" do
2542
- it "suite into platform into common" do
2543
- DataMunger.new(
2544
- {
2545
- busser: {
2546
- version: "commony",
2547
- color: "purple",
2548
- fruit: %w{apple pear},
2549
- deep: { common: "junk" },
2550
- },
2551
- platforms: [
2552
- {
2553
- name: "plat",
2554
- busser: {
2555
- version: "platformy",
2556
- fruit: ["banana"],
2557
- deep: { platform: "stuff" },
2558
- },
2559
- },
2560
- ],
2561
- suites: [
2562
- {
2563
- name: "sweet",
2564
- busser: {
2565
- version: "suitey",
2566
- vehicle: "car",
2567
- deep: { suite: "things" },
2568
- },
2569
- },
2570
- ],
2571
- },
2572
- {}
2573
- ).verifier_data_for("sweet", "plat").must_equal(
2574
- name: "busser",
2575
- version: "suitey",
2576
- color: "purple",
2577
- fruit: ["banana"],
2578
- vehicle: "car",
2579
- deep: {
2580
- common: "junk",
2581
- platform: "stuff",
2582
- suite: "things",
2583
- }
2584
- )
2585
- end
2586
-
2587
- it "platform into common" do
2588
- DataMunger.new(
2589
- {
2590
- busser: {
2591
- version: "commony",
2592
- color: "purple",
2593
- fruit: %w{apple pear},
2594
- deep: { common: "junk" },
2595
- },
2596
- platforms: [
2597
- {
2598
- name: "plat",
2599
- busser: {
2600
- version: "platformy",
2601
- fruit: ["banana"],
2602
- deep: { platform: "stuff" },
2603
- },
2604
- },
2605
- ],
2606
- },
2607
- {}
2608
- ).verifier_data_for("sweet", "plat").must_equal(
2609
- name: "busser",
2610
- version: "platformy",
2611
- color: "purple",
2612
- fruit: ["banana"],
2613
- deep: {
2614
- common: "junk",
2615
- platform: "stuff",
2616
- }
2617
- )
2618
- end
2619
-
2620
- it "suite into common" do
2621
- DataMunger.new(
2622
- {
2623
- busser: {
2624
- version: "commony",
2625
- color: "purple",
2626
- fruit: %w{apple pear},
2627
- deep: { common: "junk" },
2628
- },
2629
- suites: [
2630
- {
2631
- name: "sweet",
2632
- busser: {
2633
- version: "suitey",
2634
- vehicle: "car",
2635
- deep: { suite: "things" },
2636
- },
2637
- },
2638
- ],
2639
- },
2640
- {}
2641
- ).verifier_data_for("sweet", "plat").must_equal(
2642
- name: "busser",
2643
- version: "suitey",
2644
- color: "purple",
2645
- fruit: %w{apple pear},
2646
- vehicle: "car",
2647
- deep: {
2648
- common: "junk",
2649
- suite: "things",
2650
- }
2651
- )
2652
- end
2653
-
2654
- it "suite into platform" do
2655
- DataMunger.new(
2656
- {
2657
- platforms: [
2658
- {
2659
- name: "plat",
2660
- busser: {
2661
- version: "platformy",
2662
- fruit: ["banana"],
2663
- deep: { platform: "stuff" },
2664
- },
2665
- },
2666
- ],
2667
- suites: [
2668
- {
2669
- name: "sweet",
2670
- busser: {
2671
- version: "suitey",
2672
- vehicle: "car",
2673
- deep: { suite: "things" },
2674
- },
2675
- },
2676
- ],
2677
- },
2678
- {}
2679
- ).verifier_data_for("sweet", "plat").must_equal(
2680
- name: "busser",
2681
- version: "suitey",
2682
- fruit: ["banana"],
2683
- vehicle: "car",
2684
- deep: {
2685
- platform: "stuff",
2686
- suite: "things",
2687
- }
2688
- )
2689
- end
2690
- end
2691
- end
2692
-
2693
- describe "lifecycle_hooks stuff" do
2694
- it "handles a single global hook" do
2695
- DataMunger.new(
2696
- {
2697
- lifecycle: {
2698
- pre_create: "echo foo",
2699
- },
2700
- platforms: [{ name: "plat" }],
2701
- suites: [{ name: "sweet" }],
2702
- },
2703
- {}
2704
- ).lifecycle_hooks_data_for("sweet", "plat").must_equal(
2705
- pre_create: ["echo foo"]
2706
- )
2707
- end
2708
-
2709
- it "handles multiple global hooks" do
2710
- DataMunger.new(
2711
- {
2712
- lifecycle: {
2713
- pre_create: "echo foo",
2714
- post_converge: ["echo bar", { local: "echo baz" }],
2715
- pre_verify: [{ remote: "echo other" }],
2716
- },
2717
- platforms: [{ name: "plat" }],
2718
- suites: [{ name: "sweet" }],
2719
- },
2720
- {}
2721
- ).lifecycle_hooks_data_for("sweet", "plat").must_equal(
2722
- pre_create: ["echo foo"],
2723
- post_converge: ["echo bar", { local: "echo baz" }],
2724
- pre_verify: [{ remote: "echo other" }]
2725
- )
2726
- end
2727
-
2728
- it "handles hooks in platforms and suites" do
2729
- DataMunger.new(
2730
- {
2731
- lifecycle: {
2732
- pre_create: "echo foo",
2733
- post_create: "echo post",
2734
- },
2735
- platforms: [{
2736
- name: "plat",
2737
- lifecycle: {
2738
- pre_create: "echo bar",
2739
- },
2740
- }],
2741
- suites: [{
2742
- name: "sweet",
2743
- lifecycle: {
2744
- pre_create: "echo baz",
2745
- },
2746
- }],
2747
- },
2748
- {}
2749
- ).lifecycle_hooks_data_for("sweet", "plat").must_equal(
2750
- pre_create: ["echo foo", "echo bar", "echo baz"],
2751
- post_create: ["echo post"]
2752
- )
2753
- end
2754
-
2755
- it "munges a global legacy pre_create_command" do
2756
- DataMunger.new(
2757
- {
2758
- driver: {
2759
- pre_create_command: "echo bar",
2760
- },
2761
- lifecycle: {
2762
- pre_create: "echo foo",
2763
- },
2764
- platforms: [{ name: "plat" }],
2765
- suites: [{ name: "sweet" }],
2766
- },
2767
- {}
2768
- ).lifecycle_hooks_data_for("sweet", "plat").must_equal(
2769
- pre_create: ["echo foo", { local: "echo bar" }]
2770
- )
2771
- end
2772
-
2773
- it "munges a platform/suite legacy pre_create_commands" do
2774
- DataMunger.new(
2775
- {
2776
- lifecycle: {
2777
- pre_create: "echo foo",
2778
- },
2779
- platforms: [{
2780
- name: "plat",
2781
- driver: {
2782
- pre_create_command: "echo bar",
2783
- },
2784
- }],
2785
- suites: [{
2786
- name: "sweet",
2787
- driver: {
2788
- pre_create_command: "echo baz",
2789
- },
2790
- }],
2791
- },
2792
- {}
2793
- ).lifecycle_hooks_data_for("sweet", "plat").must_equal(
2794
- pre_create: ["echo foo", { local: "echo bar" }, { local: "echo baz" }]
2795
- )
2796
- end
2797
-
2798
- end
2799
- end
2800
- end