test-kitchen 1.23.3 → 1.23.4

Sign up to get free protection for your applications and to get access to all the features.
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