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

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -33,22 +33,22 @@ describe Chef::Resource::RegistryKey do
33
33
 
34
34
  context "tests registry dsl" do
35
35
  it "resource can access registry_helper method registry_key_exists" do
36
- @resource.respond_to?('registry_key_exists?').should == true
36
+ expect(@resource.respond_to?('registry_key_exists?')).to eq(true)
37
37
  end
38
38
  it "resource can access registry_helper method registry_get_values" do
39
- @resource.respond_to?('registry_get_values').should == true
39
+ expect(@resource.respond_to?('registry_get_values')).to eq(true)
40
40
  end
41
41
  it "resource can access registry_helper method registry_has_subkey" do
42
- @resource.respond_to?('registry_has_subkeys?').should == true
42
+ expect(@resource.respond_to?('registry_has_subkeys?')).to eq(true)
43
43
  end
44
44
  it "resource can access registry_helper method registry_get_subkeys" do
45
- @resource.respond_to?('registry_get_subkeys').should == true
45
+ expect(@resource.respond_to?('registry_get_subkeys')).to eq(true)
46
46
  end
47
47
  it "resource can access registry_helper method registry_value_exists" do
48
- @resource.respond_to?('registry_value_exists?').should == true
48
+ expect(@resource.respond_to?('registry_value_exists?')).to eq(true)
49
49
  end
50
50
  it "resource can access registry_helper method data_value_exists" do
51
- @resource.respond_to?('registry_data_exists?').should == true
51
+ expect(@resource.respond_to?('registry_data_exists?')).to eq(true)
52
52
  end
53
53
  end
54
54
  end
@@ -39,7 +39,7 @@ describe Chef::EncryptedDataBagItem::Encryptor do
39
39
  let(:key) { "passwd" }
40
40
 
41
41
  it "encrypts to format version 1 by default" do
42
- encryptor.should be_a_instance_of(Chef::EncryptedDataBagItem::Encryptor::Version1Encryptor)
42
+ expect(encryptor).to be_a_instance_of(Chef::EncryptedDataBagItem::Encryptor::Version1Encryptor)
43
43
  end
44
44
 
45
45
  describe "generating a random IV" do
@@ -49,14 +49,14 @@ describe Chef::EncryptedDataBagItem::Encryptor do
49
49
  # No API in ruby OpenSSL to get the iv is used for the encryption back
50
50
  # out. Instead we test if the encrypted data is the same. If it *is* the
51
51
  # same, we assume the IV was the same each time.
52
- encryptor.encrypted_data.should_not eq encryptor2.encrypted_data
52
+ expect(encryptor.encrypted_data).not_to eq encryptor2.encrypted_data
53
53
  end
54
54
  end
55
55
 
56
56
  describe "when encrypting a non-hash non-array value" do
57
57
  let(:plaintext_data) { 5 }
58
58
  it "serializes the value in a de-serializable way" do
59
- Chef::JSONCompat.from_json(encryptor.serialized_data)["json_wrapper"].should eq 5
59
+ expect(Chef::JSONCompat.from_json(encryptor.serialized_data)["json_wrapper"]).to eq 5
60
60
  end
61
61
 
62
62
  end
@@ -64,10 +64,10 @@ describe Chef::EncryptedDataBagItem::Encryptor do
64
64
  describe "wrapping secret values in an envelope" do
65
65
  it "wraps the encrypted data in an envelope with the iv and version" do
66
66
  final_data = encryptor.for_encrypted_item
67
- final_data["encrypted_data"].should eq encryptor.encrypted_data
68
- final_data["iv"].should eq Base64.encode64(encryptor.iv)
69
- final_data["version"].should eq 1
70
- final_data["cipher"].should eq"aes-256-cbc"
67
+ expect(final_data["encrypted_data"]).to eq encryptor.encrypted_data
68
+ expect(final_data["iv"]).to eq Base64.encode64(encryptor.iv)
69
+ expect(final_data["version"]).to eq 1
70
+ expect(final_data["cipher"]).to eq"aes-256-cbc"
71
71
  end
72
72
  end
73
73
 
@@ -78,17 +78,17 @@ describe Chef::EncryptedDataBagItem::Encryptor do
78
78
  end
79
79
 
80
80
  it "creates a version 2 encryptor" do
81
- encryptor.should be_a_instance_of(Chef::EncryptedDataBagItem::Encryptor::Version2Encryptor)
81
+ expect(encryptor).to be_a_instance_of(Chef::EncryptedDataBagItem::Encryptor::Version2Encryptor)
82
82
  end
83
83
 
84
84
  it "generates an hmac based on ciphertext with different iv" do
85
85
  encryptor2 = Chef::EncryptedDataBagItem::Encryptor.new(plaintext_data, key)
86
- encryptor.hmac.should_not eq(encryptor2.hmac)
86
+ expect(encryptor.hmac).not_to eq(encryptor2.hmac)
87
87
  end
88
88
 
89
89
  it "includes the hmac in the envelope" do
90
90
  final_data = encryptor.for_encrypted_item
91
- final_data["hmac"].should eq(encryptor.hmac)
91
+ expect(final_data["hmac"]).to eq(encryptor.hmac)
92
92
  end
93
93
  end
94
94
 
@@ -100,23 +100,23 @@ describe Chef::EncryptedDataBagItem::Encryptor do
100
100
  context "on supported platforms", :aes_256_gcm_only, :ruby_20_only do
101
101
 
102
102
  it "creates a version 3 encryptor" do
103
- encryptor.should be_a_instance_of(Chef::EncryptedDataBagItem::Encryptor::Version3Encryptor)
103
+ expect(encryptor).to be_a_instance_of(Chef::EncryptedDataBagItem::Encryptor::Version3Encryptor)
104
104
  end
105
105
 
106
106
  it "generates different authentication tags" do
107
107
  encryptor3 = Chef::EncryptedDataBagItem::Encryptor.new(plaintext_data, key)
108
108
  encryptor.for_encrypted_item # required to generate the auth_tag
109
109
  encryptor3.for_encrypted_item
110
- encryptor.auth_tag.should_not eq(encryptor3.auth_tag)
110
+ expect(encryptor.auth_tag).not_to eq(encryptor3.auth_tag)
111
111
  end
112
112
 
113
113
  it "includes the auth_tag in the envelope" do
114
114
  final_data = encryptor.for_encrypted_item
115
- final_data["auth_tag"].should eq(Base64::encode64(encryptor.auth_tag))
115
+ expect(final_data["auth_tag"]).to eq(Base64::encode64(encryptor.auth_tag))
116
116
  end
117
117
 
118
118
  it "throws an error if auth tag is read before encrypting the data" do
119
- lambda { encryptor.auth_tag }.should raise_error(Chef::EncryptedDataBagItem::EncryptionFailure)
119
+ expect { encryptor.auth_tag }.to raise_error(Chef::EncryptedDataBagItem::EncryptionFailure)
120
120
  end
121
121
 
122
122
  end # context on supported platforms
@@ -124,34 +124,18 @@ describe Chef::EncryptedDataBagItem::Encryptor do
124
124
  context "on unsupported platforms" do
125
125
  let(:aead_algorithm) { Chef::EncryptedDataBagItem::AEAD_ALGORITHM }
126
126
 
127
- it "throws an error warning about the Ruby version if it has no GCM support" do
128
- # Force OpenSSL with AEAD support
129
- OpenSSL::Cipher.stub(:ciphers).and_return([ aead_algorithm ])
130
- # Ruby without AEAD support
131
- OpenSSL::Cipher.should_receive(:method_defined?).with(:auth_data=).and_return(false)
132
- lambda { encryptor }.should raise_error(Chef::EncryptedDataBagItem::EncryptedDataBagRequirementsFailure, /requires Ruby/)
133
- end
134
-
135
127
  it "throws an error warning about the OpenSSL version if it has no GCM support" do
136
128
  # Force Ruby with AEAD support
137
- OpenSSL::Cipher.stub(:method_defined?).with(:auth_data=).and_return(true)
129
+ allow(OpenSSL::Cipher).to receive(:method_defined?).with(:auth_data=).and_return(true)
138
130
  # OpenSSL without AEAD support
139
- OpenSSL::Cipher.should_receive(:ciphers).and_return([])
140
- lambda { encryptor }.should raise_error(Chef::EncryptedDataBagItem::EncryptedDataBagRequirementsFailure, /requires an OpenSSL/)
131
+ expect(OpenSSL::Cipher).to receive(:ciphers).and_return([])
132
+ expect { encryptor }.to raise_error(Chef::EncryptedDataBagItem::EncryptedDataBagRequirementsFailure, /requires an OpenSSL/)
141
133
  end
142
134
 
143
- context "on platforms with old Ruby", :ruby_lt_20 do
144
-
145
- it "throws an error warning about the Ruby version" do
146
- lambda { encryptor }.should raise_error(Chef::EncryptedDataBagItem::EncryptedDataBagRequirementsFailure, /requires Ruby/)
147
- end
148
-
149
- end # context on platforms with old Ruby
150
-
151
135
  context "on platforms with old OpenSSL", :openssl_lt_101 do
152
136
 
153
137
  it "throws an error warning about the OpenSSL version" do
154
- lambda { encryptor }.should raise_error(Chef::EncryptedDataBagItem::EncryptedDataBagRequirementsFailure, /requires an OpenSSL/)
138
+ expect { encryptor }.to raise_error(Chef::EncryptedDataBagItem::EncryptedDataBagRequirementsFailure, /requires an OpenSSL/)
155
139
  end
156
140
 
157
141
  end # context on platforms with old OpenSSL
@@ -172,11 +156,11 @@ describe Chef::EncryptedDataBagItem::Decryptor do
172
156
 
173
157
  shared_examples "decryption examples" do
174
158
  it "decrypts the encrypted value" do
175
- decryptor.decrypted_data.should eq(json_wrapped_data)
159
+ expect(decryptor.decrypted_data).to eq(json_wrapped_data)
176
160
  end
177
161
 
178
162
  it "unwraps the encrypted data and returns it" do
179
- decryptor.for_decrypted_item.should eq plaintext_data
163
+ expect(decryptor.for_decrypted_item).to eq plaintext_data
180
164
  end
181
165
  end
182
166
 
@@ -194,12 +178,12 @@ describe Chef::EncryptedDataBagItem::Decryptor do
194
178
 
195
179
  it "rejects the data if the authentication tag is wrong" do
196
180
  encrypted_value["auth_tag"] = bogus_auth_tag
197
- lambda { decryptor.for_decrypted_item }.should raise_error(Chef::EncryptedDataBagItem::DecryptionFailure)
181
+ expect { decryptor.for_decrypted_item }.to raise_error(Chef::EncryptedDataBagItem::DecryptionFailure)
198
182
  end
199
183
 
200
184
  it "rejects the data if the authentication tag is missing" do
201
185
  encrypted_value.delete("auth_tag")
202
- lambda { decryptor.for_decrypted_item }.should raise_error(Chef::EncryptedDataBagItem::DecryptionFailure)
186
+ expect { decryptor.for_decrypted_item }.to raise_error(Chef::EncryptedDataBagItem::DecryptionFailure)
203
187
  end
204
188
 
205
189
  end # context on supported platforms
@@ -214,18 +198,10 @@ describe Chef::EncryptedDataBagItem::Decryptor do
214
198
  }
215
199
  end
216
200
 
217
- context "on platforms with old Ruby", :ruby_lt_20 do
218
-
219
- it "throws an error warning about the Ruby version" do
220
- lambda { decryptor }.should raise_error(Chef::EncryptedDataBagItem::EncryptedDataBagRequirementsFailure, /requires Ruby/)
221
- end
222
-
223
- end # context on platforms with old Ruby
224
-
225
201
  context "on platforms with old OpenSSL", :openssl_lt_101 do
226
202
 
227
203
  it "throws an error warning about the OpenSSL version" do
228
- lambda { decryptor }.should raise_error(Chef::EncryptedDataBagItem::EncryptedDataBagRequirementsFailure, /requires an OpenSSL/)
204
+ expect { decryptor }.to raise_error(Chef::EncryptedDataBagItem::EncryptedDataBagRequirementsFailure, /requires an OpenSSL/)
229
205
  end
230
206
 
231
207
  end # context on unsupported platforms
@@ -249,12 +225,12 @@ describe Chef::EncryptedDataBagItem::Decryptor do
249
225
 
250
226
  it "rejects the data if the hmac is wrong" do
251
227
  encrypted_value["hmac"] = bogus_hmac
252
- lambda { decryptor.for_decrypted_item }.should raise_error(Chef::EncryptedDataBagItem::DecryptionFailure)
228
+ expect { decryptor.for_decrypted_item }.to raise_error(Chef::EncryptedDataBagItem::DecryptionFailure)
253
229
  end
254
230
 
255
231
  it "rejects the data if the hmac is missing" do
256
232
  encrypted_value.delete("hmac")
257
- lambda { decryptor.for_decrypted_item }.should raise_error(Chef::EncryptedDataBagItem::DecryptionFailure)
233
+ expect { decryptor.for_decrypted_item }.to raise_error(Chef::EncryptedDataBagItem::DecryptionFailure)
258
234
  end
259
235
 
260
236
  end
@@ -266,7 +242,7 @@ describe Chef::EncryptedDataBagItem::Decryptor do
266
242
  end
267
243
 
268
244
  it "selects the correct strategy for version 1" do
269
- decryptor.should be_a_instance_of Chef::EncryptedDataBagItem::Decryptor::Version1Decryptor
245
+ expect(decryptor).to be_a_instance_of Chef::EncryptedDataBagItem::Decryptor::Version1Decryptor
270
246
  end
271
247
 
272
248
  include_examples "decryption examples"
@@ -276,8 +252,8 @@ describe Chef::EncryptedDataBagItem::Decryptor do
276
252
  # Over a large number of tests on a variety of systems, we occasionally
277
253
  # see the decryption step "succeed" but return invalid data (e.g., not
278
254
  # the original plain text) [CHEF-3858]
279
- decryptor.should_receive(:decrypted_data).and_return("lksajdf")
280
- lambda { decryptor.for_decrypted_item }.should raise_error(Chef::EncryptedDataBagItem::DecryptionFailure)
255
+ expect(decryptor).to receive(:decrypted_data).and_return("lksajdf")
256
+ expect { decryptor.for_decrypted_item }.to raise_error(Chef::EncryptedDataBagItem::DecryptionFailure)
281
257
  end
282
258
  end
283
259
 
@@ -285,7 +261,7 @@ describe Chef::EncryptedDataBagItem::Decryptor do
285
261
  let(:decryption_key) { "wrong-passwd" }
286
262
 
287
263
  it "raises a sensible error" do
288
- lambda { decryptor.for_decrypted_item }.should raise_error(Chef::EncryptedDataBagItem::DecryptionFailure)
264
+ expect { decryptor.for_decrypted_item }.to raise_error(Chef::EncryptedDataBagItem::DecryptionFailure)
289
265
  end
290
266
  end
291
267
 
@@ -297,7 +273,7 @@ describe Chef::EncryptedDataBagItem::Decryptor do
297
273
  end
298
274
 
299
275
  it "raises a sensible error" do
300
- lambda { decryptor.for_decrypted_item }.should raise_error(Chef::EncryptedDataBagItem::UnsupportedCipher)
276
+ expect { decryptor.for_decrypted_item }.to raise_error(Chef::EncryptedDataBagItem::UnsupportedCipher)
301
277
  end
302
278
  end
303
279
 
@@ -307,7 +283,7 @@ describe Chef::EncryptedDataBagItem::Decryptor do
307
283
  end
308
284
 
309
285
  it "raises an error attempting to decrypt" do
310
- lambda { decryptor }.should raise_error(Chef::EncryptedDataBagItem::UnacceptableEncryptedDataBagItemFormat)
286
+ expect { decryptor }.to raise_error(Chef::EncryptedDataBagItem::UnacceptableEncryptedDataBagItemFormat)
311
287
  end
312
288
 
313
289
  end
@@ -320,11 +296,11 @@ describe Chef::EncryptedDataBagItem::Decryptor do
320
296
  end
321
297
 
322
298
  it "selects the correct strategy for version 0" do
323
- decryptor.should be_a_instance_of(Chef::EncryptedDataBagItem::Decryptor::Version0Decryptor)
299
+ expect(decryptor).to be_a_instance_of(Chef::EncryptedDataBagItem::Decryptor::Version0Decryptor)
324
300
  end
325
301
 
326
302
  it "decrypts the encrypted value" do
327
- decryptor.for_decrypted_item.should eq plaintext_data
303
+ expect(decryptor.for_decrypted_item).to eq plaintext_data
328
304
  end
329
305
 
330
306
  context "and version 1 format is required" do
@@ -333,7 +309,7 @@ describe Chef::EncryptedDataBagItem::Decryptor do
333
309
  end
334
310
 
335
311
  it "raises an error attempting to decrypt" do
336
- lambda { decryptor }.should raise_error(Chef::EncryptedDataBagItem::UnacceptableEncryptedDataBagItemFormat)
312
+ expect { decryptor }.to raise_error(Chef::EncryptedDataBagItem::UnacceptableEncryptedDataBagItemFormat)
337
313
  end
338
314
 
339
315
  end
@@ -355,27 +331,27 @@ describe Chef::EncryptedDataBagItem do
355
331
  describe "encrypting" do
356
332
 
357
333
  it "doesn't encrypt the 'id' key" do
358
- encoded_data["id"].should eq "item_name"
334
+ expect(encoded_data["id"]).to eq "item_name"
359
335
  end
360
336
 
361
337
  it "encrypts non-collection objects" do
362
- encoded_data["greeting"]["version"].should eq 1
363
- encoded_data["greeting"].should have_key("iv")
338
+ expect(encoded_data["greeting"]["version"]).to eq 1
339
+ expect(encoded_data["greeting"]).to have_key("iv")
364
340
 
365
341
  iv = encoded_data["greeting"]["iv"]
366
342
  encryptor = Chef::EncryptedDataBagItem::Encryptor.new("hello", secret, iv)
367
343
 
368
- encoded_data["greeting"]["encrypted_data"].should eq(encryptor.for_encrypted_item["encrypted_data"])
344
+ expect(encoded_data["greeting"]["encrypted_data"]).to eq(encryptor.for_encrypted_item["encrypted_data"])
369
345
  end
370
346
 
371
347
  it "encrypts nested values" do
372
- encoded_data["nested"]["version"].should eq 1
373
- encoded_data["nested"].should have_key("iv")
348
+ expect(encoded_data["nested"]["version"]).to eq 1
349
+ expect(encoded_data["nested"]).to have_key("iv")
374
350
 
375
351
  iv = encoded_data["nested"]["iv"]
376
352
  encryptor = Chef::EncryptedDataBagItem::Encryptor.new(plaintext_data["nested"], secret, iv)
377
353
 
378
- encoded_data["nested"]["encrypted_data"].should eq(encryptor.for_encrypted_item["encrypted_data"])
354
+ expect(encoded_data["nested"]["encrypted_data"]).to eq(encryptor.for_encrypted_item["encrypted_data"])
379
355
  end
380
356
 
381
357
  end
@@ -383,31 +359,31 @@ describe Chef::EncryptedDataBagItem do
383
359
  describe "decrypting" do
384
360
 
385
361
  it "doesn't try to decrypt 'id'" do
386
- encrypted_data_bag_item["id"].should eq(plaintext_data["id"])
362
+ expect(encrypted_data_bag_item["id"]).to eq(plaintext_data["id"])
387
363
  end
388
364
 
389
365
  it "decrypts 'greeting'" do
390
- encrypted_data_bag_item["greeting"].should eq(plaintext_data["greeting"])
366
+ expect(encrypted_data_bag_item["greeting"]).to eq(plaintext_data["greeting"])
391
367
  end
392
368
 
393
369
  it "decrypts 'nested'" do
394
- encrypted_data_bag_item["nested"].should eq(plaintext_data["nested"])
370
+ expect(encrypted_data_bag_item["nested"]).to eq(plaintext_data["nested"])
395
371
  end
396
372
 
397
373
  it "decrypts everyting via to_hash" do
398
- encrypted_data_bag_item.to_hash.should eq(plaintext_data)
374
+ expect(encrypted_data_bag_item.to_hash).to eq(plaintext_data)
399
375
  end
400
376
 
401
377
  it "handles missing keys gracefully" do
402
- encrypted_data_bag_item["no-such-key"].should be_nil
378
+ expect(encrypted_data_bag_item["no-such-key"]).to be_nil
403
379
  end
404
380
  end
405
381
 
406
382
  describe "loading" do
407
383
  it "should defer to Chef::DataBagItem.load" do
408
- Chef::DataBagItem.stub(:load).with(:the_bag, "my_codes").and_return(encoded_data)
384
+ allow(Chef::DataBagItem).to receive(:load).with(:the_bag, "my_codes").and_return(encoded_data)
409
385
  edbi = Chef::EncryptedDataBagItem.load(:the_bag, "my_codes", secret)
410
- edbi["greeting"].should eq(plaintext_data["greeting"])
386
+ expect(edbi["greeting"]).to eq(plaintext_data["greeting"])
411
387
  end
412
388
  end
413
389
 
@@ -416,45 +392,45 @@ describe Chef::EncryptedDataBagItem do
416
392
 
417
393
  context "when /var/mysecret exists" do
418
394
  before do
419
- ::File.stub(:exist?).with("/var/mysecret").and_return(true)
420
- IO.stub(:read).with("/var/mysecret").and_return(secret)
395
+ allow(::File).to receive(:exist?).with("/var/mysecret").and_return(true)
396
+ allow(IO).to receive(:read).with("/var/mysecret").and_return(secret)
421
397
  end
422
398
 
423
399
  it "load_secret('/var/mysecret') reads the secret" do
424
- Chef::EncryptedDataBagItem.load_secret("/var/mysecret").should eq secret
400
+ expect(Chef::EncryptedDataBagItem.load_secret("/var/mysecret")).to eq secret
425
401
  end
426
402
  end
427
403
 
428
404
  context "when /etc/chef/encrypted_data_bag_secret exists" do
429
405
  before do
430
406
  path = Chef::Config.platform_specific_path("/etc/chef/encrypted_data_bag_secret")
431
- ::File.stub(:exist?).with(path).and_return(true)
432
- IO.stub(:read).with(path).and_return(secret)
407
+ allow(::File).to receive(:exist?).with(path).and_return(true)
408
+ allow(IO).to receive(:read).with(path).and_return(secret)
433
409
  end
434
410
 
435
411
  it "load_secret(nil) reads the secret" do
436
- Chef::EncryptedDataBagItem.load_secret(nil).should eq secret
412
+ expect(Chef::EncryptedDataBagItem.load_secret(nil)).to eq secret
437
413
  end
438
414
  end
439
415
 
440
416
  context "when /etc/chef/encrypted_data_bag_secret does not exist" do
441
417
  before do
442
418
  path = Chef::Config.platform_specific_path("/etc/chef/encrypted_data_bag_secret")
443
- ::File.stub(:exist?).with(path).and_return(false)
419
+ allow(::File).to receive(:exist?).with(path).and_return(false)
444
420
  end
445
421
 
446
422
  it "load_secret(nil) emits a reasonable error message" do
447
- lambda { Chef::EncryptedDataBagItem.load_secret(nil) }.should raise_error(ArgumentError, /No secret specified and no secret found at #{Chef::Config[:encrypted_data_bag_secret]}/)
423
+ expect { Chef::EncryptedDataBagItem.load_secret(nil) }.to raise_error(ArgumentError, /No secret specified and no secret found at #{Chef::Config[:encrypted_data_bag_secret]}/)
448
424
  end
449
425
  end
450
426
 
451
427
  context "path argument is a URL" do
452
428
  before do
453
- Kernel.stub(:open).with("http://www.opscode.com/").and_return(StringIO.new(secret))
429
+ allow(Kernel).to receive(:open).with("http://www.opscode.com/").and_return(StringIO.new(secret))
454
430
  end
455
431
 
456
432
  it "reads from the URL" do
457
- Chef::EncryptedDataBagItem.load_secret("http://www.opscode.com/").should eq secret
433
+ expect(Chef::EncryptedDataBagItem.load_secret("http://www.opscode.com/")).to eq secret
458
434
  end
459
435
  end
460
436
  end
@@ -29,75 +29,75 @@ describe Chef::Environment do
29
29
 
30
30
  describe "initialize" do
31
31
  it "should be a Chef::Environment" do
32
- @environment.should be_a_kind_of(Chef::Environment)
32
+ expect(@environment).to be_a_kind_of(Chef::Environment)
33
33
  end
34
34
  end
35
35
 
36
36
  describe "name" do
37
37
  it "should let you set the name to a string" do
38
- @environment.name("production").should == "production"
38
+ expect(@environment.name("production")).to eq("production")
39
39
  end
40
40
 
41
41
  it "should return the current name" do
42
42
  @environment.name("production")
43
- @environment.name.should == "production"
43
+ expect(@environment.name).to eq("production")
44
44
  end
45
45
 
46
46
  it "should not accept spaces" do
47
- lambda { @environment.name("production environment") }.should raise_error(ArgumentError)
47
+ expect { @environment.name("production environment") }.to raise_error(ArgumentError)
48
48
  end
49
49
 
50
50
  it "should not accept anything but strings" do
51
- lambda { @environment.name(Array.new) }.should raise_error(ArgumentError)
52
- lambda { @environment.name(Hash.new) }.should raise_error(ArgumentError)
53
- lambda { @environment.name(2) }.should raise_error(ArgumentError)
51
+ expect { @environment.name(Array.new) }.to raise_error(ArgumentError)
52
+ expect { @environment.name(Hash.new) }.to raise_error(ArgumentError)
53
+ expect { @environment.name(2) }.to raise_error(ArgumentError)
54
54
  end
55
55
  end
56
56
 
57
57
  describe "description" do
58
58
  it "should let you set the description to a string" do
59
- @environment.description("this is my test environment").should == "this is my test environment"
59
+ expect(@environment.description("this is my test environment")).to eq("this is my test environment")
60
60
  end
61
61
 
62
62
  it "should return the correct description" do
63
63
  @environment.description("I like running tests")
64
- @environment.description.should == "I like running tests"
64
+ expect(@environment.description).to eq("I like running tests")
65
65
  end
66
66
 
67
67
  it "should not accept anything but strings" do
68
- lambda { @environment.description(Array.new) }.should raise_error(ArgumentError)
69
- lambda { @environment.description(Hash.new) }.should raise_error(ArgumentError)
70
- lambda { @environment.description(42) }.should raise_error(ArgumentError)
68
+ expect { @environment.description(Array.new) }.to raise_error(ArgumentError)
69
+ expect { @environment.description(Hash.new) }.to raise_error(ArgumentError)
70
+ expect { @environment.description(42) }.to raise_error(ArgumentError)
71
71
  end
72
72
  end
73
73
 
74
74
  describe "default attributes" do
75
75
  it "should let you set the attributes hash explicitly" do
76
- @environment.default_attributes({ :one => 'two' }).should == { :one => 'two' }
76
+ expect(@environment.default_attributes({ :one => 'two' })).to eq({ :one => 'two' })
77
77
  end
78
78
 
79
79
  it "should let you return the attributes hash" do
80
80
  @environment.default_attributes({ :one => 'two' })
81
- @environment.default_attributes.should == { :one => 'two' }
81
+ expect(@environment.default_attributes).to eq({ :one => 'two' })
82
82
  end
83
83
 
84
84
  it "should throw an ArgumentError if we aren't a kind of hash" do
85
- lambda { @environment.default_attributes(Array.new) }.should raise_error(ArgumentError)
85
+ expect { @environment.default_attributes(Array.new) }.to raise_error(ArgumentError)
86
86
  end
87
87
  end
88
88
 
89
89
  describe "override attributes" do
90
90
  it "should let you set the attributes hash explicitly" do
91
- @environment.override_attributes({ :one => 'two' }).should == { :one => 'two' }
91
+ expect(@environment.override_attributes({ :one => 'two' })).to eq({ :one => 'two' })
92
92
  end
93
93
 
94
94
  it "should let you return the attributes hash" do
95
95
  @environment.override_attributes({ :one => 'two' })
96
- @environment.override_attributes.should == { :one => 'two' }
96
+ expect(@environment.override_attributes).to eq({ :one => 'two' })
97
97
  end
98
98
 
99
99
  it "should throw an ArgumentError if we aren't a kind of hash" do
100
- lambda { @environment.override_attributes(Array.new) }.should raise_error(ArgumentError)
100
+ expect { @environment.override_attributes(Array.new) }.to raise_error(ArgumentError)
101
101
  end
102
102
  end
103
103
 
@@ -111,22 +111,22 @@ describe Chef::Environment do
111
111
  end
112
112
 
113
113
  it "should let you set the cookbook versions in a hash" do
114
- @environment.cookbook_versions(@cookbook_versions).should == @cookbook_versions
114
+ expect(@environment.cookbook_versions(@cookbook_versions)).to eq(@cookbook_versions)
115
115
  end
116
116
 
117
117
  it "should return the cookbook versions" do
118
118
  @environment.cookbook_versions(@cookbook_versions)
119
- @environment.cookbook_versions.should == @cookbook_versions
119
+ expect(@environment.cookbook_versions).to eq(@cookbook_versions)
120
120
  end
121
121
 
122
122
  it "should not accept anything but a hash" do
123
- lambda { @environment.cookbook_versions("I am a string!") }.should raise_error(ArgumentError)
124
- lambda { @environment.cookbook_versions(Array.new) }.should raise_error(ArgumentError)
125
- lambda { @environment.cookbook_versions(42) }.should raise_error(ArgumentError)
123
+ expect { @environment.cookbook_versions("I am a string!") }.to raise_error(ArgumentError)
124
+ expect { @environment.cookbook_versions(Array.new) }.to raise_error(ArgumentError)
125
+ expect { @environment.cookbook_versions(42) }.to raise_error(ArgumentError)
126
126
  end
127
127
 
128
128
  it "should validate the hash" do
129
- Chef::Environment.should_receive(:validate_cookbook_versions).with(@cookbook_versions).and_return true
129
+ expect(Chef::Environment).to receive(:validate_cookbook_versions).with(@cookbook_versions).and_return true
130
130
  @environment.cookbook_versions(@cookbook_versions)
131
131
  end
132
132
  end
@@ -134,11 +134,11 @@ describe Chef::Environment do
134
134
  describe "cookbook" do
135
135
  it "should set the version of the cookbook in the cookbook_versions hash" do
136
136
  @environment.cookbook("apt", "~> 1.2.3")
137
- @environment.cookbook_versions["apt"].should == "~> 1.2.3"
137
+ expect(@environment.cookbook_versions["apt"]).to eq("~> 1.2.3")
138
138
  end
139
139
 
140
140
  it "should validate the cookbook version it is passed" do
141
- Chef::Environment.should_receive(:validate_cookbook_version).with(">= 1.2.3").and_return true
141
+ expect(Chef::Environment).to receive(:validate_cookbook_version).with(">= 1.2.3").and_return true
142
142
  @environment.cookbook("apt", ">= 1.2.3")
143
143
  end
144
144
  end
@@ -157,9 +157,9 @@ describe Chef::Environment do
157
157
 
158
158
  it "should update everything but name" do
159
159
  @environment.update_from!(@example)
160
- @environment.name.should == "prod"
161
- @environment.description.should == @example.description
162
- @environment.cookbook_versions.should == @example.cookbook_versions
160
+ expect(@environment.name).to eq("prod")
161
+ expect(@environment.description).to eq(@example.description)
162
+ expect(@environment.cookbook_versions).to eq(@example.cookbook_versions)
163
163
  end
164
164
  end
165
165
 
@@ -173,16 +173,16 @@ describe Chef::Environment do
173
173
 
174
174
  %w{name description cookbook_versions}.each do |t|
175
175
  it "should include '#{t}'" do
176
- @hash[t].should == @environment.send(t.to_sym)
176
+ expect(@hash[t]).to eq(@environment.send(t.to_sym))
177
177
  end
178
178
  end
179
179
 
180
180
  it "should include 'json_class'" do
181
- @hash["json_class"].should == "Chef::Environment"
181
+ expect(@hash["json_class"]).to eq("Chef::Environment")
182
182
  end
183
183
 
184
184
  it "should include 'chef_type'" do
185
- @hash["chef_type"].should == "environment"
185
+ expect(@hash["chef_type"]).to eq("environment")
186
186
  end
187
187
  end
188
188
 
@@ -196,16 +196,16 @@ describe Chef::Environment do
196
196
 
197
197
  %w{name description cookbook_versions}.each do |t|
198
198
  it "should include '#{t}'" do
199
- @json.should =~ /"#{t}":#{Regexp.escape(Chef::JSONCompat.to_json(@environment.send(t.to_sym)))}/
199
+ expect(@json).to match(/"#{t}":#{Regexp.escape(Chef::JSONCompat.to_json(@environment.send(t.to_sym)))}/)
200
200
  end
201
201
  end
202
202
 
203
203
  it "should include 'json_class'" do
204
- @json.should =~ /"json_class":"Chef::Environment"/
204
+ expect(@json).to match(/"json_class":"Chef::Environment"/)
205
205
  end
206
206
 
207
207
  it "should include 'chef_type'" do
208
- @json.should =~ /"chef_type":"environment"/
208
+ expect(@json).to match(/"chef_type":"environment"/)
209
209
  end
210
210
 
211
211
  include_examples "to_json equalivent to Chef::JSONCompat.to_json" do
@@ -230,12 +230,12 @@ describe Chef::Environment do
230
230
  end
231
231
 
232
232
  it "should return a Chef::Environment" do
233
- @environment.should be_a_kind_of(Chef::Environment)
233
+ expect(@environment).to be_a_kind_of(Chef::Environment)
234
234
  end
235
235
 
236
236
  %w{name description cookbook_versions}.each do |t|
237
237
  it "should match '#{t}'" do
238
- @environment.send(t.to_sym).should == @data[t]
238
+ expect(@environment.send(t.to_sym)).to eq(@data[t])
239
239
  end
240
240
  end
241
241
  end
@@ -251,39 +251,39 @@ describe Chef::Environment do
251
251
 
252
252
  it "should validate the version string of each cookbook" do
253
253
  @cookbook_versions.each do |cookbook, version|
254
- Chef::Environment.should_receive(:validate_cookbook_version).with(version).and_return true
254
+ expect(Chef::Environment).to receive(:validate_cookbook_version).with(version).and_return true
255
255
  end
256
256
  Chef::Environment.validate_cookbook_versions(@cookbook_versions)
257
257
  end
258
258
 
259
259
  it "should return false if anything other than a hash is passed as the argument" do
260
- Chef::Environment.validate_cookbook_versions(Array.new).should == false
261
- Chef::Environment.validate_cookbook_versions(42).should == false
262
- Chef::Environment.validate_cookbook_versions(Chef::CookbookVersion.new("meta")).should == false
263
- Chef::Environment.validate_cookbook_versions("cookbook => 1.2.3").should == false
260
+ expect(Chef::Environment.validate_cookbook_versions(Array.new)).to eq(false)
261
+ expect(Chef::Environment.validate_cookbook_versions(42)).to eq(false)
262
+ expect(Chef::Environment.validate_cookbook_versions(Chef::CookbookVersion.new("meta"))).to eq(false)
263
+ expect(Chef::Environment.validate_cookbook_versions("cookbook => 1.2.3")).to eq(false)
264
264
  end
265
265
  end
266
266
 
267
267
  describe "self.validate_cookbook_version" do
268
268
  it "should validate correct version numbers" do
269
- Chef::Environment.validate_cookbook_version("= 1.2.3").should == true
270
- Chef::Environment.validate_cookbook_version("=1.2.3").should == true
271
- Chef::Environment.validate_cookbook_version(">= 0.0.3").should == true
272
- Chef::Environment.validate_cookbook_version(">=0.0.3").should == true
269
+ expect(Chef::Environment.validate_cookbook_version("= 1.2.3")).to eq(true)
270
+ expect(Chef::Environment.validate_cookbook_version("=1.2.3")).to eq(true)
271
+ expect(Chef::Environment.validate_cookbook_version(">= 0.0.3")).to eq(true)
272
+ expect(Chef::Environment.validate_cookbook_version(">=0.0.3")).to eq(true)
273
273
  # A lone version is allowed, interpreted as implicit '='
274
- Chef::Environment.validate_cookbook_version("1.2.3").should == true
274
+ expect(Chef::Environment.validate_cookbook_version("1.2.3")).to eq(true)
275
275
  end
276
276
 
277
277
  it "should return false when an invalid version is given" do
278
- Chef::Environment.validate_cookbook_version(Chef::CookbookVersion.new("meta")).should == false
279
- Chef::Environment.validate_cookbook_version("= 1.2.3a").should == false
280
- Chef::Environment.validate_cookbook_version("=1.2.3a").should == false
281
- Chef::Environment.validate_cookbook_version("= 1").should == false
282
- Chef::Environment.validate_cookbook_version("=1").should == false
283
- Chef::Environment.validate_cookbook_version("= a").should == false
284
- Chef::Environment.validate_cookbook_version("=a").should == false
285
- Chef::Environment.validate_cookbook_version("= 1.2.3.4").should == false
286
- Chef::Environment.validate_cookbook_version("=1.2.3.4").should == false
278
+ expect(Chef::Environment.validate_cookbook_version(Chef::CookbookVersion.new("meta"))).to eq(false)
279
+ expect(Chef::Environment.validate_cookbook_version("= 1.2.3a")).to eq(false)
280
+ expect(Chef::Environment.validate_cookbook_version("=1.2.3a")).to eq(false)
281
+ expect(Chef::Environment.validate_cookbook_version("= 1")).to eq(false)
282
+ expect(Chef::Environment.validate_cookbook_version("=1")).to eq(false)
283
+ expect(Chef::Environment.validate_cookbook_version("= a")).to eq(false)
284
+ expect(Chef::Environment.validate_cookbook_version("=a")).to eq(false)
285
+ expect(Chef::Environment.validate_cookbook_version("= 1.2.3.4")).to eq(false)
286
+ expect(Chef::Environment.validate_cookbook_version("=1.2.3.4")).to eq(false)
287
287
  end
288
288
 
289
289
  describe "in solo mode" do
@@ -296,9 +296,9 @@ describe Chef::Environment do
296
296
  end
297
297
 
298
298
  it "should raise and exception" do
299
- lambda {
299
+ expect {
300
300
  Chef::Environment.validate_cookbook_version("= 1.2.3.4")
301
- }.should raise_error Chef::Exceptions::IllegalVersionConstraint,
301
+ }.to raise_error Chef::Exceptions::IllegalVersionConstraint,
302
302
  "Environment cookbook version constraints not allowed in chef-solo"
303
303
  end
304
304
  end
@@ -312,17 +312,17 @@ describe Chef::Environment do
312
312
 
313
313
  it "updates the name from parameters[:name]" do
314
314
  @environment.update_from_params(:name => "kurrupt")
315
- @environment.name.should == "kurrupt"
315
+ expect(@environment.name).to eq("kurrupt")
316
316
  end
317
317
 
318
318
  it "validates the name given in the params" do
319
- @environment.update_from_params(:name => "@$%^&*()").should be_false
320
- @environment.invalid_fields[:name].should == %q|Option name's value @$%^&*() does not match regular expression /^[\-[:alnum:]_]+$/|
319
+ expect(@environment.update_from_params(:name => "@$%^&*()")).to be_falsey
320
+ expect(@environment.invalid_fields[:name]).to eq(%q|Option name's value @$%^&*() does not match regular expression /^[\-[:alnum:]_]+$/|)
321
321
  end
322
322
 
323
323
  it "updates the description from parameters[:description]" do
324
324
  @environment.update_from_params(:description => "wow, writing your own object mapper is kinda painful")
325
- @environment.description.should == "wow, writing your own object mapper is kinda painful"
325
+ expect(@environment.description).to eq("wow, writing your own object mapper is kinda painful")
326
326
  end
327
327
 
328
328
  it "updates cookbook version constraints from the hash in parameters[:cookbook_version_constraints]" do
@@ -331,34 +331,34 @@ describe Chef::Environment do
331
331
  # the way merb does params
332
332
  params = {:name=>"superbowl", :cookbook_version => {"0" => "apache2 ~> 1.0.0", "1" => "nginx < 2.0.0"}}
333
333
  @environment.update_from_params(params)
334
- @environment.cookbook_versions.should == {"apache2" => "~> 1.0.0", "nginx" => "< 2.0.0"}
334
+ expect(@environment.cookbook_versions).to eq({"apache2" => "~> 1.0.0", "nginx" => "< 2.0.0"})
335
335
  end
336
336
 
337
337
  it "validates the cookbook constraints" do
338
338
  params = {:cookbook_version => {"0" => "apache2 >>> 1.0.0"}}
339
- @environment.update_from_params(params).should be_false
339
+ expect(@environment.update_from_params(params)).to be_falsey
340
340
  err_msg = @environment.invalid_fields[:cookbook_version]["0"]
341
- err_msg.should == "apache2 >>> 1.0.0 is not a valid cookbook constraint"
341
+ expect(err_msg).to eq("apache2 >>> 1.0.0 is not a valid cookbook constraint")
342
342
  end
343
343
 
344
344
  it "is not valid if the name is not present" do
345
- @environment.validate_required_attrs_present.should be_false
346
- @environment.invalid_fields[:name].should == "name cannot be empty"
345
+ expect(@environment.validate_required_attrs_present).to be_falsey
346
+ expect(@environment.invalid_fields[:name]).to eq("name cannot be empty")
347
347
  end
348
348
 
349
349
  it "is not valid after updating from params if the name is not present" do
350
- @environment.update_from_params({}).should be_false
351
- @environment.invalid_fields[:name].should == "name cannot be empty"
350
+ expect(@environment.update_from_params({})).to be_falsey
351
+ expect(@environment.invalid_fields[:name]).to eq("name cannot be empty")
352
352
  end
353
353
 
354
354
  it "updates default attributes from a JSON string in params[:attributes]" do
355
355
  @environment.update_from_params(:name => "fuuu", :default_attributes => %q|{"fuuu":"RAGE"}|)
356
- @environment.default_attributes.should == {"fuuu" => "RAGE"}
356
+ expect(@environment.default_attributes).to eq({"fuuu" => "RAGE"})
357
357
  end
358
358
 
359
359
  it "updates override attributes from a JSON string in params[:attributes]" do
360
360
  @environment.update_from_params(:name => "fuuu", :override_attributes => %q|{"foo":"override"}|)
361
- @environment.override_attributes.should == {"foo" => "override"}
361
+ expect(@environment.override_attributes).to eq({"foo" => "override"})
362
362
  end
363
363
 
364
364
  end
@@ -366,25 +366,25 @@ describe Chef::Environment do
366
366
  describe "api model" do
367
367
  before(:each) do
368
368
  @rest = double("Chef::REST")
369
- Chef::REST.stub(:new).and_return(@rest)
369
+ allow(Chef::REST).to receive(:new).and_return(@rest)
370
370
  @query = double("Chef::Search::Query")
371
- Chef::Search::Query.stub(:new).and_return(@query)
371
+ allow(Chef::Search::Query).to receive(:new).and_return(@query)
372
372
  end
373
373
 
374
374
  describe "list" do
375
375
  describe "inflated" do
376
376
  it "should return a hash of environment names and objects" do
377
377
  e1 = double("Chef::Environment", :name => "one")
378
- @query.should_receive(:search).with(:environment).and_yield(e1)
378
+ expect(@query).to receive(:search).with(:environment).and_yield(e1)
379
379
  r = Chef::Environment.list(true)
380
- r["one"].should == e1
380
+ expect(r["one"]).to eq(e1)
381
381
  end
382
382
  end
383
383
 
384
384
  it "should return a hash of environment names and urls" do
385
- @rest.should_receive(:get_rest).and_return({ "one" => "http://foo" })
385
+ expect(@rest).to receive(:get_rest).and_return({ "one" => "http://foo" })
386
386
  r = Chef::Environment.list
387
- r["one"].should == "http://foo"
387
+ expect(r["one"]).to eq("http://foo")
388
388
  end
389
389
  end
390
390
  end
@@ -401,18 +401,18 @@ describe Chef::Environment do
401
401
  end
402
402
 
403
403
  it "should get the environment from the environment_path" do
404
- File.should_receive(:directory?).with(Chef::Config[:environment_path]).and_return(true)
405
- File.should_receive(:exists?).with(File.join(Chef::Config[:environment_path], 'foo.json')).and_return(false)
406
- File.should_receive(:exists?).with(File.join(Chef::Config[:environment_path], 'foo.rb')).exactly(2).times.and_return(true)
407
- File.should_receive(:readable?).with(File.join(Chef::Config[:environment_path], 'foo.rb')).and_return(true)
404
+ expect(File).to receive(:directory?).with(Chef::Config[:environment_path]).and_return(true)
405
+ expect(File).to receive(:exists?).with(File.join(Chef::Config[:environment_path], 'foo.json')).and_return(false)
406
+ expect(File).to receive(:exists?).with(File.join(Chef::Config[:environment_path], 'foo.rb')).exactly(2).times.and_return(true)
407
+ expect(File).to receive(:readable?).with(File.join(Chef::Config[:environment_path], 'foo.rb')).and_return(true)
408
408
  role_dsl="name \"foo\"\ndescription \"desc\"\n"
409
- IO.should_receive(:read).with(File.join(Chef::Config[:environment_path], 'foo.rb')).and_return(role_dsl)
409
+ expect(IO).to receive(:read).with(File.join(Chef::Config[:environment_path], 'foo.rb')).and_return(role_dsl)
410
410
  Chef::Environment.load('foo')
411
411
  end
412
412
 
413
413
  it "should return a Chef::Environment object from JSON" do
414
- File.should_receive(:directory?).with(Chef::Config[:environment_path]).and_return(true)
415
- File.should_receive(:exists?).with(File.join(Chef::Config[:environment_path], 'foo.json')).and_return(true)
414
+ expect(File).to receive(:directory?).with(Chef::Config[:environment_path]).and_return(true)
415
+ expect(File).to receive(:exists?).with(File.join(Chef::Config[:environment_path], 'foo.json')).and_return(true)
416
416
  environment_hash = {
417
417
  "name" => "foo",
418
418
  "default_attributes" => {
@@ -424,45 +424,45 @@ describe Chef::Environment do
424
424
  "description" => "desc",
425
425
  "chef_type" => "environment"
426
426
  }
427
- IO.should_receive(:read).with(File.join(Chef::Config[:environment_path], 'foo.json')).and_return(Chef::JSONCompat.to_json(environment_hash))
427
+ expect(IO).to receive(:read).with(File.join(Chef::Config[:environment_path], 'foo.json')).and_return(Chef::JSONCompat.to_json(environment_hash))
428
428
  environment = Chef::Environment.load('foo')
429
429
 
430
- environment.should be_a_kind_of(Chef::Environment)
431
- environment.name.should == environment_hash['name']
432
- environment.description.should == environment_hash['description']
433
- environment.default_attributes.should == environment_hash['default_attributes']
430
+ expect(environment).to be_a_kind_of(Chef::Environment)
431
+ expect(environment.name).to eq(environment_hash['name'])
432
+ expect(environment.description).to eq(environment_hash['description'])
433
+ expect(environment.default_attributes).to eq(environment_hash['default_attributes'])
434
434
  end
435
435
 
436
436
  it "should return a Chef::Environment object from Ruby DSL" do
437
- File.should_receive(:directory?).with(Chef::Config[:environment_path]).and_return(true)
438
- File.should_receive(:exists?).with(File.join(Chef::Config[:environment_path], 'foo.json')).and_return(false)
439
- File.should_receive(:exists?).with(File.join(Chef::Config[:environment_path], 'foo.rb')).exactly(2).times.and_return(true)
440
- File.should_receive(:readable?).with(File.join(Chef::Config[:environment_path], 'foo.rb')).and_return(true)
437
+ expect(File).to receive(:directory?).with(Chef::Config[:environment_path]).and_return(true)
438
+ expect(File).to receive(:exists?).with(File.join(Chef::Config[:environment_path], 'foo.json')).and_return(false)
439
+ expect(File).to receive(:exists?).with(File.join(Chef::Config[:environment_path], 'foo.rb')).exactly(2).times.and_return(true)
440
+ expect(File).to receive(:readable?).with(File.join(Chef::Config[:environment_path], 'foo.rb')).and_return(true)
441
441
  role_dsl="name \"foo\"\ndescription \"desc\"\n"
442
- IO.should_receive(:read).with(File.join(Chef::Config[:environment_path], 'foo.rb')).and_return(role_dsl)
442
+ expect(IO).to receive(:read).with(File.join(Chef::Config[:environment_path], 'foo.rb')).and_return(role_dsl)
443
443
  environment = Chef::Environment.load('foo')
444
444
 
445
- environment.should be_a_kind_of(Chef::Environment)
446
- environment.name.should == 'foo'
447
- environment.description.should == 'desc'
445
+ expect(environment).to be_a_kind_of(Chef::Environment)
446
+ expect(environment.name).to eq('foo')
447
+ expect(environment.description).to eq('desc')
448
448
  end
449
449
 
450
450
  it 'should raise an error if the configured environment_path is invalid' do
451
- File.should_receive(:directory?).with(Chef::Config[:environment_path]).and_return(false)
451
+ expect(File).to receive(:directory?).with(Chef::Config[:environment_path]).and_return(false)
452
452
 
453
- lambda {
453
+ expect {
454
454
  Chef::Environment.load('foo')
455
- }.should raise_error Chef::Exceptions::InvalidEnvironmentPath, "Environment path '/var/chef/environments' is invalid"
455
+ }.to raise_error Chef::Exceptions::InvalidEnvironmentPath, "Environment path '/var/chef/environments' is invalid"
456
456
  end
457
457
 
458
458
  it 'should raise an error if the file does not exist' do
459
- File.should_receive(:directory?).with(Chef::Config[:environment_path]).and_return(true)
460
- File.should_receive(:exists?).with(File.join(Chef::Config[:environment_path], 'foo.json')).and_return(false)
461
- File.should_receive(:exists?).with(File.join(Chef::Config[:environment_path], 'foo.rb')).and_return(false)
459
+ expect(File).to receive(:directory?).with(Chef::Config[:environment_path]).and_return(true)
460
+ expect(File).to receive(:exists?).with(File.join(Chef::Config[:environment_path], 'foo.json')).and_return(false)
461
+ expect(File).to receive(:exists?).with(File.join(Chef::Config[:environment_path], 'foo.rb')).and_return(false)
462
462
 
463
- lambda {
463
+ expect {
464
464
  Chef::Environment.load('foo')
465
- }.should raise_error Chef::Exceptions::EnvironmentNotFound, "Environment 'foo' could not be loaded from disk"
465
+ }.to raise_error Chef::Exceptions::EnvironmentNotFound, "Environment 'foo' could not be loaded from disk"
466
466
  end
467
467
  end
468
468
  end