chef 12.0.3 → 12.1.0.rc.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (655) 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 -53
  643. data/bin/chef-service-manager +0 -37
  644. data/bin/chef-windows-service +0 -35
  645. data/bin/shef +0 -35
  646. data/lib/chef/application/agent.rb +0 -18
  647. data/lib/chef/monkey_patches/fileutils.rb +0 -65
  648. data/lib/chef/monkey_patches/numeric.rb +0 -15
  649. data/lib/chef/monkey_patches/object.rb +0 -9
  650. data/lib/chef/monkey_patches/pathname.rb +0 -32
  651. data/lib/chef/monkey_patches/regexp.rb +0 -34
  652. data/lib/chef/monkey_patches/securerandom.rb +0 -44
  653. data/lib/chef/monkey_patches/string.rb +0 -49
  654. data/lib/chef/monkey_patches/tempfile.rb +0 -64
  655. data/lib/chef/monkey_patches/uri.rb +0 -70
@@ -23,12 +23,12 @@ describe Chef::Daemon do
23
23
  if windows?
24
24
  mock_struct = #Struct::Passwd.new(nil, nil, 111, 111)
25
25
  mock_struct = OpenStruct.new(:uid => 2342, :gid => 2342)
26
- Etc.stub(:getpwnam).and_return mock_struct
27
- Etc.stub(:getgrnam).and_return mock_struct
26
+ allow(Etc).to receive(:getpwnam).and_return mock_struct
27
+ allow(Etc).to receive(:getgrnam).and_return mock_struct
28
28
  # mock unimplemented methods
29
- Process.stub(:initgroups).and_return nil
30
- Process::GID.stub(:change_privilege).and_return 11
31
- Process::UID.stub(:change_privilege).and_return 11
29
+ allow(Process).to receive(:initgroups).and_return nil
30
+ allow(Process::GID).to receive(:change_privilege).and_return 11
31
+ allow(Process::UID).to receive(:change_privilege).and_return 11
32
32
  end
33
33
  end
34
34
 
@@ -41,7 +41,7 @@ describe Chef::Daemon do
41
41
  end
42
42
 
43
43
  it "should return the supplied value" do
44
- Chef::Daemon.pid_file.should eql("/var/run/chef/chef-client.pid")
44
+ expect(Chef::Daemon.pid_file).to eql("/var/run/chef/chef-client.pid")
45
45
  end
46
46
  end
47
47
 
@@ -52,7 +52,7 @@ describe Chef::Daemon do
52
52
  end
53
53
 
54
54
  it "should return a valued based on @name" do
55
- Chef::Daemon.pid_file.should eql("/tmp/chef-client.pid")
55
+ expect(Chef::Daemon.pid_file).to eql("/tmp/chef-client.pid")
56
56
  end
57
57
 
58
58
  end
@@ -65,7 +65,7 @@ describe Chef::Daemon do
65
65
  end
66
66
 
67
67
  it "should suck the pid out of pid_file" do
68
- File.should_receive(:read).with("/var/run/chef/chef-client.pid").and_return("1337")
68
+ expect(File).to receive(:read).with("/var/run/chef/chef-client.pid").and_return("1337")
69
69
  Chef::Daemon.pid_from_file
70
70
  end
71
71
  end
@@ -73,13 +73,13 @@ describe Chef::Daemon do
73
73
  describe ".change_privilege" do
74
74
 
75
75
  before do
76
- Chef::Application.stub(:fatal!).and_return(true)
76
+ allow(Chef::Application).to receive(:fatal!).and_return(true)
77
77
  Chef::Config[:user] = 'aj'
78
- Dir.stub(:chdir)
78
+ allow(Dir).to receive(:chdir)
79
79
  end
80
80
 
81
81
  it "changes the working directory to root" do
82
- Dir.should_receive(:chdir).with("/").and_return(0)
82
+ expect(Dir).to receive(:chdir).with("/").and_return(0)
83
83
  Chef::Daemon.change_privilege
84
84
  end
85
85
 
@@ -90,24 +90,24 @@ describe Chef::Daemon do
90
90
  end
91
91
 
92
92
  it "should log an appropriate info message" do
93
- Chef::Log.should_receive(:info).with("About to change privilege to aj:staff")
93
+ expect(Chef::Log).to receive(:info).with("About to change privilege to aj:staff")
94
94
  Chef::Daemon.change_privilege
95
95
  end
96
96
 
97
97
  it "should call _change_privilege with the user and group" do
98
- Chef::Daemon.should_receive(:_change_privilege).with("aj", "staff")
98
+ expect(Chef::Daemon).to receive(:_change_privilege).with("aj", "staff")
99
99
  Chef::Daemon.change_privilege
100
100
  end
101
101
  end
102
102
 
103
103
  describe "when just the user option is supplied" do
104
104
  it "should log an appropriate info message" do
105
- Chef::Log.should_receive(:info).with("About to change privilege to aj")
105
+ expect(Chef::Log).to receive(:info).with("About to change privilege to aj")
106
106
  Chef::Daemon.change_privilege
107
107
  end
108
108
 
109
109
  it "should call _change_privilege with just the user" do
110
- Chef::Daemon.should_receive(:_change_privilege).with("aj")
110
+ expect(Chef::Daemon).to receive(:_change_privilege).with("aj")
111
111
  Chef::Daemon.change_privilege
112
112
  end
113
113
  end
@@ -116,56 +116,56 @@ describe Chef::Daemon do
116
116
  describe "._change_privilege" do
117
117
 
118
118
  before do
119
- Process.stub(:euid).and_return(0)
120
- Process.stub(:egid).and_return(0)
119
+ allow(Process).to receive(:euid).and_return(0)
120
+ allow(Process).to receive(:egid).and_return(0)
121
121
 
122
- Process::UID.stub(:change_privilege).and_return(nil)
123
- Process::GID.stub(:change_privilege).and_return(nil)
122
+ allow(Process::UID).to receive(:change_privilege).and_return(nil)
123
+ allow(Process::GID).to receive(:change_privilege).and_return(nil)
124
124
 
125
125
  @pw_user = double("Struct::Passwd", :uid => 501)
126
126
  @pw_group = double("Struct::Group", :gid => 20)
127
127
 
128
- Process.stub(:initgroups).and_return(true)
128
+ allow(Process).to receive(:initgroups).and_return(true)
129
129
 
130
- Etc.stub(:getpwnam).and_return(@pw_user)
131
- Etc.stub(:getgrnam).and_return(@pw_group)
130
+ allow(Etc).to receive(:getpwnam).and_return(@pw_user)
131
+ allow(Etc).to receive(:getgrnam).and_return(@pw_group)
132
132
  end
133
133
 
134
134
  describe "with sufficient privileges" do
135
135
  before do
136
- Process.stub(:euid).and_return(0)
137
- Process.stub(:egid).and_return(0)
136
+ allow(Process).to receive(:euid).and_return(0)
137
+ allow(Process).to receive(:egid).and_return(0)
138
138
  end
139
139
 
140
140
  it "should initialize the supplemental group list" do
141
- Process.should_receive(:initgroups).with("aj", 20)
141
+ expect(Process).to receive(:initgroups).with("aj", 20)
142
142
  Chef::Daemon._change_privilege("aj")
143
143
  end
144
144
 
145
145
  it "should attempt to change the process GID" do
146
- Process::GID.should_receive(:change_privilege).with(20).and_return(20)
146
+ expect(Process::GID).to receive(:change_privilege).with(20).and_return(20)
147
147
  Chef::Daemon._change_privilege("aj")
148
148
  end
149
149
 
150
150
  it "should attempt to change the process UID" do
151
- Process::UID.should_receive(:change_privilege).with(501).and_return(501)
151
+ expect(Process::UID).to receive(:change_privilege).with(501).and_return(501)
152
152
  Chef::Daemon._change_privilege("aj")
153
153
  end
154
154
  end
155
155
 
156
156
  describe "with insufficient privileges" do
157
157
  before do
158
- Process.stub(:euid).and_return(999)
159
- Process.stub(:egid).and_return(999)
158
+ allow(Process).to receive(:euid).and_return(999)
159
+ allow(Process).to receive(:egid).and_return(999)
160
160
  end
161
161
 
162
162
  it "should log an appropriate error message and fail miserably" do
163
- Process.stub(:initgroups).and_raise(Errno::EPERM)
163
+ allow(Process).to receive(:initgroups).and_raise(Errno::EPERM)
164
164
  error = "Operation not permitted"
165
165
  if RUBY_PLATFORM.match("solaris2") || RUBY_PLATFORM.match("aix")
166
166
  error = "Not owner"
167
167
  end
168
- Chef::Application.should_receive(:fatal!).with("Permission denied when trying to change 999:999 to 501:20. #{error}")
168
+ expect(Chef::Application).to receive(:fatal!).with("Permission denied when trying to change 999:999 to 501:20. #{error}")
169
169
  Chef::Daemon._change_privilege("aj")
170
170
  end
171
171
  end
@@ -20,107 +20,109 @@ require 'spec_helper'
20
20
  require 'chef/data_bag_item'
21
21
 
22
22
  describe Chef::DataBagItem do
23
- before(:each) do
24
- @data_bag_item = Chef::DataBagItem.new
25
- end
23
+ let(:data_bag_item) { Chef::DataBagItem.new }
26
24
 
27
25
  describe "initialize" do
28
26
  it "should be a Chef::DataBagItem" do
29
- @data_bag_item.should be_a_kind_of(Chef::DataBagItem)
27
+ expect(data_bag_item).to be_a_kind_of(Chef::DataBagItem)
30
28
  end
31
29
  end
32
30
 
33
31
  describe "data_bag" do
34
32
  it "should let you set the data_bag to a string" do
35
- @data_bag_item.data_bag("clowns").should == "clowns"
33
+ expect(data_bag_item.data_bag("clowns")).to eq("clowns")
36
34
  end
37
35
 
38
36
  it "should return the current data_bag type" do
39
- @data_bag_item.data_bag "clowns"
40
- @data_bag_item.data_bag.should == "clowns"
37
+ data_bag_item.data_bag "clowns"
38
+ expect(data_bag_item.data_bag).to eq("clowns")
41
39
  end
42
40
 
43
41
  it "should not accept spaces" do
44
- lambda { @data_bag_item.data_bag "clown masters" }.should raise_error(ArgumentError)
42
+ expect { data_bag_item.data_bag "clown masters" }.to raise_error(ArgumentError)
45
43
  end
46
44
 
47
45
  it "should throw an ArgumentError if you feed it anything but a string" do
48
- lambda { @data_bag_item.data_bag Hash.new }.should raise_error(ArgumentError)
46
+ expect { data_bag_item.data_bag Hash.new }.to raise_error(ArgumentError)
49
47
  end
50
48
  end
51
49
 
52
50
  describe "raw_data" do
53
51
  it "should let you set the raw_data with a hash" do
54
- lambda { @data_bag_item.raw_data = { "id" => "octahedron" } }.should_not raise_error
52
+ expect { data_bag_item.raw_data = { "id" => "octahedron" } }.not_to raise_error
55
53
  end
56
54
 
57
55
  it "should let you set the raw_data from a mash" do
58
- lambda { @data_bag_item.raw_data = Mash.new({ "id" => "octahedron" }) }.should_not raise_error
56
+ expect { data_bag_item.raw_data = Mash.new({ "id" => "octahedron" }) }.not_to raise_error
59
57
  end
60
58
 
61
59
  it "should raise an exception if you set the raw data without a key" do
62
- lambda { @data_bag_item.raw_data = { "monkey" => "pants" } }.should raise_error(ArgumentError)
60
+ expect { data_bag_item.raw_data = { "monkey" => "pants" } }.to raise_error(ArgumentError)
63
61
  end
64
62
 
65
63
  it "should raise an exception if you set the raw data to something other than a hash" do
66
- lambda { @data_bag_item.raw_data = "katie rules" }.should raise_error(ArgumentError)
64
+ expect { data_bag_item.raw_data = "katie rules" }.to raise_error(ArgumentError)
67
65
  end
68
66
 
69
67
  it "should accept alphanum/-/_ for the id" do
70
- lambda { @data_bag_item.raw_data = { "id" => "h1-_" } }.should_not raise_error
68
+ expect { data_bag_item.raw_data = { "id" => "h1-_" } }.not_to raise_error
71
69
  end
72
70
 
73
71
  it "should accept alphanum.alphanum for the id" do
74
- lambda { @data_bag_item.raw_data = { "id" => "foo.bar" } }.should_not raise_error
72
+ expect { data_bag_item.raw_data = { "id" => "foo.bar" } }.not_to raise_error
75
73
  end
76
74
 
77
75
  it "should accept .alphanum for the id" do
78
- lambda { @data_bag_item.raw_data = { "id" => ".bozo" } }.should_not raise_error
76
+ expect { data_bag_item.raw_data = { "id" => ".bozo" } }.not_to raise_error
79
77
  end
80
78
 
81
79
  it "should raise an exception if the id contains anything but alphanum/-/_" do
82
- lambda { @data_bag_item.raw_data = { "id" => "!@#" } }.should raise_error(ArgumentError)
80
+ expect { data_bag_item.raw_data = { "id" => "!@#" } }.to raise_error(ArgumentError)
83
81
  end
84
82
 
85
83
  it "should return the raw data" do
86
- @data_bag_item.raw_data = { "id" => "highway_of_emptiness" }
87
- @data_bag_item.raw_data.should == { "id" => "highway_of_emptiness" }
84
+ data_bag_item.raw_data = { "id" => "highway_of_emptiness" }
85
+ expect(data_bag_item.raw_data).to eq({ "id" => "highway_of_emptiness" })
88
86
  end
89
87
 
90
88
  it "should be a Mash by default" do
91
- @data_bag_item.raw_data.should be_a_kind_of(Mash)
89
+ expect(data_bag_item.raw_data).to be_a_kind_of(Mash)
92
90
  end
93
91
  end
94
92
 
95
93
  describe "object_name" do
96
- before(:each) do
97
- @data_bag_item.data_bag("dreams")
98
- @data_bag_item.raw_data = { "id" => "the_beatdown" }
99
- end
94
+ let(:data_bag_item) {
95
+ data_bag_item = Chef::DataBagItem.new
96
+ data_bag_item.data_bag("dreams")
97
+ data_bag_item.raw_data = { "id" => "the_beatdown" }
98
+ data_bag_item
99
+ }
100
100
 
101
101
  it "should return an object name based on the bag name and the raw_data id" do
102
- @data_bag_item.object_name.should == "data_bag_item_dreams_the_beatdown"
102
+ expect(data_bag_item.object_name).to eq("data_bag_item_dreams_the_beatdown")
103
103
  end
104
104
  end
105
105
 
106
106
  describe "class method object_name" do
107
107
  it "should return an object name based based on the bag name and an id" do
108
- Chef::DataBagItem.object_name("zen", "master").should == "data_bag_item_zen_master"
108
+ expect(Chef::DataBagItem.object_name("zen", "master")).to eq("data_bag_item_zen_master")
109
109
  end
110
110
  end
111
111
 
112
112
  describe "when used like a Hash" do
113
- before(:each) do
114
- @data_bag_item.raw_data = { "id" => "journey", "trials" => "been through" }
115
- end
113
+ let(:data_bag_item) {
114
+ data_bag_item = Chef::DataBagItem.new
115
+ data_bag_item.raw_data = { "id" => "journey", "trials" => "been through" }
116
+ data_bag_item
117
+ }
116
118
 
117
119
  it "responds to keys" do
118
- @data_bag_item.keys.should include("id")
119
- @data_bag_item.keys.should include("trials")
120
+ expect(data_bag_item.keys).to include("id")
121
+ expect(data_bag_item.keys).to include("trials")
120
122
  end
121
123
 
122
124
  it "supports element reference with []" do
123
- @data_bag_item["id"].should == "journey"
125
+ expect(data_bag_item["id"]).to eq("journey")
124
126
  end
125
127
 
126
128
  it "implements all the methods of Hash" do
@@ -131,100 +133,113 @@ describe Chef::DataBagItem do
131
133
  :invert, :update, :replace, :merge!, :merge, :has_key?, :has_value?,
132
134
  :key?, :value?]
133
135
  methods.each do |m|
134
- @data_bag_item.should respond_to(m)
136
+ expect(data_bag_item).to respond_to(m)
135
137
  end
136
138
  end
137
-
138
139
  end
139
140
 
140
141
  describe "to_hash" do
141
- before(:each) do
142
- @data_bag_item.data_bag("still_lost")
143
- @data_bag_item.raw_data = { "id" => "whoa", "i_know" => "kung_fu" }
144
- @to_hash = @data_bag_item.to_hash
145
- end
142
+ let(:data_bag_item) {
143
+ data_bag_item = Chef::DataBagItem.new
144
+ data_bag_item.data_bag("still_lost")
145
+ data_bag_item.raw_data = { "id" => "whoa", "i_know" => "kung_fu" }
146
+ data_bag_item
147
+ }
148
+
149
+ let(:to_hash) { data_bag_item.to_hash }
146
150
 
147
151
  it "should return a hash" do
148
- @to_hash.should be_a_kind_of(Hash)
152
+ expect(to_hash).to be_a_kind_of(Hash)
149
153
  end
150
154
 
151
155
  it "should have the raw_data keys as top level keys" do
152
- @to_hash["id"].should == "whoa"
153
- @to_hash["i_know"].should == "kung_fu"
156
+ expect(to_hash["id"]).to eq("whoa")
157
+ expect(to_hash["i_know"]).to eq("kung_fu")
154
158
  end
155
159
 
156
160
  it "should have the chef_type of data_bag_item" do
157
- @to_hash["chef_type"].should == "data_bag_item"
161
+ expect(to_hash["chef_type"]).to eq("data_bag_item")
158
162
  end
159
163
 
160
164
  it "should have the data_bag set" do
161
- @to_hash["data_bag"].should == "still_lost"
165
+ expect(to_hash["data_bag"]).to eq("still_lost")
162
166
  end
163
167
  end
164
168
 
165
169
  describe "when deserializing from JSON" do
166
- before(:each) do
167
- @data_bag_item.data_bag('mars_volta')
168
- @data_bag_item.raw_data = { "id" => "octahedron", "snooze" => { "finally" => :world_will }}
169
- @deserial = Chef::JSONCompat.from_json(Chef::JSONCompat.to_json(@data_bag_item))
170
- end
170
+ let(:data_bag_item) {
171
+ data_bag_item = Chef::DataBagItem.new
172
+ data_bag_item.data_bag('mars_volta')
173
+ data_bag_item.raw_data = { "id" => "octahedron", "snooze" => { "finally" => :world_will } }
174
+ data_bag_item
175
+ }
176
+
177
+ let(:deserial) { Chef::JSONCompat.from_json(Chef::JSONCompat.to_json(data_bag_item)) }
178
+
171
179
 
172
180
  it "should deserialize to a Chef::DataBagItem object" do
173
- @deserial.should be_a_kind_of(Chef::DataBagItem)
181
+ expect(deserial).to be_a_kind_of(Chef::DataBagItem)
174
182
  end
175
183
 
176
184
  it "should have a matching 'data_bag' value" do
177
- @deserial.data_bag.should == @data_bag_item.data_bag
185
+ expect(deserial.data_bag).to eq(data_bag_item.data_bag)
178
186
  end
179
187
 
180
188
  it "should have a matching 'id' key" do
181
- @deserial["id"].should == "octahedron"
189
+ expect(deserial["id"]).to eq("octahedron")
182
190
  end
183
191
 
184
192
  it "should have a matching 'snooze' key" do
185
- @deserial["snooze"].should == { "finally" => "world_will" }
193
+ expect(deserial["snooze"]).to eq({ "finally" => "world_will" })
186
194
  end
187
195
 
188
196
  include_examples "to_json equalivent to Chef::JSONCompat.to_json" do
189
- let(:jsonable) { @data_bag_item }
197
+ let(:jsonable) { data_bag_item }
190
198
  end
191
199
  end
192
200
 
193
201
  describe "when converting to a string" do
194
202
  it "converts to a string in the form data_bag_item[ID]" do
195
- @data_bag_item['id'] = "heart of darkness"
196
- @data_bag_item.to_s.should == 'data_bag_item[heart of darkness]'
203
+ data_bag_item['id'] = "heart of darkness"
204
+ expect(data_bag_item.to_s).to eq('data_bag_item[heart of darkness]')
197
205
  end
198
206
 
199
207
  it "inspects as data_bag_item[BAG, ID, RAW_DATA]" do
200
208
  raw_data = {"id" => "heart_of_darkness", "author" => "Conrad"}
201
- @data_bag_item.raw_data = raw_data
202
- @data_bag_item.data_bag("books")
209
+ data_bag_item.raw_data = raw_data
210
+ data_bag_item.data_bag("books")
203
211
 
204
- @data_bag_item.inspect.should == "data_bag_item[\"books\", \"heart_of_darkness\", #{raw_data.inspect}]"
212
+ expect(data_bag_item.inspect).to eq("data_bag_item[\"books\", \"heart_of_darkness\", #{raw_data.inspect}]")
205
213
  end
206
214
  end
207
215
 
208
216
  describe "save" do
217
+ let(:server) { instance_double(Chef::REST) }
218
+
219
+ let(:data_bag_item) {
220
+ data_bag_item = Chef::DataBagItem.new
221
+ data_bag_item['id'] = "heart of darkness"
222
+ data_bag_item.raw_data = {"id" => "heart_of_darkness", "author" => "Conrad"}
223
+ data_bag_item.data_bag("books")
224
+ data_bag_item
225
+ }
226
+
209
227
  before do
210
- @rest = double("Chef::REST")
211
- Chef::REST.stub(:new).and_return(@rest)
212
- @data_bag_item['id'] = "heart of darkness"
213
- raw_data = {"id" => "heart_of_darkness", "author" => "Conrad"}
214
- @data_bag_item.raw_data = raw_data
215
- @data_bag_item.data_bag("books")
228
+ expect(Chef::REST).to receive(:new).and_return(server)
216
229
  end
230
+
217
231
  it "should update the item when it already exists" do
218
- @rest.should_receive(:put_rest).with("data/books/heart_of_darkness", @data_bag_item)
219
- @data_bag_item.save
232
+ expect(server).to receive(:put_rest).with("data/books/heart_of_darkness", data_bag_item)
233
+ data_bag_item.save
220
234
  end
221
235
 
222
236
  it "should create if the item is not found" do
223
237
  exception = double("404 error", :code => "404")
224
- @rest.should_receive(:put_rest).and_raise(Net::HTTPServerException.new("foo", exception))
225
- @rest.should_receive(:post_rest).with("data/books", @data_bag_item)
226
- @data_bag_item.save
238
+ expect(server).to receive(:put_rest).and_raise(Net::HTTPServerException.new("foo", exception))
239
+ expect(server).to receive(:post_rest).with("data/books", data_bag_item)
240
+ data_bag_item.save
227
241
  end
242
+
228
243
  describe "when whyrun mode is enabled" do
229
244
  before do
230
245
  Chef::Config[:why_run] = true
@@ -232,41 +247,60 @@ describe Chef::DataBagItem do
232
247
  after do
233
248
  Chef::Config[:why_run] = false
234
249
  end
250
+
235
251
  it "should not save" do
236
- @rest.should_not_receive(:put_rest)
237
- @rest.should_not_receive(:post_rest)
238
- @data_bag_item.data_bag("books")
239
- @data_bag_item.save
252
+ expect(server).not_to receive(:put_rest)
253
+ expect(server).not_to receive(:post_rest)
254
+ data_bag_item.data_bag("books")
255
+ data_bag_item.save
240
256
  end
241
257
  end
242
258
 
259
+ end
260
+
261
+ describe "destroy" do
262
+ let(:server) { instance_double(Chef::REST) }
263
+
264
+ let(:data_bag_item) {
265
+ data_bag_item = Chef::DataBagItem.new
266
+ data_bag_item.data_bag('a_baggy_bag')
267
+ data_bag_item.raw_data = { "id" => "some_id" }
268
+ data_bag_item
269
+ }
243
270
 
271
+ it "should set default parameters" do
272
+ expect(Chef::REST).to receive(:new).and_return(server)
273
+ expect(server).to receive(:delete_rest).with("data/a_baggy_bag/data_bag_item_a_baggy_bag_some_id")
274
+
275
+ data_bag_item.destroy
276
+ end
244
277
  end
245
278
 
246
279
  describe "when loading" do
247
280
  before do
248
- @data_bag_item.raw_data = {"id" => "charlie", "shell" => "zsh", "ssh_keys" => %w{key1 key2}}
249
- @data_bag_item.data_bag("users")
281
+ data_bag_item.raw_data = {"id" => "charlie", "shell" => "zsh", "ssh_keys" => %w{key1 key2}}
282
+ data_bag_item.data_bag("users")
250
283
  end
251
284
 
252
285
  describe "from an API call" do
286
+ let(:http_client) { double("Chef::REST") }
287
+
253
288
  before do
254
- @http_client = double("Chef::REST")
255
- Chef::REST.stub(:new).and_return(@http_client)
289
+ allow(Chef::REST).to receive(:new).and_return(http_client)
256
290
  end
257
291
 
258
292
  it "converts raw data to a data bag item" do
259
- @http_client.should_receive(:get_rest).with("data/users/charlie").and_return(@data_bag_item.to_hash)
293
+ expect(http_client).to receive(:get_rest).with("data/users/charlie").and_return(data_bag_item.to_hash)
260
294
  item = Chef::DataBagItem.load(:users, "charlie")
261
- item.should be_a_kind_of(Chef::DataBagItem)
262
- item.should == @data_bag_item
295
+ expect(item).to be_a_kind_of(Chef::DataBagItem)
296
+ expect(item).to eq(data_bag_item)
263
297
  end
264
298
 
265
299
  it "does not convert when a DataBagItem is returned from the API call" do
266
- @http_client.should_receive(:get_rest).with("data/users/charlie").and_return(@data_bag_item)
300
+ expect(http_client).to receive(:get_rest).with("data/users/charlie").and_return(data_bag_item)
267
301
  item = Chef::DataBagItem.load(:users, "charlie")
268
- item.should be_a_kind_of(Chef::DataBagItem)
269
- item.should equal(@data_bag_item)
302
+ expect(item).to be_a_kind_of(Chef::DataBagItem)
303
+ expect(item).to equal(data_bag_item)
270
304
  end
271
305
  end
272
306
 
@@ -280,13 +314,11 @@ describe Chef::DataBagItem do
280
314
  end
281
315
 
282
316
  it "converts the raw data to a data bag item" do
283
- Chef::DataBag.should_receive(:load).with('users').and_return({'charlie' => @data_bag_item.to_hash})
317
+ expect(Chef::DataBag).to receive(:load).with('users').and_return({'charlie' => data_bag_item.to_hash})
284
318
  item = Chef::DataBagItem.load('users', 'charlie')
285
- item.should be_a_kind_of(Chef::DataBagItem)
286
- item.should == @data_bag_item
319
+ expect(item).to be_a_kind_of(Chef::DataBagItem)
320
+ expect(item).to eq(data_bag_item)
287
321
  end
288
322
  end
289
-
290
323
  end
291
-
292
324
  end