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
@@ -73,7 +73,7 @@ describe Chef::PolicyBuilder::ExpandNodeObject do
73
73
 
74
74
  it "creates a new in-memory node object with the given name" do
75
75
  policy_builder.load_node
76
- policy_builder.node.name.should == node_name
76
+ expect(policy_builder.node.name).to eq(node_name)
77
77
  end
78
78
 
79
79
  end
@@ -83,9 +83,9 @@ describe Chef::PolicyBuilder::ExpandNodeObject do
83
83
  let(:node) { Chef::Node.new.tap { |n| n.name(node_name) } }
84
84
 
85
85
  it "loads or creates a node on the server" do
86
- Chef::Node.should_receive(:find_or_create).with(node_name).and_return(node)
86
+ expect(Chef::Node).to receive(:find_or_create).with(node_name).and_return(node)
87
87
  policy_builder.load_node
88
- policy_builder.node.should == node
88
+ expect(policy_builder.node).to eq(node)
89
89
  end
90
90
 
91
91
  end
@@ -95,7 +95,7 @@ describe Chef::PolicyBuilder::ExpandNodeObject do
95
95
 
96
96
  # XXX: Chef::Client just needs to be able to call this, it doesn't depend on the return value.
97
97
  it "builds the node and returns the updated node object" do
98
- pending
98
+ skip
99
99
  end
100
100
 
101
101
  end
@@ -133,7 +133,7 @@ describe Chef::PolicyBuilder::ExpandNodeObject do
133
133
  end
134
134
 
135
135
  before do
136
- Chef::Node.should_receive(:find_or_create).with(node_name).and_return(node)
136
+ expect(Chef::Node).to receive(:find_or_create).with(node_name).and_return(node)
137
137
  policy_builder.load_node
138
138
  end
139
139
 
@@ -167,7 +167,7 @@ describe Chef::PolicyBuilder::ExpandNodeObject do
167
167
 
168
168
  before do
169
169
  Chef::Config[:environment] = configured_environment
170
- Chef::Node.should_receive(:find_or_create).with(node_name).and_return(node)
170
+ expect(Chef::Node).to receive(:find_or_create).with(node_name).and_return(node)
171
171
  policy_builder.load_node
172
172
  policy_builder.build_node
173
173
  end
@@ -186,7 +186,7 @@ describe Chef::PolicyBuilder::ExpandNodeObject do
186
186
  end
187
187
 
188
188
  it "reports that a temporary_policy is not being used" do
189
- expect(policy_builder.temporary_policy?).to be_false
189
+ expect(policy_builder.temporary_policy?).to be_falsey
190
190
  end
191
191
 
192
192
  describe "when the given run list is not in expanded form" do
@@ -210,7 +210,7 @@ describe Chef::PolicyBuilder::ExpandNodeObject do
210
210
  node.override_attrs = original_override_attrs
211
211
  node.run_list(primary_runlist)
212
212
 
213
- node.should_receive(:expand!).with("server") do
213
+ expect(node).to receive(:expand!).with("server") do
214
214
  node.run_list("recipe[from_role::default]")
215
215
  expansion
216
216
  end
@@ -248,7 +248,7 @@ describe Chef::PolicyBuilder::ExpandNodeObject do
248
248
  end
249
249
 
250
250
  it "reports that a temporary policy is being used" do
251
- expect(policy_builder.temporary_policy?).to be_true
251
+ expect(policy_builder.temporary_policy?).to be_truthy
252
252
  end
253
253
 
254
254
  end
@@ -267,7 +267,7 @@ describe Chef::PolicyBuilder::ExpandNodeObject do
267
267
 
268
268
  let(:environment) do
269
269
  environment = Chef::Environment.new.tap {|e| e.name("prod") }
270
- Chef::Environment.should_receive(:load).with("prod").and_return(environment)
270
+ expect(Chef::Environment).to receive(:load).with("prod").and_return(environment)
271
271
  environment
272
272
  end
273
273
 
@@ -302,27 +302,27 @@ describe Chef::PolicyBuilder::ExpandNodeObject do
302
302
  let(:cookbook_synchronizer) { double("CookbookSynchronizer") }
303
303
 
304
304
  before do
305
- Chef::Node.should_receive(:find_or_create).with(node_name).and_return(node)
305
+ expect(Chef::Node).to receive(:find_or_create).with(node_name).and_return(node)
306
306
 
307
- policy_builder.stub(:api_service).and_return(chef_http)
307
+ allow(policy_builder).to receive(:api_service).and_return(chef_http)
308
308
 
309
309
  policy_builder.load_node
310
310
  policy_builder.build_node
311
311
 
312
312
  run_list_expansion = policy_builder.run_list_expansion
313
313
 
314
- chef_http.should_receive(:post).with(cookbook_resolve_url, cookbook_resolve_post_data).and_return(cookbook_hash)
315
- Chef::CookbookSynchronizer.should_receive(:new).with(cookbook_hash, events).and_return(cookbook_synchronizer)
316
- cookbook_synchronizer.should_receive(:sync_cookbooks)
314
+ expect(chef_http).to receive(:post).with(cookbook_resolve_url, cookbook_resolve_post_data).and_return(cookbook_hash)
315
+ expect(Chef::CookbookSynchronizer).to receive(:new).with(cookbook_hash, events).and_return(cookbook_synchronizer)
316
+ expect(cookbook_synchronizer).to receive(:sync_cookbooks)
317
317
 
318
- Chef::RunContext.any_instance.should_receive(:load).with(run_list_expansion)
318
+ expect_any_instance_of(Chef::RunContext).to receive(:load).with(run_list_expansion)
319
319
 
320
320
  policy_builder.setup_run_context
321
321
  end
322
322
 
323
323
  it "configures FileVendor to fetch files remotely" do
324
324
  manifest = double("cookbook manifest")
325
- Chef::Cookbook::RemoteFileVendor.should_receive(:new).with(manifest, chef_http)
325
+ expect(Chef::Cookbook::RemoteFileVendor).to receive(:new).with(manifest, chef_http)
326
326
  Chef::Cookbook::FileVendor.create_from_manifest(manifest)
327
327
  end
328
328
 
@@ -333,4 +333,3 @@ describe Chef::PolicyBuilder::ExpandNodeObject do
333
333
  end
334
334
 
335
335
  end
336
-
@@ -96,7 +96,7 @@ describe Chef::PolicyBuilder::Policyfile do
96
96
  http = double("Chef::REST")
97
97
  server_url = "https://api.opscode.com/organizations/example"
98
98
  Chef::Config[:chef_server_url] = server_url
99
- Chef::REST.should_receive(:new).with(server_url).and_return(http)
99
+ expect(Chef::REST).to receive(:new).with(server_url).and_return(http)
100
100
  expect(policy_builder.http_api).to eq(http)
101
101
  end
102
102
 
@@ -107,7 +107,7 @@ describe Chef::PolicyBuilder::Policyfile do
107
107
  end
108
108
 
109
109
  it "always gives `false` for #temporary_policy?" do
110
- expect(initialize_pb.temporary_policy?).to be_false
110
+ expect(initialize_pb.temporary_policy?).to be_falsey
111
111
  end
112
112
 
113
113
  context "chef-solo" do
@@ -144,7 +144,7 @@ describe Chef::PolicyBuilder::Policyfile do
144
144
 
145
145
  end
146
146
 
147
- describe "when using compatibility mode" do
147
+ describe "loading policy data" do
148
148
 
149
149
  let(:http_api) { double("Chef::REST") }
150
150
 
@@ -168,52 +168,116 @@ describe Chef::PolicyBuilder::Policyfile do
168
168
  before do
169
169
  # TODO: agree on this name and logic.
170
170
  Chef::Config[:deployment_group] = "example-policy-stage"
171
- policy_builder.stub(:http_api).and_return(http_api)
171
+ allow(policy_builder).to receive(:http_api).and_return(http_api)
172
172
  end
173
173
 
174
- context "when the deployment group cannot be loaded" do
175
- let(:error404) { Net::HTTPServerException.new("404 message", :body) }
174
+ describe "when using compatibility mode (policy_document_native_api == false)" do
176
175
 
177
- before do
178
- Chef::Node.should_receive(:find_or_create).with(node_name).and_return(node)
179
- http_api.should_receive(:get).
180
- with("data/policyfiles/example-policy-stage").
181
- and_raise(error404)
182
- end
176
+ context "when the deployment group cannot be loaded" do
177
+ let(:error404) { Net::HTTPServerException.new("404 message", :body) }
178
+
179
+ before do
180
+ expect(Chef::Node).to receive(:find_or_create).with(node_name).and_return(node)
181
+ expect(http_api).to receive(:get).
182
+ with("data/policyfiles/example-policy-stage").
183
+ and_raise(error404)
184
+ end
185
+
186
+ it "raises an error" do
187
+ expect { policy_builder.load_node }.to raise_error(err_namespace::ConfigurationError)
188
+ end
189
+
190
+ it "sends error message to the event system" do
191
+ expect(events).to receive(:node_load_failed).with(node_name, an_instance_of(err_namespace::ConfigurationError), Chef::Config)
192
+ expect { policy_builder.load_node }.to raise_error(err_namespace::ConfigurationError)
193
+ end
183
194
 
184
- it "raises an error" do
185
- expect { policy_builder.load_node }.to raise_error(err_namespace::ConfigurationError)
186
195
  end
187
196
 
188
- it "sends error message to the event system" do
189
- events.should_receive(:node_load_failed).with(node_name, an_instance_of(err_namespace::ConfigurationError), Chef::Config)
190
- expect { policy_builder.load_node }.to raise_error(err_namespace::ConfigurationError)
197
+ context "when the deployment_group is not configured" do
198
+ before do
199
+ Chef::Config[:deployment_group] = nil
200
+ expect(Chef::Node).to receive(:find_or_create).with(node_name).and_return(node)
201
+ end
202
+
203
+ it "errors while loading the node" do
204
+ expect { policy_builder.load_node }.to raise_error(err_namespace::ConfigurationError)
205
+ end
206
+
207
+
208
+ it "passes error information to the event system" do
209
+ # TODO: also make sure something acceptable happens with the error formatters
210
+ err_class = err_namespace::ConfigurationError
211
+ expect(events).to receive(:node_load_failed).with(node_name, an_instance_of(err_class), Chef::Config)
212
+ expect { policy_builder.load_node }.to raise_error(err_class)
213
+ end
191
214
  end
192
215
 
216
+ context "when deployment_group is correctly configured" do
217
+
218
+ let(:policy_relative_url) { "data/policyfiles/example-policy-stage" }
219
+
220
+ before do
221
+ expect(http_api).to receive(:get).with(policy_relative_url).and_return(parsed_policyfile_json)
222
+ end
223
+
224
+ it "fetches the policy file from a data bag item" do
225
+ expect(policy_builder.policy).to eq(parsed_policyfile_json)
226
+ end
227
+
228
+ it "extracts the run_list from the policyfile" do
229
+ expect(policy_builder.run_list).to eq(policyfile_run_list)
230
+ end
231
+
232
+ end
193
233
  end
194
234
 
195
- describe "when the deployment_group is not configured" do
235
+ context "and policy_document_native_api is configured" do
236
+
196
237
  before do
197
- Chef::Config[:deployment_group] = nil
198
- Chef::Node.should_receive(:find_or_create).with(node_name).and_return(node)
238
+ Chef::Config[:policy_document_native_api] = true
239
+ Chef::Config[:policy_group] = "policy-stage"
240
+ Chef::Config[:policy_name] = "example"
199
241
  end
200
242
 
201
- it "errors while loading the node" do
202
- expect { policy_builder.load_node }.to raise_error(err_namespace::ConfigurationError)
243
+ context "and policy_name or policy_group are not configured" do
244
+
245
+ it "raises a Configuration error for policy_group" do
246
+ Chef::Config[:policy_group] = nil
247
+ expect { policy_builder.policy }.to raise_error(err_namespace::ConfigurationError)
248
+ end
249
+
250
+ it "raises a Configuration error for policy_name" do
251
+ Chef::Config[:policy_name] = nil
252
+ expect { policy_builder.policy }.to raise_error(err_namespace::ConfigurationError)
253
+ end
254
+
203
255
  end
204
256
 
257
+ context "and policy_name and policy_group are configured" do
258
+
259
+ let(:policy_relative_url) { "policies/policy-stage/example" }
205
260
 
206
- it "passes error information to the event system" do
207
- # TODO: also make sure something acceptable happens with the error formatters
208
- err_class = err_namespace::ConfigurationError
209
- events.should_receive(:node_load_failed).with(node_name, an_instance_of(err_class), Chef::Config)
210
- expect { policy_builder.load_node }.to raise_error(err_class)
261
+ before do
262
+ expect(http_api).to receive(:get).with(policy_relative_url).and_return(parsed_policyfile_json)
263
+ end
264
+
265
+ it "fetches the policy file from a data bag item" do
266
+ expect(policy_builder.policy).to eq(parsed_policyfile_json)
267
+ end
268
+
269
+ it "extracts the run_list from the policyfile" do
270
+ expect(policy_builder.run_list).to eq(policyfile_run_list)
271
+ end
211
272
  end
273
+
212
274
  end
213
275
 
214
- context "and a deployment_group is configured" do
276
+
277
+ describe "building policy from the policyfile" do
278
+
215
279
  before do
216
- http_api.should_receive(:get).with("data/policyfiles/example-policy-stage").and_return(parsed_policyfile_json)
280
+ allow(policy_builder).to receive(:policy).and_return(parsed_policyfile_json)
217
281
  end
218
282
 
219
283
  it "fetches the policy file from a data bag item" do
@@ -239,7 +303,7 @@ describe Chef::PolicyBuilder::Policyfile do
239
303
  end
240
304
 
241
305
  it "implements #expand_run_list in a manner compatible with ExpandNodeObject" do
242
- Chef::Node.should_receive(:find_or_create).with(node_name).and_return(node)
306
+ expect(Chef::Node).to receive(:find_or_create).with(node_name).and_return(node)
243
307
  policy_builder.load_node
244
308
  expect(policy_builder.expand_run_list).to respond_to(:recipes)
245
309
  expect(policy_builder.expand_run_list.recipes).to eq(["example1::default", "example2::server"])
@@ -278,7 +342,7 @@ describe Chef::PolicyBuilder::Policyfile do
278
342
  describe "building the node object" do
279
343
 
280
344
  before do
281
- Chef::Node.should_receive(:find_or_create).with(node_name).and_return(node)
345
+ expect(Chef::Node).to receive(:find_or_create).with(node_name).and_return(node)
282
346
 
283
347
  policy_builder.load_node
284
348
  policy_builder.build_node
@@ -334,67 +398,91 @@ describe Chef::PolicyBuilder::Policyfile do
334
398
 
335
399
  let(:cookbook_synchronizer) { double("Chef::CookbookSynchronizer") }
336
400
 
337
- context "and a cookbook is missing" do
401
+ shared_examples_for "fetching cookbooks" do
402
+ context "and a cookbook is missing" do
338
403
 
339
- let(:error404) { Net::HTTPServerException.new("404 message", :body) }
404
+ let(:error404) { Net::HTTPServerException.new("404 message", :body) }
340
405
 
341
- before do
342
- Chef::Node.should_receive(:find_or_create).with(node_name).and_return(node)
406
+ before do
407
+ expect(Chef::Node).to receive(:find_or_create).with(node_name).and_return(node)
343
408
 
344
- # Remove references to example2 cookbook because we're iterating
345
- # over a Hash data structure and on ruby 1.8.7 iteration order will
346
- # not be stable.
347
- parsed_policyfile_json["cookbook_locks"].delete("example2")
348
- parsed_policyfile_json["run_list"].delete("recipe[example2::server]")
409
+ policy_builder.load_node
410
+ policy_builder.build_node
349
411
 
350
- policy_builder.load_node
351
- policy_builder.build_node
412
+ expect(http_api).to receive(:get).with(cookbook1_url).
413
+ and_raise(error404)
414
+ end
352
415
 
353
- http_api.should_receive(:get).with("cookbooks/example1/#{example1_xyz_version}").
354
- and_raise(error404)
355
- end
416
+ it "raises an error indicating which cookbook is missing" do
417
+ expect { policy_builder.cookbooks_to_sync }.to raise_error(Chef::Exceptions::CookbookNotFound)
418
+ end
356
419
 
357
- it "raises an error indicating which cookbook is missing" do
358
- expect { policy_builder.cookbooks_to_sync }.to raise_error(Chef::Exceptions::CookbookNotFound)
359
420
  end
360
421
 
361
- end
422
+ context "and the cookbooks can be fetched" do
423
+ before do
424
+ expect(Chef::Node).to receive(:find_or_create).with(node_name).and_return(node)
362
425
 
363
- context "and the cookbooks can be fetched" do
364
- before do
365
- Chef::Node.should_receive(:find_or_create).with(node_name).and_return(node)
426
+ policy_builder.load_node
427
+ policy_builder.build_node
428
+
429
+ expect(http_api).to receive(:get).with(cookbook1_url).
430
+ and_return(example1_cookbook_object)
431
+ expect(http_api).to receive(:get).with(cookbook2_url).
432
+ and_return(example2_cookbook_object)
433
+
434
+ allow(Chef::CookbookSynchronizer).to receive(:new).
435
+ with(expected_cookbook_hash, events).
436
+ and_return(cookbook_synchronizer)
437
+ end
366
438
 
367
- policy_builder.load_node
368
- policy_builder.build_node
439
+ it "builds a Hash of the form 'cookbook_name' => Chef::CookbookVersion" do
440
+ expect(policy_builder.cookbooks_to_sync).to eq(expected_cookbook_hash)
441
+ end
369
442
 
370
- http_api.should_receive(:get).with("cookbooks/example1/#{example1_xyz_version}").
371
- and_return(example1_cookbook_object)
372
- http_api.should_receive(:get).with("cookbooks/example2/#{example2_xyz_version}").
373
- and_return(example2_cookbook_object)
443
+ it "syncs the desired cookbooks via CookbookSynchronizer" do
444
+ expect(cookbook_synchronizer).to receive(:sync_cookbooks)
445
+ policy_builder.sync_cookbooks
446
+ end
447
+
448
+ it "builds a run context" do
449
+ expect(cookbook_synchronizer).to receive(:sync_cookbooks)
450
+ expect_any_instance_of(Chef::RunContext).to receive(:load).with(policy_builder.run_list_expansion_ish)
451
+ run_context = policy_builder.setup_run_context
452
+ expect(run_context.node).to eq(node)
453
+ expect(run_context.cookbook_collection.keys).to match_array(["example1", "example2"])
454
+ end
374
455
 
375
- Chef::CookbookSynchronizer.stub(:new).
376
- with(expected_cookbook_hash, events).
377
- and_return(cookbook_synchronizer)
378
456
  end
457
+ end # shared_examples_for "fetching cookbooks"
458
+
459
+ context "when using compatibility mode (policy_document_native_api == false)" do
460
+ include_examples "fetching cookbooks" do
461
+
462
+ let(:cookbook1_url) { "cookbooks/example1/#{example1_xyz_version}" }
463
+ let(:cookbook2_url) { "cookbooks/example2/#{example2_xyz_version}" }
379
464
 
380
- it "builds a Hash of the form 'cookbook_name' => Chef::CookbookVersion" do
381
- expect(policy_builder.cookbooks_to_sync).to eq(expected_cookbook_hash)
382
465
  end
383
466
 
384
- it "syncs the desired cookbooks via CookbookSynchronizer" do
385
- cookbook_synchronizer.should_receive(:sync_cookbooks)
386
- policy_builder.sync_cookbooks
467
+ end
468
+
469
+ context "when using native API mode (policy_document_native_api == true)" do
470
+
471
+ before do
472
+ Chef::Config[:policy_document_native_api] = true
473
+ Chef::Config[:policy_group] = "policy-stage"
474
+ Chef::Config[:policy_name] = "example"
387
475
  end
388
476
 
389
- it "builds a run context" do
390
- cookbook_synchronizer.should_receive(:sync_cookbooks)
391
- Chef::RunContext.any_instance.should_receive(:load).with(policy_builder.run_list_expansion_ish)
392
- run_context = policy_builder.setup_run_context
393
- expect(run_context.node).to eq(node)
394
- expect(run_context.cookbook_collection.keys).to match_array(["example1", "example2"])
477
+ include_examples "fetching cookbooks" do
478
+
479
+ let(:cookbook1_url) { "cookbook_artifacts/example1/#{example1_xyz_version}" }
480
+ let(:cookbook2_url) { "cookbook_artifacts/example2/#{example2_xyz_version}" }
481
+
395
482
  end
396
483
 
397
484
  end
485
+
398
486
  end
399
487
  end
400
488
 
@@ -42,7 +42,7 @@ describe Chef::Provider::Directory do
42
42
  end
43
43
 
44
44
  it "describes the directory's access rights" do
45
- pending
45
+ skip
46
46
  end
47
47
  end
48
48
 
@@ -112,7 +112,7 @@ describe Chef::Provider::Directory do
112
112
 
113
113
  expect(File).to receive(:exists?).with('/path/to').ordered.and_return(false)
114
114
  expect(File).to receive(:exists?).with('/path').ordered.and_return(true)
115
- expect(File).to receive(:writable?).with('/path').ordered.and_return(true)
115
+ expect(Chef::FileAccessControl).to receive(:writable?).with('/path').ordered.and_return(true)
116
116
  expect(File).to receive(:exists?).with(@new_resource.path).ordered.and_return(false)
117
117
 
118
118
  expect(FileUtils).to receive(:mkdir_p).with(@new_resource.path).and_return(true)
@@ -137,7 +137,7 @@ describe Chef::Provider::Directory do
137
137
  stub_file_cstats
138
138
  @new_resource.path "/tmp/foo"
139
139
  expect(File).to receive(:directory?).at_least(:once).and_return(true)
140
- expect(File).to receive(:writable?).with("/tmp").and_return(true)
140
+ expect(Chef::FileAccessControl).to receive(:writable?).with("/tmp").and_return(true)
141
141
  expect(File).to receive(:exists?).at_least(:once).and_return(true)
142
142
  expect(Dir).not_to receive(:mkdir).with(@new_resource.path)
143
143
  expect(@directory).to receive(:do_acl_changes)
@@ -146,14 +146,14 @@ describe Chef::Provider::Directory do
146
146
 
147
147
  it "should delete the directory if it exists, and is writable with action_delete" do
148
148
  expect(File).to receive(:directory?).and_return(true)
149
- expect(File).to receive(:writable?).once.and_return(true)
149
+ expect(Chef::FileAccessControl).to receive(:writable?).once.and_return(true)
150
150
  expect(Dir).to receive(:delete).with(@new_resource.path).once.and_return(true)
151
151
  @directory.run_action(:delete)
152
152
  end
153
153
 
154
154
  it "should raise an exception if it cannot delete the directory due to bad permissions" do
155
155
  allow(File).to receive(:exists?).and_return(true)
156
- allow(File).to receive(:writable?).and_return(false)
156
+ allow(Chef::FileAccessControl).to receive(:writable?).and_return(false)
157
157
  expect { @directory.run_action(:delete) }.to raise_error(RuntimeError)
158
158
  end
159
159