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
@@ -20,6 +20,6 @@ require 'spec_helper'
20
20
 
21
21
  describe Chef do
22
22
  it "should have a version defined" do
23
- Chef::VERSION.should match(/(\d+)\.(\d+)\.(\d+)/)
23
+ expect(Chef::VERSION).to match(/(\d+)\.(\d+)\.(\d+)/)
24
24
  end
25
25
  end
@@ -44,7 +44,7 @@ describe Chef::Client do
44
44
  ohai_system = double( "Ohai::System",
45
45
  :all_plugins => true,
46
46
  :data => ohai_data)
47
- ohai_system.stub(:[]) do |key|
47
+ allow(ohai_system).to receive(:[]) do |key|
48
48
  ohai_data[key]
49
49
  end
50
50
  ohai_system
@@ -72,7 +72,7 @@ describe Chef::Client do
72
72
 
73
73
  # Node/Ohai data
74
74
  #Chef::Config[:node_name] = fqdn
75
- Ohai::System.stub(:new).and_return(ohai_system)
75
+ allow(Ohai::System).to receive(:new).and_return(ohai_system)
76
76
  end
77
77
 
78
78
  describe "authentication protocol selection" do
@@ -85,7 +85,7 @@ describe Chef::Client do
85
85
  Chef::Config[:node_name] = ("f" * 90)
86
86
  # ugly that this happens as a side effect of a getter :(
87
87
  client.node_name
88
- Chef::Config[:authentication_protocol_version].should == "1.0"
88
+ expect(Chef::Config[:authentication_protocol_version]).to eq("1.0")
89
89
  end
90
90
  end
91
91
 
@@ -94,7 +94,7 @@ describe Chef::Client do
94
94
  Chef::Config[:node_name] = ("f" * 91)
95
95
  # ugly that this happens as a side effect of a getter :(
96
96
  client.node_name
97
- Chef::Config[:authentication_protocol_version].should == "1.1"
97
+ expect(Chef::Config[:authentication_protocol_version]).to eq("1.1")
98
98
  end
99
99
  end
100
100
  end
@@ -104,11 +104,11 @@ describe Chef::Client do
104
104
 
105
105
  context "and STDOUT is a TTY" do
106
106
  before do
107
- STDOUT.stub(:tty?).and_return(true)
107
+ allow(STDOUT).to receive(:tty?).and_return(true)
108
108
  end
109
109
 
110
110
  it "configures the :doc formatter" do
111
- client.formatters_for_run.should == [[:doc]]
111
+ expect(client.formatters_for_run).to eq([[:doc]])
112
112
  end
113
113
 
114
114
  context "and force_logger is set" do
@@ -117,8 +117,8 @@ describe Chef::Client do
117
117
  end
118
118
 
119
119
  it "configures the :null formatter" do
120
- Chef::Config[:force_logger].should be_true
121
- client.formatters_for_run.should == [[:null]]
120
+ expect(Chef::Config[:force_logger]).to be_truthy
121
+ expect(client.formatters_for_run).to eq([[:null]])
122
122
  end
123
123
 
124
124
  end
@@ -127,11 +127,11 @@ describe Chef::Client do
127
127
 
128
128
  context "and STDOUT is not a TTY" do
129
129
  before do
130
- STDOUT.stub(:tty?).and_return(false)
130
+ allow(STDOUT).to receive(:tty?).and_return(false)
131
131
  end
132
132
 
133
133
  it "configures the :null formatter" do
134
- client.formatters_for_run.should == [[:null]]
134
+ expect(client.formatters_for_run).to eq([[:null]])
135
135
  end
136
136
 
137
137
  context "and force_formatter is set" do
@@ -139,7 +139,7 @@ describe Chef::Client do
139
139
  Chef::Config[:force_formatter] = true
140
140
  end
141
141
  it "it configures the :doc formatter" do
142
- client.formatters_for_run.should == [[:doc]]
142
+ expect(client.formatters_for_run).to eq([[:doc]])
143
143
  end
144
144
  end
145
145
  end
@@ -153,14 +153,14 @@ describe Chef::Client do
153
153
  end
154
154
 
155
155
  it "does not configure a default formatter" do
156
- client.formatters_for_run.should == [[:min, nil]]
156
+ expect(client.formatters_for_run).to eq([[:min, nil]])
157
157
  end
158
158
 
159
159
  it "configures the formatter for STDOUT/STDERR" do
160
160
  configured_formatters = client.configure_formatters
161
161
  min_formatter = configured_formatters[0]
162
- min_formatter.output.out.should == STDOUT
163
- min_formatter.output.err.should == STDERR
162
+ expect(min_formatter.output.out).to eq(STDOUT)
163
+ expect(min_formatter.output.err).to eq(STDERR)
164
164
  end
165
165
  end
166
166
 
@@ -178,8 +178,8 @@ describe Chef::Client do
178
178
  it "configures the formatter for the file path" do
179
179
  configured_formatters = client.configure_formatters
180
180
  min_formatter = configured_formatters[0]
181
- min_formatter.output.out.path.should == @tmpout.path
182
- min_formatter.output.err.path.should == @tmpout.path
181
+ expect(min_formatter.output.out.path).to eq(@tmpout.path)
182
+ expect(min_formatter.output.err.path).to eq(@tmpout.path)
183
183
  end
184
184
  end
185
185
 
@@ -187,11 +187,12 @@ describe Chef::Client do
187
187
  end
188
188
 
189
189
  describe "a full client run" do
190
- shared_examples_for "a successful client run" do
190
+ shared_context "a client run" do
191
191
  let(:http_node_load) { double("Chef::REST (node)") }
192
192
  let(:http_cookbook_sync) { double("Chef::REST (cookbook sync)") }
193
193
  let(:http_node_save) { double("Chef::REST (node save)") }
194
194
  let(:runner) { double("Chef::Runner") }
195
+ let(:audit_runner) { instance_double("Chef::Audit::Runner", :failed? => false) }
195
196
 
196
197
  let(:api_client_exists?) { false }
197
198
 
@@ -204,11 +205,15 @@ describe Chef::Client do
204
205
  # --Client.register
205
206
  # Make sure Client#register thinks the client key doesn't
206
207
  # exist, so it tries to register and create one.
207
- File.should_receive(:exists?).with(Chef::Config[:client_key]).exactly(1).times.and_return(api_client_exists?)
208
+ allow(File).to receive(:exists?).and_call_original
209
+ expect(File).to receive(:exists?).
210
+ with(Chef::Config[:client_key]).
211
+ exactly(:once).
212
+ and_return(api_client_exists?)
208
213
 
209
214
  unless api_client_exists?
210
215
  # Client.register will register with the validation client name.
211
- Chef::ApiClient::Registration.any_instance.should_receive(:run)
216
+ expect_any_instance_of(Chef::ApiClient::Registration).to receive(:run)
212
217
  end
213
218
  end
214
219
 
@@ -216,64 +221,76 @@ describe Chef::Client do
216
221
  # Client.register will then turn around create another
217
222
  # Chef::REST object, this time with the client key it got from the
218
223
  # previous step.
219
- Chef::REST.should_receive(:new).
224
+ expect(Chef::REST).to receive(:new).
220
225
  with(Chef::Config[:chef_server_url], fqdn, Chef::Config[:client_key]).
221
- exactly(1).
226
+ exactly(:once).
222
227
  and_return(http_node_load)
223
228
 
224
229
  # --Client#build_node
225
230
  # looks up the node, which we will return, then later saves it.
226
- Chef::Node.should_receive(:find_or_create).with(fqdn).and_return(node)
231
+ expect(Chef::Node).to receive(:find_or_create).with(fqdn).and_return(node)
227
232
 
228
233
  # --ResourceReporter#node_load_completed
229
234
  # gets a run id from the server for storing resource history
230
235
  # (has its own tests, so stubbing it here.)
231
- Chef::ResourceReporter.any_instance.should_receive(:node_load_completed)
236
+ expect_any_instance_of(Chef::ResourceReporter).to receive(:node_load_completed)
232
237
  end
233
238
 
234
239
  def stub_for_sync_cookbooks
235
240
  # --Client#setup_run_context
236
241
  # ---Client#sync_cookbooks -- downloads the list of cookbooks to sync
237
242
  #
238
- Chef::CookbookSynchronizer.any_instance.should_receive(:sync_cookbooks)
239
- Chef::REST.should_receive(:new).with(Chef::Config[:chef_server_url]).and_return(http_cookbook_sync)
240
- http_cookbook_sync.should_receive(:post).
243
+ expect_any_instance_of(Chef::CookbookSynchronizer).to receive(:sync_cookbooks)
244
+ expect(Chef::REST).to receive(:new).with(Chef::Config[:chef_server_url]).and_return(http_cookbook_sync)
245
+ expect(http_cookbook_sync).to receive(:post).
241
246
  with("environments/_default/cookbook_versions", {:run_list => []}).
242
247
  and_return({})
243
248
  end
244
249
 
245
250
  def stub_for_converge
246
251
  # --Client#converge
247
- Chef::Runner.should_receive(:new).and_return(runner)
248
- runner.should_receive(:converge).and_return(true)
252
+ expect(Chef::Runner).to receive(:new).and_return(runner)
253
+ expect(runner).to receive(:converge).and_return(true)
254
+ end
249
255
 
250
- # --ResourceReporter#run_completed
251
- # updates the server with the resource history
252
- # (has its own tests, so stubbing it here.)
253
- Chef::ResourceReporter.any_instance.should_receive(:run_completed)
256
+ def stub_for_audit
257
+ # -- Client#run_audits
258
+ expect(Chef::Audit::Runner).to receive(:new).and_return(audit_runner)
259
+ expect(audit_runner).to receive(:run).and_return(true)
254
260
  end
255
261
 
256
262
  def stub_for_node_save
257
- node.stub(:data_for_save).and_return(node.for_json)
263
+ allow(node).to receive(:data_for_save).and_return(node.for_json)
258
264
 
259
265
  # --Client#save_updated_node
260
- Chef::REST.should_receive(:new).with(Chef::Config[:chef_server_url]).and_return(http_node_save)
261
- http_node_save.should_receive(:put_rest).with("nodes/#{fqdn}", node.for_json).and_return(true)
266
+ expect(Chef::REST).to receive(:new).with(Chef::Config[:chef_server_url]).and_return(http_node_save)
267
+ expect(http_node_save).to receive(:put_rest).with("nodes/#{fqdn}", node.for_json).and_return(true)
262
268
  end
263
269
 
264
270
  def stub_for_run
265
- Chef::RunLock.any_instance.should_receive(:acquire)
266
- Chef::RunLock.any_instance.should_receive(:save_pid)
267
- Chef::RunLock.any_instance.should_receive(:release)
271
+ expect_any_instance_of(Chef::RunLock).to receive(:acquire)
272
+ expect_any_instance_of(Chef::RunLock).to receive(:save_pid)
273
+ expect_any_instance_of(Chef::RunLock).to receive(:release)
268
274
 
269
275
  # Post conditions: check that node has been filled in correctly
270
- client.should_receive(:run_started)
271
- client.should_receive(:run_completed_successfully)
276
+ expect(client).to receive(:run_started)
277
+ expect(client).to receive(:run_completed_successfully)
278
+
279
+ # --ResourceReporter#run_completed
280
+ # updates the server with the resource history
281
+ # (has its own tests, so stubbing it here.)
282
+ expect_any_instance_of(Chef::ResourceReporter).to receive(:run_completed)
283
+ # --AuditReporter#run_completed
284
+ # posts the audit data to server.
285
+ # (has its own tests, so stubbing it here.)
286
+ expect_any_instance_of(Chef::Audit::AuditReporter).to receive(:run_completed)
272
287
  end
273
288
 
274
289
  before do
275
290
  Chef::Config[:client_fork] = enable_fork
276
291
  Chef::Config[:cache_path] = windows? ? 'C:\chef' : '/var/chef'
292
+ Chef::Config[:why_run] = false
293
+ Chef::Config[:audit_mode] = :enabled
277
294
 
278
295
  stub_const("Chef::Client::STDOUT_FD", stdout)
279
296
  stub_const("Chef::Client::STDERR_FD", stderr)
@@ -282,30 +299,31 @@ describe Chef::Client do
282
299
  stub_for_node_load
283
300
  stub_for_sync_cookbooks
284
301
  stub_for_converge
302
+ stub_for_audit
285
303
  stub_for_node_save
286
304
  stub_for_run
287
305
  end
306
+ end
288
307
 
289
- it "runs ohai, sets up authentication, loads node state, synchronizes policy, and converges" do
308
+ shared_examples_for "a successful client run" do
309
+ include_context "a client run"
310
+
311
+ it "runs ohai, sets up authentication, loads node state, synchronizes policy, converges, and runs audits" do
290
312
  # This is what we're testing.
291
313
  client.run
292
314
 
293
315
  # fork is stubbed, so we can see the outcome of the run
294
- node.automatic_attrs[:platform].should == "example-platform"
295
- node.automatic_attrs[:platform_version].should == "example-platform-1.0"
316
+ expect(node.automatic_attrs[:platform]).to eq("example-platform")
317
+ expect(node.automatic_attrs[:platform_version]).to eq("example-platform-1.0")
296
318
  end
297
319
  end
298
320
 
299
-
300
321
  describe "when running chef-client without fork" do
301
-
302
322
  include_examples "a successful client run"
303
323
  end
304
324
 
305
325
  describe "when the client key already exists" do
306
-
307
326
  let(:api_client_exists?) { true }
308
-
309
327
  include_examples "a successful client run"
310
328
  end
311
329
 
@@ -321,30 +339,29 @@ describe Chef::Client do
321
339
 
322
340
  before do
323
341
  # Client will try to compile and run override_recipe
324
- Chef::RunContext::CookbookCompiler.any_instance.should_receive(:compile)
342
+ expect_any_instance_of(Chef::RunContext::CookbookCompiler).to receive(:compile)
325
343
  end
326
344
 
327
345
  def stub_for_sync_cookbooks
328
346
  # --Client#setup_run_context
329
347
  # ---Client#sync_cookbooks -- downloads the list of cookbooks to sync
330
348
  #
331
- Chef::CookbookSynchronizer.any_instance.should_receive(:sync_cookbooks)
332
- Chef::REST.should_receive(:new).with(Chef::Config[:chef_server_url]).and_return(http_cookbook_sync)
333
- http_cookbook_sync.should_receive(:post).
349
+ expect_any_instance_of(Chef::CookbookSynchronizer).to receive(:sync_cookbooks)
350
+ expect(Chef::REST).to receive(:new).with(Chef::Config[:chef_server_url]).and_return(http_cookbook_sync)
351
+ expect(http_cookbook_sync).to receive(:post).
334
352
  with("environments/_default/cookbook_versions", {:run_list => ["override_recipe"]}).
335
353
  and_return({})
336
354
  end
337
355
 
338
356
  def stub_for_node_save
339
357
  # Expect NO node save
340
- node.should_not_receive(:save)
358
+ expect(node).not_to receive(:save)
341
359
  end
342
360
  end
343
361
  end
344
362
  end
345
363
 
346
364
  describe "when a permanent run list is passed as an option" do
347
-
348
365
  include_examples "a successful client run" do
349
366
 
350
367
  let(:new_runlist) { "recipe[new_run_list_recipe]" }
@@ -354,9 +371,9 @@ describe Chef::Client do
354
371
  # --Client#setup_run_context
355
372
  # ---Client#sync_cookbooks -- downloads the list of cookbooks to sync
356
373
  #
357
- Chef::CookbookSynchronizer.any_instance.should_receive(:sync_cookbooks)
358
- Chef::REST.should_receive(:new).with(Chef::Config[:chef_server_url]).and_return(http_cookbook_sync)
359
- http_cookbook_sync.should_receive(:post).
374
+ expect_any_instance_of(Chef::CookbookSynchronizer).to receive(:sync_cookbooks)
375
+ expect(Chef::REST).to receive(:new).with(Chef::Config[:chef_server_url]).and_return(http_cookbook_sync)
376
+ expect(http_cookbook_sync).to receive(:post).
360
377
  with("environments/_default/cookbook_versions", {:run_list => ["new_run_list_recipe"]}).
361
378
  and_return({})
362
379
  end
@@ -364,12 +381,161 @@ describe Chef::Client do
364
381
  before do
365
382
  # Client will try to compile and run the new_run_list_recipe, but we
366
383
  # do not create a fixture for this.
367
- Chef::RunContext::CookbookCompiler.any_instance.should_receive(:compile)
384
+ expect_any_instance_of(Chef::RunContext::CookbookCompiler).to receive(:compile)
368
385
  end
369
386
 
370
387
  it "sets the new run list on the node" do
371
388
  client.run
372
- node.run_list.should == Chef::RunList.new(new_runlist)
389
+ expect(node.run_list).to eq(Chef::RunList.new(new_runlist))
390
+ end
391
+ end
392
+ end
393
+
394
+ describe "when converge fails" do
395
+ include_context "a client run" do
396
+ let(:e) { Exception.new }
397
+ def stub_for_converge
398
+ expect(Chef::Runner).to receive(:new).and_return(runner)
399
+ expect(runner).to receive(:converge).and_raise(e)
400
+ expect(Chef::Application).to receive(:debug_stacktrace).with an_instance_of(Chef::Exceptions::RunFailedWrappingError)
401
+ end
402
+
403
+ def stub_for_node_save
404
+ expect(client).to_not receive(:save_updated_node)
405
+ end
406
+
407
+ def stub_for_run
408
+ expect_any_instance_of(Chef::RunLock).to receive(:acquire)
409
+ expect_any_instance_of(Chef::RunLock).to receive(:save_pid)
410
+ expect_any_instance_of(Chef::RunLock).to receive(:release)
411
+
412
+ # Post conditions: check that node has been filled in correctly
413
+ expect(client).to receive(:run_started)
414
+ expect(client).to receive(:run_failed)
415
+
416
+ expect_any_instance_of(Chef::ResourceReporter).to receive(:run_failed)
417
+ expect_any_instance_of(Chef::Audit::AuditReporter).to receive(:run_failed)
418
+ end
419
+ end
420
+
421
+ it "runs the audits and raises the error" do
422
+ expect{ client.run }.to raise_error(Chef::Exceptions::RunFailedWrappingError) do |error|
423
+ expect(error.wrapped_errors.size).to eq(1)
424
+ expect(error.wrapped_errors[0]).to eq(e)
425
+ end
426
+ end
427
+ end
428
+
429
+ describe "when the audit phase fails" do
430
+ context "with an exception" do
431
+ include_context "a client run" do
432
+ let(:e) { Exception.new }
433
+ def stub_for_audit
434
+ expect(Chef::Audit::Runner).to receive(:new).and_return(audit_runner)
435
+ expect(audit_runner).to receive(:run).and_raise(e)
436
+ expect(Chef::Application).to receive(:debug_stacktrace).with an_instance_of(Chef::Exceptions::RunFailedWrappingError)
437
+ end
438
+
439
+ def stub_for_run
440
+ expect_any_instance_of(Chef::RunLock).to receive(:acquire)
441
+ expect_any_instance_of(Chef::RunLock).to receive(:save_pid)
442
+ expect_any_instance_of(Chef::RunLock).to receive(:release)
443
+
444
+ # Post conditions: check that node has been filled in correctly
445
+ expect(client).to receive(:run_started)
446
+ expect(client).to receive(:run_failed)
447
+
448
+ expect_any_instance_of(Chef::ResourceReporter).to receive(:run_failed)
449
+ expect_any_instance_of(Chef::Audit::AuditReporter).to receive(:run_failed)
450
+ end
451
+ end
452
+
453
+ it "should save the node after converge and raise exception" do
454
+ expect{ client.run }.to raise_error(Chef::Exceptions::RunFailedWrappingError) do |error|
455
+ expect(error.wrapped_errors.size).to eq(1)
456
+ expect(error.wrapped_errors[0]).to eq(e)
457
+ end
458
+ end
459
+ end
460
+
461
+ context "with failed audits" do
462
+ include_context "a client run" do
463
+ let(:audit_runner) do
464
+ instance_double("Chef::Audit::Runner", :run => true, :failed? => true, :num_failed => 1, :num_total => 1)
465
+ end
466
+
467
+ def stub_for_audit
468
+ expect(Chef::Audit::Runner).to receive(:new).and_return(audit_runner)
469
+ expect(Chef::Application).to receive(:debug_stacktrace).with an_instance_of(Chef::Exceptions::RunFailedWrappingError)
470
+ end
471
+
472
+ def stub_for_run
473
+ expect_any_instance_of(Chef::RunLock).to receive(:acquire)
474
+ expect_any_instance_of(Chef::RunLock).to receive(:save_pid)
475
+ expect_any_instance_of(Chef::RunLock).to receive(:release)
476
+
477
+ # Post conditions: check that node has been filled in correctly
478
+ expect(client).to receive(:run_started)
479
+ expect(client).to receive(:run_failed)
480
+
481
+ expect_any_instance_of(Chef::ResourceReporter).to receive(:run_failed)
482
+ expect_any_instance_of(Chef::Audit::AuditReporter).to receive(:run_failed)
483
+ end
484
+ end
485
+
486
+ it "should save the node after converge and raise exception" do
487
+ expect{ client.run }.to raise_error(Chef::Exceptions::RunFailedWrappingError) do |error|
488
+ expect(error.wrapped_errors.size).to eq(1)
489
+ expect(error.wrapped_errors[0]).to be_instance_of(Chef::Exceptions::AuditsFailed)
490
+ end
491
+ end
492
+ end
493
+ end
494
+
495
+ describe "when why_run mode is enabled" do
496
+ include_context "a client run" do
497
+
498
+ before do
499
+ Chef::Config[:why_run] = true
500
+ end
501
+
502
+ def stub_for_audit
503
+ expect(Chef::Audit::Runner).to_not receive(:new)
504
+ end
505
+
506
+ def stub_for_node_save
507
+ # This is how we should be mocking external calls - not letting it fall all the way through to the
508
+ # REST call
509
+ expect(node).to receive(:save)
510
+ end
511
+
512
+ it "runs successfully without enabling the audit runner" do
513
+ client.run
514
+
515
+ # fork is stubbed, so we can see the outcome of the run
516
+ expect(node.automatic_attrs[:platform]).to eq("example-platform")
517
+ expect(node.automatic_attrs[:platform_version]).to eq("example-platform-1.0")
518
+ end
519
+ end
520
+ end
521
+
522
+ describe "when audits are disabled" do
523
+ include_context "a client run" do
524
+
525
+ before do
526
+ Chef::Config[:audit_mode] = :disabled
527
+ end
528
+
529
+ def stub_for_audit
530
+ expect(Chef::Audit::Runner).to_not receive(:new)
531
+ end
532
+
533
+ it "runs successfully without enabling the audit runner" do
534
+ client.run
535
+
536
+ # fork is stubbed, so we can see the outcome of the run
537
+ expect(node.automatic_attrs[:platform]).to eq("example-platform")
538
+ expect(node.automatic_attrs[:platform_version]).to eq("example-platform-1.0")
373
539
  end
374
540
  end
375
541
  end
@@ -381,23 +547,23 @@ describe Chef::Client do
381
547
 
382
548
  it "should remove the run_lock on failure of #load_node" do
383
549
  @run_lock = double("Chef::RunLock", :acquire => true)
384
- Chef::RunLock.stub(:new).and_return(@run_lock)
550
+ allow(Chef::RunLock).to receive(:new).and_return(@run_lock)
385
551
 
386
552
  @events = double("Chef::EventDispatch::Dispatcher").as_null_object
387
- Chef::EventDispatch::Dispatcher.stub(:new).and_return(@events)
553
+ allow(Chef::EventDispatch::Dispatcher).to receive(:new).and_return(@events)
388
554
  # @events is created on Chef::Client.new, so we need to recreate it after mocking
389
555
  client = Chef::Client.new
390
- client.stub(:load_node).and_raise(Exception)
391
- @run_lock.should_receive(:release)
392
- lambda { client.run }.should raise_error(Exception)
556
+ allow(client).to receive(:load_node).and_raise(Exception)
557
+ expect(@run_lock).to receive(:release)
558
+ expect { client.run }.to raise_error(Exception)
393
559
  end
394
560
  end
395
561
 
396
562
  describe "when notifying other objects of the status of the chef run" do
397
563
  before do
398
564
  Chef::Client.clear_notifications
399
- Chef::Node.stub(:find_or_create).and_return(node)
400
- node.stub(:save)
565
+ allow(Chef::Node).to receive(:find_or_create).and_return(node)
566
+ allow(node).to receive(:save)
401
567
  client.load_node
402
568
  client.build_node
403
569
  end
@@ -405,34 +571,34 @@ describe Chef::Client do
405
571
  it "notifies observers that the run has started" do
406
572
  notified = false
407
573
  Chef::Client.when_run_starts do |run_status|
408
- run_status.node.should == node
574
+ expect(run_status.node).to eq(node)
409
575
  notified = true
410
576
  end
411
577
 
412
578
  client.run_started
413
- notified.should be_true
579
+ expect(notified).to be_truthy
414
580
  end
415
581
 
416
582
  it "notifies observers that the run has completed successfully" do
417
583
  notified = false
418
584
  Chef::Client.when_run_completes_successfully do |run_status|
419
- run_status.node.should == node
585
+ expect(run_status.node).to eq(node)
420
586
  notified = true
421
587
  end
422
588
 
423
589
  client.run_completed_successfully
424
- notified.should be_true
590
+ expect(notified).to be_truthy
425
591
  end
426
592
 
427
593
  it "notifies observers that the run failed" do
428
594
  notified = false
429
595
  Chef::Client.when_run_fails do |run_status|
430
- run_status.node.should == node
596
+ expect(run_status.node).to eq(node)
431
597
  notified = true
432
598
  end
433
599
 
434
600
  client.run_failed
435
- notified.should be_true
601
+ expect(notified).to be_truthy
436
602
  end
437
603
  end
438
604
 
@@ -446,73 +612,73 @@ describe Chef::Client do
446
612
  # build_node will call Node#expand! with server, which will
447
613
  # eventually hit the server to expand the included role.
448
614
  mock_chef_rest = double("Chef::REST")
449
- mock_chef_rest.should_receive(:get_rest).with("roles/role_containing_cookbook1").and_return(role_containing_cookbook1)
450
- Chef::REST.should_receive(:new).and_return(mock_chef_rest)
615
+ expect(mock_chef_rest).to receive(:get_rest).with("roles/role_containing_cookbook1").and_return(role_containing_cookbook1)
616
+ expect(Chef::REST).to receive(:new).and_return(mock_chef_rest)
451
617
 
452
618
  # check pre-conditions.
453
- node[:roles].should be_nil
454
- node[:recipes].should be_nil
619
+ expect(node[:roles]).to be_nil
620
+ expect(node[:recipes]).to be_nil
455
621
 
456
- client.policy_builder.stub(:node).and_return(node)
622
+ allow(client.policy_builder).to receive(:node).and_return(node)
457
623
 
458
624
  # chefspec and possibly others use the return value of this method
459
- client.build_node.should == node
625
+ expect(client.build_node).to eq(node)
460
626
 
461
627
  # check post-conditions.
462
- node[:roles].should_not be_nil
463
- node[:roles].length.should == 1
464
- node[:roles].should include("role_containing_cookbook1")
465
- node[:recipes].should_not be_nil
466
- node[:recipes].length.should == 1
467
- node[:recipes].should include("cookbook1")
628
+ expect(node[:roles]).not_to be_nil
629
+ expect(node[:roles].length).to eq(1)
630
+ expect(node[:roles]).to include("role_containing_cookbook1")
631
+ expect(node[:recipes]).not_to be_nil
632
+ expect(node[:recipes].length).to eq(1)
633
+ expect(node[:recipes]).to include("cookbook1")
468
634
  end
469
635
 
470
636
  it "should set the environment from the specified configuration value" do
471
- node.chef_environment.should == "_default"
637
+ expect(node.chef_environment).to eq("_default")
472
638
  Chef::Config[:environment] = "A"
473
639
 
474
640
  test_env = Chef::Environment.new
475
641
  test_env.name("A")
476
642
 
477
643
  mock_chef_rest = double("Chef::REST")
478
- mock_chef_rest.should_receive(:get_rest).with("environments/A").and_return(test_env)
479
- Chef::REST.should_receive(:new).and_return(mock_chef_rest)
480
- client.policy_builder.stub(:node).and_return(node)
481
- client.build_node.should == node
644
+ expect(mock_chef_rest).to receive(:get_rest).with("environments/A").and_return(test_env)
645
+ expect(Chef::REST).to receive(:new).and_return(mock_chef_rest)
646
+ allow(client.policy_builder).to receive(:node).and_return(node)
647
+ expect(client.build_node).to eq(node)
482
648
 
483
- node.chef_environment.should == "A"
649
+ expect(node.chef_environment).to eq("A")
484
650
  end
485
651
  end
486
652
 
487
653
  describe "windows_admin_check" do
488
654
  context "platform is not windows" do
489
655
  before do
490
- Chef::Platform.stub(:windows?).and_return(false)
656
+ allow(Chef::Platform).to receive(:windows?).and_return(false)
491
657
  end
492
658
 
493
659
  it "shouldn't be called" do
494
- client.should_not_receive(:has_admin_privileges?)
660
+ expect(client).not_to receive(:has_admin_privileges?)
495
661
  client.do_windows_admin_check
496
662
  end
497
663
  end
498
664
 
499
665
  context "platform is windows" do
500
666
  before do
501
- Chef::Platform.stub(:windows?).and_return(true)
667
+ allow(Chef::Platform).to receive(:windows?).and_return(true)
502
668
  end
503
669
 
504
670
  it "should be called" do
505
- client.should_receive(:has_admin_privileges?)
671
+ expect(client).to receive(:has_admin_privileges?)
506
672
  client.do_windows_admin_check
507
673
  end
508
674
 
509
675
  context "admin privileges exist" do
510
676
  before do
511
- client.should_receive(:has_admin_privileges?).and_return(true)
677
+ expect(client).to receive(:has_admin_privileges?).and_return(true)
512
678
  end
513
679
 
514
680
  it "should not log a warning message" do
515
- Chef::Log.should_not_receive(:warn)
681
+ expect(Chef::Log).not_to receive(:warn)
516
682
  client.do_windows_admin_check
517
683
  end
518
684
 
@@ -525,11 +691,11 @@ describe Chef::Client do
525
691
 
526
692
  context "admin privileges doesn't exist" do
527
693
  before do
528
- client.should_receive(:has_admin_privileges?).and_return(false)
694
+ expect(client).to receive(:has_admin_privileges?).and_return(false)
529
695
  end
530
696
 
531
697
  it "should log a warning message" do
532
- Chef::Log.should_receive(:warn)
698
+ expect(Chef::Log).to receive(:warn)
533
699
  client.do_windows_admin_check
534
700
  end
535
701