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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (653) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +4 -1
  3. data/README.md +42 -18
  4. data/distro/common/html/_sources/ctl_chef_client.txt +1 -1
  5. data/distro/common/html/_sources/ctl_chef_server.txt +53 -35
  6. data/distro/common/html/_sources/ctl_chef_solo.txt +1 -1
  7. data/distro/common/html/_sources/knife_bootstrap.txt +1 -1
  8. data/distro/common/html/_sources/knife_cookbook_site.txt +1 -1
  9. data/distro/common/html/_sources/knife_data_bag.txt +4 -4
  10. data/distro/common/html/_sources/knife_status.txt +1 -1
  11. data/distro/common/html/_static/searchtools.js +1 -1
  12. data/distro/common/html/ctl_chef_client.html +55 -7
  13. data/distro/common/html/ctl_chef_server.html +84 -41
  14. data/distro/common/html/ctl_chef_shell.html +45 -1
  15. data/distro/common/html/ctl_chef_solo.html +51 -5
  16. data/distro/common/html/index.html +2 -2
  17. data/distro/common/html/knife.html +1 -1
  18. data/distro/common/html/knife_bootstrap.html +30 -10
  19. data/distro/common/html/knife_cookbook_site.html +2 -0
  20. data/distro/common/html/knife_data_bag.html +4 -4
  21. data/distro/common/html/knife_node.html +2 -2
  22. data/distro/common/html/knife_raw.html +1 -1
  23. data/distro/common/html/knife_role.html +1 -1
  24. data/distro/common/html/knife_search.html +3 -3
  25. data/distro/common/html/knife_status.html +4 -0
  26. data/distro/common/html/searchindex.js +1 -1
  27. data/distro/common/man/man1/chef-shell.1 +72 -1
  28. data/distro/common/man/man1/knife-bootstrap.1 +71 -63
  29. data/distro/common/man/man1/knife-client.1 +1 -1
  30. data/distro/common/man/man1/knife-configure.1 +1 -1
  31. data/distro/common/man/man1/knife-cookbook-site.1 +4 -1
  32. data/distro/common/man/man1/knife-cookbook.1 +1 -1
  33. data/distro/common/man/man1/knife-data-bag.1 +5 -5
  34. data/distro/common/man/man1/knife-delete.1 +1 -1
  35. data/distro/common/man/man1/knife-deps.1 +1 -1
  36. data/distro/common/man/man1/knife-diff.1 +1 -1
  37. data/distro/common/man/man1/knife-download.1 +1 -1
  38. data/distro/common/man/man1/knife-edit.1 +1 -1
  39. data/distro/common/man/man1/knife-environment.1 +1 -1
  40. data/distro/common/man/man1/knife-exec.1 +1 -1
  41. data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
  42. data/distro/common/man/man1/knife-list.1 +1 -1
  43. data/distro/common/man/man1/knife-node.1 +3 -3
  44. data/distro/common/man/man1/knife-raw.1 +2 -2
  45. data/distro/common/man/man1/knife-recipe-list.1 +1 -1
  46. data/distro/common/man/man1/knife-role.1 +2 -2
  47. data/distro/common/man/man1/knife-search.1 +4 -4
  48. data/distro/common/man/man1/knife-serve.1 +1 -1
  49. data/distro/common/man/man1/knife-show.1 +1 -1
  50. data/distro/common/man/man1/knife-ssh.1 +1 -1
  51. data/distro/common/man/man1/knife-ssl-check.1 +1 -1
  52. data/distro/common/man/man1/knife-ssl-fetch.1 +1 -1
  53. data/distro/common/man/man1/knife-status.1 +1 -1
  54. data/distro/common/man/man1/knife-tag.1 +1 -1
  55. data/distro/common/man/man1/knife-upload.1 +1 -1
  56. data/distro/common/man/man1/knife-user.1 +1 -1
  57. data/distro/common/man/man1/knife-xargs.1 +1 -1
  58. data/distro/common/man/man1/knife.1 +1 -1
  59. data/distro/common/man/man8/chef-apply.8 +86 -0
  60. data/distro/common/man/man8/chef-client.8 +76 -5
  61. data/distro/common/man/man8/chef-solo.8 +79 -6
  62. data/distro/common/markdown/man1/knife-bootstrap.mkd +1 -1
  63. data/distro/common/markdown/man1/knife-cookbook-site.mkd +1 -1
  64. data/distro/common/markdown/man1/knife-data-bag.mkd +1 -1
  65. data/distro/common/markdown/man1/knife-environment.mkd +1 -1
  66. data/distro/common/markdown/man1/knife.mkd +1 -1
  67. data/lib/chef.rb +0 -7
  68. data/lib/chef/api_client.rb +10 -2
  69. data/lib/chef/api_client/registration.rb +7 -9
  70. data/lib/chef/application.rb +28 -12
  71. data/lib/chef/application/apply.rb +17 -1
  72. data/lib/chef/application/client.rb +74 -6
  73. data/lib/chef/application/knife.rb +1 -2
  74. data/lib/chef/application/solo.rb +30 -0
  75. data/lib/chef/application/windows_service.rb +1 -0
  76. data/lib/chef/application/windows_service_manager.rb +8 -2
  77. data/lib/chef/applications.rb +0 -1
  78. data/lib/chef/audit/audit_event_proxy.rb +93 -0
  79. data/lib/chef/audit/audit_reporter.rb +169 -0
  80. data/lib/chef/audit/control_group_data.rb +140 -0
  81. data/lib/chef/audit/rspec_formatter.rb +37 -0
  82. data/lib/chef/audit/runner.rb +178 -0
  83. data/lib/chef/chef_fs/chef_fs_data_store.rb +11 -2
  84. data/lib/chef/chef_fs/config.rb +25 -4
  85. data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +15 -0
  86. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -0
  87. data/lib/chef/chef_fs/file_system.rb +1 -1
  88. data/lib/chef/chef_fs/file_system/base_fs_dir.rb +5 -0
  89. data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +3 -2
  90. data/lib/chef/{shef/ext.rb → chef_fs/file_system/chef_repository_file_system_policies_dir.rb} +22 -3
  91. data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +4 -0
  92. data/lib/chef/client.rb +81 -52
  93. data/lib/chef/config.rb +35 -3
  94. data/lib/chef/cookbook/metadata.rb +3 -3
  95. data/lib/chef/cookbook_manifest.rb +275 -0
  96. data/lib/chef/cookbook_site_streaming_uploader.rb +24 -23
  97. data/lib/chef/cookbook_uploader.rb +11 -2
  98. data/lib/chef/cookbook_version.rb +71 -194
  99. data/lib/chef/data_bag.rb +5 -2
  100. data/lib/chef/data_bag_item.rb +6 -3
  101. data/lib/chef/deprecation/warnings.rb +5 -4
  102. data/lib/chef/dsl/audit.rb +51 -0
  103. data/lib/chef/dsl/include_recipe.rb +2 -3
  104. data/lib/chef/dsl/reboot_pending.rb +1 -1
  105. data/lib/chef/dsl/recipe.rb +49 -31
  106. data/lib/chef/encrypted_data_bag_item/assertions.rb +0 -3
  107. data/lib/chef/environment.rb +5 -2
  108. data/lib/chef/event_dispatch/base.rb +36 -1
  109. data/lib/chef/event_dispatch/dispatcher.rb +3 -5
  110. data/lib/chef/exceptions.rb +61 -2
  111. data/lib/chef/file_access_control/unix.rb +12 -0
  112. data/lib/chef/file_access_control/windows.rb +14 -0
  113. data/lib/chef/formatters/doc.rb +47 -1
  114. data/{spec/unit/monkey_patches/string_spec.rb → lib/chef/guard_interpreter.rb} +11 -16
  115. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +3 -2
  116. data/lib/chef/http.rb +1 -2
  117. data/lib/chef/knife.rb +5 -3
  118. data/lib/chef/knife/bootstrap.rb +84 -15
  119. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +165 -0
  120. data/lib/chef/knife/bootstrap/client_builder.rb +190 -0
  121. data/lib/chef/knife/bootstrap/{README.md → templates/README.md} +0 -0
  122. data/lib/chef/knife/bootstrap/{archlinux-gems.erb → templates/archlinux-gems.erb} +9 -0
  123. data/lib/chef/knife/bootstrap/{chef-aix.erb → templates/chef-aix.erb} +9 -0
  124. data/lib/chef/knife/bootstrap/{chef-full.erb → templates/chef-full.erb} +10 -1
  125. data/lib/chef/knife/client_create.rb +8 -7
  126. data/lib/chef/knife/cookbook_site_download.rb +1 -1
  127. data/lib/chef/knife/cookbook_site_install.rb +1 -1
  128. data/lib/chef/knife/cookbook_site_list.rb +1 -1
  129. data/lib/chef/knife/cookbook_site_search.rb +1 -1
  130. data/lib/chef/knife/cookbook_site_share.rb +39 -28
  131. data/lib/chef/knife/cookbook_site_show.rb +3 -3
  132. data/lib/chef/knife/cookbook_site_unshare.rb +1 -1
  133. data/lib/chef/knife/cookbook_test.rb +1 -0
  134. data/lib/chef/knife/cookbook_upload.rb +13 -8
  135. data/lib/chef/knife/core/bootstrap_context.rb +14 -3
  136. data/lib/chef/knife/core/generic_presenter.rb +5 -2
  137. data/lib/chef/knife/core/object_loader.rb +1 -1
  138. data/lib/chef/knife/core/subcommand_loader.rb +24 -0
  139. data/lib/chef/knife/core/ui.rb +9 -1
  140. data/lib/chef/knife/node_run_list_remove.rb +11 -3
  141. data/lib/chef/knife/raw.rb +14 -3
  142. data/lib/chef/knife/role_env_run_list_add.rb +86 -0
  143. data/lib/chef/knife/role_env_run_list_clear.rb +55 -0
  144. data/lib/chef/knife/role_env_run_list_remove.rb +57 -0
  145. data/lib/chef/knife/role_env_run_list_replace.rb +59 -0
  146. data/lib/chef/knife/role_env_run_list_set.rb +70 -0
  147. data/lib/chef/knife/role_run_list_add.rb +86 -0
  148. data/lib/chef/knife/role_run_list_clear.rb +55 -0
  149. data/lib/chef/knife/role_run_list_remove.rb +57 -0
  150. data/lib/chef/knife/role_run_list_replace.rb +59 -0
  151. data/lib/chef/knife/role_run_list_set.rb +70 -0
  152. data/lib/chef/knife/search.rb +4 -4
  153. data/lib/chef/knife/serve.rb +3 -0
  154. data/lib/chef/knife/ssh.rb +1 -1
  155. data/lib/chef/knife/ssl_check.rb +2 -2
  156. data/lib/chef/knife/ssl_fetch.rb +14 -1
  157. data/lib/chef/log.rb +10 -1
  158. data/lib/chef/mixin/command.rb +1 -1
  159. data/lib/chef/mixin/command/windows.rb +1 -5
  160. data/lib/chef/mixin/get_source_from_package.rb +1 -0
  161. data/lib/chef/mixin/params_validate.rb +2 -2
  162. data/lib/chef/mixin/securable.rb +1 -7
  163. data/lib/chef/mixin/shell_out.rb +7 -1
  164. data/lib/chef/mixin/template.rb +2 -14
  165. data/lib/chef/mixin/why_run.rb +1 -1
  166. data/lib/chef/monkey_patches/net_http.rb +4 -0
  167. data/lib/chef/monologger.rb +0 -2
  168. data/lib/chef/node.rb +5 -2
  169. data/lib/chef/node/attribute.rb +11 -9
  170. data/lib/chef/node/attribute_collections.rb +8 -12
  171. data/lib/chef/node/immutable_collections.rb +4 -10
  172. data/lib/chef/org.rb +148 -0
  173. data/lib/chef/platform/provider_mapping.rb +3 -2
  174. data/lib/chef/platform/provider_priority_map.rb +2 -0
  175. data/lib/chef/platform/query_helpers.rb +0 -3
  176. data/lib/chef/policy_builder/policyfile.rb +51 -8
  177. data/lib/chef/provider/deploy.rb +1 -2
  178. data/lib/chef/provider/directory.rb +3 -3
  179. data/lib/chef/provider/dsc_script.rb +13 -7
  180. data/lib/chef/provider/env.rb +8 -8
  181. data/lib/chef/provider/execute.rb +55 -36
  182. data/lib/chef/provider/file.rb +8 -0
  183. data/lib/chef/provider/group.rb +2 -0
  184. data/lib/chef/provider/group/dscl.rb +3 -4
  185. data/lib/chef/provider/ifconfig.rb +25 -25
  186. data/lib/chef/provider/ifconfig/aix.rb +25 -27
  187. data/lib/chef/provider/lwrp_base.rb +1 -1
  188. data/lib/chef/provider/mount.rb +2 -2
  189. data/lib/chef/provider/mount/mount.rb +3 -4
  190. data/lib/chef/provider/mount/solaris.rb +1 -1
  191. data/lib/chef/provider/package.rb +297 -48
  192. data/lib/chef/provider/package/aix.rb +25 -30
  193. data/lib/chef/provider/package/apt.rb +63 -19
  194. data/lib/chef/provider/package/dpkg.rb +15 -16
  195. data/lib/chef/provider/package/macports.rb +7 -7
  196. data/lib/chef/provider/package/openbsd.rb +107 -0
  197. data/lib/chef/provider/package/pacman.rb +13 -15
  198. data/lib/chef/provider/package/portage.rb +3 -4
  199. data/lib/chef/provider/package/rpm.rb +28 -17
  200. data/lib/chef/provider/package/rubygems.rb +9 -9
  201. data/lib/chef/provider/package/solaris.rb +17 -21
  202. data/lib/chef/provider/package/windows/msi.rb +1 -1
  203. data/lib/chef/provider/package/yum-dump.py +2 -2
  204. data/lib/chef/provider/package/yum.rb +117 -51
  205. data/lib/chef/provider/package/zypper.rb +17 -18
  206. data/lib/chef/provider/powershell_script.rb +4 -4
  207. data/lib/chef/provider/registry_key.rb +2 -2
  208. data/lib/chef/provider/remote_directory.rb +1 -1
  209. data/lib/chef/provider/script.rb +25 -16
  210. data/lib/chef/provider/service.rb +1 -1
  211. data/lib/chef/provider/service/freebsd.rb +1 -1
  212. data/lib/chef/provider/service/openbsd.rb +216 -0
  213. data/lib/chef/provider/service/upstart.rb +1 -1
  214. data/lib/chef/provider/service/windows.rb +99 -1
  215. data/lib/chef/provider/user.rb +1 -1
  216. data/lib/chef/provider/user/dscl.rb +19 -4
  217. data/lib/chef/providers.rb +2 -0
  218. data/lib/chef/recipe.rb +11 -5
  219. data/lib/chef/request_id.rb +1 -1
  220. data/lib/chef/resource.rb +839 -444
  221. data/lib/chef/resource/chef_gem.rb +20 -3
  222. data/lib/chef/resource/conditional.rb +3 -14
  223. data/lib/chef/resource/dsc_script.rb +14 -0
  224. data/lib/chef/resource/execute.rb +14 -7
  225. data/lib/chef/resource/file.rb +14 -0
  226. data/lib/chef/resource/file/verification.rb +122 -0
  227. data/lib/chef/resource/ips_package.rb +1 -1
  228. data/lib/chef/resource/lwrp_base.rb +2 -11
  229. data/lib/chef/resource/macports_package.rb +2 -1
  230. data/lib/chef/resource/openbsd_package.rb +51 -0
  231. data/lib/chef/resource/package.rb +2 -2
  232. data/lib/chef/resource/paludis_package.rb +1 -1
  233. data/lib/chef/resource/reboot.rb +1 -1
  234. data/lib/chef/resource/remote_file.rb +1 -0
  235. data/lib/chef/resource/rpm_package.rb +9 -0
  236. data/lib/chef/resource/script.rb +11 -0
  237. data/lib/chef/resource/template.rb +2 -3
  238. data/lib/chef/resource/windows_package.rb +1 -1
  239. data/lib/chef/resource/windows_service.rb +18 -0
  240. data/lib/chef/resource_builder.rb +137 -0
  241. data/lib/chef/resource_definition.rb +1 -1
  242. data/lib/chef/resource_reporter.rb +1 -1
  243. data/lib/chef/resources.rb +1 -0
  244. data/lib/chef/role.rb +17 -4
  245. data/lib/chef/run_context.rb +10 -6
  246. data/lib/chef/search/query.rb +66 -87
  247. data/lib/chef/shell/ext.rb +2 -2
  248. data/lib/chef/util/diff.rb +1 -4
  249. data/lib/chef/util/dsc/configuration_generator.rb +30 -6
  250. data/lib/chef/util/dsc/lcm_output_parser.rb +7 -3
  251. data/lib/chef/util/dsc/local_configuration_manager.rb +8 -8
  252. data/lib/chef/util/file_edit.rb +2 -2
  253. data/lib/chef/util/path_helper.rb +1 -4
  254. data/lib/chef/util/windows/net_use.rb +3 -3
  255. data/lib/chef/version.rb +1 -1
  256. data/lib/chef/win32/api.rb +1 -0
  257. data/lib/chef/win32/api/security.rb +26 -0
  258. data/lib/chef/win32/file.rb +21 -0
  259. data/lib/chef/win32/security.rb +46 -0
  260. data/lib/chef/win32/security/token.rb +8 -0
  261. data/lib/chef/win32/version.rb +0 -4
  262. data/spec/data/recipes.tgz +0 -0
  263. data/spec/functional/application_spec.rb +1 -1
  264. data/spec/functional/audit/rspec_formatter_spec.rb +54 -0
  265. data/spec/functional/audit/runner_spec.rb +137 -0
  266. data/spec/functional/dsl/reboot_pending_spec.rb +10 -10
  267. data/spec/functional/dsl/registry_helper_spec.rb +6 -6
  268. data/spec/functional/event_loggers/windows_eventlog_spec.rb +5 -5
  269. data/spec/functional/file_content_management/deploy_strategies_spec.rb +12 -21
  270. data/spec/functional/http/simple_spec.rb +1 -1
  271. data/spec/functional/knife/cookbook_delete_spec.rb +24 -24
  272. data/spec/functional/knife/exec_spec.rb +2 -4
  273. data/spec/functional/knife/smoke_test.rb +1 -1
  274. data/spec/functional/knife/ssh_spec.rb +23 -23
  275. data/spec/functional/provider/remote_file/cache_control_data_spec.rb +8 -8
  276. data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +2 -2
  277. data/spec/functional/rebooter_spec.rb +1 -1
  278. data/spec/functional/resource/aix_service_spec.rb +3 -0
  279. data/spec/functional/resource/aixinit_service_spec.rb +3 -3
  280. data/spec/functional/resource/bash_spec.rb +88 -0
  281. data/spec/functional/resource/deploy_revision_spec.rb +99 -100
  282. data/spec/functional/resource/env_spec.rb +3 -3
  283. data/spec/functional/resource/execute_spec.rb +97 -63
  284. data/spec/functional/resource/file_spec.rb +7 -7
  285. data/spec/functional/resource/git_spec.rb +13 -13
  286. data/spec/functional/resource/group_spec.rb +28 -25
  287. data/spec/functional/resource/ifconfig_spec.rb +2 -2
  288. data/spec/functional/resource/link_spec.rb +77 -78
  289. data/spec/functional/resource/mount_spec.rb +5 -5
  290. data/spec/functional/resource/ohai_spec.rb +1 -1
  291. data/spec/functional/resource/package_spec.rb +22 -22
  292. data/spec/functional/resource/powershell_spec.rb +57 -42
  293. data/spec/functional/resource/reboot_spec.rb +2 -2
  294. data/spec/functional/resource/registry_spec.rb +91 -91
  295. data/spec/functional/resource/remote_directory_spec.rb +19 -19
  296. data/spec/functional/resource/remote_file_spec.rb +18 -18
  297. data/spec/functional/resource/template_spec.rb +4 -4
  298. data/spec/functional/resource/user/dscl_spec.rb +4 -4
  299. data/spec/functional/resource/user/useradd_spec.rb +64 -51
  300. data/spec/functional/resource/windows_service_spec.rb +98 -0
  301. data/spec/functional/run_lock_spec.rb +9 -9
  302. data/spec/functional/shell_spec.rb +3 -3
  303. data/spec/functional/tiny_server_spec.rb +12 -12
  304. data/spec/functional/util/path_helper_spec.rb +1 -1
  305. data/spec/functional/version_spec.rb +1 -1
  306. data/spec/functional/win32/registry_helper_spec.rb +125 -125
  307. data/spec/functional/win32/security_spec.rb +65 -2
  308. data/spec/functional/win32/service_manager_spec.rb +30 -84
  309. data/spec/functional/win32/versions_spec.rb +6 -6
  310. data/spec/integration/client/client_spec.rb +102 -9
  311. data/spec/integration/knife/chef_fs_data_store_spec.rb +12 -8
  312. data/spec/integration/knife/common_options_spec.rb +3 -3
  313. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
  314. data/spec/integration/knife/deps_spec.rb +4 -4
  315. data/spec/integration/knife/diff_spec.rb +6 -6
  316. data/spec/integration/knife/download_spec.rb +6 -6
  317. data/spec/integration/knife/list_spec.rb +2 -2
  318. data/spec/integration/knife/raw_spec.rb +5 -5
  319. data/spec/integration/knife/serve_spec.rb +3 -3
  320. data/spec/integration/knife/show_spec.rb +3 -3
  321. data/spec/integration/knife/upload_spec.rb +18 -18
  322. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  323. data/spec/integration/solo/solo_spec.rb +11 -12
  324. data/spec/spec_helper.rb +27 -15
  325. data/spec/stress/win32/file_spec.rb +4 -4
  326. data/spec/stress/win32/security_spec.rb +4 -4
  327. data/spec/support/chef_helpers.rb +3 -3
  328. data/spec/support/matchers/leak.rb +2 -2
  329. data/spec/support/mock/platform.rb +1 -1
  330. data/spec/support/pedant/Gemfile +3 -0
  331. data/spec/support/pedant/pedant_config.rb +9 -2
  332. data/spec/support/pedant/run_pedant.rb +15 -16
  333. data/spec/support/platform_helpers.rb +8 -12
  334. data/spec/support/shared/functional/directory_resource.rb +13 -13
  335. data/spec/support/shared/functional/file_resource.rb +83 -83
  336. data/spec/support/shared/functional/http.rb +1 -1
  337. data/spec/support/shared/functional/securable_resource.rb +64 -64
  338. data/spec/support/shared/functional/securable_resource_with_reporting.rb +43 -41
  339. data/spec/support/shared/functional/win32_service.rb +60 -0
  340. data/spec/support/shared/functional/windows_script.rb +8 -8
  341. data/spec/support/shared/integration/knife_support.rb +8 -5
  342. data/spec/support/shared/matchers/exit_with_code.rb +6 -2
  343. data/spec/support/shared/unit/api_error_inspector.rb +8 -8
  344. data/spec/support/shared/unit/execute_resource.rb +24 -20
  345. data/spec/support/shared/unit/file_system_support.rb +2 -2
  346. data/spec/support/shared/unit/platform_introspector.rb +21 -21
  347. data/spec/support/shared/unit/provider/file.rb +239 -210
  348. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +69 -69
  349. data/spec/support/shared/unit/script_resource.rb +40 -32
  350. data/spec/support/shared/unit/windows_script_resource.rb +8 -8
  351. data/spec/unit/api_client/registration_spec.rb +47 -47
  352. data/spec/unit/api_client_spec.rb +107 -69
  353. data/spec/unit/application/apply_spec.rb +31 -15
  354. data/spec/unit/application/client_spec.rb +146 -45
  355. data/spec/unit/application/knife_spec.rb +31 -31
  356. data/spec/unit/application/solo_spec.rb +59 -43
  357. data/spec/unit/application_spec.rb +109 -74
  358. data/spec/unit/audit/audit_event_proxy_spec.rb +311 -0
  359. data/spec/unit/audit/audit_reporter_spec.rb +393 -0
  360. data/spec/unit/audit/control_group_data_spec.rb +478 -0
  361. data/{lib/chef/monkey_patches/file.rb → spec/unit/audit/rspec_formatter_spec.rb} +11 -8
  362. data/spec/unit/audit/runner_spec.rb +135 -0
  363. data/spec/unit/chef_fs/config_spec.rb +52 -0
  364. data/spec/unit/chef_fs/diff_spec.rb +12 -12
  365. data/spec/unit/chef_fs/file_pattern_spec.rb +276 -277
  366. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +6 -6
  367. data/spec/unit/chef_fs/file_system_spec.rb +26 -13
  368. data/spec/unit/chef_fs/parallelizer.rb +87 -87
  369. data/spec/unit/chef_spec.rb +1 -1
  370. data/spec/unit/client_spec.rb +263 -97
  371. data/spec/unit/config_fetcher_spec.rb +13 -13
  372. data/spec/unit/config_spec.rb +105 -66
  373. data/spec/unit/cookbook/chefignore_spec.rb +6 -6
  374. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +3 -3
  375. data/spec/unit/cookbook/metadata_spec.rb +149 -149
  376. data/spec/unit/cookbook/syntax_check_spec.rb +36 -31
  377. data/spec/unit/cookbook_loader_spec.rb +62 -58
  378. data/spec/unit/cookbook_manifest_spec.rb +141 -468
  379. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +27 -27
  380. data/spec/unit/cookbook_spec.rb +15 -15
  381. data/spec/unit/cookbook_uploader_spec.rb +37 -3
  382. data/spec/unit/cookbook_version_file_specificity_spec.rb +554 -0
  383. data/spec/unit/cookbook_version_spec.rb +98 -240
  384. data/spec/unit/daemon_spec.rb +31 -31
  385. data/spec/unit/data_bag_item_spec.rb +121 -89
  386. data/spec/unit/data_bag_spec.rb +35 -35
  387. data/spec/unit/deprecation_spec.rb +27 -14
  388. data/spec/unit/digester_spec.rb +3 -3
  389. data/spec/unit/dsl/audit_spec.rb +43 -0
  390. data/spec/unit/dsl/data_query_spec.rb +1 -1
  391. data/spec/unit/dsl/platform_introspection_spec.rb +14 -14
  392. data/spec/unit/dsl/reboot_pending_spec.rb +18 -18
  393. data/spec/unit/dsl/regsitry_helper_spec.rb +6 -6
  394. data/spec/unit/encrypted_data_bag_item_spec.rb +58 -82
  395. data/spec/unit/environment_spec.rb +105 -105
  396. data/spec/unit/exceptions_spec.rb +47 -1
  397. data/spec/unit/file_access_control_spec.rb +62 -56
  398. data/spec/unit/file_cache_spec.rb +11 -11
  399. data/spec/unit/file_content_management/deploy/cp_spec.rb +2 -2
  400. data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +10 -10
  401. data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +23 -23
  402. data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +14 -14
  403. data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +12 -12
  404. data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +1 -1
  405. data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +16 -16
  406. data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +4 -4
  407. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +103 -13
  408. data/spec/unit/guard_interpreter_spec.rb +41 -0
  409. data/spec/unit/handler/json_file_spec.rb +10 -10
  410. data/spec/unit/handler_spec.rb +39 -39
  411. data/spec/unit/http/basic_client_spec.rb +3 -3
  412. data/spec/unit/http/http_request_spec.rb +10 -10
  413. data/spec/unit/http/simple_spec.rb +3 -3
  414. data/spec/unit/http/ssl_policies_spec.rb +15 -15
  415. data/spec/unit/http/validate_content_length_spec.rb +18 -13
  416. data/spec/unit/http_spec.rb +16 -9
  417. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +153 -0
  418. data/spec/unit/knife/bootstrap/client_builder_spec.rb +178 -0
  419. data/spec/unit/knife/bootstrap_spec.rb +144 -91
  420. data/spec/unit/knife/client_bulk_delete_spec.rb +24 -24
  421. data/spec/unit/knife/client_create_spec.rb +57 -43
  422. data/spec/unit/knife/client_delete_spec.rb +15 -15
  423. data/spec/unit/knife/client_edit_spec.rb +4 -4
  424. data/spec/unit/knife/client_list_spec.rb +2 -2
  425. data/spec/unit/knife/client_reregister_spec.rb +9 -9
  426. data/spec/unit/knife/configure_client_spec.rb +20 -20
  427. data/spec/unit/knife/configure_spec.rb +85 -85
  428. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +15 -15
  429. data/spec/unit/knife/cookbook_create_spec.rb +59 -59
  430. data/spec/unit/knife/cookbook_delete_spec.rb +49 -49
  431. data/spec/unit/knife/cookbook_download_spec.rb +56 -56
  432. data/spec/unit/knife/cookbook_list_spec.rb +9 -9
  433. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +8 -8
  434. data/spec/unit/knife/cookbook_metadata_spec.rb +44 -44
  435. data/spec/unit/knife/cookbook_show_spec.rb +29 -29
  436. data/spec/unit/knife/cookbook_site_download_spec.rb +26 -26
  437. data/spec/unit/knife/cookbook_site_install_spec.rb +5 -1
  438. data/spec/unit/knife/cookbook_site_share_spec.rb +68 -59
  439. data/spec/unit/knife/cookbook_site_unshare_spec.rb +15 -15
  440. data/spec/unit/knife/cookbook_test_spec.rb +16 -16
  441. data/spec/unit/knife/cookbook_upload_spec.rb +105 -71
  442. data/spec/unit/knife/core/bootstrap_context_spec.rb +37 -22
  443. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +36 -36
  444. data/spec/unit/knife/core/object_loader_spec.rb +3 -3
  445. data/spec/unit/knife/core/subcommand_loader_spec.rb +107 -33
  446. data/spec/unit/knife/core/ui_spec.rb +84 -72
  447. data/spec/unit/knife/data_bag_from_file_spec.rb +1 -1
  448. data/spec/unit/knife/environment_compare_spec.rb +12 -12
  449. data/spec/unit/knife/environment_create_spec.rb +16 -16
  450. data/spec/unit/knife/environment_delete_spec.rb +14 -14
  451. data/spec/unit/knife/environment_edit_spec.rb +15 -15
  452. data/spec/unit/knife/environment_from_file_spec.rb +17 -17
  453. data/spec/unit/knife/environment_list_spec.rb +7 -7
  454. data/spec/unit/knife/environment_show_spec.rb +10 -10
  455. data/spec/unit/knife/index_rebuild_spec.rb +17 -17
  456. data/spec/unit/knife/knife_help.rb +24 -24
  457. data/spec/unit/knife/node_bulk_delete_spec.rb +14 -14
  458. data/spec/unit/knife/node_delete_spec.rb +11 -11
  459. data/spec/unit/knife/node_edit_spec.rb +17 -17
  460. data/spec/unit/knife/node_environment_set_spec.rb +12 -12
  461. data/spec/unit/knife/node_from_file_spec.rb +8 -8
  462. data/spec/unit/knife/node_list_spec.rb +9 -9
  463. data/spec/unit/knife/node_run_list_add_spec.rb +29 -29
  464. data/spec/unit/knife/node_run_list_remove_spec.rb +28 -13
  465. data/spec/unit/knife/node_run_list_set_spec.rb +27 -27
  466. data/spec/unit/knife/raw_spec.rb +43 -0
  467. data/spec/unit/knife/role_bulk_delete_spec.rb +12 -12
  468. data/spec/unit/knife/role_create_spec.rb +12 -12
  469. data/spec/unit/knife/role_delete_spec.rb +10 -10
  470. data/spec/unit/knife/role_edit_spec.rb +13 -13
  471. data/spec/unit/knife/role_env_run_list_add_spec.rb +217 -0
  472. data/spec/unit/knife/role_env_run_list_clear_spec.rb +100 -0
  473. data/spec/unit/knife/role_env_run_list_remove_spec.rb +108 -0
  474. data/spec/unit/knife/role_env_run_list_replace_spec.rb +108 -0
  475. data/spec/unit/knife/role_env_run_list_set_spec.rb +102 -0
  476. data/spec/unit/knife/role_from_file_spec.rb +10 -10
  477. data/spec/unit/knife/role_list_spec.rb +7 -7
  478. data/spec/unit/knife/role_run_list_add_spec.rb +179 -0
  479. data/spec/unit/knife/role_run_list_clear_spec.rb +90 -0
  480. data/spec/unit/knife/role_run_list_remove_spec.rb +98 -0
  481. data/spec/unit/knife/role_run_list_replace_spec.rb +101 -0
  482. data/spec/unit/knife/role_run_list_set_spec.rb +92 -0
  483. data/spec/unit/knife/ssh_spec.rb +66 -66
  484. data/spec/unit/knife/ssl_check_spec.rb +27 -27
  485. data/spec/unit/knife/ssl_fetch_spec.rb +45 -12
  486. data/spec/unit/knife/status_spec.rb +5 -5
  487. data/spec/unit/knife/tag_create_spec.rb +5 -5
  488. data/spec/unit/knife/tag_delete_spec.rb +6 -6
  489. data/spec/unit/knife/tag_list_spec.rb +4 -4
  490. data/spec/unit/knife/user_create_spec.rb +18 -18
  491. data/spec/unit/knife/user_delete_spec.rb +4 -4
  492. data/spec/unit/knife/user_edit_spec.rb +7 -7
  493. data/spec/unit/knife/user_list_spec.rb +2 -2
  494. data/spec/unit/knife/user_reregister_spec.rb +10 -10
  495. data/spec/unit/knife/user_show_spec.rb +5 -5
  496. data/spec/unit/knife_spec.rb +36 -36
  497. data/spec/unit/lwrp_spec.rb +63 -39
  498. data/spec/unit/mash_spec.rb +6 -6
  499. data/spec/unit/mixin/checksum_spec.rb +2 -2
  500. data/spec/unit/mixin/command_spec.rb +13 -13
  501. data/spec/unit/mixin/convert_to_class_name_spec.rb +6 -6
  502. data/spec/unit/mixin/deep_merge_spec.rb +49 -49
  503. data/spec/unit/mixin/deprecation_spec.rb +5 -5
  504. data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +14 -14
  505. data/spec/unit/mixin/homebrew_user_spec.rb +3 -3
  506. data/spec/unit/mixin/params_validate_spec.rb +71 -71
  507. data/spec/unit/mixin/path_sanity_spec.rb +14 -14
  508. data/spec/unit/mixin/securable_spec.rb +177 -177
  509. data/spec/unit/mixin/shell_out_spec.rb +56 -27
  510. data/spec/unit/mixin/template_spec.rb +31 -31
  511. data/spec/unit/mixin/windows_architecture_helper_spec.rb +5 -5
  512. data/spec/unit/mixin/xml_escape_spec.rb +7 -7
  513. data/spec/unit/monkey_patches/uri_spec.rb +1 -1
  514. data/spec/unit/monologger_spec.rb +3 -3
  515. data/spec/unit/node/attribute_spec.rb +185 -136
  516. data/spec/unit/node/immutable_collections_spec.rb +22 -22
  517. data/spec/unit/node_spec.rb +210 -179
  518. data/spec/unit/org_spec.rb +196 -0
  519. data/spec/unit/platform/query_helpers_spec.rb +5 -5
  520. data/spec/unit/platform_spec.rb +46 -46
  521. data/spec/unit/policy_builder/expand_node_object_spec.rb +17 -18
  522. data/spec/unit/policy_builder/policyfile_spec.rb +159 -71
  523. data/spec/unit/provider/directory_spec.rb +5 -5
  524. data/spec/unit/provider/dsc_script_spec.rb +6 -6
  525. data/spec/unit/provider/env_spec.rb +27 -14
  526. data/spec/unit/provider/execute_spec.rb +139 -68
  527. data/spec/unit/provider/file/content_spec.rb +8 -8
  528. data/spec/unit/provider/git_spec.rb +10 -5
  529. data/spec/unit/provider/group/dscl_spec.rb +8 -11
  530. data/spec/unit/provider/group_spec.rb +13 -13
  531. data/spec/unit/provider/ifconfig/aix_spec.rb +3 -2
  532. data/spec/unit/provider/ifconfig/debian_spec.rb +19 -19
  533. data/spec/unit/provider/ifconfig_spec.rb +2 -2
  534. data/spec/unit/provider/mdadm_spec.rb +2 -2
  535. data/spec/unit/provider/mount/aix_spec.rb +5 -5
  536. data/spec/unit/provider/mount/mount_spec.rb +22 -22
  537. data/spec/unit/provider/mount/solaris_spec.rb +20 -20
  538. data/spec/unit/provider/package/aix_spec.rb +23 -22
  539. data/spec/unit/provider/package/apt_spec.rb +23 -4
  540. data/spec/unit/provider/package/dpkg_spec.rb +14 -15
  541. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
  542. data/spec/unit/provider/package/freebsd/port_spec.rb +1 -1
  543. data/spec/unit/provider/package/ips_spec.rb +1 -2
  544. data/spec/unit/provider/package/macports_spec.rb +14 -14
  545. data/spec/unit/provider/package/openbsd_spec.rb +66 -0
  546. data/spec/unit/provider/package/pacman_spec.rb +15 -14
  547. data/spec/unit/provider/package/portage_spec.rb +11 -11
  548. data/spec/unit/provider/package/rpm_spec.rb +132 -84
  549. data/spec/unit/provider/package/rubygems_spec.rb +54 -25
  550. data/spec/unit/provider/package/solaris_spec.rb +22 -25
  551. data/spec/unit/provider/package/yum_spec.rb +237 -36
  552. data/spec/unit/provider/package/zypper_spec.rb +9 -12
  553. data/spec/unit/provider/package_spec.rb +276 -2
  554. data/spec/unit/provider/package_spec.rbe +0 -0
  555. data/spec/unit/provider/remote_directory_spec.rb +25 -25
  556. data/spec/unit/provider/remote_file/ftp_spec.rb +3 -3
  557. data/spec/unit/provider/route_spec.rb +3 -3
  558. data/spec/unit/provider/script_spec.rb +61 -43
  559. data/spec/unit/provider/service/aix_service_spec.rb +5 -5
  560. data/spec/unit/provider/service/arch_service_spec.rb +5 -5
  561. data/spec/unit/provider/service/debian_service_spec.rb +8 -8
  562. data/spec/unit/provider/service/freebsd_service_spec.rb +16 -2
  563. data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
  564. data/spec/unit/provider/service/init_service_spec.rb +5 -5
  565. data/spec/unit/provider/service/insserv_service_spec.rb +2 -2
  566. data/spec/unit/provider/service/invokercd_service_spec.rb +5 -5
  567. data/spec/unit/provider/service/macosx_spec.rb +7 -7
  568. data/spec/unit/provider/service/openbsd_service_spec.rb +543 -0
  569. data/spec/unit/provider/service/redhat_spec.rb +4 -4
  570. data/spec/unit/provider/service/simple_service_spec.rb +2 -2
  571. data/spec/unit/provider/service/solaris_smf_service_spec.rb +14 -14
  572. data/spec/unit/provider/service/systemd_service_spec.rb +15 -7
  573. data/spec/unit/provider/service/upstart_service_spec.rb +4 -4
  574. data/spec/unit/provider/service/windows_spec.rb +119 -25
  575. data/spec/unit/provider/service_spec.rb +1 -1
  576. data/spec/unit/provider/user/dscl_spec.rb +38 -30
  577. data/spec/unit/provider/user_spec.rb +1 -1
  578. data/spec/unit/provider_resolver_spec.rb +7 -7
  579. data/spec/unit/provider_spec.rb +23 -23
  580. data/spec/unit/recipe_spec.rb +194 -83
  581. data/spec/unit/registry_helper_spec.rb +143 -143
  582. data/spec/unit/resource/chef_gem_spec.rb +117 -3
  583. data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
  584. data/spec/unit/resource/conditional_spec.rb +56 -15
  585. data/spec/unit/resource/deploy_spec.rb +2 -2
  586. data/spec/unit/resource/dsc_script_spec.rb +32 -0
  587. data/spec/unit/resource/execute_spec.rb +4 -0
  588. data/spec/unit/resource/file/verification_spec.rb +111 -0
  589. data/spec/unit/resource/file_spec.rb +14 -0
  590. data/spec/unit/resource/openbsd_package_spec.rb +49 -0
  591. data/spec/unit/resource/remote_file_spec.rb +12 -12
  592. data/spec/unit/resource/resource_notification_spec.rb +18 -18
  593. data/spec/unit/resource/rpm_package_spec.rb +12 -0
  594. data/spec/unit/resource/scm_spec.rb +4 -4
  595. data/spec/unit/resource/script_spec.rb +3 -5
  596. data/spec/unit/resource/subversion_spec.rb +1 -1
  597. data/spec/unit/resource_builder_spec.rb +1 -0
  598. data/spec/unit/resource_collection/resource_list_spec.rb +2 -2
  599. data/spec/unit/resource_collection/resource_set_spec.rb +3 -3
  600. data/spec/unit/resource_collection/stepable_iterator_spec.rb +24 -24
  601. data/spec/unit/resource_collection_spec.rb +52 -52
  602. data/spec/unit/resource_definition_spec.rb +1 -1
  603. data/spec/unit/resource_reporter_spec.rb +118 -118
  604. data/spec/unit/resource_spec.rb +131 -125
  605. data/spec/unit/rest/auth_credentials_spec.rb +73 -73
  606. data/spec/unit/rest_spec.rb +12 -12
  607. data/spec/unit/role_spec.rb +85 -84
  608. data/spec/unit/run_context/cookbook_compiler_spec.rb +18 -18
  609. data/spec/unit/run_context_spec.rb +39 -68
  610. data/spec/unit/run_list/run_list_expansion_spec.rb +21 -21
  611. data/spec/unit/run_list/run_list_item_spec.rb +28 -28
  612. data/spec/unit/run_list/versioned_recipe_list_spec.rb +14 -14
  613. data/spec/unit/run_list_spec.rb +55 -55
  614. data/spec/unit/run_lock_spec.rb +14 -14
  615. data/spec/unit/run_status_spec.rb +24 -24
  616. data/spec/unit/scan_access_control_spec.rb +23 -23
  617. data/spec/unit/search/query_spec.rb +54 -66
  618. data/spec/unit/shell/model_wrapper_spec.rb +13 -13
  619. data/spec/unit/shell/shell_ext_spec.rb +32 -32
  620. data/spec/unit/shell/shell_session_spec.rb +24 -24
  621. data/spec/unit/shell_out_spec.rb +4 -4
  622. data/spec/unit/shell_spec.rb +27 -27
  623. data/spec/unit/user_spec.rb +50 -50
  624. data/spec/unit/util/backup_spec.rb +32 -32
  625. data/spec/unit/util/diff_spec.rb +31 -31
  626. data/spec/unit/util/dsc/configuration_generator_spec.rb +38 -16
  627. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +21 -26
  628. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +10 -10
  629. data/spec/unit/util/editor_spec.rb +10 -10
  630. data/spec/unit/util/file_edit_spec.rb +10 -10
  631. data/spec/unit/util/path_helper_spec.rb +38 -46
  632. data/spec/unit/util/powershell/cmdlet_spec.rb +9 -9
  633. data/spec/unit/util/selinux_spec.rb +30 -30
  634. data/spec/unit/util/threaded_job_queue_spec.rb +6 -6
  635. data/spec/unit/version/platform_spec.rb +5 -5
  636. data/spec/unit/version_class_spec.rb +15 -15
  637. data/spec/unit/version_constraint/platform_spec.rb +7 -7
  638. data/spec/unit/version_constraint_spec.rb +43 -43
  639. data/spec/unit/windows_service_spec.rb +15 -15
  640. data/spec/unit/workstation_config_loader_spec.rb +2 -2
  641. data/tasks/rspec.rb +16 -18
  642. metadata +126 -49
  643. data/bin/shef +0 -35
  644. data/lib/chef/application/agent.rb +0 -18
  645. data/lib/chef/monkey_patches/fileutils.rb +0 -65
  646. data/lib/chef/monkey_patches/numeric.rb +0 -15
  647. data/lib/chef/monkey_patches/object.rb +0 -9
  648. data/lib/chef/monkey_patches/pathname.rb +0 -32
  649. data/lib/chef/monkey_patches/regexp.rb +0 -34
  650. data/lib/chef/monkey_patches/securerandom.rb +0 -44
  651. data/lib/chef/monkey_patches/string.rb +0 -49
  652. data/lib/chef/monkey_patches/tempfile.rb +0 -64
  653. data/lib/chef/monkey_patches/uri.rb +0 -70
@@ -41,7 +41,7 @@ describe Chef::Provider::Service::Insserv do
41
41
 
42
42
  it "sets the current enabled status to true" do
43
43
  @provider.load_current_resource
44
- expect(@provider.current_resource.enabled).to be_true
44
+ expect(@provider.current_resource.enabled).to be_truthy
45
45
  end
46
46
  end
47
47
 
@@ -52,7 +52,7 @@ describe Chef::Provider::Service::Insserv do
52
52
 
53
53
  it "sets the current enabled status to false" do
54
54
  @provider.load_current_resource
55
- expect(@provider.current_resource.enabled).to be_false
55
+ expect(@provider.current_resource.enabled).to be_falsey
56
56
  end
57
57
  end
58
58
 
@@ -64,20 +64,20 @@ PS
64
64
  it "should set running to true if the status command returns 0" do
65
65
  allow(@provider).to receive(:shell_out).with("/usr/sbin/invoke-rc.d #{@current_resource.service_name} status").and_return(@status)
66
66
  @provider.load_current_resource
67
- expect(@current_resource.running).to be_true
67
+ expect(@current_resource.running).to be_truthy
68
68
  end
69
69
 
70
70
  it "should set running to false if the status command returns anything except 0" do
71
71
  allow(@status).to receive(:exitstatus).and_return(1)
72
72
  allow(@provider).to receive(:shell_out).with("/usr/sbin/invoke-rc.d #{@current_resource.service_name} status").and_return(@status)
73
73
  @provider.load_current_resource
74
- expect(@current_resource.running).to be_false
74
+ expect(@current_resource.running).to be_falsey
75
75
  end
76
76
 
77
77
  it "should set running to false if the status command raises" do
78
78
  allow(@provider).to receive(:shell_out).with("/usr/sbin/invoke-rc.d #{@current_resource.service_name} status").and_raise(Mixlib::ShellOut::ShellCommandFailed)
79
79
  @provider.load_current_resource
80
- expect(@current_resource.running).to be_false
80
+ expect(@current_resource.running).to be_falsey
81
81
  end
82
82
  end
83
83
 
@@ -125,14 +125,14 @@ RUNNING_PS
125
125
  @status = double("Status", :exitstatus => 0, :stdout => @stdout)
126
126
  expect(@provider).to receive(:shell_out!).and_return(@status)
127
127
  @provider.load_current_resource
128
- expect(@current_resource.running).to be_true
128
+ expect(@current_resource.running).to be_truthy
129
129
  end
130
130
 
131
131
  it "should set running to false if the regex doesn't match" do
132
132
  @status = double("Status", :exitstatus => 0, :stdout => @stdout)
133
133
  expect(@provider).to receive(:shell_out!).and_return(@status)
134
134
  @provider.load_current_resource
135
- expect(@current_resource.running).to be_false
135
+ expect(@current_resource.running).to be_falsey
136
136
  end
137
137
 
138
138
  it "should raise an exception if ps fails" do
@@ -130,11 +130,11 @@ XML
130
130
  end
131
131
 
132
132
  it "sets resource running state to true" do
133
- expect(provider.current_resource.running).to be_true
133
+ expect(provider.current_resource.running).to be_truthy
134
134
  end
135
135
 
136
136
  it "sets resouce enabled state to true" do
137
- expect(provider.current_resource.enabled).to be_true
137
+ expect(provider.current_resource.enabled).to be_truthy
138
138
  end
139
139
  end
140
140
 
@@ -164,11 +164,11 @@ SVC_LIST
164
164
  end
165
165
 
166
166
  it "sets resource running state to false" do
167
- expect(provider.current_resource.running).to be_false
167
+ expect(provider.current_resource.running).to be_falsey
168
168
  end
169
169
 
170
170
  it "sets resouce enabled state to true" do
171
- expect(provider.current_resource.enabled).to be_true
171
+ expect(provider.current_resource.enabled).to be_truthy
172
172
  end
173
173
  end
174
174
 
@@ -180,7 +180,7 @@ SVC_LIST
180
180
 
181
181
  it "sets service running state to false" do
182
182
  provider.load_current_resource
183
- expect(provider.current_resource.running).to be_false
183
+ expect(provider.current_resource.running).to be_falsey
184
184
  end
185
185
 
186
186
  context "and plist for service is not available" do
@@ -190,7 +190,7 @@ SVC_LIST
190
190
  end
191
191
 
192
192
  it "sets resouce enabled state to false" do
193
- expect(provider.current_resource.enabled).to be_false
193
+ expect(provider.current_resource.enabled).to be_falsey
194
194
  end
195
195
  end
196
196
 
@@ -201,7 +201,7 @@ SVC_LIST
201
201
  end
202
202
 
203
203
  it "sets resouce enabled state to true" do
204
- expect(provider.current_resource.enabled).to be_true
204
+ expect(provider.current_resource.enabled).to be_truthy
205
205
  end
206
206
  end
207
207
 
@@ -0,0 +1,543 @@
1
+ #
2
+ # Author:: Bryan McLellan (btm@loftninjas.org)
3
+ # Author:: Scott Bonds (scott@ggr.com)
4
+ # Copyright:: Copyright (c) 2009 Bryan McLellan
5
+ # Copyright:: Copyright (c) 2014 Scott Bonds
6
+ # License:: Apache License, Version 2.0
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+ #
20
+
21
+ require 'spec_helper'
22
+
23
+ class Chef::Provider::Service::Openbsd
24
+ public :builtin_service_enable_variable_name
25
+ public :determine_enabled_status!
26
+ public :determine_current_status!
27
+ public :is_enabled?
28
+ attr_accessor :rc_conf, :rc_conf_local
29
+ end
30
+
31
+ describe Chef::Provider::Service::Openbsd do
32
+ let(:node) do
33
+ node = Chef::Node.new
34
+ node.automatic_attrs[:command] = {:ps => "ps -ax"}
35
+ node
36
+ end
37
+
38
+ let(:new_resource) do
39
+ new_resource = Chef::Resource::Service.new("sndiod")
40
+ new_resource.pattern("sndiod")
41
+ new_resource.supports({:status => false})
42
+ new_resource
43
+ end
44
+
45
+ let(:current_resource) do
46
+ current_resource = Chef::Resource::Service.new("sndiod")
47
+ current_resource
48
+ end
49
+
50
+ let(:provider) do
51
+ events = Chef::EventDispatch::Dispatcher.new
52
+ run_context = Chef::RunContext.new(node, {}, events)
53
+ allow(::File).to receive(:read).with('/etc/rc.conf').and_return('')
54
+ allow(::File).to receive(:read).with('/etc/rc.conf.local').and_return('')
55
+ provider = Chef::Provider::Service::Openbsd.new(new_resource,run_context)
56
+ provider.action = :start
57
+ provider
58
+ end
59
+
60
+ before do
61
+ allow(Chef::Resource::Service).to receive(:new).and_return(current_resource)
62
+ end
63
+
64
+ def stub_etc_rcd_script
65
+ allow(::File).to receive(:exist?).and_return(false)
66
+ expect(::File).to receive(:exist?).with("/etc/rc.d/#{new_resource.service_name}").and_return(true)
67
+ end
68
+
69
+ def run_load_current_resource
70
+ stub_etc_rcd_script
71
+ provider.load_current_resource
72
+ end
73
+
74
+ describe Chef::Provider::Service::Openbsd, "initialize" do
75
+ it "should find /etc/rc.d init scripts" do
76
+ stub_etc_rcd_script
77
+ expect(provider.init_command).to eql "/etc/rc.d/sndiod"
78
+ end
79
+
80
+ it "should set init_command to nil if it can't find anything" do
81
+ expect(::File).to receive(:exist?).with('/etc/rc.d/sndiod').and_return(false)
82
+ expect(provider.init_command).to be nil
83
+ end
84
+ end
85
+
86
+ describe Chef::Provider::Service::Openbsd, "determine_current_status!" do
87
+ before do
88
+ stub_etc_rcd_script
89
+ provider.current_resource = current_resource
90
+ current_resource.service_name(new_resource.service_name)
91
+ end
92
+
93
+ context "when a status command has been specified" do
94
+ let(:status) { double(:stdout => "", :exitstatus => 0) }
95
+
96
+ before do
97
+ new_resource.status_command("/bin/chefhasmonkeypants status")
98
+ end
99
+
100
+ it "should run the services status command if one has been specified" do
101
+ expect(provider).to receive(:shell_out).with("/bin/chefhasmonkeypants status").and_return(status)
102
+ provider.determine_current_status!
103
+ end
104
+ end
105
+
106
+ context "when the service supports status" do
107
+ let(:status) { double(:stdout => "", :exitstatus => 0) }
108
+
109
+ before do
110
+ new_resource.supports({:status => true})
111
+ end
112
+
113
+ it "should run '/etc/rc.d/service_name status'" do
114
+ expect(provider).to receive(:shell_out).with("/etc/rc.d/#{new_resource.service_name} check").and_return(status)
115
+ provider.determine_current_status!
116
+ end
117
+
118
+ it "should set running to true if the status command returns 0" do
119
+ expect(provider).to receive(:shell_out).with("/etc/rc.d/#{new_resource.service_name} check").and_return(status)
120
+ provider.determine_current_status!
121
+ expect(current_resource.running).to be true
122
+ end
123
+
124
+ it "should set running to false if the status command returns anything except 0" do
125
+ expect(provider).to receive(:shell_out).with("/etc/rc.d/#{new_resource.service_name} check").and_raise(Mixlib::ShellOut::ShellCommandFailed)
126
+ provider.determine_current_status!
127
+ expect(current_resource.running).to be false
128
+ end
129
+ end
130
+ end
131
+
132
+ describe Chef::Provider::Service::Openbsd, "determine_enabled_status!" do
133
+ before do
134
+ stub_etc_rcd_script
135
+ provider.current_resource = current_resource
136
+ current_resource.service_name(new_resource.service_name)
137
+
138
+ allow(provider).to receive(:service_enable_variable_name).and_return("#{new_resource.service_name}_enable")
139
+ end
140
+
141
+ context "when the service is builtin" do
142
+ before do
143
+ expect(::File).to receive(:open).with("/etc/rc.d/#{new_resource.service_name}")
144
+ provider.rc_conf = "#{provider.builtin_service_enable_variable_name}=NO"
145
+ provider.rc_conf_local = lines.join("\n")
146
+ end
147
+
148
+ %w{YES Yes yes yEs YeS}.each do |setting|
149
+ context "when the enable variable is set to #{setting}" do
150
+ let(:lines) { [ %Q{#{provider.builtin_service_enable_variable_name}="#{setting}"} ] }
151
+ it "sets enabled to true" do
152
+ provider.determine_enabled_status!
153
+ expect(current_resource.enabled).to be true
154
+ end
155
+ end
156
+ end
157
+
158
+ %w{No NO no nO None NONE none nOnE}.each do |setting|
159
+ context "when the enable variable is set to #{setting}" do
160
+ let(:lines) { [ %Q{#{provider.builtin_service_enable_variable_name}="#{setting}"} ] }
161
+ it "sets enabled to false" do
162
+ provider.determine_enabled_status!
163
+ expect(current_resource.enabled).to be false
164
+ end
165
+ end
166
+ end
167
+
168
+ context "when the enable variable is garbage" do
169
+ let(:lines) { [ %Q{#{provider.builtin_service_enable_variable_name}_enable="alskdjflasdkjflakdfj"} ] }
170
+ it "sets enabled to false" do
171
+ provider.determine_enabled_status!
172
+ expect(current_resource.enabled).to be false
173
+ end
174
+ end
175
+
176
+ context "when the enable variable partial matches (left) some other service and we are disabled" do
177
+ let(:lines) { [
178
+ %Q{thing_#{provider.builtin_service_enable_variable_name}="YES"},
179
+ %Q{#{provider.builtin_service_enable_variable_name}="NO"},
180
+ ] }
181
+ it "sets enabled based on the exact match (false)" do
182
+ provider.determine_enabled_status!
183
+ expect(current_resource.enabled).to be false
184
+ end
185
+ end
186
+
187
+ context "when the enable variable partial matches (right) some other service and we are disabled" do
188
+ let(:lines) { [
189
+ %Q{#{provider.builtin_service_enable_variable_name}_thing="YES"},
190
+ %Q{#{provider.builtin_service_enable_variable_name}},
191
+ ] }
192
+ it "sets enabled based on the exact match (false)" do
193
+ provider.determine_enabled_status!
194
+ expect(current_resource.enabled).to be false
195
+ end
196
+ end
197
+
198
+ context "when the enable variable partial matches (left) some other disabled service and we are enabled" do
199
+ let(:lines) { [
200
+ %Q{thing_#{provider.builtin_service_enable_variable_name}="NO"},
201
+ %Q{#{provider.builtin_service_enable_variable_name}="YES"},
202
+ ] }
203
+ it "sets enabled based on the exact match (true)" do
204
+ provider.determine_enabled_status!
205
+ expect(current_resource.enabled).to be true
206
+ end
207
+ end
208
+
209
+ context "when the enable variable partial matches (right) some other disabled service and we are enabled" do
210
+ let(:lines) { [
211
+ %Q{#{provider.builtin_service_enable_variable_name}_thing="NO"},
212
+ %Q{#{provider.builtin_service_enable_variable_name}="YES"},
213
+ ] }
214
+ it "sets enabled based on the exact match (true)" do
215
+ provider.determine_enabled_status!
216
+ expect(current_resource.enabled).to be true
217
+ end
218
+ end
219
+
220
+ context "when the enable variable only partial matches (left) some other enabled service" do
221
+ let(:lines) { [ %Q{thing_#{provider.builtin_service_enable_variable_name}_enable="YES"} ] }
222
+ it "sets enabled to false" do
223
+ provider.determine_enabled_status!
224
+ expect(current_resource.enabled).to be false
225
+ end
226
+ end
227
+
228
+ context "when the enable variable only partial matches (right) some other enabled service" do
229
+ let(:lines) { [ %Q{#{provider.builtin_service_enable_variable_name}_thing_enable="YES"} ] }
230
+ it "sets enabled to false" do
231
+ provider.determine_enabled_status!
232
+ expect(current_resource.enabled).to be false
233
+ end
234
+ end
235
+
236
+ context "when nothing matches" do
237
+ let(:lines) { [] }
238
+ it "sets enabled to true" do
239
+ provider.determine_enabled_status!
240
+ expect(current_resource.enabled).to be false
241
+ end
242
+ end
243
+ end
244
+ end
245
+
246
+ describe Chef::Provider::Service::Openbsd, "load_current_resource" do
247
+ before(:each) do
248
+ stub_etc_rcd_script
249
+ expect(provider).to receive(:determine_current_status!)
250
+ current_resource.running(false)
251
+ allow(provider).to receive(:service_enable_variable_name).and_return "#{new_resource.service_name}_enable"
252
+ expect(::File).to receive(:open).with("/etc/rc.d/#{new_resource.service_name}")
253
+ end
254
+
255
+ it "should create a current resource with the name of the new resource" do
256
+ expect(Chef::Resource::Service).to receive(:new).and_return(current_resource)
257
+ provider.load_current_resource
258
+ end
259
+
260
+ it "should set the current resources service name to the new resources service name" do
261
+ provider.load_current_resource
262
+ expect(current_resource.service_name).to eq(new_resource.service_name)
263
+ end
264
+
265
+ it "should return the current resource" do
266
+ expect(provider.load_current_resource).to eql(current_resource)
267
+ end
268
+
269
+ end
270
+
271
+ context "when testing actions" do
272
+ before(:each) do
273
+ stub_etc_rcd_script
274
+ expect(provider).to receive(:determine_current_status!)
275
+ current_resource.running(false)
276
+ expect(provider).to receive(:determine_enabled_status!)
277
+ current_resource.enabled(false)
278
+ provider.load_current_resource
279
+ end
280
+
281
+ describe Chef::Provider::Service::Openbsd, "start_service" do
282
+ it "should call the start command if one is specified" do
283
+ new_resource.start_command("/etc/rc.d/chef startyousillysally")
284
+ expect(provider).to receive(:shell_out_with_systems_locale!).with("/etc/rc.d/chef startyousillysally")
285
+ provider.start_service()
286
+ end
287
+
288
+ it "should call '/usr/local/etc/rc.d/service_name start' if no start command is specified" do
289
+ expect(provider).to receive(:shell_out_with_systems_locale!).with("/etc/rc.d/#{new_resource.service_name} start")
290
+ provider.start_service()
291
+ end
292
+ end
293
+
294
+ describe Chef::Provider::Service::Openbsd, "stop_service" do
295
+ it "should call the stop command if one is specified" do
296
+ new_resource.stop_command("/etc/init.d/chef itoldyoutostop")
297
+ expect(provider).to receive(:shell_out_with_systems_locale!).with("/etc/init.d/chef itoldyoutostop")
298
+ provider.stop_service()
299
+ end
300
+
301
+ it "should call '/usr/local/etc/rc.d/service_name stop' if no stop command is specified" do
302
+ expect(provider).to receive(:shell_out_with_systems_locale!).with("/etc/rc.d/#{new_resource.service_name} stop")
303
+ provider.stop_service()
304
+ end
305
+ end
306
+
307
+ describe Chef::Provider::Service::Openbsd, "restart_service" do
308
+ it "should call 'restart' on the service_name if the resource supports it" do
309
+ new_resource.supports({:restart => true})
310
+ expect(provider).to receive(:shell_out_with_systems_locale!).with("/etc/rc.d/#{new_resource.service_name} restart")
311
+ provider.restart_service()
312
+ end
313
+
314
+ it "should call the restart_command if one has been specified" do
315
+ new_resource.restart_command("/etc/init.d/chef restartinafire")
316
+ expect(provider).to receive(:shell_out_with_systems_locale!).with("/etc/init.d/chef restartinafire")
317
+ provider.restart_service()
318
+ end
319
+
320
+ it "otherwise it should call stop and start" do
321
+ expect(provider).to receive(:stop_service)
322
+ expect(provider).to receive(:start_service)
323
+ provider.restart_service()
324
+ end
325
+ end
326
+ end
327
+
328
+ describe Chef::Provider::Service::Openbsd, "define_resource_requirements" do
329
+ before do
330
+ provider.current_resource = current_resource
331
+ end
332
+
333
+ context "when the init script is not found" do
334
+ before do
335
+ provider.init_command = nil
336
+ allow(provider).to receive(:builtin_service_enable_variable_name).and_return("#{new_resource.service_name}_enable")
337
+ end
338
+
339
+ [ "start", "reload", "restart", "enable" ].each do |action|
340
+ it "should raise an exception when the action is #{action}" do
341
+ provider.define_resource_requirements
342
+ provider.action = action
343
+ expect { provider.process_resource_requirements }.to raise_error(Chef::Exceptions::Service)
344
+ end
345
+ end
346
+
347
+ [ "stop", "disable" ].each do |action|
348
+ it "should not raise an error when the action is #{action}" do
349
+ provider.define_resource_requirements
350
+ provider.action = action
351
+ expect { provider.process_resource_requirements }.not_to raise_error
352
+ end
353
+ end
354
+ end
355
+
356
+ context "when the init script is found, but the service_enable_variable_name is nil" do
357
+ before do
358
+ allow(provider).to receive(:builtin_service_enable_variable_name).and_return(nil)
359
+ end
360
+
361
+ [ "start", "reload", "restart", "enable" ].each do |action|
362
+ it "should raise an exception when the action is #{action}" do
363
+ provider.action = action
364
+ provider.define_resource_requirements
365
+ expect { provider.process_resource_requirements }.to raise_error(Chef::Exceptions::Service)
366
+ end
367
+ end
368
+
369
+ [ "stop", "disable" ].each do |action|
370
+ it "should not raise an error when the action is #{action}" do
371
+ provider.action = action
372
+ provider.define_resource_requirements
373
+ expect { provider.process_resource_requirements }.not_to raise_error
374
+ end
375
+ end
376
+ end
377
+ end
378
+
379
+ describe Chef::Provider::Service::Openbsd, "enable_service" do
380
+ before do
381
+ provider.current_resource = current_resource
382
+ allow(FileUtils).to receive(:touch).with('/etc/rc.conf.local')
383
+ end
384
+ context "is builtin and disabled by default" do
385
+ before do
386
+ provider.rc_conf = "#{provider.builtin_service_enable_variable_name}=NO"
387
+ end
388
+ context "is enabled" do
389
+ before do
390
+ provider.rc_conf_local = "#{provider.builtin_service_enable_variable_name}=\"\""
391
+ end
392
+ it "should not change rc.conf.local since it is already enabled" do
393
+ expect(::File).not_to receive(:write)
394
+ provider.enable_service
395
+ end
396
+ end
397
+ context "is disabled" do
398
+ before do
399
+ provider.rc_conf_local = ''
400
+ end
401
+ it "should enable the service by adding a line to rc.conf.local" do
402
+ expect(::File).to receive(:write).with('/etc/rc.conf.local', include("#{provider.builtin_service_enable_variable_name}=\"\""))
403
+ expect(provider.is_enabled?).to be false
404
+ provider.enable_service
405
+ expect(provider.is_enabled?).to be true
406
+ end
407
+ end
408
+ end
409
+ context "is builtin and enabled by default" do
410
+ before do
411
+ provider.rc_conf = "#{provider.builtin_service_enable_variable_name}=\"\""
412
+ end
413
+ context "is enabled" do
414
+ before do
415
+ provider.rc_conf_local = ''
416
+ end
417
+ it "should not change rc.conf.local since it is already enabled" do
418
+ expect(::File).not_to receive(:write)
419
+ provider.enable_service
420
+ end
421
+ end
422
+ context "is disabled" do
423
+ before do
424
+ provider.rc_conf_local = "#{provider.builtin_service_enable_variable_name}=NO"
425
+ end
426
+ it "should enable the service by removing a line from rc.conf.local" do
427
+ expect(::File).to receive(:write).with('/etc/rc.conf.local', /^(?!#{provider.builtin_service_enable_variable_name})$/)
428
+ expect(provider.is_enabled?).to be false
429
+ provider.enable_service
430
+ expect(provider.is_enabled?).to be true
431
+ end
432
+ end
433
+ end
434
+ context "is not builtin" do
435
+ before do
436
+ provider.rc_conf = ''
437
+ end
438
+ context "is enabled" do
439
+ before do
440
+ provider.rc_conf_local = "pkg_scripts=\"#{new_resource.service_name}\"\n"
441
+ end
442
+ it "should not change rc.conf.local since it is already enabled" do
443
+ expect(::File).not_to receive(:write)
444
+ provider.enable_service
445
+ end
446
+ end
447
+ context "is disabled" do
448
+ before do
449
+ provider.rc_conf_local = ''
450
+ end
451
+ it "should enable the service by adding it to the pkg_scripts list" do
452
+ expect(::File).to receive(:write).with('/etc/rc.conf.local', "\npkg_scripts=\"#{new_resource.service_name}\"\n")
453
+ expect(provider.is_enabled?).to be false
454
+ provider.enable_service
455
+ expect(provider.is_enabled?).to be true
456
+ end
457
+ end
458
+ end
459
+ end
460
+
461
+ describe Chef::Provider::Service::Openbsd, "disable_service" do
462
+ before do
463
+ provider.current_resource = current_resource
464
+ allow(FileUtils).to receive(:touch).with('/etc/rc.conf.local')
465
+ end
466
+ context "is builtin and disabled by default" do
467
+ before do
468
+ provider.rc_conf = "#{provider.builtin_service_enable_variable_name}=NO"
469
+ end
470
+ context "is enabled" do
471
+ before do
472
+ provider.rc_conf_local = "#{provider.builtin_service_enable_variable_name}=\"\""
473
+ end
474
+ it "should disable the service by removing its line from rc.conf.local" do
475
+ expect(::File).to receive(:write).with('/etc/rc.conf.local', /^(?!#{provider.builtin_service_enable_variable_name})$/)
476
+ expect(provider.is_enabled?).to be true
477
+ provider.disable_service
478
+ expect(provider.is_enabled?).to be false
479
+ end
480
+ end
481
+ context "is disabled" do
482
+ before do
483
+ provider.rc_conf_local = ''
484
+ end
485
+ it "should not change rc.conf.local since it is already disabled" do
486
+ expect(::File).not_to receive(:write)
487
+ provider.disable_service
488
+ end
489
+ end
490
+ end
491
+ context "is builtin and enabled by default" do
492
+ before do
493
+ provider.rc_conf = "#{provider.builtin_service_enable_variable_name}=\"\""
494
+ end
495
+ context "is enabled" do
496
+ before do
497
+ provider.rc_conf_local = ''
498
+ end
499
+ it "should disable the service by adding a line to rc.conf.local" do
500
+ expect(::File).to receive(:write).with('/etc/rc.conf.local', include("#{provider.builtin_service_enable_variable_name}=\"NO\""))
501
+ expect(provider.is_enabled?).to be true
502
+ provider.disable_service
503
+ expect(provider.is_enabled?).to be false
504
+ end
505
+ end
506
+ context "is disabled" do
507
+ before do
508
+ provider.rc_conf_local = "#{provider.builtin_service_enable_variable_name}=NO"
509
+ end
510
+ it "should not change rc.conf.local since it is already disabled" do
511
+ expect(::File).not_to receive(:write)
512
+ provider.disable_service
513
+ end
514
+ end
515
+ end
516
+ context "is not builtin" do
517
+ before do
518
+ provider.rc_conf = ''
519
+ end
520
+ context "is enabled" do
521
+ before do
522
+ provider.rc_conf_local = "pkg_scripts=\"#{new_resource.service_name}\"\n"
523
+ end
524
+ it "should disable the service by removing it from the pkg_scripts list" do
525
+ expect(::File).to receive(:write).with('/etc/rc.conf.local', /^(?!#{new_resource.service_name})$/)
526
+ expect(provider.is_enabled?).to be true
527
+ provider.disable_service
528
+ expect(provider.is_enabled?).to be false
529
+ end
530
+ end
531
+ context "is disabled" do
532
+ before do
533
+ provider.rc_conf_local = ''
534
+ end
535
+ it "should not change rc.conf.local since it is already disabled" do
536
+ expect(::File).not_to receive(:write)
537
+ provider.disable_service
538
+ end
539
+ end
540
+ end
541
+ end
542
+
543
+ end