chef 12.0.3-x86-mingw32 → 12.1.0.rc.0-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +4 -1
  3. data/README.md +42 -18
  4. data/distro/common/html/_sources/ctl_chef_client.txt +1 -1
  5. data/distro/common/html/_sources/ctl_chef_server.txt +53 -35
  6. data/distro/common/html/_sources/ctl_chef_solo.txt +1 -1
  7. data/distro/common/html/_sources/knife_bootstrap.txt +1 -1
  8. data/distro/common/html/_sources/knife_cookbook_site.txt +1 -1
  9. data/distro/common/html/_sources/knife_data_bag.txt +4 -4
  10. data/distro/common/html/_sources/knife_status.txt +1 -1
  11. data/distro/common/html/_static/searchtools.js +1 -1
  12. data/distro/common/html/ctl_chef_client.html +55 -7
  13. data/distro/common/html/ctl_chef_server.html +84 -41
  14. data/distro/common/html/ctl_chef_shell.html +45 -1
  15. data/distro/common/html/ctl_chef_solo.html +51 -5
  16. data/distro/common/html/index.html +2 -2
  17. data/distro/common/html/knife.html +1 -1
  18. data/distro/common/html/knife_bootstrap.html +30 -10
  19. data/distro/common/html/knife_cookbook_site.html +2 -0
  20. data/distro/common/html/knife_data_bag.html +4 -4
  21. data/distro/common/html/knife_node.html +2 -2
  22. data/distro/common/html/knife_raw.html +1 -1
  23. data/distro/common/html/knife_role.html +1 -1
  24. data/distro/common/html/knife_search.html +3 -3
  25. data/distro/common/html/knife_status.html +4 -0
  26. data/distro/common/html/searchindex.js +1 -1
  27. data/distro/common/man/man1/chef-shell.1 +72 -1
  28. data/distro/common/man/man1/knife-bootstrap.1 +71 -63
  29. data/distro/common/man/man1/knife-client.1 +1 -1
  30. data/distro/common/man/man1/knife-configure.1 +1 -1
  31. data/distro/common/man/man1/knife-cookbook-site.1 +4 -1
  32. data/distro/common/man/man1/knife-cookbook.1 +1 -1
  33. data/distro/common/man/man1/knife-data-bag.1 +5 -5
  34. data/distro/common/man/man1/knife-delete.1 +1 -1
  35. data/distro/common/man/man1/knife-deps.1 +1 -1
  36. data/distro/common/man/man1/knife-diff.1 +1 -1
  37. data/distro/common/man/man1/knife-download.1 +1 -1
  38. data/distro/common/man/man1/knife-edit.1 +1 -1
  39. data/distro/common/man/man1/knife-environment.1 +1 -1
  40. data/distro/common/man/man1/knife-exec.1 +1 -1
  41. data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
  42. data/distro/common/man/man1/knife-list.1 +1 -1
  43. data/distro/common/man/man1/knife-node.1 +3 -3
  44. data/distro/common/man/man1/knife-raw.1 +2 -2
  45. data/distro/common/man/man1/knife-recipe-list.1 +1 -1
  46. data/distro/common/man/man1/knife-role.1 +2 -2
  47. data/distro/common/man/man1/knife-search.1 +4 -4
  48. data/distro/common/man/man1/knife-serve.1 +1 -1
  49. data/distro/common/man/man1/knife-show.1 +1 -1
  50. data/distro/common/man/man1/knife-ssh.1 +1 -1
  51. data/distro/common/man/man1/knife-ssl-check.1 +1 -1
  52. data/distro/common/man/man1/knife-ssl-fetch.1 +1 -1
  53. data/distro/common/man/man1/knife-status.1 +1 -1
  54. data/distro/common/man/man1/knife-tag.1 +1 -1
  55. data/distro/common/man/man1/knife-upload.1 +1 -1
  56. data/distro/common/man/man1/knife-user.1 +1 -1
  57. data/distro/common/man/man1/knife-xargs.1 +1 -1
  58. data/distro/common/man/man1/knife.1 +1 -1
  59. data/distro/common/man/man8/chef-apply.8 +86 -0
  60. data/distro/common/man/man8/chef-client.8 +76 -5
  61. data/distro/common/man/man8/chef-solo.8 +79 -6
  62. data/distro/common/markdown/man1/knife-bootstrap.mkd +1 -1
  63. data/distro/common/markdown/man1/knife-cookbook-site.mkd +1 -1
  64. data/distro/common/markdown/man1/knife-data-bag.mkd +1 -1
  65. data/distro/common/markdown/man1/knife-environment.mkd +1 -1
  66. data/distro/common/markdown/man1/knife.mkd +1 -1
  67. data/lib/chef.rb +0 -7
  68. data/lib/chef/api_client.rb +10 -2
  69. data/lib/chef/api_client/registration.rb +7 -9
  70. data/lib/chef/application.rb +28 -12
  71. data/lib/chef/application/apply.rb +17 -1
  72. data/lib/chef/application/client.rb +74 -6
  73. data/lib/chef/application/knife.rb +1 -2
  74. data/lib/chef/application/solo.rb +30 -0
  75. data/lib/chef/application/windows_service.rb +1 -0
  76. data/lib/chef/application/windows_service_manager.rb +8 -2
  77. data/lib/chef/applications.rb +0 -1
  78. data/lib/chef/audit/audit_event_proxy.rb +93 -0
  79. data/lib/chef/audit/audit_reporter.rb +169 -0
  80. data/lib/chef/audit/control_group_data.rb +140 -0
  81. data/lib/chef/audit/rspec_formatter.rb +37 -0
  82. data/lib/chef/audit/runner.rb +178 -0
  83. data/lib/chef/chef_fs/chef_fs_data_store.rb +11 -2
  84. data/lib/chef/chef_fs/config.rb +25 -4
  85. data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +15 -0
  86. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -0
  87. data/lib/chef/chef_fs/file_system.rb +1 -1
  88. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +5 -0
  89. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +3 -2
  90. data/lib/chef/{shef/ext.rb → chef_fs/file_system/chef_repository_file_system_policies_dir.rb} +22 -3
  91. data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +4 -0
  92. data/lib/chef/client.rb +81 -52
  93. data/lib/chef/config.rb +35 -3
  94. data/lib/chef/cookbook/metadata.rb +3 -3
  95. data/lib/chef/cookbook_manifest.rb +275 -0
  96. data/lib/chef/cookbook_site_streaming_uploader.rb +24 -23
  97. data/lib/chef/cookbook_uploader.rb +11 -2
  98. data/lib/chef/cookbook_version.rb +71 -194
  99. data/lib/chef/data_bag.rb +5 -2
  100. data/lib/chef/data_bag_item.rb +6 -3
  101. data/lib/chef/deprecation/warnings.rb +5 -4
  102. data/lib/chef/dsl/audit.rb +51 -0
  103. data/lib/chef/dsl/include_recipe.rb +2 -3
  104. data/lib/chef/dsl/reboot_pending.rb +1 -1
  105. data/lib/chef/dsl/recipe.rb +49 -31
  106. data/lib/chef/encrypted_data_bag_item/assertions.rb +0 -3
  107. data/lib/chef/environment.rb +5 -2
  108. data/lib/chef/event_dispatch/base.rb +36 -1
  109. data/lib/chef/event_dispatch/dispatcher.rb +3 -5
  110. data/lib/chef/exceptions.rb +61 -2
  111. data/lib/chef/file_access_control/unix.rb +12 -0
  112. data/lib/chef/file_access_control/windows.rb +14 -0
  113. data/lib/chef/formatters/doc.rb +47 -1
  114. data/{spec/unit/monkey_patches/string_spec.rb → lib/chef/guard_interpreter.rb} +11 -16
  115. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +3 -2
  116. data/lib/chef/http.rb +1 -2
  117. data/lib/chef/knife.rb +5 -3
  118. data/lib/chef/knife/bootstrap.rb +84 -15
  119. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +165 -0
  120. data/lib/chef/knife/bootstrap/client_builder.rb +190 -0
  121. data/lib/chef/knife/bootstrap/{README.md → templates/README.md} +0 -0
  122. data/lib/chef/knife/bootstrap/{archlinux-gems.erb → templates/archlinux-gems.erb} +9 -0
  123. data/lib/chef/knife/bootstrap/{chef-aix.erb → templates/chef-aix.erb} +9 -0
  124. data/lib/chef/knife/bootstrap/{chef-full.erb → templates/chef-full.erb} +10 -1
  125. data/lib/chef/knife/client_create.rb +8 -7
  126. data/lib/chef/knife/cookbook_site_download.rb +1 -1
  127. data/lib/chef/knife/cookbook_site_install.rb +1 -1
  128. data/lib/chef/knife/cookbook_site_list.rb +1 -1
  129. data/lib/chef/knife/cookbook_site_search.rb +1 -1
  130. data/lib/chef/knife/cookbook_site_share.rb +39 -28
  131. data/lib/chef/knife/cookbook_site_show.rb +3 -3
  132. data/lib/chef/knife/cookbook_site_unshare.rb +1 -1
  133. data/lib/chef/knife/cookbook_test.rb +1 -0
  134. data/lib/chef/knife/cookbook_upload.rb +13 -8
  135. data/lib/chef/knife/core/bootstrap_context.rb +14 -3
  136. data/lib/chef/knife/core/generic_presenter.rb +5 -2
  137. data/lib/chef/knife/core/object_loader.rb +1 -1
  138. data/lib/chef/knife/core/subcommand_loader.rb +24 -0
  139. data/lib/chef/knife/core/ui.rb +9 -1
  140. data/lib/chef/knife/node_run_list_remove.rb +11 -3
  141. data/lib/chef/knife/raw.rb +14 -3
  142. data/lib/chef/knife/role_env_run_list_add.rb +86 -0
  143. data/lib/chef/knife/role_env_run_list_clear.rb +55 -0
  144. data/lib/chef/knife/role_env_run_list_remove.rb +57 -0
  145. data/lib/chef/knife/role_env_run_list_replace.rb +59 -0
  146. data/lib/chef/knife/role_env_run_list_set.rb +70 -0
  147. data/lib/chef/knife/role_run_list_add.rb +86 -0
  148. data/lib/chef/knife/role_run_list_clear.rb +55 -0
  149. data/lib/chef/knife/role_run_list_remove.rb +57 -0
  150. data/lib/chef/knife/role_run_list_replace.rb +59 -0
  151. data/lib/chef/knife/role_run_list_set.rb +70 -0
  152. data/lib/chef/knife/search.rb +4 -4
  153. data/lib/chef/knife/serve.rb +3 -0
  154. data/lib/chef/knife/ssh.rb +1 -1
  155. data/lib/chef/knife/ssl_check.rb +2 -2
  156. data/lib/chef/knife/ssl_fetch.rb +14 -1
  157. data/lib/chef/log.rb +10 -1
  158. data/lib/chef/mixin/command.rb +1 -1
  159. data/lib/chef/mixin/command/windows.rb +1 -5
  160. data/lib/chef/mixin/get_source_from_package.rb +1 -0
  161. data/lib/chef/mixin/params_validate.rb +2 -2
  162. data/lib/chef/mixin/securable.rb +1 -7
  163. data/lib/chef/mixin/shell_out.rb +7 -1
  164. data/lib/chef/mixin/template.rb +2 -14
  165. data/lib/chef/mixin/why_run.rb +1 -1
  166. data/lib/chef/monkey_patches/net_http.rb +4 -0
  167. data/lib/chef/monologger.rb +0 -2
  168. data/lib/chef/node.rb +5 -2
  169. data/lib/chef/node/attribute.rb +11 -9
  170. data/lib/chef/node/attribute_collections.rb +8 -12
  171. data/lib/chef/node/immutable_collections.rb +4 -10
  172. data/lib/chef/org.rb +148 -0
  173. data/lib/chef/platform/provider_mapping.rb +3 -2
  174. data/lib/chef/platform/provider_priority_map.rb +2 -0
  175. data/lib/chef/platform/query_helpers.rb +0 -3
  176. data/lib/chef/policy_builder/policyfile.rb +51 -8
  177. data/lib/chef/provider/deploy.rb +1 -2
  178. data/lib/chef/provider/directory.rb +3 -3
  179. data/lib/chef/provider/dsc_script.rb +13 -7
  180. data/lib/chef/provider/env.rb +8 -8
  181. data/lib/chef/provider/execute.rb +55 -36
  182. data/lib/chef/provider/file.rb +8 -0
  183. data/lib/chef/provider/group.rb +2 -0
  184. data/lib/chef/provider/group/dscl.rb +3 -4
  185. data/lib/chef/provider/ifconfig.rb +25 -25
  186. data/lib/chef/provider/ifconfig/aix.rb +25 -27
  187. data/lib/chef/provider/lwrp_base.rb +1 -1
  188. data/lib/chef/provider/mount.rb +2 -2
  189. data/lib/chef/provider/mount/mount.rb +3 -4
  190. data/lib/chef/provider/mount/solaris.rb +1 -1
  191. data/lib/chef/provider/package.rb +297 -48
  192. data/lib/chef/provider/package/aix.rb +25 -30
  193. data/lib/chef/provider/package/apt.rb +63 -19
  194. data/lib/chef/provider/package/dpkg.rb +15 -16
  195. data/lib/chef/provider/package/macports.rb +7 -7
  196. data/lib/chef/provider/package/openbsd.rb +107 -0
  197. data/lib/chef/provider/package/pacman.rb +13 -15
  198. data/lib/chef/provider/package/portage.rb +3 -4
  199. data/lib/chef/provider/package/rpm.rb +28 -17
  200. data/lib/chef/provider/package/rubygems.rb +9 -9
  201. data/lib/chef/provider/package/solaris.rb +17 -21
  202. data/lib/chef/provider/package/windows/msi.rb +1 -1
  203. data/lib/chef/provider/package/yum-dump.py +2 -2
  204. data/lib/chef/provider/package/yum.rb +117 -51
  205. data/lib/chef/provider/package/zypper.rb +17 -18
  206. data/lib/chef/provider/powershell_script.rb +4 -4
  207. data/lib/chef/provider/registry_key.rb +2 -2
  208. data/lib/chef/provider/remote_directory.rb +1 -1
  209. data/lib/chef/provider/script.rb +25 -16
  210. data/lib/chef/provider/service.rb +1 -1
  211. data/lib/chef/provider/service/freebsd.rb +1 -1
  212. data/lib/chef/provider/service/openbsd.rb +216 -0
  213. data/lib/chef/provider/service/upstart.rb +1 -1
  214. data/lib/chef/provider/service/windows.rb +99 -1
  215. data/lib/chef/provider/user.rb +1 -1
  216. data/lib/chef/provider/user/dscl.rb +19 -4
  217. data/lib/chef/providers.rb +2 -0
  218. data/lib/chef/recipe.rb +11 -5
  219. data/lib/chef/request_id.rb +1 -1
  220. data/lib/chef/resource.rb +839 -444
  221. data/lib/chef/resource/chef_gem.rb +20 -3
  222. data/lib/chef/resource/conditional.rb +3 -14
  223. data/lib/chef/resource/dsc_script.rb +14 -0
  224. data/lib/chef/resource/execute.rb +14 -7
  225. data/lib/chef/resource/file.rb +14 -0
  226. data/lib/chef/resource/file/verification.rb +122 -0
  227. data/lib/chef/resource/ips_package.rb +1 -1
  228. data/lib/chef/resource/lwrp_base.rb +2 -11
  229. data/lib/chef/resource/macports_package.rb +2 -1
  230. data/lib/chef/resource/openbsd_package.rb +51 -0
  231. data/lib/chef/resource/package.rb +2 -2
  232. data/lib/chef/resource/paludis_package.rb +1 -1
  233. data/lib/chef/resource/reboot.rb +1 -1
  234. data/lib/chef/resource/remote_file.rb +1 -0
  235. data/lib/chef/resource/rpm_package.rb +9 -0
  236. data/lib/chef/resource/script.rb +11 -0
  237. data/lib/chef/resource/template.rb +2 -3
  238. data/lib/chef/resource/windows_package.rb +1 -1
  239. data/lib/chef/resource/windows_service.rb +18 -0
  240. data/lib/chef/resource_builder.rb +137 -0
  241. data/lib/chef/resource_definition.rb +1 -1
  242. data/lib/chef/resource_reporter.rb +1 -1
  243. data/lib/chef/resources.rb +1 -0
  244. data/lib/chef/role.rb +17 -4
  245. data/lib/chef/run_context.rb +10 -6
  246. data/lib/chef/search/query.rb +66 -87
  247. data/lib/chef/shell/ext.rb +2 -2
  248. data/lib/chef/util/diff.rb +1 -4
  249. data/lib/chef/util/dsc/configuration_generator.rb +30 -6
  250. data/lib/chef/util/dsc/lcm_output_parser.rb +7 -3
  251. data/lib/chef/util/dsc/local_configuration_manager.rb +8 -8
  252. data/lib/chef/util/file_edit.rb +2 -2
  253. data/lib/chef/util/path_helper.rb +1 -4
  254. data/lib/chef/util/windows/net_use.rb +3 -3
  255. data/lib/chef/version.rb +1 -1
  256. data/lib/chef/win32/api.rb +1 -0
  257. data/lib/chef/win32/api/security.rb +26 -0
  258. data/lib/chef/win32/file.rb +21 -0
  259. data/lib/chef/win32/security.rb +46 -0
  260. data/lib/chef/win32/security/token.rb +8 -0
  261. data/lib/chef/win32/version.rb +0 -4
  262. data/spec/data/recipes.tgz +0 -0
  263. data/spec/functional/application_spec.rb +1 -1
  264. data/spec/functional/audit/rspec_formatter_spec.rb +54 -0
  265. data/spec/functional/audit/runner_spec.rb +137 -0
  266. data/spec/functional/dsl/reboot_pending_spec.rb +10 -10
  267. data/spec/functional/dsl/registry_helper_spec.rb +6 -6
  268. data/spec/functional/event_loggers/windows_eventlog_spec.rb +5 -5
  269. data/spec/functional/file_content_management/deploy_strategies_spec.rb +12 -21
  270. data/spec/functional/http/simple_spec.rb +1 -1
  271. data/spec/functional/knife/cookbook_delete_spec.rb +24 -24
  272. data/spec/functional/knife/exec_spec.rb +2 -4
  273. data/spec/functional/knife/smoke_test.rb +1 -1
  274. data/spec/functional/knife/ssh_spec.rb +23 -23
  275. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +8 -8
  276. data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +2 -2
  277. data/spec/functional/rebooter_spec.rb +1 -1
  278. data/spec/functional/resource/aix_service_spec.rb +3 -0
  279. data/spec/functional/resource/aixinit_service_spec.rb +3 -3
  280. data/spec/functional/resource/bash_spec.rb +88 -0
  281. data/spec/functional/resource/deploy_revision_spec.rb +99 -100
  282. data/spec/functional/resource/env_spec.rb +3 -3
  283. data/spec/functional/resource/execute_spec.rb +97 -63
  284. data/spec/functional/resource/file_spec.rb +7 -7
  285. data/spec/functional/resource/git_spec.rb +13 -13
  286. data/spec/functional/resource/group_spec.rb +28 -25
  287. data/spec/functional/resource/ifconfig_spec.rb +2 -2
  288. data/spec/functional/resource/link_spec.rb +77 -78
  289. data/spec/functional/resource/mount_spec.rb +5 -5
  290. data/spec/functional/resource/ohai_spec.rb +1 -1
  291. data/spec/functional/resource/package_spec.rb +22 -22
  292. data/spec/functional/resource/powershell_spec.rb +57 -42
  293. data/spec/functional/resource/reboot_spec.rb +2 -2
  294. data/spec/functional/resource/registry_spec.rb +91 -91
  295. data/spec/functional/resource/remote_directory_spec.rb +19 -19
  296. data/spec/functional/resource/remote_file_spec.rb +18 -18
  297. data/spec/functional/resource/template_spec.rb +4 -4
  298. data/spec/functional/resource/user/dscl_spec.rb +4 -4
  299. data/spec/functional/resource/user/useradd_spec.rb +64 -51
  300. data/spec/functional/resource/windows_service_spec.rb +98 -0
  301. data/spec/functional/run_lock_spec.rb +9 -9
  302. data/spec/functional/shell_spec.rb +3 -3
  303. data/spec/functional/tiny_server_spec.rb +12 -12
  304. data/spec/functional/util/path_helper_spec.rb +1 -1
  305. data/spec/functional/version_spec.rb +1 -1
  306. data/spec/functional/win32/registry_helper_spec.rb +125 -125
  307. data/spec/functional/win32/security_spec.rb +65 -2
  308. data/spec/functional/win32/service_manager_spec.rb +30 -84
  309. data/spec/functional/win32/versions_spec.rb +6 -6
  310. data/spec/integration/client/client_spec.rb +102 -9
  311. data/spec/integration/knife/chef_fs_data_store_spec.rb +12 -8
  312. data/spec/integration/knife/common_options_spec.rb +3 -3
  313. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
  314. data/spec/integration/knife/deps_spec.rb +4 -4
  315. data/spec/integration/knife/diff_spec.rb +6 -6
  316. data/spec/integration/knife/download_spec.rb +6 -6
  317. data/spec/integration/knife/list_spec.rb +2 -2
  318. data/spec/integration/knife/raw_spec.rb +5 -5
  319. data/spec/integration/knife/serve_spec.rb +3 -3
  320. data/spec/integration/knife/show_spec.rb +3 -3
  321. data/spec/integration/knife/upload_spec.rb +18 -18
  322. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  323. data/spec/integration/solo/solo_spec.rb +11 -12
  324. data/spec/spec_helper.rb +27 -15
  325. data/spec/stress/win32/file_spec.rb +4 -4
  326. data/spec/stress/win32/security_spec.rb +4 -4
  327. data/spec/support/chef_helpers.rb +3 -3
  328. data/spec/support/matchers/leak.rb +2 -2
  329. data/spec/support/mock/platform.rb +1 -1
  330. data/spec/support/pedant/Gemfile +3 -0
  331. data/spec/support/pedant/pedant_config.rb +9 -2
  332. data/spec/support/pedant/run_pedant.rb +15 -16
  333. data/spec/support/platform_helpers.rb +8 -12
  334. data/spec/support/shared/functional/directory_resource.rb +13 -13
  335. data/spec/support/shared/functional/file_resource.rb +83 -83
  336. data/spec/support/shared/functional/http.rb +1 -1
  337. data/spec/support/shared/functional/securable_resource.rb +64 -64
  338. data/spec/support/shared/functional/securable_resource_with_reporting.rb +43 -41
  339. data/spec/support/shared/functional/win32_service.rb +60 -0
  340. data/spec/support/shared/functional/windows_script.rb +8 -8
  341. data/spec/support/shared/integration/knife_support.rb +8 -5
  342. data/spec/support/shared/matchers/exit_with_code.rb +6 -2
  343. data/spec/support/shared/unit/api_error_inspector.rb +8 -8
  344. data/spec/support/shared/unit/execute_resource.rb +24 -20
  345. data/spec/support/shared/unit/file_system_support.rb +2 -2
  346. data/spec/support/shared/unit/platform_introspector.rb +21 -21
  347. data/spec/support/shared/unit/provider/file.rb +239 -210
  348. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +69 -69
  349. data/spec/support/shared/unit/script_resource.rb +40 -32
  350. data/spec/support/shared/unit/windows_script_resource.rb +8 -8
  351. data/spec/unit/api_client/registration_spec.rb +47 -47
  352. data/spec/unit/api_client_spec.rb +107 -69
  353. data/spec/unit/application/apply_spec.rb +31 -15
  354. data/spec/unit/application/client_spec.rb +146 -45
  355. data/spec/unit/application/knife_spec.rb +31 -31
  356. data/spec/unit/application/solo_spec.rb +59 -43
  357. data/spec/unit/application_spec.rb +109 -74
  358. data/spec/unit/audit/audit_event_proxy_spec.rb +311 -0
  359. data/spec/unit/audit/audit_reporter_spec.rb +393 -0
  360. data/spec/unit/audit/control_group_data_spec.rb +478 -0
  361. data/{lib/chef/monkey_patches/file.rb → spec/unit/audit/rspec_formatter_spec.rb} +11 -8
  362. data/spec/unit/audit/runner_spec.rb +135 -0
  363. data/spec/unit/chef_fs/config_spec.rb +52 -0
  364. data/spec/unit/chef_fs/diff_spec.rb +12 -12
  365. data/spec/unit/chef_fs/file_pattern_spec.rb +276 -277
  366. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +6 -6
  367. data/spec/unit/chef_fs/file_system_spec.rb +26 -13
  368. data/spec/unit/chef_fs/parallelizer.rb +87 -87
  369. data/spec/unit/chef_spec.rb +1 -1
  370. data/spec/unit/client_spec.rb +263 -97
  371. data/spec/unit/config_fetcher_spec.rb +13 -13
  372. data/spec/unit/config_spec.rb +105 -66
  373. data/spec/unit/cookbook/chefignore_spec.rb +6 -6
  374. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +3 -3
  375. data/spec/unit/cookbook/metadata_spec.rb +149 -149
  376. data/spec/unit/cookbook/syntax_check_spec.rb +36 -31
  377. data/spec/unit/cookbook_loader_spec.rb +62 -58
  378. data/spec/unit/cookbook_manifest_spec.rb +141 -468
  379. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +27 -27
  380. data/spec/unit/cookbook_spec.rb +15 -15
  381. data/spec/unit/cookbook_uploader_spec.rb +37 -3
  382. data/spec/unit/cookbook_version_file_specificity_spec.rb +554 -0
  383. data/spec/unit/cookbook_version_spec.rb +98 -240
  384. data/spec/unit/daemon_spec.rb +31 -31
  385. data/spec/unit/data_bag_item_spec.rb +121 -89
  386. data/spec/unit/data_bag_spec.rb +35 -35
  387. data/spec/unit/deprecation_spec.rb +27 -14
  388. data/spec/unit/digester_spec.rb +3 -3
  389. data/spec/unit/dsl/audit_spec.rb +43 -0
  390. data/spec/unit/dsl/data_query_spec.rb +1 -1
  391. data/spec/unit/dsl/platform_introspection_spec.rb +14 -14
  392. data/spec/unit/dsl/reboot_pending_spec.rb +18 -18
  393. data/spec/unit/dsl/regsitry_helper_spec.rb +6 -6
  394. data/spec/unit/encrypted_data_bag_item_spec.rb +58 -82
  395. data/spec/unit/environment_spec.rb +105 -105
  396. data/spec/unit/exceptions_spec.rb +47 -1
  397. data/spec/unit/file_access_control_spec.rb +62 -56
  398. data/spec/unit/file_cache_spec.rb +11 -11
  399. data/spec/unit/file_content_management/deploy/cp_spec.rb +2 -2
  400. data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +10 -10
  401. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +23 -23
  402. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +14 -14
  403. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +12 -12
  404. data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +1 -1
  405. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +16 -16
  406. data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +4 -4
  407. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +103 -13
  408. data/spec/unit/guard_interpreter_spec.rb +41 -0
  409. data/spec/unit/handler/json_file_spec.rb +10 -10
  410. data/spec/unit/handler_spec.rb +39 -39
  411. data/spec/unit/http/basic_client_spec.rb +3 -3
  412. data/spec/unit/http/http_request_spec.rb +10 -10
  413. data/spec/unit/http/simple_spec.rb +3 -3
  414. data/spec/unit/http/ssl_policies_spec.rb +15 -15
  415. data/spec/unit/http/validate_content_length_spec.rb +18 -13
  416. data/spec/unit/http_spec.rb +16 -9
  417. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +153 -0
  418. data/spec/unit/knife/bootstrap/client_builder_spec.rb +178 -0
  419. data/spec/unit/knife/bootstrap_spec.rb +144 -91
  420. data/spec/unit/knife/client_bulk_delete_spec.rb +24 -24
  421. data/spec/unit/knife/client_create_spec.rb +57 -43
  422. data/spec/unit/knife/client_delete_spec.rb +15 -15
  423. data/spec/unit/knife/client_edit_spec.rb +4 -4
  424. data/spec/unit/knife/client_list_spec.rb +2 -2
  425. data/spec/unit/knife/client_reregister_spec.rb +9 -9
  426. data/spec/unit/knife/configure_client_spec.rb +20 -20
  427. data/spec/unit/knife/configure_spec.rb +85 -85
  428. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +15 -15
  429. data/spec/unit/knife/cookbook_create_spec.rb +59 -59
  430. data/spec/unit/knife/cookbook_delete_spec.rb +49 -49
  431. data/spec/unit/knife/cookbook_download_spec.rb +56 -56
  432. data/spec/unit/knife/cookbook_list_spec.rb +9 -9
  433. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +8 -8
  434. data/spec/unit/knife/cookbook_metadata_spec.rb +44 -44
  435. data/spec/unit/knife/cookbook_show_spec.rb +29 -29
  436. data/spec/unit/knife/cookbook_site_download_spec.rb +26 -26
  437. data/spec/unit/knife/cookbook_site_install_spec.rb +5 -1
  438. data/spec/unit/knife/cookbook_site_share_spec.rb +68 -59
  439. data/spec/unit/knife/cookbook_site_unshare_spec.rb +15 -15
  440. data/spec/unit/knife/cookbook_test_spec.rb +16 -16
  441. data/spec/unit/knife/cookbook_upload_spec.rb +105 -71
  442. data/spec/unit/knife/core/bootstrap_context_spec.rb +37 -22
  443. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +36 -36
  444. data/spec/unit/knife/core/object_loader_spec.rb +3 -3
  445. data/spec/unit/knife/core/subcommand_loader_spec.rb +107 -33
  446. data/spec/unit/knife/core/ui_spec.rb +84 -72
  447. data/spec/unit/knife/data_bag_from_file_spec.rb +1 -1
  448. data/spec/unit/knife/environment_compare_spec.rb +12 -12
  449. data/spec/unit/knife/environment_create_spec.rb +16 -16
  450. data/spec/unit/knife/environment_delete_spec.rb +14 -14
  451. data/spec/unit/knife/environment_edit_spec.rb +15 -15
  452. data/spec/unit/knife/environment_from_file_spec.rb +17 -17
  453. data/spec/unit/knife/environment_list_spec.rb +7 -7
  454. data/spec/unit/knife/environment_show_spec.rb +10 -10
  455. data/spec/unit/knife/index_rebuild_spec.rb +17 -17
  456. data/spec/unit/knife/knife_help.rb +24 -24
  457. data/spec/unit/knife/node_bulk_delete_spec.rb +14 -14
  458. data/spec/unit/knife/node_delete_spec.rb +11 -11
  459. data/spec/unit/knife/node_edit_spec.rb +17 -17
  460. data/spec/unit/knife/node_environment_set_spec.rb +12 -12
  461. data/spec/unit/knife/node_from_file_spec.rb +8 -8
  462. data/spec/unit/knife/node_list_spec.rb +9 -9
  463. data/spec/unit/knife/node_run_list_add_spec.rb +29 -29
  464. data/spec/unit/knife/node_run_list_remove_spec.rb +28 -13
  465. data/spec/unit/knife/node_run_list_set_spec.rb +27 -27
  466. data/spec/unit/knife/raw_spec.rb +43 -0
  467. data/spec/unit/knife/role_bulk_delete_spec.rb +12 -12
  468. data/spec/unit/knife/role_create_spec.rb +12 -12
  469. data/spec/unit/knife/role_delete_spec.rb +10 -10
  470. data/spec/unit/knife/role_edit_spec.rb +13 -13
  471. data/spec/unit/knife/role_env_run_list_add_spec.rb +217 -0
  472. data/spec/unit/knife/role_env_run_list_clear_spec.rb +100 -0
  473. data/spec/unit/knife/role_env_run_list_remove_spec.rb +108 -0
  474. data/spec/unit/knife/role_env_run_list_replace_spec.rb +108 -0
  475. data/spec/unit/knife/role_env_run_list_set_spec.rb +102 -0
  476. data/spec/unit/knife/role_from_file_spec.rb +10 -10
  477. data/spec/unit/knife/role_list_spec.rb +7 -7
  478. data/spec/unit/knife/role_run_list_add_spec.rb +179 -0
  479. data/spec/unit/knife/role_run_list_clear_spec.rb +90 -0
  480. data/spec/unit/knife/role_run_list_remove_spec.rb +98 -0
  481. data/spec/unit/knife/role_run_list_replace_spec.rb +101 -0
  482. data/spec/unit/knife/role_run_list_set_spec.rb +92 -0
  483. data/spec/unit/knife/ssh_spec.rb +66 -66
  484. data/spec/unit/knife/ssl_check_spec.rb +27 -27
  485. data/spec/unit/knife/ssl_fetch_spec.rb +45 -12
  486. data/spec/unit/knife/status_spec.rb +5 -5
  487. data/spec/unit/knife/tag_create_spec.rb +5 -5
  488. data/spec/unit/knife/tag_delete_spec.rb +6 -6
  489. data/spec/unit/knife/tag_list_spec.rb +4 -4
  490. data/spec/unit/knife/user_create_spec.rb +18 -18
  491. data/spec/unit/knife/user_delete_spec.rb +4 -4
  492. data/spec/unit/knife/user_edit_spec.rb +7 -7
  493. data/spec/unit/knife/user_list_spec.rb +2 -2
  494. data/spec/unit/knife/user_reregister_spec.rb +10 -10
  495. data/spec/unit/knife/user_show_spec.rb +5 -5
  496. data/spec/unit/knife_spec.rb +36 -36
  497. data/spec/unit/lwrp_spec.rb +63 -39
  498. data/spec/unit/mash_spec.rb +6 -6
  499. data/spec/unit/mixin/checksum_spec.rb +2 -2
  500. data/spec/unit/mixin/command_spec.rb +13 -13
  501. data/spec/unit/mixin/convert_to_class_name_spec.rb +6 -6
  502. data/spec/unit/mixin/deep_merge_spec.rb +49 -49
  503. data/spec/unit/mixin/deprecation_spec.rb +5 -5
  504. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +14 -14
  505. data/spec/unit/mixin/homebrew_user_spec.rb +3 -3
  506. data/spec/unit/mixin/params_validate_spec.rb +71 -71
  507. data/spec/unit/mixin/path_sanity_spec.rb +14 -14
  508. data/spec/unit/mixin/securable_spec.rb +177 -177
  509. data/spec/unit/mixin/shell_out_spec.rb +56 -27
  510. data/spec/unit/mixin/template_spec.rb +31 -31
  511. data/spec/unit/mixin/windows_architecture_helper_spec.rb +5 -5
  512. data/spec/unit/mixin/xml_escape_spec.rb +7 -7
  513. data/spec/unit/monkey_patches/uri_spec.rb +1 -1
  514. data/spec/unit/monologger_spec.rb +3 -3
  515. data/spec/unit/node/attribute_spec.rb +185 -136
  516. data/spec/unit/node/immutable_collections_spec.rb +22 -22
  517. data/spec/unit/node_spec.rb +210 -179
  518. data/spec/unit/org_spec.rb +196 -0
  519. data/spec/unit/platform/query_helpers_spec.rb +5 -5
  520. data/spec/unit/platform_spec.rb +46 -46
  521. data/spec/unit/policy_builder/expand_node_object_spec.rb +17 -18
  522. data/spec/unit/policy_builder/policyfile_spec.rb +159 -71
  523. data/spec/unit/provider/directory_spec.rb +5 -5
  524. data/spec/unit/provider/dsc_script_spec.rb +6 -6
  525. data/spec/unit/provider/env_spec.rb +27 -14
  526. data/spec/unit/provider/execute_spec.rb +139 -68
  527. data/spec/unit/provider/file/content_spec.rb +8 -8
  528. data/spec/unit/provider/git_spec.rb +10 -5
  529. data/spec/unit/provider/group/dscl_spec.rb +8 -11
  530. data/spec/unit/provider/group_spec.rb +13 -13
  531. data/spec/unit/provider/ifconfig/aix_spec.rb +3 -2
  532. data/spec/unit/provider/ifconfig/debian_spec.rb +19 -19
  533. data/spec/unit/provider/ifconfig_spec.rb +2 -2
  534. data/spec/unit/provider/mdadm_spec.rb +2 -2
  535. data/spec/unit/provider/mount/aix_spec.rb +5 -5
  536. data/spec/unit/provider/mount/mount_spec.rb +22 -22
  537. data/spec/unit/provider/mount/solaris_spec.rb +20 -20
  538. data/spec/unit/provider/package/aix_spec.rb +23 -22
  539. data/spec/unit/provider/package/apt_spec.rb +23 -4
  540. data/spec/unit/provider/package/dpkg_spec.rb +14 -15
  541. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
  542. data/spec/unit/provider/package/freebsd/port_spec.rb +1 -1
  543. data/spec/unit/provider/package/ips_spec.rb +1 -2
  544. data/spec/unit/provider/package/macports_spec.rb +14 -14
  545. data/spec/unit/provider/package/openbsd_spec.rb +66 -0
  546. data/spec/unit/provider/package/pacman_spec.rb +15 -14
  547. data/spec/unit/provider/package/portage_spec.rb +11 -11
  548. data/spec/unit/provider/package/rpm_spec.rb +132 -84
  549. data/spec/unit/provider/package/rubygems_spec.rb +54 -25
  550. data/spec/unit/provider/package/solaris_spec.rb +22 -25
  551. data/spec/unit/provider/package/yum_spec.rb +237 -36
  552. data/spec/unit/provider/package/zypper_spec.rb +9 -12
  553. data/spec/unit/provider/package_spec.rb +276 -2
  554. data/spec/unit/provider/package_spec.rbe +0 -0
  555. data/spec/unit/provider/remote_directory_spec.rb +25 -25
  556. data/spec/unit/provider/remote_file/ftp_spec.rb +3 -3
  557. data/spec/unit/provider/route_spec.rb +3 -3
  558. data/spec/unit/provider/script_spec.rb +61 -43
  559. data/spec/unit/provider/service/aix_service_spec.rb +5 -5
  560. data/spec/unit/provider/service/arch_service_spec.rb +5 -5
  561. data/spec/unit/provider/service/debian_service_spec.rb +8 -8
  562. data/spec/unit/provider/service/freebsd_service_spec.rb +16 -2
  563. data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
  564. data/spec/unit/provider/service/init_service_spec.rb +5 -5
  565. data/spec/unit/provider/service/insserv_service_spec.rb +2 -2
  566. data/spec/unit/provider/service/invokercd_service_spec.rb +5 -5
  567. data/spec/unit/provider/service/macosx_spec.rb +7 -7
  568. data/spec/unit/provider/service/openbsd_service_spec.rb +543 -0
  569. data/spec/unit/provider/service/redhat_spec.rb +4 -4
  570. data/spec/unit/provider/service/simple_service_spec.rb +2 -2
  571. data/spec/unit/provider/service/solaris_smf_service_spec.rb +14 -14
  572. data/spec/unit/provider/service/systemd_service_spec.rb +15 -7
  573. data/spec/unit/provider/service/upstart_service_spec.rb +4 -4
  574. data/spec/unit/provider/service/windows_spec.rb +119 -25
  575. data/spec/unit/provider/service_spec.rb +1 -1
  576. data/spec/unit/provider/user/dscl_spec.rb +38 -30
  577. data/spec/unit/provider/user_spec.rb +1 -1
  578. data/spec/unit/provider_resolver_spec.rb +7 -7
  579. data/spec/unit/provider_spec.rb +23 -23
  580. data/spec/unit/recipe_spec.rb +194 -83
  581. data/spec/unit/registry_helper_spec.rb +143 -143
  582. data/spec/unit/resource/chef_gem_spec.rb +117 -3
  583. data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
  584. data/spec/unit/resource/conditional_spec.rb +56 -15
  585. data/spec/unit/resource/deploy_spec.rb +2 -2
  586. data/spec/unit/resource/dsc_script_spec.rb +32 -0
  587. data/spec/unit/resource/execute_spec.rb +4 -0
  588. data/spec/unit/resource/file/verification_spec.rb +111 -0
  589. data/spec/unit/resource/file_spec.rb +14 -0
  590. data/spec/unit/resource/openbsd_package_spec.rb +49 -0
  591. data/spec/unit/resource/remote_file_spec.rb +12 -12
  592. data/spec/unit/resource/resource_notification_spec.rb +18 -18
  593. data/spec/unit/resource/rpm_package_spec.rb +12 -0
  594. data/spec/unit/resource/scm_spec.rb +4 -4
  595. data/spec/unit/resource/script_spec.rb +3 -5
  596. data/spec/unit/resource/subversion_spec.rb +1 -1
  597. data/spec/unit/resource_builder_spec.rb +1 -0
  598. data/spec/unit/resource_collection/resource_list_spec.rb +2 -2
  599. data/spec/unit/resource_collection/resource_set_spec.rb +3 -3
  600. data/spec/unit/resource_collection/stepable_iterator_spec.rb +24 -24
  601. data/spec/unit/resource_collection_spec.rb +52 -52
  602. data/spec/unit/resource_definition_spec.rb +1 -1
  603. data/spec/unit/resource_reporter_spec.rb +118 -118
  604. data/spec/unit/resource_spec.rb +131 -125
  605. data/spec/unit/rest/auth_credentials_spec.rb +73 -73
  606. data/spec/unit/rest_spec.rb +12 -12
  607. data/spec/unit/role_spec.rb +85 -84
  608. data/spec/unit/run_context/cookbook_compiler_spec.rb +18 -18
  609. data/spec/unit/run_context_spec.rb +39 -68
  610. data/spec/unit/run_list/run_list_expansion_spec.rb +21 -21
  611. data/spec/unit/run_list/run_list_item_spec.rb +28 -28
  612. data/spec/unit/run_list/versioned_recipe_list_spec.rb +14 -14
  613. data/spec/unit/run_list_spec.rb +55 -55
  614. data/spec/unit/run_lock_spec.rb +14 -14
  615. data/spec/unit/run_status_spec.rb +24 -24
  616. data/spec/unit/scan_access_control_spec.rb +23 -23
  617. data/spec/unit/search/query_spec.rb +54 -66
  618. data/spec/unit/shell/model_wrapper_spec.rb +13 -13
  619. data/spec/unit/shell/shell_ext_spec.rb +32 -32
  620. data/spec/unit/shell/shell_session_spec.rb +24 -24
  621. data/spec/unit/shell_out_spec.rb +4 -4
  622. data/spec/unit/shell_spec.rb +27 -27
  623. data/spec/unit/user_spec.rb +50 -50
  624. data/spec/unit/util/backup_spec.rb +32 -32
  625. data/spec/unit/util/diff_spec.rb +31 -31
  626. data/spec/unit/util/dsc/configuration_generator_spec.rb +38 -16
  627. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +21 -26
  628. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +10 -10
  629. data/spec/unit/util/editor_spec.rb +10 -10
  630. data/spec/unit/util/file_edit_spec.rb +10 -10
  631. data/spec/unit/util/path_helper_spec.rb +38 -46
  632. data/spec/unit/util/powershell/cmdlet_spec.rb +9 -9
  633. data/spec/unit/util/selinux_spec.rb +30 -30
  634. data/spec/unit/util/threaded_job_queue_spec.rb +6 -6
  635. data/spec/unit/version/platform_spec.rb +5 -5
  636. data/spec/unit/version_class_spec.rb +15 -15
  637. data/spec/unit/version_constraint/platform_spec.rb +7 -7
  638. data/spec/unit/version_constraint_spec.rb +43 -43
  639. data/spec/unit/windows_service_spec.rb +15 -15
  640. data/spec/unit/workstation_config_loader_spec.rb +2 -2
  641. data/tasks/rspec.rb +16 -18
  642. metadata +126 -49
  643. data/bin/shef +0 -35
  644. data/lib/chef/application/agent.rb +0 -18
  645. data/lib/chef/monkey_patches/fileutils.rb +0 -65
  646. data/lib/chef/monkey_patches/numeric.rb +0 -15
  647. data/lib/chef/monkey_patches/object.rb +0 -9
  648. data/lib/chef/monkey_patches/pathname.rb +0 -32
  649. data/lib/chef/monkey_patches/regexp.rb +0 -34
  650. data/lib/chef/monkey_patches/securerandom.rb +0 -44
  651. data/lib/chef/monkey_patches/string.rb +0 -49
  652. data/lib/chef/monkey_patches/tempfile.rb +0 -64
  653. data/lib/chef/monkey_patches/uri.rb +0 -70
@@ -23,7 +23,7 @@ require 'net/ssh'
23
23
 
24
24
  describe Chef::Knife::Bootstrap do
25
25
  before do
26
- Chef::Platform.stub(:windows?) { false }
26
+ allow(Chef::Platform).to receive(:windows?) { false }
27
27
  end
28
28
  let(:knife) do
29
29
  Chef::Log.logger = Logger.new(StringIO.new)
@@ -32,7 +32,7 @@ describe Chef::Knife::Bootstrap do
32
32
  k = Chef::Knife::Bootstrap.new(bootstrap_cli_options)
33
33
  k.merge_configs
34
34
 
35
- k.ui.stub(:stderr).and_return(stderr)
35
+ allow(k.ui).to receive(:stderr).and_return(stderr)
36
36
  allow(k).to receive(:encryption_secret_provided_ignore_encrypt_flag?).and_return(false)
37
37
  k
38
38
  end
@@ -44,8 +44,15 @@ describe Chef::Knife::Bootstrap do
44
44
  let(:bootstrap_cli_options) { [ ] }
45
45
 
46
46
  it "should use chef-full as default template" do
47
- knife.bootstrap_template.should be_a_kind_of(String)
48
- File.basename(knife.bootstrap_template).should eq("chef-full")
47
+ expect(knife.bootstrap_template).to be_a_kind_of(String)
48
+ expect(File.basename(knife.bootstrap_template)).to eq("chef-full")
49
+ end
50
+
51
+ context "with --bootstrap-vault-item" do
52
+ let(:bootstrap_cli_options) { [ "--bootstrap-vault-item", "vault1:item1", "--bootstrap-vault-item", "vault1:item2", "--bootstrap-vault-item", "vault2:item1" ] }
53
+ it "sets the knife config cli option correctly" do
54
+ expect(knife.config[:bootstrap_vault_item]).to eq({"vault1"=>["item1", "item2"], "vault2"=>["item1"]})
55
+ end
49
56
  end
50
57
 
51
58
  context "with :distro and :bootstrap_template cli options" do
@@ -78,7 +85,7 @@ describe Chef::Knife::Bootstrap do
78
85
  let(:bootstrap_template) { "/opt/blah/not/exists/template.erb" }
79
86
 
80
87
  it "raises an error" do
81
- lambda { knife.find_template }.should raise_error
88
+ expect { knife.find_template }.to raise_error
82
89
  end
83
90
  end
84
91
 
@@ -86,8 +93,8 @@ describe Chef::Knife::Bootstrap do
86
93
  let(:bootstrap_template) { File.expand_path(File.join(CHEF_SPEC_DATA, "bootstrap", "test.erb")) }
87
94
 
88
95
  it "loads the given file as the template" do
89
- Chef::Log.should_receive(:debug)
90
- knife.find_template.should eq(File.expand_path(File.join(CHEF_SPEC_DATA, "bootstrap", "test.erb")))
96
+ expect(Chef::Log).to receive(:debug)
97
+ expect(knife.find_template).to eq(File.expand_path(File.join(CHEF_SPEC_DATA, "bootstrap", "test.erb")))
91
98
  end
92
99
  end
93
100
  end
@@ -95,7 +102,7 @@ describe Chef::Knife::Bootstrap do
95
102
  context "when :bootstrap_template config is set to a template name" do
96
103
  let(:bootstrap_template) { "example" }
97
104
 
98
- let(:builtin_template_path) { File.expand_path(File.join(File.dirname(__FILE__), '../../../lib/chef/knife/bootstrap', "example.erb"))}
105
+ let(:builtin_template_path) { File.expand_path(File.join(File.dirname(__FILE__), '../../../lib/chef/knife/bootstrap/templates', "example.erb"))}
99
106
 
100
107
  let(:chef_config_dir_template_path) { "/knife/chef/config/bootstrap/example.erb" }
101
108
 
@@ -104,7 +111,7 @@ describe Chef::Knife::Bootstrap do
104
111
  let(:gem_files_template_path) { "/Users/schisamo/.rvm/gems/ruby-1.9.2-p180@chef-0.10/gems/knife-windows-0.5.4/lib/chef/knife/bootstrap/fake-bootstrap-template.erb" }
105
112
 
106
113
  def configure_chef_config_dir
107
- Chef::Knife.stub(:chef_config_dir).and_return("/knife/chef/config")
114
+ allow(Chef::Knife).to receive(:chef_config_dir).and_return("/knife/chef/config")
108
115
  end
109
116
 
110
117
  def configure_env_home
@@ -112,13 +119,13 @@ describe Chef::Knife::Bootstrap do
112
119
  end
113
120
 
114
121
  def configure_gem_files
115
- Gem.stub(:find_files).and_return([ gem_files_template_path ])
122
+ allow(Gem).to receive(:find_files).and_return([ gem_files_template_path ])
116
123
  end
117
124
 
118
125
  before(:each) do
119
126
  @original_home = ENV['HOME']
120
127
  ENV['HOME'] = nil
121
- File.should_receive(:exists?).with(bootstrap_template).and_return(false)
128
+ expect(File).to receive(:exists?).with(bootstrap_template).and_return(false)
122
129
  end
123
130
 
124
131
  after(:each) do
@@ -131,11 +138,11 @@ describe Chef::Knife::Bootstrap do
131
138
  configure_env_home
132
139
  configure_gem_files
133
140
 
134
- File.should_receive(:exists?).with(builtin_template_path).and_return(true)
141
+ expect(File).to receive(:exists?).with(builtin_template_path).and_return(true)
135
142
  end
136
143
 
137
144
  it "should load the template from built-in templates" do
138
- knife.find_template.should eq(builtin_template_path)
145
+ expect(knife.find_template).to eq(builtin_template_path)
139
146
  end
140
147
  end
141
148
 
@@ -145,8 +152,8 @@ describe Chef::Knife::Bootstrap do
145
152
  configure_env_home
146
153
  configure_gem_files
147
154
 
148
- File.should_receive(:exists?).with(builtin_template_path).and_return(false)
149
- File.should_receive(:exists?).with(chef_config_dir_template_path).and_return(true)
155
+ expect(File).to receive(:exists?).with(builtin_template_path).and_return(false)
156
+ expect(File).to receive(:exists?).with(chef_config_dir_template_path).and_return(true)
150
157
 
151
158
  it "should load the template from chef_config_dir" do
152
159
  knife.find_template.should eq(chef_config_dir_template_path)
@@ -160,13 +167,13 @@ describe Chef::Knife::Bootstrap do
160
167
  configure_env_home
161
168
  configure_gem_files
162
169
 
163
- File.should_receive(:exists?).with(builtin_template_path).and_return(false)
164
- File.should_receive(:exists?).with(chef_config_dir_template_path).and_return(false)
165
- File.should_receive(:exists?).with(env_home_template_path).and_return(true)
170
+ expect(File).to receive(:exists?).with(builtin_template_path).and_return(false)
171
+ expect(File).to receive(:exists?).with(chef_config_dir_template_path).and_return(false)
172
+ expect(File).to receive(:exists?).with(env_home_template_path).and_return(true)
166
173
  end
167
174
 
168
175
  it "should load the template from chef_config_dir" do
169
- knife.find_template.should eq(env_home_template_path)
176
+ expect(knife.find_template).to eq(env_home_template_path)
170
177
  end
171
178
  end
172
179
 
@@ -175,13 +182,13 @@ describe Chef::Knife::Bootstrap do
175
182
  configure_chef_config_dir
176
183
  configure_gem_files
177
184
 
178
- File.should_receive(:exists?).with(builtin_template_path).and_return(false)
179
- File.should_receive(:exists?).with(chef_config_dir_template_path).and_return(false)
180
- File.should_receive(:exists?).with(gem_files_template_path).and_return(true)
185
+ expect(File).to receive(:exists?).with(builtin_template_path).and_return(false)
186
+ expect(File).to receive(:exists?).with(chef_config_dir_template_path).and_return(false)
187
+ expect(File).to receive(:exists?).with(gem_files_template_path).and_return(true)
181
188
  end
182
189
 
183
190
  it "should load the template from Gem files" do
184
- knife.find_template.should eq(gem_files_template_path)
191
+ expect(knife.find_template).to eq(gem_files_template_path)
185
192
  end
186
193
  end
187
194
  end
@@ -192,7 +199,7 @@ describe Chef::Knife::Bootstrap do
192
199
  it "sets the knife :bootstrap_template config" do
193
200
  knife.parse_options([t,"blahblah"])
194
201
  knife.merge_configs
195
- knife.bootstrap_template.should eq("blahblah")
202
+ expect(knife.bootstrap_template).to eq("blahblah")
196
203
  end
197
204
  end
198
205
  end
@@ -201,19 +208,19 @@ describe Chef::Knife::Bootstrap do
201
208
  let(:bootstrap_template) { File.expand_path(File.join(CHEF_SPEC_DATA, "bootstrap", "test.erb")) }
202
209
 
203
210
  it "should return an empty run_list" do
204
- knife.render_template.should == '{"run_list":[]}'
211
+ expect(knife.render_template).to eq('{"run_list":[]}')
205
212
  end
206
213
 
207
214
  it "should have role[base] in the run_list" do
208
215
  knife.parse_options(["-r","role[base]"])
209
216
  knife.merge_configs
210
- knife.render_template.should == '{"run_list":["role[base]"]}'
217
+ expect(knife.render_template).to eq('{"run_list":["role[base]"]}')
211
218
  end
212
219
 
213
220
  it "should have role[base] and recipe[cupcakes] in the run_list" do
214
221
  knife.parse_options(["-r", "role[base],recipe[cupcakes]"])
215
222
  knife.merge_configs
216
- knife.render_template.should == '{"run_list":["role[base]","recipe[cupcakes]"]}'
223
+ expect(knife.render_template).to eq('{"run_list":["role[base]","recipe[cupcakes]"]}')
217
224
  end
218
225
 
219
226
  it "should have foo => {bar => baz} in the first_boot" do
@@ -221,7 +228,7 @@ describe Chef::Knife::Bootstrap do
221
228
  knife.merge_configs
222
229
  expected_hash = FFI_Yajl::Parser.new.parse('{"foo":{"bar":"baz"},"run_list":[]}')
223
230
  actual_hash = FFI_Yajl::Parser.new.parse(knife.render_template)
224
- actual_hash.should == expected_hash
231
+ expect(actual_hash).to eq(expected_hash)
225
232
  end
226
233
  end
227
234
 
@@ -231,14 +238,14 @@ describe Chef::Knife::Bootstrap do
231
238
  it "should create a hint file when told to" do
232
239
  knife.parse_options(["--hint", "openstack"])
233
240
  knife.merge_configs
234
- knife.render_template.should match /\/etc\/chef\/ohai\/hints\/openstack.json/
241
+ expect(knife.render_template).to match /\/etc\/chef\/ohai\/hints\/openstack.json/
235
242
  end
236
243
 
237
244
  it "should populate a hint file with JSON when given a file to read" do
238
- ::File.stub(:read).and_return('{ "foo" : "bar" }')
245
+ allow(::File).to receive(:read).and_return('{ "foo" : "bar" }')
239
246
  knife.parse_options(["--hint", "openstack=hints/openstack.json"])
240
247
  knife.merge_configs
241
- knife.render_template.should match /\{\"foo\":\"bar\"\}/
248
+ expect(knife.render_template).to match /\{\"foo\":\"bar\"\}/
242
249
  end
243
250
  end
244
251
 
@@ -261,7 +268,7 @@ describe Chef::Knife::Bootstrap do
261
268
  let(:setting) { "api.opscode.com" }
262
269
 
263
270
  it "renders the client.rb with a single FQDN no_proxy entry" do
264
- rendered_template.should match(%r{.*no_proxy\s*"api.opscode.com".*})
271
+ expect(rendered_template).to match(%r{.*no_proxy\s*"api.opscode.com".*})
265
272
  end
266
273
  end
267
274
 
@@ -269,7 +276,7 @@ describe Chef::Knife::Bootstrap do
269
276
  let(:setting) { "api.opscode.com,172.16.10.*" }
270
277
 
271
278
  it "renders the client.rb with comma-separated FQDN and wildcard IP address no_proxy entries" do
272
- rendered_template.should match(%r{.*no_proxy\s*"api.opscode.com,172.16.10.\*".*})
279
+ expect(rendered_template).to match(%r{.*no_proxy\s*"api.opscode.com,172.16.10.\*".*})
273
280
  end
274
281
  end
275
282
 
@@ -277,7 +284,7 @@ describe Chef::Knife::Bootstrap do
277
284
  let(:options) { ["--node-ssl-verify-mode", "none"] }
278
285
 
279
286
  it "renders the client.rb with ssl_verify_mode set to :verify_none" do
280
- rendered_template.should match(/ssl_verify_mode :verify_none/)
287
+ expect(rendered_template).to match(/ssl_verify_mode :verify_none/)
281
288
  end
282
289
  end
283
290
 
@@ -285,7 +292,7 @@ describe Chef::Knife::Bootstrap do
285
292
  let(:options) { ["--node-ssl-verify-mode", "peer"] }
286
293
 
287
294
  it "renders the client.rb with ssl_verify_mode set to :verify_peer" do
288
- rendered_template.should match(/ssl_verify_mode :verify_peer/)
295
+ expect(rendered_template).to match(/ssl_verify_mode :verify_peer/)
289
296
  end
290
297
  end
291
298
 
@@ -293,7 +300,7 @@ describe Chef::Knife::Bootstrap do
293
300
  let(:options) { ["--node-ssl-verify-mode", "all"] }
294
301
 
295
302
  it "raises error" do
296
- lambda{ rendered_template }.should raise_error
303
+ expect{ rendered_template }.to raise_error
297
304
  end
298
305
  end
299
306
 
@@ -301,7 +308,7 @@ describe Chef::Knife::Bootstrap do
301
308
  let(:options) { ["--node-verify-api-cert"] }
302
309
 
303
310
  it "renders the client.rb with verify_api_cert set to true" do
304
- rendered_template.should match(/verify_api_cert true/)
311
+ expect(rendered_template).to match(/verify_api_cert true/)
305
312
  end
306
313
  end
307
314
 
@@ -309,7 +316,7 @@ describe Chef::Knife::Bootstrap do
309
316
  let(:options) { ["--no-node-verify-api-cert"] }
310
317
 
311
318
  it "renders the client.rb with verify_api_cert set to false" do
312
- rendered_template.should match(/verify_api_cert false/)
319
+ expect(rendered_template).to match(/verify_api_cert false/)
313
320
  end
314
321
  end
315
322
  end
@@ -327,13 +334,13 @@ describe Chef::Knife::Bootstrap do
327
334
  it "creates a secret file" do
328
335
  expect(knife).to receive(:encryption_secret_provided_ignore_encrypt_flag?).and_return(true)
329
336
  expect(knife).to receive(:read_secret).and_return(secret)
330
- rendered_template.should match(%r{#{secret}})
337
+ expect(rendered_template).to match(%r{#{secret}})
331
338
  end
332
339
 
333
340
  it "renders the client.rb with an encrypted_data_bag_secret entry" do
334
341
  expect(knife).to receive(:encryption_secret_provided_ignore_encrypt_flag?).and_return(true)
335
342
  expect(knife).to receive(:read_secret).and_return(secret)
336
- rendered_template.should match(%r{encrypted_data_bag_secret\s*"/etc/chef/encrypted_data_bag_secret"})
343
+ expect(rendered_template).to match(%r{encrypted_data_bag_secret\s*"/etc/chef/encrypted_data_bag_secret"})
337
344
  end
338
345
 
339
346
  end
@@ -348,8 +355,8 @@ describe Chef::Knife::Bootstrap do
348
355
 
349
356
  before do
350
357
  Chef::Config[:trusted_certs_dir] = trusted_certs_dir
351
- IO.stub(:read).and_call_original
352
- IO.stub(:read).with(File.expand_path(Chef::Config[:validation_key])).and_return("")
358
+ allow(IO).to receive(:read).and_call_original
359
+ allow(IO).to receive(:read).with(File.expand_path(Chef::Config[:validation_key])).and_return("")
353
360
  end
354
361
 
355
362
  def certificates
@@ -357,22 +364,22 @@ describe Chef::Knife::Bootstrap do
357
364
  end
358
365
 
359
366
  it "creates /etc/chef/trusted_certs" do
360
- rendered_template.should match(%r{mkdir -p /etc/chef/trusted_certs})
367
+ expect(rendered_template).to match(%r{mkdir -p /etc/chef/trusted_certs})
361
368
  end
362
369
 
363
370
  it "copies the certificates in the directory" do
364
371
  certificates.each do |cert|
365
- IO.should_receive(:read).with(File.expand_path(cert))
372
+ expect(IO).to receive(:read).with(File.expand_path(cert))
366
373
  end
367
374
 
368
375
  certificates.each do |cert|
369
- rendered_template.should match(%r{cat > /etc/chef/trusted_certs/#{File.basename(cert)} <<'EOP'})
376
+ expect(rendered_template).to match(%r{cat > /etc/chef/trusted_certs/#{File.basename(cert)} <<'EOP'})
370
377
  end
371
378
  end
372
379
 
373
380
  it "doesn't create /etc/chef/trusted_certs if :trusted_certs_dir is empty" do
374
- Dir.should_receive(:glob).with(File.join(trusted_certs_dir, "*.{crt,pem}")).and_return([])
375
- rendered_template.should_not match(%r{mkdir -p /etc/chef/trusted_certs})
381
+ expect(Dir).to receive(:glob).with(File.join(trusted_certs_dir, "*.{crt,pem}")).and_return([])
382
+ expect(rendered_template).not_to match(%r{mkdir -p /etc/chef/trusted_certs})
376
383
  end
377
384
  end
378
385
 
@@ -387,57 +394,57 @@ describe Chef::Knife::Bootstrap do
387
394
  Chef::Config[:knife][:ssh_port] = nil
388
395
  knife.config[:forward_agent] = true
389
396
  knife.config[:identity_file] = "~/.ssh/me.rsa"
390
- knife.stub(:render_template).and_return("")
397
+ allow(knife).to receive(:render_template).and_return("")
391
398
  knife.knife_ssh
392
399
  end
393
400
 
394
401
  it "configures the hostname" do
395
- knife_ssh.name_args.first.should == "foo.example.com"
402
+ expect(knife_ssh.name_args.first).to eq("foo.example.com")
396
403
  end
397
404
 
398
405
  it "configures the ssh user" do
399
- knife_ssh.config[:ssh_user].should == 'rooty'
406
+ expect(knife_ssh.config[:ssh_user]).to eq('rooty')
400
407
  end
401
408
 
402
409
  it "configures the ssh password" do
403
- knife_ssh.config[:ssh_password].should == 'open_sesame'
410
+ expect(knife_ssh.config[:ssh_password]).to eq('open_sesame')
404
411
  end
405
412
 
406
413
  it "configures the ssh port" do
407
- knife_ssh.config[:ssh_port].should == '4001'
414
+ expect(knife_ssh.config[:ssh_port]).to eq('4001')
408
415
  end
409
416
 
410
417
  it "configures the ssh agent forwarding" do
411
- knife_ssh.config[:forward_agent].should == true
418
+ expect(knife_ssh.config[:forward_agent]).to eq(true)
412
419
  end
413
420
 
414
421
  it "configures the ssh identity file" do
415
- knife_ssh.config[:identity_file].should == '~/.ssh/me.rsa'
422
+ expect(knife_ssh.config[:identity_file]).to eq('~/.ssh/me.rsa')
416
423
  end
417
424
  end
418
425
 
419
426
  context "validating use_sudo_password" do
420
427
  before do
421
428
  knife.config[:ssh_password] = "password"
422
- knife.stub(:render_template).and_return("")
429
+ allow(knife).to receive(:render_template).and_return("")
423
430
  end
424
431
 
425
432
  it "use_sudo_password contains description and long params for help" do
426
- knife.options.should have_key(:use_sudo_password) \
427
- and knife.options[:use_sudo_password][:description].to_s.should_not == ''\
428
- and knife.options[:use_sudo_password][:long].to_s.should_not == ''
433
+ expect(knife.options).to have_key(:use_sudo_password) \
434
+ and expect(knife.options[:use_sudo_password][:description].to_s).not_to eq('')\
435
+ and expect(knife.options[:use_sudo_password][:long].to_s).not_to eq('')
429
436
  end
430
437
 
431
438
  it "uses the password from --ssh-password for sudo when --use-sudo-password is set" do
432
439
  knife.config[:use_sudo] = true
433
440
  knife.config[:use_sudo_password] = true
434
- knife.ssh_command.should include("echo \'#{knife.config[:ssh_password]}\' | sudo -S")
441
+ expect(knife.ssh_command).to include("echo \'#{knife.config[:ssh_password]}\' | sudo -S")
435
442
  end
436
443
 
437
444
  it "should not honor --use-sudo-password when --use-sudo is not set" do
438
445
  knife.config[:use_sudo] = false
439
446
  knife.config[:use_sudo_password] = true
440
- knife.ssh_command.should_not include("echo #{knife.config[:ssh_password]} | sudo -S")
447
+ expect(knife.ssh_command).not_to include("echo #{knife.config[:ssh_password]} | sudo -S")
441
448
  end
442
449
  end
443
450
 
@@ -450,34 +457,34 @@ describe Chef::Knife::Bootstrap do
450
457
  Chef::Config[:knife][:identity_file] = "~/.ssh/you.rsa"
451
458
  Chef::Config[:knife][:ssh_gateway] = "towel.blinkenlights.nl"
452
459
  Chef::Config[:knife][:host_key_verify] = true
453
- knife.stub(:render_template).and_return("")
460
+ allow(knife).to receive(:render_template).and_return("")
454
461
  knife.config = {}
455
462
  knife.merge_configs
456
463
  knife.knife_ssh
457
464
  end
458
465
 
459
466
  it "configures the ssh user" do
460
- knife_ssh.config[:ssh_user].should == 'curiosity'
467
+ expect(knife_ssh.config[:ssh_user]).to eq('curiosity')
461
468
  end
462
469
 
463
470
  it "configures the ssh port" do
464
- knife_ssh.config[:ssh_port].should == '2430'
471
+ expect(knife_ssh.config[:ssh_port]).to eq('2430')
465
472
  end
466
473
 
467
474
  it "configures the ssh agent forwarding" do
468
- knife_ssh.config[:forward_agent].should == true
475
+ expect(knife_ssh.config[:forward_agent]).to eq(true)
469
476
  end
470
477
 
471
478
  it "configures the ssh identity file" do
472
- knife_ssh.config[:identity_file].should == '~/.ssh/you.rsa'
479
+ expect(knife_ssh.config[:identity_file]).to eq('~/.ssh/you.rsa')
473
480
  end
474
481
 
475
482
  it "configures the ssh gateway" do
476
- knife_ssh.config[:ssh_gateway].should == 'towel.blinkenlights.nl'
483
+ expect(knife_ssh.config[:ssh_gateway]).to eq('towel.blinkenlights.nl')
477
484
  end
478
485
 
479
486
  it "configures the host key verify mode" do
480
- knife_ssh.config[:host_key_verify].should == true
487
+ expect(knife_ssh.config[:host_key_verify]).to eq(true)
481
488
  end
482
489
  end
483
490
 
@@ -486,27 +493,27 @@ describe Chef::Knife::Bootstrap do
486
493
  knife.name_args = ["foo.example.com"]
487
494
  knife.config[:ssh_user] = "rooty"
488
495
  knife.config[:identity_file] = "~/.ssh/me.rsa"
489
- knife.stub(:render_template).and_return("")
496
+ allow(knife).to receive(:render_template).and_return("")
490
497
  k = knife.knife_ssh
491
- k.stub(:get_password).and_return('typed_in_password')
492
- knife.stub(:knife_ssh).and_return(k)
498
+ allow(k).to receive(:get_password).and_return('typed_in_password')
499
+ allow(knife).to receive(:knife_ssh).and_return(k)
493
500
  knife.knife_ssh_with_password_auth
494
501
  end
495
502
 
496
503
  it "prompts the user for a password " do
497
- knife_ssh_with_password_auth.config[:ssh_password].should == 'typed_in_password'
504
+ expect(knife_ssh_with_password_auth.config[:ssh_password]).to eq('typed_in_password')
498
505
  end
499
506
 
500
507
  it "configures knife not to use the identity file that didn't work previously" do
501
- knife_ssh_with_password_auth.config[:identity_file].should be_nil
508
+ expect(knife_ssh_with_password_auth.config[:identity_file]).to be_nil
502
509
  end
503
510
  end
504
511
  end
505
512
 
506
513
  it "verifies that a server to bootstrap was given as a command line arg" do
507
514
  knife.name_args = nil
508
- lambda { knife.run }.should raise_error(SystemExit)
509
- stderr.string.should match /ERROR:.+FQDN or ip/
515
+ expect { knife.run }.to raise_error(SystemExit)
516
+ expect(stderr.string).to match /ERROR:.+FQDN or ip/
510
517
  end
511
518
 
512
519
  describe "when running the bootstrap" do
@@ -514,31 +521,77 @@ describe Chef::Knife::Bootstrap do
514
521
  knife.name_args = ["foo.example.com"]
515
522
  knife.config[:ssh_user] = "rooty"
516
523
  knife.config[:identity_file] = "~/.ssh/me.rsa"
517
- knife.stub(:render_template).and_return("")
524
+ allow(knife).to receive(:render_template).and_return("")
518
525
  knife_ssh = knife.knife_ssh
519
- knife.stub(:knife_ssh).and_return(knife_ssh)
526
+ allow(knife).to receive(:knife_ssh).and_return(knife_ssh)
520
527
  knife_ssh
521
528
  end
522
529
 
523
- it "configures the underlying ssh command and then runs it" do
524
- knife_ssh.should_receive(:run)
525
- knife.run
526
- end
530
+ context "when running with a configured and present validation key" do
531
+ before do
532
+ # this tests runs the old code path where we have a validation key, so we need to pass that check
533
+ allow(File).to receive(:exist?).with(File.expand_path(Chef::Config[:validation_key])).and_return(true)
534
+ end
527
535
 
528
- it "falls back to password based auth when auth fails the first time" do
529
- knife.stub(:puts)
530
536
 
531
- fallback_knife_ssh = knife_ssh.dup
532
- knife_ssh.should_receive(:run).and_raise(Net::SSH::AuthenticationFailed.new("no ssh for you"))
533
- knife.stub(:knife_ssh_with_password_auth).and_return(fallback_knife_ssh)
534
- fallback_knife_ssh.should_receive(:run)
535
- knife.run
537
+ it "configures the underlying ssh command and then runs it" do
538
+ expect(knife_ssh).to receive(:run)
539
+ knife.run
540
+ end
541
+
542
+ it "falls back to password based auth when auth fails the first time" do
543
+ allow(knife).to receive(:puts)
544
+
545
+ fallback_knife_ssh = knife_ssh.dup
546
+ expect(knife_ssh).to receive(:run).and_raise(Net::SSH::AuthenticationFailed.new("no ssh for you"))
547
+ allow(knife).to receive(:knife_ssh_with_password_auth).and_return(fallback_knife_ssh)
548
+ expect(fallback_knife_ssh).to receive(:run)
549
+ knife.run
550
+ end
551
+
552
+ it "raises the exception if config[:ssh_password] is set and an authentication exception is raised" do
553
+ knife.config[:ssh_password] = "password"
554
+ expect(knife_ssh).to receive(:run).and_raise(Net::SSH::AuthenticationFailed)
555
+ expect { knife.run }.to raise_error(Net::SSH::AuthenticationFailed)
556
+ end
557
+
558
+ it "creates the client and adds chef-vault items if vault_list is set" do
559
+ knife.config[:bootstrap_vault_file] = "/not/our/responsibility/to/check/if/this/exists"
560
+ expect(knife_ssh).to receive(:run)
561
+ expect(knife.client_builder).to receive(:run)
562
+ expect(knife.chef_vault_handler).to receive(:run).with(node_name: knife.config[:chef_node_name])
563
+ knife.run
564
+ end
565
+
566
+ it "creates the client and adds chef-vault items if vault_items is set" do
567
+ knife.config[:bootstrap_vault_json] = '{ "vault" => "item" }'
568
+ expect(knife_ssh).to receive(:run)
569
+ expect(knife.client_builder).to receive(:run)
570
+ expect(knife.chef_vault_handler).to receive(:run).with(node_name: knife.config[:chef_node_name])
571
+ knife.run
572
+ end
573
+
574
+ it "does old-style validation without creating a client key if vault_list+vault_items is not set" do
575
+ expect(File).to receive(:exist?).with(File.expand_path(Chef::Config[:validation_key])).and_return(true)
576
+ expect(knife_ssh).to receive(:run)
577
+ expect(knife.client_builder).not_to receive(:run)
578
+ expect(knife.chef_vault_handler).not_to receive(:run).with(node_name: knife.config[:chef_node_name])
579
+ knife.run
580
+ end
536
581
  end
537
582
 
538
- it "raises the exception if config[:ssh_password] is set and an authentication exception is raised" do
539
- knife.config[:ssh_password] = "password"
540
- knife_ssh.should_receive(:run).and_raise(Net::SSH::AuthenticationFailed)
541
- lambda { knife.run }.should raise_error(Net::SSH::AuthenticationFailed)
583
+ context "when the validation key is not present" do
584
+ before do
585
+ # this tests runs the old code path where we have a validation key, so we need to pass that check
586
+ allow(File).to receive(:exist?).with(File.expand_path(Chef::Config[:validation_key])).and_return(false)
587
+ end
588
+
589
+ it "creates the client (and possibly adds chef-vault items)" do
590
+ expect(knife_ssh).to receive(:run)
591
+ expect(knife.client_builder).to receive(:run)
592
+ expect(knife.chef_vault_handler).to receive(:run).with(node_name: knife.config[:chef_node_name])
593
+ knife.run
594
+ end
542
595
  end
543
596
  end
544
597