chef-dk 3.13.1 → 4.0.60

Sign up to get free protection for your applications and to get access to all the features.
Files changed (373) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +33 -25
  3. data/Gemfile.lock +317 -293
  4. data/LICENSE +0 -0
  5. data/Rakefile +0 -0
  6. data/bin/chef +1 -1
  7. data/chef-dk.gemspec +3 -3
  8. data/lib/chef-dk.rb +0 -0
  9. data/lib/chef-dk/authenticated_http.rb +0 -0
  10. data/lib/chef-dk/builtin_commands.rb +1 -3
  11. data/lib/chef-dk/chef_runner.rb +0 -0
  12. data/lib/chef-dk/chef_server_api_multi.rb +0 -0
  13. data/lib/chef-dk/cli.rb +2 -3
  14. data/lib/chef-dk/command/base.rb +9 -1
  15. data/lib/chef-dk/command/clean_policy_cookbooks.rb +2 -3
  16. data/lib/chef-dk/command/clean_policy_revisions.rb +3 -4
  17. data/lib/chef-dk/command/delete_policy.rb +1 -1
  18. data/lib/chef-dk/command/delete_policy_group.rb +1 -2
  19. data/lib/chef-dk/command/describe_cookbook.rb +5 -4
  20. data/lib/chef-dk/command/diff.rb +7 -9
  21. data/lib/chef-dk/command/env.rb +0 -0
  22. data/lib/chef-dk/command/exec.rb +0 -0
  23. data/lib/chef-dk/command/export.rb +0 -1
  24. data/lib/chef-dk/command/gem.rb +0 -0
  25. data/lib/chef-dk/command/generate.rb +1 -6
  26. data/lib/chef-dk/command/generator_commands.rb +0 -0
  27. data/lib/chef-dk/command/generator_commands/attribute.rb +0 -0
  28. data/lib/chef-dk/command/generator_commands/base.rb +0 -0
  29. data/lib/chef-dk/command/generator_commands/build_cookbook.rb +7 -7
  30. data/lib/chef-dk/command/generator_commands/chef_exts/generator_desc_resource.rb +4 -49
  31. data/lib/chef-dk/command/generator_commands/chef_exts/quieter_doc_formatter.rb +0 -0
  32. data/lib/chef-dk/command/generator_commands/chef_exts/recipe_dsl_ext.rb +0 -0
  33. data/lib/chef-dk/command/generator_commands/cookbook.rb +22 -23
  34. data/lib/chef-dk/command/generator_commands/cookbook_code_file.rb +0 -0
  35. data/lib/chef-dk/command/generator_commands/cookbook_file.rb +0 -0
  36. data/lib/chef-dk/command/generator_commands/generator_generator.rb +0 -0
  37. data/lib/chef-dk/command/generator_commands/helpers.rb +0 -0
  38. data/lib/chef-dk/command/generator_commands/policyfile.rb +0 -0
  39. data/lib/chef-dk/command/generator_commands/recipe.rb +0 -0
  40. data/lib/chef-dk/command/generator_commands/repo.rb +25 -9
  41. data/lib/chef-dk/command/generator_commands/resource.rb +0 -0
  42. data/lib/chef-dk/command/generator_commands/template.rb +0 -0
  43. data/lib/chef-dk/command/install.rb +1 -2
  44. data/lib/chef-dk/command/provision.rb +2 -404
  45. data/lib/chef-dk/command/push.rb +1 -2
  46. data/lib/chef-dk/command/push_archive.rb +2 -2
  47. data/lib/chef-dk/command/shell_init.rb +9 -5
  48. data/lib/chef-dk/command/show_policy.rb +0 -1
  49. data/lib/chef-dk/command/undelete.rb +0 -1
  50. data/lib/chef-dk/command/update.rb +0 -1
  51. data/lib/chef-dk/command/verify.rb +13 -110
  52. data/lib/chef-dk/commands_map.rb +0 -0
  53. data/lib/chef-dk/completions/bash.sh.erb +0 -0
  54. data/lib/chef-dk/completions/chef.fish.erb +0 -0
  55. data/lib/chef-dk/completions/zsh.zsh.erb +0 -0
  56. data/lib/chef-dk/component_test.rb +4 -2
  57. data/lib/chef-dk/configurable.rb +0 -1
  58. data/lib/chef-dk/cookbook_metadata.rb +0 -0
  59. data/lib/chef-dk/cookbook_omnifetch.rb +0 -0
  60. data/lib/chef-dk/cookbook_profiler/git.rb +0 -0
  61. data/lib/chef-dk/cookbook_profiler/identifiers.rb +0 -0
  62. data/lib/chef-dk/cookbook_profiler/null_scm.rb +0 -0
  63. data/lib/chef-dk/exceptions.rb +1 -1
  64. data/lib/chef-dk/generator.rb +1 -1
  65. data/lib/chef-dk/helpers.rb +1 -2
  66. data/lib/chef-dk/pager.rb +0 -0
  67. data/lib/chef-dk/policyfile/artifactory_cookbook_source.rb +0 -0
  68. data/lib/chef-dk/policyfile/attribute_merge_checker.rb +0 -0
  69. data/lib/chef-dk/policyfile/chef_repo_cookbook_source.rb +0 -0
  70. data/lib/chef-dk/policyfile/chef_server_cookbook_source.rb +0 -0
  71. data/lib/chef-dk/policyfile/chef_server_lock_fetcher.rb +2 -2
  72. data/lib/chef-dk/policyfile/community_cookbook_source.rb +0 -0
  73. data/lib/chef-dk/policyfile/comparison_base.rb +0 -0
  74. data/lib/chef-dk/policyfile/cookbook_location_specification.rb +0 -0
  75. data/lib/chef-dk/policyfile/cookbook_locks.rb +1 -1
  76. data/lib/chef-dk/policyfile/cookbook_sources.rb +0 -0
  77. data/lib/chef-dk/policyfile/delivery_supermarket_source.rb +0 -0
  78. data/lib/chef-dk/policyfile/differ.rb +0 -0
  79. data/lib/chef-dk/policyfile/dsl.rb +1 -1
  80. data/lib/chef-dk/policyfile/git_lock_fetcher.rb +0 -0
  81. data/lib/chef-dk/policyfile/included_policies_cookbook_source.rb +0 -0
  82. data/lib/chef-dk/policyfile/lister.rb +0 -0
  83. data/lib/chef-dk/policyfile/local_lock_fetcher.rb +0 -0
  84. data/lib/chef-dk/policyfile/lock_applier.rb +0 -0
  85. data/lib/chef-dk/policyfile/lock_fetcher_mixin.rb +0 -0
  86. data/lib/chef-dk/policyfile/null_cookbook_source.rb +0 -0
  87. data/lib/chef-dk/policyfile/policyfile_location_specification.rb +0 -0
  88. data/lib/chef-dk/policyfile/read_cookbook_for_compat_mode_upload.rb +0 -0
  89. data/lib/chef-dk/policyfile/remote_lock_fetcher.rb +0 -0
  90. data/lib/chef-dk/policyfile/reports/install.rb +0 -0
  91. data/lib/chef-dk/policyfile/reports/table_printer.rb +0 -0
  92. data/lib/chef-dk/policyfile/reports/upload.rb +0 -0
  93. data/lib/chef-dk/policyfile/solution_dependencies.rb +1 -1
  94. data/lib/chef-dk/policyfile/source_uri.rb +0 -0
  95. data/lib/chef-dk/policyfile/storage_config.rb +0 -0
  96. data/lib/chef-dk/policyfile/undo_record.rb +0 -0
  97. data/lib/chef-dk/policyfile/undo_stack.rb +0 -0
  98. data/lib/chef-dk/policyfile/uploader.rb +0 -0
  99. data/lib/chef-dk/policyfile_compiler.rb +2 -4
  100. data/lib/chef-dk/policyfile_lock.rb +1 -3
  101. data/lib/chef-dk/policyfile_services/clean_policies.rb +0 -0
  102. data/lib/chef-dk/policyfile_services/clean_policy_cookbooks.rb +0 -0
  103. data/lib/chef-dk/policyfile_services/export_repo.rb +6 -6
  104. data/lib/chef-dk/policyfile_services/install.rb +0 -0
  105. data/lib/chef-dk/policyfile_services/push.rb +0 -0
  106. data/lib/chef-dk/policyfile_services/push_archive.rb +2 -2
  107. data/lib/chef-dk/policyfile_services/rm_policy.rb +0 -0
  108. data/lib/chef-dk/policyfile_services/rm_policy_group.rb +0 -0
  109. data/lib/chef-dk/policyfile_services/show_policy.rb +0 -0
  110. data/lib/chef-dk/policyfile_services/undelete.rb +0 -0
  111. data/lib/chef-dk/policyfile_services/update_attributes.rb +0 -0
  112. data/lib/chef-dk/service_exception_inspectors.rb +0 -0
  113. data/lib/chef-dk/service_exception_inspectors/base.rb +0 -0
  114. data/lib/chef-dk/service_exception_inspectors/http.rb +0 -0
  115. data/lib/chef-dk/service_exceptions.rb +0 -0
  116. data/lib/chef-dk/shell_out.rb +0 -0
  117. data/lib/chef-dk/skeletons/code_generator/files/default/Berksfile +0 -0
  118. data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/README.md +0 -0
  119. data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/kitchen.yml +1 -1
  120. data/lib/chef-dk/skeletons/code_generator/files/default/build_cookbook/test-fixture-recipe.rb +0 -0
  121. data/lib/chef-dk/skeletons/code_generator/files/default/chefignore +0 -0
  122. data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README-policy.md +0 -0
  123. data/lib/chef-dk/skeletons/code_generator/files/default/cookbook_readmes/README.md +0 -0
  124. data/lib/chef-dk/skeletons/code_generator/files/default/delivery-config.json +0 -0
  125. data/lib/chef-dk/skeletons/code_generator/files/default/delivery-project.toml +0 -0
  126. data/lib/chef-dk/skeletons/code_generator/files/default/gitignore +0 -0
  127. data/lib/chef-dk/skeletons/code_generator/files/default/repo/README.md +0 -0
  128. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/README.md +0 -0
  129. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/attributes/default.rb +0 -0
  130. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/metadata.rb +0 -0
  131. data/lib/chef-dk/skeletons/code_generator/files/default/repo/cookbooks/example/recipes/default.rb +0 -0
  132. data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/README.md +0 -0
  133. data/lib/chef-dk/skeletons/code_generator/files/default/repo/data_bags/example/example_item.json +0 -0
  134. data/lib/chef-dk/skeletons/code_generator/files/default/repo/dot-chef-repo.txt +0 -0
  135. data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/README.md +0 -0
  136. data/lib/chef-dk/skeletons/code_generator/files/default/repo/environments/example.json +0 -0
  137. data/lib/chef-dk/skeletons/code_generator/files/default/repo/policyfiles/README.md +0 -0
  138. data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/README.md +0 -0
  139. data/lib/chef-dk/skeletons/code_generator/files/default/repo/roles/example.json +0 -0
  140. data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper.rb +0 -0
  141. data/lib/chef-dk/skeletons/code_generator/files/default/spec_helper_policyfile.rb +0 -0
  142. data/lib/chef-dk/skeletons/code_generator/metadata.rb +0 -0
  143. data/lib/chef-dk/skeletons/code_generator/recipes/attribute.rb +0 -0
  144. data/lib/chef-dk/skeletons/code_generator/recipes/build_cookbook.rb +20 -20
  145. data/lib/chef-dk/skeletons/code_generator/recipes/cookbook.rb +24 -16
  146. data/lib/chef-dk/skeletons/code_generator/recipes/cookbook_file.rb +0 -0
  147. data/lib/chef-dk/skeletons/code_generator/recipes/helpers.rb +0 -0
  148. data/lib/chef-dk/skeletons/code_generator/recipes/policyfile.rb +0 -0
  149. data/lib/chef-dk/skeletons/code_generator/recipes/recipe.rb +0 -0
  150. data/lib/chef-dk/skeletons/code_generator/recipes/repo.rb +7 -3
  151. data/lib/chef-dk/skeletons/code_generator/recipes/resource.rb +0 -0
  152. data/lib/chef-dk/skeletons/code_generator/recipes/template.rb +0 -0
  153. data/lib/chef-dk/skeletons/code_generator/templates/default/CHANGELOG.md.erb +0 -0
  154. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.all_rights.erb +0 -0
  155. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.apachev2.erb +0 -0
  156. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv2.erb +0 -0
  157. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.gplv3.erb +0 -0
  158. data/lib/chef-dk/skeletons/code_generator/templates/default/LICENSE.mit.erb +0 -0
  159. data/lib/chef-dk/skeletons/code_generator/templates/default/Policyfile.rb.erb +0 -0
  160. data/lib/chef-dk/skeletons/code_generator/templates/default/README.md.erb +0 -0
  161. data/lib/chef-dk/skeletons/code_generator/templates/default/attribute.rb.erb +0 -0
  162. data/lib/chef-dk/skeletons/code_generator/templates/default/build_cookbook/Berksfile.erb +1 -1
  163. data/lib/chef-dk/skeletons/code_generator/templates/default/build_cookbook/metadata.rb.erb +1 -1
  164. data/lib/chef-dk/skeletons/code_generator/templates/default/build_cookbook/recipe.rb.erb +0 -0
  165. data/lib/chef-dk/skeletons/code_generator/templates/default/cookbook_file.erb +0 -0
  166. data/lib/chef-dk/skeletons/code_generator/templates/default/helpers.rb.erb +0 -0
  167. data/lib/chef-dk/skeletons/code_generator/templates/default/inspec_default_test.rb.erb +0 -0
  168. data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen.yml.erb +1 -1
  169. data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_dokken.yml.erb +0 -0
  170. data/lib/chef-dk/skeletons/code_generator/templates/default/kitchen_policyfile.yml.erb +1 -1
  171. data/lib/chef-dk/skeletons/code_generator/templates/default/metadata.rb.erb +1 -1
  172. data/lib/chef-dk/skeletons/code_generator/templates/default/recipe.rb.erb +0 -0
  173. data/lib/chef-dk/skeletons/code_generator/templates/default/recipe_spec.rb.erb +0 -0
  174. data/lib/chef-dk/skeletons/code_generator/templates/default/repo/gitignore.erb +0 -0
  175. data/lib/chef-dk/skeletons/code_generator/templates/default/resource.rb.erb +0 -0
  176. data/lib/chef-dk/skeletons/code_generator/templates/default/template.erb +0 -0
  177. data/lib/chef-dk/ui.rb +0 -0
  178. data/lib/chef-dk/version.rb +1 -1
  179. data/lib/kitchen/provisioner/policyfile_zero.rb +0 -0
  180. data/spec/shared/a_file_generator.rb +0 -0
  181. data/spec/shared/a_generated_file.rb +0 -0
  182. data/spec/shared/command_with_ui_object.rb +0 -0
  183. data/spec/shared/custom_generator_cookbook.rb +0 -0
  184. data/spec/shared/fixture_cookbook_checksums.rb +1 -1
  185. data/spec/shared/setup_git_committer_config.rb +0 -0
  186. data/spec/shared/setup_git_cookbooks.rb +0 -0
  187. data/spec/spec_helper.rb +0 -4
  188. data/spec/test_helpers.rb +0 -0
  189. data/spec/unit/chef_runner_spec.rb +0 -0
  190. data/spec/unit/chef_server_api_multi_spec.rb +0 -0
  191. data/spec/unit/cli_spec.rb +0 -0
  192. data/spec/unit/command/base_spec.rb +24 -1
  193. data/spec/unit/command/clean_policy_cookbooks_spec.rb +0 -0
  194. data/spec/unit/command/clean_policy_revisions_spec.rb +0 -0
  195. data/spec/unit/command/delete_policy_group_spec.rb +0 -0
  196. data/spec/unit/command/delete_policy_spec.rb +0 -0
  197. data/spec/unit/command/diff_spec.rb +0 -0
  198. data/spec/unit/command/env_spec.rb +1 -1
  199. data/spec/unit/command/exec_spec.rb +1 -1
  200. data/spec/unit/command/export_spec.rb +0 -0
  201. data/spec/unit/command/generate_spec.rb +0 -0
  202. data/spec/unit/command/generator_commands/attribute_spec.rb +0 -0
  203. data/spec/unit/command/generator_commands/base_spec.rb +0 -0
  204. data/spec/unit/command/generator_commands/build_cookbook_spec.rb +15 -15
  205. data/spec/unit/command/generator_commands/chef_exts/generator_desc_resource_spec.rb +6 -26
  206. data/spec/unit/command/generator_commands/chef_exts/recipe_dsl_ext_spec.rb +0 -0
  207. data/spec/unit/command/generator_commands/cookbook_file_spec.rb +0 -0
  208. data/spec/unit/command/generator_commands/cookbook_spec.rb +200 -203
  209. data/spec/unit/command/generator_commands/generator_generator_spec.rb +7 -7
  210. data/spec/unit/command/generator_commands/helpers_spec.rb +0 -0
  211. data/spec/unit/command/generator_commands/policyfile_spec.rb +0 -0
  212. data/spec/unit/command/generator_commands/recipe_spec.rb +1 -2
  213. data/spec/unit/command/generator_commands/repo_spec.rb +8 -8
  214. data/spec/unit/command/generator_commands/resource_spec.rb +0 -0
  215. data/spec/unit/command/generator_commands/template_spec.rb +0 -0
  216. data/spec/unit/command/install_spec.rb +0 -0
  217. data/spec/unit/command/push_archive_spec.rb +0 -0
  218. data/spec/unit/command/push_spec.rb +0 -0
  219. data/spec/unit/command/shell_init_spec.rb +0 -0
  220. data/spec/unit/command/show_policy_spec.rb +0 -0
  221. data/spec/unit/command/undelete_spec.rb +0 -0
  222. data/spec/unit/command/update_spec.rb +0 -0
  223. data/spec/unit/command/verify_spec.rb +2 -3
  224. data/spec/unit/commands_map_spec.rb +0 -0
  225. data/spec/unit/component_test_spec.rb +0 -0
  226. data/spec/unit/configurable_spec.rb +0 -0
  227. data/spec/unit/cookbook_metadata_spec.rb +0 -0
  228. data/spec/unit/cookbook_profiler/git_spec.rb +0 -0
  229. data/spec/unit/cookbook_profiler/identifiers_spec.rb +3 -3
  230. data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_one.rb +0 -0
  231. data/spec/unit/fixtures/chef-runner-cookbooks/test_cookbook/recipes/recipe_two.rb +0 -0
  232. data/spec/unit/fixtures/command/cli_test_command.rb +0 -0
  233. data/spec/unit/fixtures/command/explicit_path_example.rb +0 -0
  234. data/spec/unit/fixtures/configurable/test_config_loader.rb +0 -0
  235. data/spec/unit/fixtures/configurable/test_configurable.rb +0 -0
  236. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +0 -0
  237. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/Berksfile +0 -0
  238. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +0 -0
  239. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/chefignore +0 -0
  240. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +0 -0
  241. data/spec/unit/fixtures/cookbook_cache/baz-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +0 -0
  242. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/.kitchen.yml +0 -0
  243. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/Berksfile +0 -0
  244. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/README.md +0 -0
  245. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/chefignore +0 -0
  246. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/metadata.rb +0 -0
  247. data/spec/unit/fixtures/cookbook_cache/dep_of_bar-1.2.3/recipes/default.rb +0 -0
  248. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/Berksfile +0 -0
  249. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/README.md +0 -0
  250. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/chefignore +0 -0
  251. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/{.kitchen.yml → kitchen.yml} +0 -0
  252. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/metadata.rb +0 -0
  253. data/spec/unit/fixtures/cookbook_cache/foo-1.0.0/recipes/default.rb +0 -0
  254. data/spec/unit/fixtures/cookbooks_api/chef_server_universe.json +0 -0
  255. data/spec/unit/fixtures/cookbooks_api/pruned_chef_server_universe.json +0 -0
  256. data/spec/unit/fixtures/cookbooks_api/pruned_small_universe.json +0 -0
  257. data/spec/unit/fixtures/cookbooks_api/small_universe.json +0 -0
  258. data/spec/unit/fixtures/cookbooks_api/universe.json +0 -0
  259. data/spec/unit/fixtures/cookbooks_api/update_fixtures.rb +0 -0
  260. data/spec/unit/fixtures/dev_cookbooks/README.md +0 -0
  261. data/spec/unit/fixtures/dev_cookbooks/bar-cookbook.gitbundle +0 -0
  262. data/spec/unit/fixtures/eg_omnibus_dir/missing_apps/bin/.keep +0 -0
  263. data/spec/unit/fixtures/eg_omnibus_dir/missing_apps/embedded/.keep +0 -0
  264. data/spec/unit/fixtures/eg_omnibus_dir/missing_apps/embedded/bin/.keep +0 -0
  265. data/spec/unit/fixtures/eg_omnibus_dir/missing_component/bin/.keep +0 -0
  266. data/spec/unit/fixtures/eg_omnibus_dir/missing_component/embedded/apps/berkshelf/.keep +0 -0
  267. data/spec/unit/fixtures/eg_omnibus_dir/missing_component/embedded/apps/test-kitchen/.keep +0 -0
  268. data/spec/unit/fixtures/eg_omnibus_dir/missing_component/embedded/bin/.keep +0 -0
  269. data/spec/unit/fixtures/eg_omnibus_dir/valid/bin/.keep +0 -0
  270. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/apps/chef-dk/.keep +0 -0
  271. data/spec/unit/fixtures/eg_omnibus_dir/valid/embedded/bin/.keep +0 -0
  272. data/spec/unit/fixtures/example_app/Policyfile.rb +0 -0
  273. data/spec/unit/fixtures/example_cookbook/.gitignore +0 -0
  274. data/spec/unit/fixtures/example_cookbook/.kitchen.yml +0 -0
  275. data/spec/unit/fixtures/example_cookbook/Berksfile +0 -0
  276. data/spec/unit/fixtures/example_cookbook/README.md +0 -0
  277. data/spec/unit/fixtures/example_cookbook/chefignore +0 -0
  278. data/spec/unit/fixtures/example_cookbook/metadata.rb +0 -0
  279. data/spec/unit/fixtures/example_cookbook/recipes/default.rb +0 -0
  280. data/spec/unit/fixtures/example_cookbook_metadata_json_only/.gitignore +0 -0
  281. data/spec/unit/fixtures/example_cookbook_metadata_json_only/.kitchen.yml +0 -0
  282. data/spec/unit/fixtures/example_cookbook_metadata_json_only/Berksfile +0 -0
  283. data/spec/unit/fixtures/example_cookbook_metadata_json_only/README.md +0 -0
  284. data/spec/unit/fixtures/example_cookbook_metadata_json_only/chefignore +0 -0
  285. data/spec/unit/fixtures/example_cookbook_metadata_json_only/metadata.json +0 -0
  286. data/spec/unit/fixtures/example_cookbook_metadata_json_only/recipes/default.rb +0 -0
  287. data/spec/unit/fixtures/example_cookbook_no_metadata/.gitignore +0 -0
  288. data/spec/unit/fixtures/example_cookbook_no_metadata/.kitchen.yml +0 -0
  289. data/spec/unit/fixtures/example_cookbook_no_metadata/Berksfile +0 -0
  290. data/spec/unit/fixtures/example_cookbook_no_metadata/README.md +0 -0
  291. data/spec/unit/fixtures/example_cookbook_no_metadata/chefignore +0 -0
  292. data/spec/unit/fixtures/example_cookbook_no_metadata/recipes/default.rb +0 -0
  293. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/README.md +0 -0
  294. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/chefignore +0 -0
  295. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/metadata.rb +0 -0
  296. data/spec/unit/fixtures/local_path_cookbooks/another-local-cookbook/recipes/default.rb +0 -0
  297. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/Berksfile +0 -0
  298. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/README.md +0 -0
  299. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/chefignore +0 -0
  300. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/metadata.rb +0 -0
  301. data/spec/unit/fixtures/local_path_cookbooks/cookbook-with-a-dep/recipes/default.rb +0 -0
  302. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/.kitchen.yml +0 -0
  303. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/Berksfile +0 -0
  304. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/README.md +0 -0
  305. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/chefignore +0 -0
  306. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/extra/extra_file.txt +0 -0
  307. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/metadata.rb +0 -0
  308. data/spec/unit/fixtures/local_path_cookbooks/local-cookbook/recipes/default.rb +0 -0
  309. data/spec/unit/fixtures/local_path_cookbooks/metadata-missing/README.md +0 -0
  310. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/.kitchen.yml +0 -0
  311. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/README.md +0 -0
  312. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/metadata.rb +0 -0
  313. data/spec/unit/fixtures/local_path_cookbooks/noignore-f59ee7a5bca6a4e606b67f7f856b768d847c39bb/recipes/default.rb +0 -0
  314. data/spec/unit/generator_spec.rb +0 -0
  315. data/spec/unit/pager_spec.rb +0 -0
  316. data/spec/unit/policyfile/artifactory_cookbook_source_spec.rb +0 -0
  317. data/spec/unit/policyfile/attribute_merge_checker_spec.rb +0 -0
  318. data/spec/unit/policyfile/chef_repo_cookbook_source_spec.rb +0 -0
  319. data/spec/unit/policyfile/chef_server_cookbook_source_spec.rb +0 -0
  320. data/spec/unit/policyfile/chef_server_lock_fetcher_spec.rb +0 -0
  321. data/spec/unit/policyfile/community_cookbook_source_spec.rb +0 -0
  322. data/spec/unit/policyfile/comparison_base_spec.rb +0 -0
  323. data/spec/unit/policyfile/cookbook_location_specification_spec.rb +0 -0
  324. data/spec/unit/policyfile/cookbook_locks_spec.rb +0 -0
  325. data/spec/unit/policyfile/delivery_supermarket_source_spec.rb +0 -0
  326. data/spec/unit/policyfile/differ_spec.rb +0 -0
  327. data/spec/unit/policyfile/git_lock_fetcher_spec.rb +0 -0
  328. data/spec/unit/policyfile/included_policies_cookbook_source_spec.rb +0 -0
  329. data/spec/unit/policyfile/lister_spec.rb +0 -0
  330. data/spec/unit/policyfile/local_lock_fetcher_spec.rb +0 -0
  331. data/spec/unit/policyfile/lock_applier_spec.rb +0 -0
  332. data/spec/unit/policyfile/lock_fetcher_mixin_spec.rb +0 -0
  333. data/spec/unit/policyfile/null_cookbook_source_spec.rb +0 -0
  334. data/spec/unit/policyfile/read_cookbook_for_compat_mode_upload_spec.rb +0 -0
  335. data/spec/unit/policyfile/remote_lock_fetcher_spec.rb +0 -0
  336. data/spec/unit/policyfile/reports/install_spec.rb +0 -0
  337. data/spec/unit/policyfile/reports/upload_spec.rb +0 -0
  338. data/spec/unit/policyfile/solution_dependencies_spec.rb +0 -0
  339. data/spec/unit/policyfile/source_uri_spec.rb +0 -0
  340. data/spec/unit/policyfile/storage_config_spec.rb +0 -0
  341. data/spec/unit/policyfile/undo_record_spec.rb +0 -0
  342. data/spec/unit/policyfile/undo_stack_spec.rb +0 -0
  343. data/spec/unit/policyfile/uploader_spec.rb +0 -0
  344. data/spec/unit/policyfile_demands_spec.rb +0 -0
  345. data/spec/unit/policyfile_evaluation_spec.rb +0 -0
  346. data/spec/unit/policyfile_includes_dsl_spec.rb +0 -0
  347. data/spec/unit/policyfile_includes_spec.rb +0 -0
  348. data/spec/unit/policyfile_install_with_includes_spec.rb +0 -0
  349. data/spec/unit/policyfile_lock_build_spec.rb +2 -2
  350. data/spec/unit/policyfile_lock_install_spec.rb +0 -0
  351. data/spec/unit/policyfile_lock_serialization_spec.rb +0 -0
  352. data/spec/unit/policyfile_lock_validation_spec.rb +0 -0
  353. data/spec/unit/policyfile_services/clean_policies_spec.rb +0 -0
  354. data/spec/unit/policyfile_services/clean_policy_cookbooks_spec.rb +0 -0
  355. data/spec/unit/policyfile_services/export_repo_spec.rb +6 -6
  356. data/spec/unit/policyfile_services/install_spec.rb +0 -0
  357. data/spec/unit/policyfile_services/push_archive_spec.rb +2 -2
  358. data/spec/unit/policyfile_services/push_spec.rb +0 -0
  359. data/spec/unit/policyfile_services/rm_policy_group_spec.rb +0 -0
  360. data/spec/unit/policyfile_services/rm_policy_spec.rb +0 -0
  361. data/spec/unit/policyfile_services/show_policy_spec.rb +0 -0
  362. data/spec/unit/policyfile_services/undelete_spec.rb +0 -0
  363. data/spec/unit/policyfile_services/update_attributes_spec.rb +0 -0
  364. data/spec/unit/policyfile_services/update_spec.rb +0 -0
  365. data/spec/unit/service_exception_inspectors/base_spec.rb +0 -0
  366. data/spec/unit/service_exception_inspectors/http_spec.rb +1 -1
  367. data/spec/unit/shell_out_spec.rb +0 -0
  368. data/warning.txt +3 -2
  369. metadata +20 -19
  370. data/lib/chef-dk/command/generator_commands/app.rb +0 -106
  371. data/lib/chef-dk/skeletons/code_generator/recipes/app.rb +0 -87
  372. data/spec/unit/command/generator_commands/app_spec.rb +0 -166
  373. data/spec/unit/command/provision_spec.rb +0 -589
@@ -1,166 +0,0 @@
1
- #
2
- # Copyright:: Copyright (c) 2014-2018 Chef Software Inc.
3
- # License:: Apache License, Version 2.0
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- require "spec_helper"
19
- require "shared/custom_generator_cookbook"
20
- require "chef-dk/command/generator_commands/app"
21
-
22
- describe ChefDK::Command::GeneratorCommands::App do
23
-
24
- let(:argv) { %w{new_app} }
25
-
26
- let(:stdout_io) { StringIO.new }
27
- let(:stderr_io) { StringIO.new }
28
-
29
- let(:expected_cookbook_file_relpaths) do
30
- %w{
31
- .gitignore
32
- kitchen.yml
33
- test
34
- test/integration
35
- test/integration/default
36
- test/integration/default/default_test.rb
37
- README.md
38
- cookbooks/new_app/Berksfile
39
- cookbooks/new_app/chefignore
40
- cookbooks/new_app/metadata.rb
41
- cookbooks/new_app/recipes
42
- cookbooks/new_app/recipes/default.rb
43
- cookbooks/new_app/spec
44
- cookbooks/new_app/spec/spec_helper.rb
45
- cookbooks/new_app/spec/unit
46
- cookbooks/new_app/spec/unit/recipes
47
- cookbooks/new_app/spec/unit/recipes/default_spec.rb
48
- }
49
- end
50
-
51
- let(:expected_cookbook_files) do
52
- expected_cookbook_file_relpaths.map do |relpath|
53
- File.join(Dir["#{tempdir}"], "new_app", relpath)
54
- end
55
- end
56
-
57
- subject(:cookbook_generator) { described_class.new(argv) }
58
-
59
- def generator_context
60
- ChefDK::Generator.context
61
- end
62
-
63
- before do
64
- ChefDK::Generator.reset
65
- end
66
-
67
- include_examples "custom generator cookbook" do
68
-
69
- let(:generator_arg) { "new_app" }
70
-
71
- let(:generator_name) { "app" }
72
-
73
- end
74
-
75
- context "when given the name of the cookbook to generate" do
76
-
77
- before do
78
- reset_tempdir
79
- end
80
-
81
- it "configures the generator context" do
82
- cookbook_generator.read_and_validate_params
83
- cookbook_generator.setup_context
84
- expect(generator_context.app_root).to eq(Dir.pwd)
85
- expect(generator_context.app_name).to eq("new_app")
86
- expect(generator_context.cookbook_root).to eq(File.join(Dir.pwd, "new_app", "cookbooks"))
87
- expect(generator_context.cookbook_name).to eq("new_app")
88
- expect(generator_context.recipe_name).to eq("default")
89
- end
90
-
91
- describe "generated files" do
92
- it "creates a new cookbook" do
93
- Dir.chdir(tempdir) do
94
- allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
95
- cookbook_generator.run
96
- end
97
- generated_files = Dir.glob(File.join(tempdir, "new_app", "**", "*"), File::FNM_DOTMATCH)
98
- expected_cookbook_files.each do |expected_file|
99
- expect(generated_files).to include(expected_file)
100
- end
101
- end
102
-
103
- shared_examples_for "a generated file" do |context_var|
104
- before do
105
- Dir.chdir(tempdir) do
106
- allow(cookbook_generator.chef_runner).to receive(:stdout).and_return(stdout_io)
107
- cookbook_generator.run
108
- end
109
- end
110
-
111
- it "should contain #{context_var} from the generator context" do
112
- expect(File.read(file)).to match line
113
- end
114
- end
115
-
116
- describe "README.md" do
117
- let(:file) { File.join(tempdir, "new_app", "README.md") }
118
-
119
- include_examples "a generated file", :cookbook_name do
120
- let(:line) { "# new_app" }
121
- end
122
- end
123
-
124
- describe "kitchen.yml" do
125
- let(:file) { File.join(tempdir, "new_app", "kitchen.yml") }
126
-
127
- include_examples "a generated file", :cookbook_name do
128
- let(:line) { /\s*- recipe\[new_app::default\]/ }
129
- end
130
- end
131
-
132
- describe "test/integration/default/default_test.rb" do
133
- let(:file) { File.join(tempdir, "new_app", "test", "integration", "default", "default_test.rb") }
134
-
135
- include_examples "a generated file", :cookbook_name do
136
- let(:line) { "describe port" }
137
- end
138
- end
139
-
140
- describe "cookbooks/new_app/metadata.rb" do
141
- let(:file) { File.join(tempdir, "new_app", "cookbooks", "new_app", "metadata.rb") }
142
-
143
- include_examples "a generated file", :cookbook_name do
144
- let(:line) { /name\s+'new_app'/ }
145
- end
146
- end
147
-
148
- describe "cookbooks/new_app/recipes/default.rb" do
149
- let(:file) { File.join(tempdir, "new_app", "cookbooks", "new_app", "recipes", "default.rb") }
150
-
151
- include_examples "a generated file", :cookbook_name do
152
- let(:line) { "# Cookbook:: new_app" }
153
- end
154
- end
155
-
156
- describe "cookbooks/new_app/spec/unit/recipes/default_spec.rb" do
157
- let(:file) { File.join(tempdir, "new_app", "cookbooks", "new_app", "spec", "unit", "recipes", "default_spec.rb") }
158
-
159
- include_examples "a generated file", :cookbook_name do
160
- let(:line) { "describe \'new_app::default\' do" }
161
- end
162
- end
163
-
164
- end
165
- end
166
- end
@@ -1,589 +0,0 @@
1
- #
2
- # Copyright:: Copyright (c) 2015 Chef Software Inc.
3
- # License:: Apache License, Version 2.0
4
- #
5
- # Licensed under the Apache License, Version 2.0 (the "License");
6
- # you may not use this file except in compliance with the License.
7
- # You may obtain a copy of the License at
8
- #
9
- # http://www.apache.org/licenses/LICENSE-2.0
10
- #
11
- # Unless required by applicable law or agreed to in writing, software
12
- # distributed under the License is distributed on an "AS IS" BASIS,
13
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
- # See the License for the specific language governing permissions and
15
- # limitations under the License.
16
- #
17
-
18
- require "spec_helper"
19
- require "shared/command_with_ui_object"
20
- require "chef-dk/command/provision"
21
-
22
- describe ChefDK::Command::Provision do
23
-
24
- it_behaves_like "a command with a UI object"
25
-
26
- let(:command) do
27
- described_class.new
28
- end
29
-
30
- let(:push_service) { instance_double(ChefDK::PolicyfileServices::Push) }
31
-
32
- let(:chef_config_loader) { instance_double("Chef::WorkstationConfigLoader") }
33
-
34
- let(:chef_config) { double("Chef::Config") }
35
-
36
- let(:config_arg) { nil }
37
-
38
- before do
39
- ChefDK::ProvisioningData.reset
40
-
41
- stub_const("Chef::Config", chef_config)
42
- allow(Chef::WorkstationConfigLoader).to receive(:new).with(config_arg).and_return(chef_config_loader)
43
- end
44
-
45
- describe "evaluating CLI options and arguments" do
46
-
47
- let(:ui) { TestHelpers::TestUI.new }
48
-
49
- before do
50
- command.ui = ui
51
- end
52
-
53
- describe "when input is invalid" do
54
-
55
- context "when not enough arguments are given" do
56
-
57
- let(:params) { [] }
58
-
59
- it "prints usage and exits non-zero" do
60
- expect(command.run(params)).to eq(1)
61
- expect(ui.output).to include("You must specify a POLICY_GROUP or disable policyfiles with --no-policy")
62
- end
63
-
64
- end
65
-
66
- context "when --no-policy is combined with policy arguments" do
67
-
68
- let(:params) { %w{ --no-policy some-policy-group } }
69
-
70
- it "prints usage and exits non-zero" do
71
- expect(command.run(params)).to eq(1)
72
- expect(ui.output).to include("The --no-policy flag cannot be combined with policyfile arguments")
73
- end
74
-
75
- end
76
-
77
- context "when a POLICY_GROUP is given but neither of --sync or --policy-name are given" do
78
-
79
- let(:params) { %w{ some-policy-group } }
80
-
81
- it "prints usage and exits non-zero" do
82
- expect(command.run(params)).to eq(1)
83
- expect(ui.output).to include("You must pass either --sync or --policy-name to provision machines in policyfile mode")
84
- end
85
-
86
- end
87
-
88
- context "when both --sync and --policy-name are given" do
89
-
90
- let(:params) { %w{ some-policy-group --policy-name foo --sync} }
91
-
92
- it "prints usage and exits non-zero" do
93
- expect(command.run(params)).to eq(1)
94
- expect(ui.output).to include("The --policy-name and --sync arguments cannot be combined")
95
- end
96
-
97
- end
98
-
99
- context "when too many arguments are given" do
100
-
101
- let(:params) { %w{ policygroup extraneous-argument --sync } }
102
-
103
- it "prints usage and exits non-zero" do
104
- expect(command.run(params)).to eq(1)
105
- expect(ui.output).to include("Too many arguments")
106
- end
107
-
108
- end
109
- end
110
-
111
- describe "when input is valid" do
112
-
113
- let(:context) { ChefDK::ProvisioningData.context }
114
-
115
- shared_examples "common_optional_options" do
116
-
117
- context "with default option values" do
118
-
119
- it "node name is not specified" do
120
- expect(command.node_name).to eq(nil)
121
- expect(context.node_name).to eq(nil)
122
- end
123
-
124
- it "sets the cookbook path to CWD" do
125
- # this is cookbook_path in the chef sense, a directory with cookbooks in it.
126
- expect(command.provisioning_cookbook_path).to eq(Dir.pwd)
127
- end
128
-
129
- it "sets the cookbook name to 'provision'" do
130
- expect(command.provisioning_cookbook_name).to eq("provision")
131
- end
132
-
133
- it "sets the recipe to 'default'" do
134
- expect(command.recipe).to eq("default")
135
- expect(command.chef_runner.run_list).to eq(["recipe[provision::default]"])
136
- end
137
-
138
- it "sets the default action to converge" do
139
- expect(command.default_action).to eq(:converge)
140
- expect(context.action).to eq(:converge)
141
- end
142
-
143
- end
144
-
145
- context "with -n NODE_NAME" do
146
-
147
- let(:extra_params) { %w{ -n example-node } }
148
-
149
- it "sets the default requested node name" do
150
- expect(command.node_name).to eq("example-node")
151
- expect(context.node_name).to eq("example-node")
152
- end
153
-
154
- end
155
-
156
- context "with --cookbook COOKBOOK_PATH" do
157
-
158
- let(:extra_params) { %w{ --cookbook ~/mystuff/my-provision-cookbook } }
159
-
160
- let(:expected_cookbook_path) { File.expand_path("~/mystuff") }
161
- let(:expected_cookbook_name) { "my-provision-cookbook" }
162
-
163
- it "sets the cookbook path" do
164
- # this is cookbook_path in the chef sense, a directory with cookbooks in it.
165
- expect(command.provisioning_cookbook_path).to eq(expected_cookbook_path)
166
- end
167
-
168
- it "sets the cookbook name" do
169
- expect(command.provisioning_cookbook_name).to eq(expected_cookbook_name)
170
- end
171
-
172
- end
173
-
174
- context "with -c CONFIG_FILE" do
175
-
176
- let(:config_arg) { "~/somewhere_else/knife.rb" }
177
-
178
- let(:extra_params) { [ "-c", config_arg ] }
179
-
180
- it "loads config from the specified location" do
181
- # The configurable module uses config[:config_file]
182
- expect(command.config[:config_file]).to eq("~/somewhere_else/knife.rb")
183
- end
184
-
185
- end
186
-
187
- context "with -r MACHINE_RECIPE" do
188
-
189
- let(:extra_params) { %w{ -r ec2cluster } }
190
-
191
- it "sets the recipe to run as specified" do
192
- expect(command.recipe).to eq("ec2cluster")
193
- expect(command.chef_runner.run_list).to eq(["recipe[provision::ec2cluster]"])
194
- end
195
-
196
- end
197
-
198
- context "with --target" do
199
-
200
- let(:extra_params) { %w{ -t 192.168.255.123 } }
201
-
202
- it "sets the target host to the given value" do
203
- expect(context.target).to eq("192.168.255.123")
204
- end
205
-
206
- end
207
-
208
- context "with --opt" do
209
- context "with one user-specified option" do
210
- let(:extra_params) { %w{ --opt color=ebfg } }
211
-
212
- it "sets the given option name to the given value" do
213
- expect(context.opts.color).to eq("ebfg")
214
- end
215
- end
216
-
217
- context "with an option given as a quoted arg with spaces" do
218
-
219
- let(:extra_params) { [ "--opt", "color = ebfg" ] }
220
-
221
- it "sets the given option name to the given value" do
222
- expect(context.opts.color).to eq("ebfg")
223
- end
224
- end
225
-
226
- context "with an option with an '=' in it" do
227
-
228
- let(:extra_params) { [ "--opt", "api_key=abcdef==" ] }
229
-
230
- it "sets the given option name to the given value" do
231
- expect(context.opts.api_key).to eq("abcdef==")
232
- end
233
- end
234
-
235
- context "with an option with a space in it" do
236
-
237
- let(:extra_params) { [ "--opt", "full_name=Bobo T. Clown" ] }
238
-
239
- it "sets the given option name to the given value" do
240
- expect(context.opts.full_name).to eq("Bobo T. Clown")
241
- end
242
- end
243
-
244
- context "with multiple options given" do
245
- let(:extra_params) { %w{ --opt color=ebfg --opt nope=seppb } }
246
-
247
- it "sets the given option name to the given value" do
248
- expect(context.opts.color).to eq("ebfg")
249
- expect(context.opts.nope).to eq("seppb")
250
- end
251
- end
252
- end
253
-
254
- context "with -d" do
255
-
256
- let(:extra_params) { %w{ -d } }
257
-
258
- it "sets the default action to destroy" do
259
- expect(command.default_action).to eq(:destroy)
260
- expect(context.action).to eq(:destroy)
261
- end
262
-
263
- end
264
-
265
- end # shared examples
266
-
267
- context "when --no-policy is given" do
268
-
269
- before do
270
- allow(chef_config_loader).to receive(:load)
271
- allow(command).to receive(:push).and_return(push_service)
272
-
273
- allow(chef_config).to receive(:ssl_verify_mode).and_return(:verify_peer)
274
-
275
- command.apply_params!(params)
276
- command.setup_context
277
- end
278
-
279
- let(:extra_params) { [] }
280
- let(:params) { %w{ --no-policy } + extra_params }
281
-
282
- it "disables policyfile integration" do
283
- expect(command.enable_policyfile?).to be(false)
284
- end
285
-
286
- it "generates chef config with no policyfile options" do
287
- expected_config = <<~CONFIG
288
- # SSL Settings:
289
- ssl_verify_mode :verify_peer
290
-
291
- CONFIG
292
- expect(context.chef_config).to eq(expected_config)
293
- end
294
-
295
- include_examples "common_optional_options"
296
-
297
- end # when --no-policy is given
298
-
299
- context "when --sync POLICYFILE argument is given" do
300
-
301
- let(:policy_data) { { "name" => "myapp" } }
302
-
303
- before do
304
- allow(chef_config_loader).to receive(:load)
305
-
306
- allow(ChefDK::PolicyfileServices::Push).to receive(:new)
307
- .with(policyfile: given_policyfile_path, ui: ui, policy_group: given_policy_group, config: chef_config, root_dir: Dir.pwd)
308
- .and_return(push_service)
309
-
310
- allow(push_service).to receive(:policy_data).and_return(policy_data)
311
-
312
- command.apply_params!(params)
313
- command.setup_context
314
- end
315
-
316
- context "with explicit policyfile relative path" do
317
-
318
- let(:given_policyfile_path) { "policies/OtherPolicy.rb" }
319
-
320
- let(:given_policy_group) { "some-policy-group" }
321
-
322
- let(:params) { [ given_policy_group, "--sync", given_policyfile_path ] }
323
-
324
- it "sets policy group" do
325
- expect(command.policy_group).to eq(given_policy_group)
326
- expect(context.policy_group).to eq(given_policy_group)
327
- end
328
-
329
- it "sets policy name" do
330
- expect(command.policy_name).to eq("myapp")
331
- expect(context.policy_name).to eq("myapp")
332
- end
333
-
334
- end
335
-
336
- context "with implicit policyfile relative path" do
337
-
338
- let(:given_policyfile_path) { nil }
339
-
340
- let(:given_policy_group) { "some-policy-group" }
341
-
342
- let(:extra_params) { [] }
343
-
344
- let(:params) { [ given_policy_group, "--sync" ] + extra_params }
345
-
346
- before do
347
- allow(chef_config).to receive(:ssl_verify_mode).and_return(:verify_peer)
348
- end
349
-
350
- it "sets policy group" do
351
- expect(command.policy_group).to eq(given_policy_group)
352
- expect(context.policy_group).to eq(given_policy_group)
353
- end
354
-
355
- it "sets policy name" do
356
- expect(command.policy_name).to eq("myapp")
357
- expect(context.policy_name).to eq("myapp")
358
- end
359
-
360
- it "generates chef config with policyfile options" do
361
- expected_config = <<~CONFIG
362
- # SSL Settings:
363
- ssl_verify_mode :verify_peer
364
-
365
- # Policyfile Settings:
366
- use_policyfile true
367
- policy_document_native_api true
368
-
369
- policy_group "some-policy-group"
370
- policy_name "myapp"
371
-
372
- CONFIG
373
- expect(context.chef_config).to eq(expected_config)
374
- end
375
-
376
- include_examples "common_optional_options"
377
-
378
- end
379
-
380
- end # when --sync POLICYFILE argument is given
381
-
382
- context "when a --policy-name is given" do
383
-
384
- let(:given_policy_group) { "some-policy-group" }
385
-
386
- let(:extra_params) { [] }
387
-
388
- let(:params) { [ given_policy_group, "--policy-name", "myapp" ] + extra_params }
389
-
390
- before do
391
- command.apply_params!(params)
392
- command.setup_context
393
-
394
- allow(chef_config).to receive(:ssl_verify_mode).and_return(:verify_peer)
395
- end
396
-
397
- it "sets policy group" do
398
- expect(command.policy_group).to eq(given_policy_group)
399
- expect(context.policy_group).to eq(given_policy_group)
400
- end
401
-
402
- it "sets policy name" do
403
- expect(command.policy_name).to eq("myapp")
404
- expect(context.policy_name).to eq("myapp")
405
- end
406
-
407
- it "generates chef config with policyfile options" do
408
- expected_config = <<~CONFIG
409
- # SSL Settings:
410
- ssl_verify_mode :verify_peer
411
-
412
- # Policyfile Settings:
413
- use_policyfile true
414
- policy_document_native_api true
415
-
416
- policy_group "some-policy-group"
417
- policy_name "myapp"
418
-
419
- CONFIG
420
- expect(context.chef_config).to eq(expected_config)
421
- end
422
-
423
- include_examples "common_optional_options"
424
-
425
- end
426
- end
427
-
428
- end
429
-
430
- describe "running the provision cookbook" do
431
-
432
- let(:ui) { TestHelpers::TestUI.new }
433
-
434
- before do
435
- allow(chef_config_loader).to receive(:load)
436
- allow(command).to receive(:push).and_return(push_service)
437
- command.ui = ui
438
- end
439
-
440
- let(:provision_cookbook_path) { File.expand_path("provision", Dir.pwd) }
441
- let(:provision_recipe_path) { File.join(provision_cookbook_path, "recipes", "default.rb") }
442
-
443
- let(:chef_runner) { instance_double("ChefDK::ChefRunner") }
444
-
445
- let(:params) { %w{ policygroup --sync } }
446
-
447
- context "when the provision cookbook doesn't exist" do
448
-
449
- before do
450
- allow(File).to receive(:exist?).with(provision_cookbook_path).and_return(false)
451
- end
452
-
453
- it "prints an error and exits non-zero" do
454
- expect(command.run(params)).to eq(1)
455
- expect(ui.output).to include("Provisioning cookbook not found at path #{provision_cookbook_path}")
456
- end
457
-
458
- end
459
-
460
- context "when the provision cookbook doesn't have the requested recipe" do
461
-
462
- before do
463
- allow(File).to receive(:exist?).with(provision_cookbook_path).and_return(true)
464
- allow(File).to receive(:exist?).with(provision_recipe_path).and_return(false)
465
- end
466
-
467
- it "prints an error and exits non-zero" do
468
- expect(command.run(params)).to eq(1)
469
- expect(ui.output).to include("Provisioning recipe not found at path #{provision_recipe_path}")
470
- end
471
-
472
- end
473
-
474
- context "when the policyfile upload fails" do
475
-
476
- let(:backtrace) { caller[0...3] }
477
-
478
- let(:cause) do
479
- e = StandardError.new("some operation failed")
480
- e.set_backtrace(backtrace)
481
- e
482
- end
483
-
484
- let(:exception) do
485
- ChefDK::PolicyfilePushError.new("push failed", cause)
486
- end
487
-
488
- before do
489
- allow(File).to receive(:exist?).with(provision_cookbook_path).and_return(true)
490
- allow(File).to receive(:exist?).with(provision_recipe_path).and_return(true)
491
-
492
- expect(push_service).to receive(:run).and_raise(exception)
493
- end
494
-
495
- it "prints an error and exits non-zero" do
496
- expected_output = <<~E
497
- Error: push failed
498
- Reason: (StandardError) some operation failed
499
-
500
- E
501
- expect(command.run(params)).to eq(1)
502
- expect(ui.output).to include(expected_output)
503
- end
504
-
505
- end
506
-
507
- context "when the chef run fails" do
508
-
509
- let(:base_exception) { StandardError.new("Something went wrong") }
510
- let(:exception) { ChefDK::ChefConvergeError.new("Chef failed to converge: #{base_exception}", base_exception) }
511
-
512
- let(:policy_data) { { "name" => "myapp" } }
513
-
514
- before do
515
- allow(File).to receive(:exist?).with(provision_cookbook_path).and_return(true)
516
- allow(File).to receive(:exist?).with(provision_recipe_path).and_return(true)
517
-
518
- allow(push_service).to receive(:policy_data).and_return(policy_data)
519
-
520
- expect(push_service).to receive(:run)
521
-
522
- allow(command).to receive(:chef_runner).and_return(chef_runner)
523
- allow(chef_runner).to receive(:cookbook_path).and_return(Dir.pwd)
524
- expect(chef_runner).to receive(:converge).and_raise(exception)
525
- end
526
-
527
- it "prints an error and exits non-zero" do
528
- expect(command.run(params)).to eq(1)
529
- expect(ui.output).to include("Error: Chef failed to converge")
530
- expect(ui.output).to include("Reason: (StandardError) Something went wrong")
531
- end
532
-
533
- end
534
-
535
- context "when the chef run is successful" do
536
-
537
- before do
538
- allow(File).to receive(:exist?).with(provision_cookbook_path).and_return(true)
539
- allow(File).to receive(:exist?).with(provision_recipe_path).and_return(true)
540
- allow(command).to receive(:chef_runner).and_return(chef_runner)
541
- allow(chef_runner).to receive(:cookbook_path).and_return(Dir.pwd)
542
-
543
- expect(chef_runner).to receive(:converge)
544
- end
545
-
546
- context "when using --no-policy" do
547
-
548
- let(:params) { %w{ --no-policy } }
549
-
550
- it "exits 0" do
551
- return_value = command.run(params)
552
- expect(ui.output).to eq("DEPRECATED: This command is deprecated and will be removed in ChefDK 4.\n")
553
- expect(return_value).to eq(0)
554
- end
555
-
556
- end
557
-
558
- context "with --policy-name" do
559
-
560
- let(:params) { %w{ policygroup --policy-name otherapp } }
561
-
562
- it "exits 0" do
563
- return_value = command.run(params)
564
- expect(ui.output).to eq("DEPRECATED: This command is deprecated and will be removed in ChefDK 4.\n")
565
- expect(return_value).to eq(0)
566
- end
567
- end
568
-
569
- context "with --sync" do
570
-
571
- let(:policy_data) { { "name" => "myapp" } }
572
-
573
- before do
574
- allow(push_service).to receive(:policy_data).and_return(policy_data)
575
- expect(push_service).to receive(:run)
576
- end
577
-
578
- it "exits 0" do
579
- return_value = command.run(params)
580
- expect(ui.output).to eq("DEPRECATED: This command is deprecated and will be removed in ChefDK 4.\n")
581
- expect(return_value).to eq(0)
582
- end
583
-
584
- end
585
-
586
- end
587
-
588
- end
589
- end