chef 12.0.0.alpha.2 → 12.0.0.rc.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (626) hide show
  1. data/CONTRIBUTING.md +9 -0
  2. data/README.md +1 -1
  3. data/Rakefile +12 -0
  4. data/bin/chef-service-manager +1 -1
  5. data/bin/chef-windows-service +35 -0
  6. data/distro/common/html/_sources/ctl_chef_server.txt +307 -10
  7. data/distro/common/html/ctl_chef_client.html +3 -7
  8. data/distro/common/html/ctl_chef_server.html +609 -41
  9. data/distro/common/html/ctl_chef_shell.html +2 -2
  10. data/distro/common/html/ctl_chef_solo.html +1 -1
  11. data/distro/common/html/index.html +13 -13
  12. data/distro/common/html/knife.html +10 -10
  13. data/distro/common/html/knife_bootstrap.html +8 -8
  14. data/distro/common/html/knife_client.html +12 -12
  15. data/distro/common/html/knife_common_options.html +7 -7
  16. data/distro/common/html/knife_configure.html +3 -3
  17. data/distro/common/html/knife_cookbook.html +19 -19
  18. data/distro/common/html/knife_cookbook_site.html +28 -28
  19. data/distro/common/html/knife_data_bag.html +28 -13
  20. data/distro/common/html/knife_delete.html +2 -2
  21. data/distro/common/html/knife_deps.html +3 -3
  22. data/distro/common/html/knife_diff.html +4 -4
  23. data/distro/common/html/knife_download.html +3 -3
  24. data/distro/common/html/knife_edit.html +2 -2
  25. data/distro/common/html/knife_environment.html +14 -14
  26. data/distro/common/html/knife_exec.html +11 -11
  27. data/distro/common/html/knife_index_rebuild.html +2 -2
  28. data/distro/common/html/knife_list.html +3 -3
  29. data/distro/common/html/knife_node.html +23 -23
  30. data/distro/common/html/knife_raw.html +4 -4
  31. data/distro/common/html/knife_recipe_list.html +3 -3
  32. data/distro/common/html/knife_role.html +11 -11
  33. data/distro/common/html/knife_search.html +4 -4
  34. data/distro/common/html/knife_serve.html +3 -3
  35. data/distro/common/html/knife_show.html +3 -3
  36. data/distro/common/html/knife_ssh.html +7 -7
  37. data/distro/common/html/knife_ssl_check.html +7 -7
  38. data/distro/common/html/knife_ssl_fetch.html +9 -9
  39. data/distro/common/html/knife_status.html +3 -3
  40. data/distro/common/html/knife_tag.html +9 -9
  41. data/distro/common/html/knife_upload.html +3 -3
  42. data/distro/common/html/knife_user.html +9 -9
  43. data/distro/common/html/knife_using.html +11 -11
  44. data/distro/common/html/knife_xargs.html +14 -5
  45. data/distro/common/html/search.html +2 -2
  46. data/distro/common/html/searchindex.js +1 -1
  47. data/distro/common/man/man1/chef-shell.1 +2 -2
  48. data/distro/common/man/man1/knife-bootstrap.1 +7 -7
  49. data/distro/common/man/man1/knife-client.1 +10 -10
  50. data/distro/common/man/man1/knife-configure.1 +5 -5
  51. data/distro/common/man/man1/knife-cookbook-site.1 +24 -24
  52. data/distro/common/man/man1/knife-cookbook.1 +12 -12
  53. data/distro/common/man/man1/knife-data-bag.1 +34 -10
  54. data/distro/common/man/man1/knife-delete.1 +5 -5
  55. data/distro/common/man/man1/knife-deps.1 +5 -5
  56. data/distro/common/man/man1/knife-diff.1 +7 -7
  57. data/distro/common/man/man1/knife-download.1 +5 -5
  58. data/distro/common/man/man1/knife-edit.1 +5 -5
  59. data/distro/common/man/man1/knife-environment.1 +11 -11
  60. data/distro/common/man/man1/knife-exec.1 +11 -11
  61. data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
  62. data/distro/common/man/man1/knife-list.1 +5 -5
  63. data/distro/common/man/man1/knife-node.1 +16 -16
  64. data/distro/common/man/man1/knife-raw.1 +6 -6
  65. data/distro/common/man/man1/knife-recipe-list.1 +1 -1
  66. data/distro/common/man/man1/knife-role.1 +7 -7
  67. data/distro/common/man/man1/knife-search.1 +6 -6
  68. data/distro/common/man/man1/knife-serve.1 +6 -6
  69. data/distro/common/man/man1/knife-show.1 +5 -5
  70. data/distro/common/man/man1/knife-ssh.1 +9 -9
  71. data/distro/common/man/man1/knife-ssl-check.1 +7 -7
  72. data/distro/common/man/man1/knife-ssl-fetch.1 +9 -9
  73. data/distro/common/man/man1/knife-status.1 +5 -5
  74. data/distro/common/man/man1/knife-tag.1 +8 -8
  75. data/distro/common/man/man1/knife-upload.1 +5 -5
  76. data/distro/common/man/man1/knife-user.1 +8 -8
  77. data/distro/common/man/man1/knife-xargs.1 +36 -10
  78. data/distro/common/man/man1/knife.1 +14 -14
  79. data/distro/common/man/man8/chef-client.8 +3 -10
  80. data/distro/common/man/man8/chef-solo.8 +1 -1
  81. data/lib/chef/application.rb +313 -241
  82. data/lib/chef/application/apply.rb +10 -8
  83. data/lib/chef/application/client.rb +58 -33
  84. data/lib/chef/application/solo.rb +33 -12
  85. data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
  86. data/lib/chef/chef_fs/command_line.rb +1 -1
  87. data/lib/chef/chef_fs/file_system/organization_invites_entry.rb +2 -1
  88. data/lib/chef/chef_fs/file_system/organization_members_entry.rb +2 -1
  89. data/lib/chef/chef_fs/file_system/rest_list_entry.rb +2 -1
  90. data/lib/chef/client.rb +18 -48
  91. data/lib/chef/config.rb +43 -11
  92. data/lib/chef/cookbook/cookbook_version_loader.rb +14 -7
  93. data/lib/chef/cookbook/metadata.rb +81 -38
  94. data/lib/chef/cookbook/syntax_check.rb +18 -52
  95. data/lib/chef/cookbook_loader.rb +1 -1
  96. data/lib/chef/cookbook_version.rb +58 -39
  97. data/lib/chef/data_bag.rb +2 -2
  98. data/lib/chef/deprecation/provider/file.rb +2 -1
  99. data/lib/chef/dsl/data_query.rb +2 -29
  100. data/lib/chef/dsl/recipe.rb +8 -22
  101. data/lib/chef/encrypted_data_bag_item/assertions.rb +1 -1
  102. data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -0
  103. data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +1 -1
  104. data/lib/chef/event_loggers/base.rb +62 -0
  105. data/lib/chef/event_loggers/windows_eventlog.rb +104 -0
  106. data/lib/chef/exceptions.rb +18 -1
  107. data/lib/chef/file_cache.rb +3 -2
  108. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +15 -6
  109. data/lib/chef/http.rb +20 -13
  110. data/lib/chef/http/ssl_policies.rb +2 -1
  111. data/lib/chef/json_compat.rb +9 -3
  112. data/lib/chef/knife.rb +2 -1
  113. data/lib/chef/knife/bootstrap.rb +12 -18
  114. data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
  115. data/lib/chef/knife/bootstrap/chef-aix.erb +2 -2
  116. data/lib/chef/knife/bootstrap/chef-full.erb +2 -2
  117. data/lib/chef/knife/cookbook_create.rb +1 -1
  118. data/lib/chef/knife/cookbook_site_share.rb +43 -8
  119. data/lib/chef/knife/core/bootstrap_context.rb +6 -11
  120. data/lib/chef/knife/core/object_loader.rb +5 -5
  121. data/lib/chef/knife/core/status_presenter.rb +156 -0
  122. data/lib/chef/knife/core/subcommand_loader.rb +6 -5
  123. data/lib/chef/knife/core/ui.rb +4 -4
  124. data/lib/chef/knife/data_bag_create.rb +7 -32
  125. data/lib/chef/knife/data_bag_edit.rb +24 -43
  126. data/lib/chef/knife/data_bag_from_file.rb +6 -31
  127. data/lib/chef/knife/data_bag_secret_options.rb +142 -0
  128. data/lib/chef/knife/data_bag_show.rb +19 -33
  129. data/lib/chef/knife/node_from_file.rb +9 -8
  130. data/lib/chef/knife/ssh.rb +0 -7
  131. data/lib/chef/knife/ssl_check.rb +70 -6
  132. data/lib/chef/knife/status.rb +11 -58
  133. data/lib/chef/mixin/command/unix.rb +2 -2
  134. data/lib/chef/mixin/convert_to_class_name.rb +54 -0
  135. data/lib/chef/mixin/descendants_tracker.rb +82 -0
  136. data/lib/chef/mixin/homebrew_user.rb +68 -0
  137. data/lib/chef/mixin/shell_out.rb +0 -4
  138. data/lib/chef/mixin/windows_architecture_helper.rb +16 -0
  139. data/lib/chef/mixin/windows_env_helper.rb +56 -0
  140. data/lib/chef/node.rb +2 -2
  141. data/lib/chef/node_map.rb +146 -0
  142. data/lib/chef/platform/provider_mapping.rb +11 -39
  143. data/lib/chef/platform/provider_priority_map.rb +80 -0
  144. data/lib/chef/platform/query_helpers.rb +5 -1
  145. data/lib/chef/platform/service_helpers.rb +113 -0
  146. data/lib/chef/provider.rb +24 -0
  147. data/lib/chef/provider/breakpoint.rb +2 -0
  148. data/lib/chef/provider/cookbook_file.rb +2 -0
  149. data/lib/chef/provider/cron.rb +1 -1
  150. data/lib/chef/provider/cron/unix.rb +13 -9
  151. data/lib/chef/provider/deploy.rb +3 -2
  152. data/lib/chef/provider/deploy/revision.rb +4 -2
  153. data/lib/chef/provider/deploy/timestamped.rb +2 -0
  154. data/lib/chef/provider/directory.rb +2 -0
  155. data/lib/chef/provider/dsc_script.rb +179 -0
  156. data/lib/chef/provider/env.rb +25 -10
  157. data/lib/chef/provider/env/windows.rb +9 -16
  158. data/lib/chef/provider/erl_call.rb +2 -0
  159. data/lib/chef/provider/execute.rb +5 -2
  160. data/lib/chef/provider/file.rb +2 -0
  161. data/lib/chef/provider/git.rb +51 -23
  162. data/lib/chef/provider/group/dscl.rb +2 -2
  163. data/lib/chef/provider/group/pw.rb +9 -13
  164. data/lib/chef/provider/http_request.rb +2 -0
  165. data/lib/chef/provider/link.rb +3 -0
  166. data/lib/chef/provider/log.rb +2 -0
  167. data/lib/chef/provider/lwrp_base.rb +11 -9
  168. data/lib/chef/provider/mount/mount.rb +1 -1
  169. data/lib/chef/provider/package/aix.rb +2 -0
  170. data/lib/chef/provider/package/apt.rb +2 -0
  171. data/lib/chef/provider/package/dpkg.rb +2 -0
  172. data/lib/chef/provider/package/easy_install.rb +2 -0
  173. data/lib/chef/provider/package/freebsd/pkg.rb +2 -1
  174. data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
  175. data/lib/chef/provider/package/freebsd/port.rb +1 -9
  176. data/lib/chef/provider/package/homebrew.rb +127 -0
  177. data/lib/chef/provider/package/ips.rb +2 -0
  178. data/lib/chef/provider/package/macports.rb +3 -0
  179. data/lib/chef/provider/package/pacman.rb +5 -4
  180. data/lib/chef/provider/package/paludis.rb +4 -2
  181. data/lib/chef/provider/package/portage.rb +4 -1
  182. data/lib/chef/provider/package/rpm.rb +2 -0
  183. data/lib/chef/provider/package/rubygems.rb +4 -0
  184. data/lib/chef/provider/package/smartos.rb +2 -0
  185. data/lib/chef/provider/package/solaris.rb +2 -0
  186. data/lib/chef/provider/package/windows.rb +5 -2
  187. data/lib/chef/provider/package/yum.rb +2 -0
  188. data/lib/chef/provider/powershell_script.rb +3 -1
  189. data/lib/chef/provider/remote_directory.rb +25 -10
  190. data/lib/chef/provider/route.rb +2 -0
  191. data/lib/chef/provider/ruby_block.rb +2 -0
  192. data/lib/chef/provider/script.rb +6 -0
  193. data/lib/chef/provider/service/aix.rb +128 -0
  194. data/lib/chef/provider/service/aixinit.rb +117 -0
  195. data/lib/chef/provider/service/arch.rb +6 -0
  196. data/lib/chef/provider/service/debian.rb +35 -29
  197. data/lib/chef/provider/service/freebsd.rb +7 -1
  198. data/lib/chef/provider/service/gentoo.rb +5 -1
  199. data/lib/chef/provider/service/init.rb +2 -0
  200. data/lib/chef/provider/service/insserv.rb +15 -8
  201. data/lib/chef/provider/service/invokercd.rb +6 -0
  202. data/lib/chef/provider/service/macosx.rb +4 -1
  203. data/lib/chef/provider/service/redhat.rb +9 -3
  204. data/lib/chef/provider/service/simple.rb +2 -0
  205. data/lib/chef/provider/service/solaris.rb +2 -0
  206. data/lib/chef/provider/service/systemd.rb +7 -0
  207. data/lib/chef/provider/service/upstart.rb +7 -0
  208. data/lib/chef/provider/service/windows.rb +5 -0
  209. data/lib/chef/provider/subversion.rb +2 -0
  210. data/lib/chef/provider/template.rb +1 -0
  211. data/lib/chef/provider/user/dscl.rb +3 -2
  212. data/lib/chef/provider/whyrun_safe_ruby_block.rb +2 -0
  213. data/lib/chef/provider_resolver.rb +103 -0
  214. data/lib/chef/providers.rb +6 -2
  215. data/lib/chef/recipe.rb +2 -0
  216. data/lib/chef/resource.rb +69 -78
  217. data/lib/chef/resource/apt_package.rb +3 -1
  218. data/lib/chef/resource/bash.rb +1 -0
  219. data/lib/chef/resource/bff_package.rb +0 -1
  220. data/lib/chef/resource/breakpoint.rb +1 -1
  221. data/lib/chef/resource/chef_gem.rb +1 -2
  222. data/lib/chef/resource/conditional.rb +26 -6
  223. data/lib/chef/resource/cookbook_file.rb +2 -3
  224. data/lib/chef/resource/csh.rb +1 -0
  225. data/lib/chef/resource/deploy.rb +0 -1
  226. data/lib/chef/resource/deploy_revision.rb +6 -1
  227. data/lib/chef/resource/directory.rb +1 -2
  228. data/lib/chef/resource/dpkg_package.rb +2 -1
  229. data/lib/chef/resource/dsc_script.rb +125 -0
  230. data/lib/chef/resource/easy_install_package.rb +2 -1
  231. data/lib/chef/resource/erl_call.rb +1 -0
  232. data/lib/chef/resource/execute.rb +26 -9
  233. data/lib/chef/resource/file.rb +1 -3
  234. data/lib/chef/resource/freebsd_package.rb +10 -23
  235. data/lib/chef/resource/gem_package.rb +2 -1
  236. data/lib/chef/resource/git.rb +2 -1
  237. data/lib/chef/resource/homebrew_package.rb +46 -0
  238. data/lib/chef/resource/http_request.rb +1 -0
  239. data/lib/chef/resource/ips_package.rb +3 -1
  240. data/lib/chef/resource/link.rb +1 -2
  241. data/lib/chef/resource/log.rb +4 -0
  242. data/lib/chef/resource/lwrp_base.rb +24 -15
  243. data/lib/chef/resource/macports_package.rb +3 -1
  244. data/lib/chef/resource/pacman_package.rb +2 -1
  245. data/lib/chef/resource/paludis_package.rb +3 -1
  246. data/lib/chef/resource/perl.rb +1 -0
  247. data/lib/chef/resource/powershell_script.rb +0 -2
  248. data/lib/chef/resource/python.rb +1 -1
  249. data/lib/chef/resource/remote_directory.rb +1 -2
  250. data/lib/chef/resource/remote_file.rb +1 -1
  251. data/lib/chef/resource/rpm_package.rb +2 -1
  252. data/lib/chef/resource/ruby.rb +1 -0
  253. data/lib/chef/resource/ruby_block.rb +3 -0
  254. data/lib/chef/resource/script.rb +2 -25
  255. data/lib/chef/resource/service.rb +0 -4
  256. data/lib/chef/resource/smartos_package.rb +3 -4
  257. data/lib/chef/resource/solaris_package.rb +7 -1
  258. data/lib/chef/resource/subversion.rb +0 -1
  259. data/lib/chef/resource/template.rb +2 -3
  260. data/lib/chef/resource/timestamped_deploy.rb +1 -2
  261. data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -1
  262. data/lib/chef/resource/windows_package.rb +3 -4
  263. data/lib/chef/resource/windows_script.rb +3 -0
  264. data/lib/chef/resource/windows_service.rb +2 -2
  265. data/lib/chef/resource/yum_package.rb +3 -1
  266. data/lib/chef/resource_collection.rb +50 -227
  267. data/lib/chef/resource_collection/resource_collection_serialization.rb +59 -0
  268. data/lib/chef/resource_collection/resource_list.rb +89 -0
  269. data/lib/chef/resource_collection/resource_set.rb +170 -0
  270. data/lib/chef/resources.rb +2 -0
  271. data/lib/chef/role.rb +1 -1
  272. data/lib/chef/run_context.rb +5 -1
  273. data/lib/chef/shell/ext.rb +1 -1
  274. data/lib/chef/util/backup.rb +3 -2
  275. data/lib/chef/util/dsc/configuration_generator.rb +115 -0
  276. data/lib/chef/util/dsc/lcm_output_parser.rb +133 -0
  277. data/lib/chef/util/dsc/local_configuration_manager.rb +141 -0
  278. data/lib/chef/util/dsc/resource_info.rb +26 -0
  279. data/lib/chef/util/path_helper.rb +12 -0
  280. data/lib/chef/util/powershell/cmdlet.rb +136 -0
  281. data/lib/chef/util/powershell/cmdlet_result.rb +46 -0
  282. data/lib/chef/version.rb +1 -1
  283. data/lib/chef/win32/api/system.rb +9 -0
  284. data/lib/chef/win32/version.rb +2 -0
  285. data/spec/.DS_Store +0 -0
  286. data/spec/data/.DS_Store +0 -0
  287. data/spec/data/bootstrap/test-hints.erb +1 -1
  288. data/spec/data/bootstrap/test.erb +1 -1
  289. data/spec/data/cb_version_cookbooks/cookbook2/files/test.txt +0 -0
  290. data/spec/data/cb_version_cookbooks/cookbook2/templates/test.erb +0 -0
  291. data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -0
  292. data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -0
  293. data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -0
  294. data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -0
  295. data/spec/data/lwrp/.DS_Store +0 -0
  296. data/spec/data/lwrp/providers/.DS_Store +0 -0
  297. data/spec/data/lwrp/providers/buck_passer.rb +9 -2
  298. data/spec/data/lwrp/resources/.DS_Store +0 -0
  299. data/spec/data/lwrp/resources/foo.rb +3 -2
  300. data/spec/data/lwrp_override/.DS_Store +0 -0
  301. data/spec/data/lwrp_override/providers/.DS_Store +0 -0
  302. data/spec/data/lwrp_override/providers/buck_passer.rb +5 -10
  303. data/spec/data/lwrp_override/resources/.DS_Store +0 -0
  304. data/spec/data/lwrp_override/resources/foo.rb +4 -3
  305. data/spec/functional/assets/chefinittest +34 -0
  306. data/spec/functional/assets/testchefsubsys +11 -0
  307. data/spec/functional/dsl/reboot_pending_spec.rb +19 -16
  308. data/spec/functional/event_loggers/windows_eventlog_spec.rb +82 -0
  309. data/spec/functional/knife/cookbook_delete_spec.rb +3 -3
  310. data/spec/functional/knife/exec_spec.rb +1 -1
  311. data/spec/functional/resource/aix_service_spec.rb +136 -0
  312. data/spec/functional/resource/aixinit_service_spec.rb +211 -0
  313. data/spec/functional/resource/base.rb +1 -0
  314. data/spec/functional/resource/batch_spec.rb +4 -11
  315. data/spec/functional/resource/cron_spec.rb +7 -1
  316. data/spec/functional/resource/dsc_script_spec.rb +382 -0
  317. data/spec/functional/resource/env_spec.rb +54 -0
  318. data/spec/functional/resource/execute_spec.rb +113 -0
  319. data/spec/functional/resource/file_spec.rb +2 -0
  320. data/spec/functional/resource/group_spec.rb +7 -4
  321. data/spec/functional/resource/powershell_spec.rb +198 -185
  322. data/spec/functional/resource/rpm_spec.rb +5 -4
  323. data/spec/functional/resource/user/dscl_spec.rb +2 -1
  324. data/spec/functional/util/path_helper_spec.rb +37 -0
  325. data/spec/functional/util/powershell/cmdlet_spec.rb +114 -0
  326. data/spec/integration/client/client_spec.rb +1 -1
  327. data/spec/integration/client/ipv6_spec.rb +1 -1
  328. data/spec/integration/knife/chef_fs_data_store_spec.rb +1 -1
  329. data/spec/integration/knife/chef_repo_path_spec.rb +1 -1
  330. data/spec/integration/knife/chef_repository_file_system_spec.rb +1 -1
  331. data/spec/integration/knife/chefignore_spec.rb +1 -1
  332. data/spec/integration/knife/common_options_spec.rb +1 -1
  333. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
  334. data/spec/integration/knife/delete_spec.rb +1 -1
  335. data/spec/integration/knife/deps_spec.rb +1 -1
  336. data/spec/integration/knife/diff_spec.rb +1 -1
  337. data/spec/integration/knife/download_spec.rb +1 -1
  338. data/spec/integration/knife/list_spec.rb +1 -1
  339. data/spec/integration/knife/raw_spec.rb +1 -1
  340. data/spec/integration/knife/redirection_spec.rb +1 -1
  341. data/spec/integration/knife/serve_spec.rb +1 -1
  342. data/spec/integration/knife/show_spec.rb +1 -1
  343. data/spec/integration/knife/upload_spec.rb +4 -3
  344. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  345. data/spec/spec_helper.rb +15 -0
  346. data/spec/support/chef_helpers.rb +1 -0
  347. data/spec/support/lib/chef/provider/snakeoil.rb +1 -0
  348. data/spec/support/lib/chef/resource/zen_follower.rb +1 -7
  349. data/spec/support/platform_helpers.rb +28 -0
  350. data/spec/support/shared/functional/file_resource.rb +6 -0
  351. data/spec/support/shared/functional/windows_script.rb +118 -0
  352. data/spec/support/shared/integration/integration_helper.rb +5 -2
  353. data/spec/support/shared/matchers/exit_with_code.rb +28 -0
  354. data/spec/support/shared/matchers/match_environment_variable.rb +17 -0
  355. data/spec/support/shared/shared_examples.rb +14 -0
  356. data/spec/support/shared/unit/execute_resource.rb +0 -7
  357. data/spec/support/shared/unit/resource/static_provider_resolution.rb +71 -0
  358. data/spec/support/shared/unit/script_resource.rb +1 -1
  359. data/spec/support/shared/unit/windows_script_resource.rb +35 -2
  360. data/spec/tiny_server.rb +1 -2
  361. data/spec/unit/api_client_spec.rb +5 -1
  362. data/spec/unit/application/{apply.rb → apply_spec.rb} +13 -5
  363. data/spec/unit/application/client_spec.rb +106 -13
  364. data/spec/unit/application/solo_spec.rb +25 -1
  365. data/spec/unit/client_spec.rb +1 -26
  366. data/spec/unit/config_fetcher_spec.rb +2 -1
  367. data/spec/unit/config_spec.rb +91 -2
  368. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +8 -0
  369. data/spec/unit/cookbook/metadata_spec.rb +43 -6
  370. data/spec/unit/cookbook/syntax_check_spec.rb +8 -2
  371. data/spec/unit/cookbook_loader_spec.rb +4 -2
  372. data/spec/unit/cookbook_version_spec.rb +83 -2
  373. data/spec/unit/data_bag_item_spec.rb +5 -1
  374. data/spec/unit/data_bag_spec.rb +6 -1
  375. data/spec/unit/dsl/data_query_spec.rb +8 -110
  376. data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +95 -0
  377. data/spec/unit/encrypted_data_bag_item_spec.rb +16 -23
  378. data/spec/unit/environment_spec.rb +6 -2
  379. data/spec/unit/exceptions_spec.rb +6 -0
  380. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +16 -15
  381. data/spec/unit/json_compat_spec.rb +12 -2
  382. data/spec/unit/knife/bootstrap_spec.rb +16 -63
  383. data/spec/unit/knife/cookbook_site_share_spec.rb +59 -6
  384. data/spec/unit/knife/core/bootstrap_context_spec.rb +8 -37
  385. data/spec/unit/knife/core/subcommand_loader_spec.rb +1 -1
  386. data/spec/unit/knife/core/ui_spec.rb +28 -0
  387. data/spec/unit/knife/data_bag_create_spec.rb +63 -71
  388. data/spec/unit/knife/data_bag_edit_spec.rb +83 -49
  389. data/spec/unit/knife/data_bag_from_file_spec.rb +104 -126
  390. data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -0
  391. data/spec/unit/knife/data_bag_show_spec.rb +74 -72
  392. data/spec/unit/knife/environment_from_file_spec.rb +3 -2
  393. data/spec/unit/knife/ssl_check_spec.rb +46 -1
  394. data/spec/unit/knife/status_spec.rb +1 -2
  395. data/spec/unit/knife_spec.rb +18 -1
  396. data/spec/unit/lwrp_spec.rb +29 -8
  397. data/spec/unit/mixin/homebrew_user_spec.rb +100 -0
  398. data/spec/unit/node_map_spec.rb +155 -0
  399. data/spec/unit/node_spec.rb +11 -0
  400. data/spec/unit/platform/query_helpers_spec.rb +23 -0
  401. data/spec/unit/platform_spec.rb +23 -0
  402. data/spec/unit/provider/breakpoint_spec.rb +9 -9
  403. data/spec/unit/provider/cookbook_file/content_spec.rb +3 -3
  404. data/spec/unit/provider/cookbook_file_spec.rb +1 -1
  405. data/spec/unit/provider/cron/unix_spec.rb +78 -60
  406. data/spec/unit/provider/cron_spec.rb +175 -175
  407. data/spec/unit/provider/deploy/revision_spec.rb +22 -21
  408. data/spec/unit/provider/deploy/timestamped_spec.rb +3 -3
  409. data/spec/unit/provider/deploy_spec.rb +231 -230
  410. data/spec/unit/provider/directory_spec.rb +55 -55
  411. data/spec/unit/provider/dsc_script_spec.rb +174 -0
  412. data/spec/unit/provider/env/windows_spec.rb +70 -34
  413. data/spec/unit/provider/env_spec.rb +95 -49
  414. data/spec/unit/provider/erl_call_spec.rb +9 -9
  415. data/spec/unit/provider/execute_spec.rb +43 -27
  416. data/spec/unit/provider/file/content_spec.rb +9 -9
  417. data/spec/unit/provider/file_spec.rb +1 -1
  418. data/spec/unit/provider/git_spec.rb +221 -159
  419. data/spec/unit/provider/group/dscl_spec.rb +64 -63
  420. data/spec/unit/provider/group/gpasswd_spec.rb +14 -14
  421. data/spec/unit/provider/group/groupadd_spec.rb +33 -33
  422. data/spec/unit/provider/group/groupmod_spec.rb +23 -23
  423. data/spec/unit/provider/group/pw_spec.rb +21 -21
  424. data/spec/unit/provider/group/usermod_spec.rb +20 -20
  425. data/spec/unit/provider/group/windows_spec.rb +15 -15
  426. data/spec/unit/provider/group_spec.rb +76 -76
  427. data/spec/unit/provider/http_request_spec.rb +30 -30
  428. data/spec/unit/provider/ifconfig/aix_spec.rb +20 -20
  429. data/spec/unit/provider/ifconfig/debian_spec.rb +25 -9
  430. data/spec/unit/provider/ifconfig/redhat_spec.rb +13 -13
  431. data/spec/unit/provider/ifconfig_spec.rb +43 -43
  432. data/spec/unit/provider/link_spec.rb +60 -60
  433. data/spec/unit/provider/log_spec.rb +0 -4
  434. data/spec/unit/provider/mdadm_spec.rb +23 -23
  435. data/spec/unit/provider/mount/aix_spec.rb +17 -17
  436. data/spec/unit/provider/mount/mount_spec.rb +115 -119
  437. data/spec/unit/provider/mount/solaris_spec.rb +72 -72
  438. data/spec/unit/provider/mount/windows_spec.rb +24 -24
  439. data/spec/unit/provider/ohai_spec.rb +11 -11
  440. data/spec/unit/provider/package/aix_spec.rb +34 -34
  441. data/spec/unit/provider/package/apt_spec.rb +36 -36
  442. data/spec/unit/provider/package/dpkg_spec.rb +27 -27
  443. data/spec/unit/provider/package/easy_install_spec.rb +16 -16
  444. data/spec/unit/provider/package/freebsd/pkg_spec.rb +53 -53
  445. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +24 -24
  446. data/spec/unit/provider/package/freebsd/port_spec.rb +45 -35
  447. data/spec/unit/provider/package/homebrew_spec.rb +266 -0
  448. data/spec/unit/provider/package/ips_spec.rb +34 -34
  449. data/spec/unit/provider/package/macports_spec.rb +49 -49
  450. data/spec/unit/provider/package/pacman_spec.rb +35 -39
  451. data/spec/unit/provider/package/paludis_spec.rb +20 -20
  452. data/spec/unit/provider/package/portage_spec.rb +38 -38
  453. data/spec/unit/provider/package/rpm_spec.rb +29 -29
  454. data/spec/unit/provider/package/rubygems_spec.rb +284 -270
  455. data/spec/unit/provider/package/smartos_spec.rb +15 -15
  456. data/spec/unit/provider/package/solaris_spec.rb +35 -35
  457. data/spec/unit/provider/package/windows/msi_spec.rb +3 -3
  458. data/spec/unit/provider/package/windows_spec.rb +6 -6
  459. data/spec/unit/provider/package/yum_spec.rb +416 -416
  460. data/spec/unit/provider/package/zypper_spec.rb +47 -47
  461. data/spec/unit/provider/package_spec.rb +107 -107
  462. data/spec/unit/provider/powershell_spec.rb +1 -1
  463. data/spec/unit/provider/registry_key_spec.rb +61 -61
  464. data/spec/unit/provider/remote_directory_spec.rb +36 -36
  465. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +24 -24
  466. data/spec/unit/provider/remote_file/content_spec.rb +45 -45
  467. data/spec/unit/provider/remote_file/fetcher_spec.rb +9 -9
  468. data/spec/unit/provider/remote_file/ftp_spec.rb +32 -32
  469. data/spec/unit/provider/remote_file/http_spec.rb +44 -44
  470. data/spec/unit/provider/remote_file/local_file_spec.rb +9 -9
  471. data/spec/unit/provider/remote_file_spec.rb +3 -3
  472. data/spec/unit/provider/route_spec.rb +63 -63
  473. data/spec/unit/provider/ruby_block_spec.rb +4 -4
  474. data/spec/unit/provider/script_spec.rb +12 -12
  475. data/spec/unit/provider/service/aix_service_spec.rb +181 -0
  476. data/spec/unit/provider/service/aixinit_service_spec.rb +269 -0
  477. data/spec/unit/provider/service/arch_service_spec.rb +48 -48
  478. data/spec/unit/provider/service/debian_service_spec.rb +40 -40
  479. data/spec/unit/provider/service/gentoo_service_spec.rb +28 -28
  480. data/spec/unit/provider/service/init_service_spec.rb +39 -39
  481. data/spec/unit/provider/service/insserv_service_spec.rb +8 -8
  482. data/spec/unit/provider/service/invokercd_service_spec.rb +35 -35
  483. data/spec/unit/provider/service/macosx_spec.rb +49 -49
  484. data/spec/unit/provider/service/redhat_spec.rb +27 -27
  485. data/spec/unit/provider/service/simple_service_spec.rb +28 -28
  486. data/spec/unit/provider/service/solaris_smf_service_spec.rb +43 -46
  487. data/spec/unit/provider/service/systemd_service_spec.rb +63 -63
  488. data/spec/unit/provider/service/upstart_service_spec.rb +78 -78
  489. data/spec/unit/provider/service/windows_spec.rb +92 -92
  490. data/spec/unit/provider/service_spec.rb +40 -40
  491. data/spec/unit/provider/subversion_spec.rb +80 -80
  492. data/spec/unit/provider/template/content_spec.rb +9 -9
  493. data/spec/unit/provider/template_spec.rb +6 -6
  494. data/spec/unit/provider/user/dscl_spec.rb +170 -167
  495. data/spec/unit/provider/user/pw_spec.rb +48 -48
  496. data/spec/unit/provider/user/solaris_spec.rb +8 -8
  497. data/spec/unit/provider/user/useradd_spec.rb +1 -1
  498. data/spec/unit/provider/user/windows_spec.rb +26 -26
  499. data/spec/unit/provider/user_spec.rb +72 -72
  500. data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +4 -4
  501. data/spec/unit/provider_resolver_spec.rb +387 -0
  502. data/spec/unit/recipe_spec.rb +33 -12
  503. data/spec/unit/resource/apt_package_spec.rb +10 -13
  504. data/spec/unit/resource/bash_spec.rb +4 -4
  505. data/spec/unit/resource/batch_spec.rb +1 -1
  506. data/spec/unit/resource/breakpoint_spec.rb +11 -7
  507. data/spec/unit/resource/chef_gem_spec.rb +8 -15
  508. data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
  509. data/spec/unit/resource/conditional_spec.rb +35 -16
  510. data/spec/unit/resource/cookbook_file_spec.rb +13 -13
  511. data/spec/unit/resource/cron_spec.rb +37 -37
  512. data/spec/unit/resource/csh_spec.rb +4 -4
  513. data/spec/unit/resource/deploy_revision_spec.rb +13 -18
  514. data/spec/unit/resource/deploy_spec.rb +60 -55
  515. data/spec/unit/resource/directory_spec.rb +18 -18
  516. data/spec/unit/resource/dpkg_package_spec.rb +8 -14
  517. data/spec/unit/resource/dsc_script_spec.rb +98 -0
  518. data/spec/unit/resource/easy_install_package_spec.rb +9 -18
  519. data/spec/unit/resource/env_spec.rb +12 -12
  520. data/spec/unit/resource/erl_call_spec.rb +11 -11
  521. data/spec/unit/resource/execute_spec.rb +5 -0
  522. data/spec/unit/resource/file_spec.rb +29 -29
  523. data/spec/unit/resource/freebsd_package_spec.rb +11 -12
  524. data/spec/unit/resource/gem_package_spec.rb +8 -15
  525. data/spec/unit/resource/git_spec.rb +12 -8
  526. data/spec/unit/resource/group_spec.rb +27 -27
  527. data/spec/unit/resource/homebrew_package_spec.rb +50 -0
  528. data/spec/unit/resource/http_request_spec.rb +6 -6
  529. data/spec/unit/resource/ifconfig_spec.rb +8 -8
  530. data/spec/unit/resource/ips_package_spec.rb +10 -13
  531. data/spec/unit/resource/link_spec.rb +25 -25
  532. data/spec/unit/resource/log_spec.rb +9 -9
  533. data/spec/unit/resource/macports_package_spec.rb +8 -13
  534. data/spec/unit/resource/mdadm_spec.rb +18 -18
  535. data/spec/unit/resource/mount_spec.rb +45 -45
  536. data/spec/unit/resource/ohai_spec.rb +7 -7
  537. data/spec/unit/resource/package_spec.rb +12 -12
  538. data/spec/unit/resource/pacman_package_spec.rb +8 -14
  539. data/spec/unit/resource/perl_spec.rb +4 -4
  540. data/spec/unit/resource/portage_package_spec.rb +3 -3
  541. data/spec/unit/resource/powershell_spec.rb +7 -7
  542. data/spec/unit/resource/python_spec.rb +4 -4
  543. data/spec/unit/resource/registry_key_spec.rb +32 -32
  544. data/spec/unit/resource/remote_directory_spec.rb +17 -17
  545. data/spec/unit/resource/remote_file_spec.rb +41 -41
  546. data/spec/unit/resource/route_spec.rb +19 -19
  547. data/spec/unit/resource/rpm_package_spec.rb +9 -13
  548. data/spec/unit/resource/ruby_block_spec.rb +8 -8
  549. data/spec/unit/resource/ruby_spec.rb +4 -4
  550. data/spec/unit/resource/scm_spec.rb +40 -40
  551. data/spec/unit/resource/script_spec.rb +2 -2
  552. data/spec/unit/resource/service_spec.rb +37 -47
  553. data/spec/unit/resource/smartos_package_spec.rb +10 -15
  554. data/spec/unit/resource/solaris_package_spec.rb +13 -28
  555. data/spec/unit/resource/subversion_spec.rb +16 -12
  556. data/spec/unit/resource/template_spec.rb +35 -35
  557. data/spec/unit/resource/timestamped_deploy_spec.rb +30 -4
  558. data/spec/unit/resource/user_spec.rb +23 -23
  559. data/spec/unit/resource/windows_package_spec.rb +17 -10
  560. data/spec/unit/resource/windows_service_spec.rb +9 -6
  561. data/spec/unit/resource/yum_package_spec.rb +16 -21
  562. data/spec/unit/resource_collection/resource_list_spec.rb +137 -0
  563. data/spec/unit/resource_collection/resource_set_spec.rb +199 -0
  564. data/spec/unit/resource_collection_spec.rb +73 -92
  565. data/spec/unit/resource_definition_spec.rb +38 -40
  566. data/spec/unit/resource_reporter_spec.rb +3 -3
  567. data/spec/unit/resource_spec.rb +68 -33
  568. data/spec/unit/rest_spec.rb +83 -76
  569. data/spec/unit/role_spec.rb +5 -0
  570. data/spec/unit/run_list_spec.rb +5 -1
  571. data/spec/unit/runner_spec.rb +245 -238
  572. data/spec/unit/shell/shell_ext_spec.rb +1 -1
  573. data/spec/unit/user_spec.rb +5 -1
  574. data/spec/unit/util/dsc/configuration_generator_spec.rb +171 -0
  575. data/spec/unit/util/dsc/lcm_output_parser_spec.rb +169 -0
  576. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +139 -0
  577. data/spec/unit/util/path_helper_spec.rb +23 -1
  578. data/spec/unit/util/powershell/cmdlet_spec.rb +106 -0
  579. data/spec/unit/workstation_config_loader_spec.rb +1 -1
  580. metadata +257 -191
  581. checksums.yaml +0 -7
  582. data/distro/README +0 -2
  583. data/distro/arch/etc/conf.d/chef-client.conf +0 -5
  584. data/distro/arch/etc/conf.d/chef-expander.conf +0 -8
  585. data/distro/arch/etc/conf.d/chef-server-webui.conf +0 -10
  586. data/distro/arch/etc/conf.d/chef-server.conf +0 -10
  587. data/distro/arch/etc/conf.d/chef-solr.conf +0 -8
  588. data/distro/arch/etc/rc.d/chef-client +0 -90
  589. data/distro/arch/etc/rc.d/chef-expander +0 -78
  590. data/distro/arch/etc/rc.d/chef-server +0 -78
  591. data/distro/arch/etc/rc.d/chef-server-webui +0 -78
  592. data/distro/arch/etc/rc.d/chef-solr +0 -78
  593. data/distro/debian/etc/default/chef-client +0 -4
  594. data/distro/debian/etc/default/chef-expander +0 -8
  595. data/distro/debian/etc/default/chef-server +0 -9
  596. data/distro/debian/etc/default/chef-server-webui +0 -9
  597. data/distro/debian/etc/default/chef-solr +0 -8
  598. data/distro/debian/etc/init.d/chef-client +0 -212
  599. data/distro/debian/etc/init.d/chef-expander +0 -176
  600. data/distro/debian/etc/init.d/chef-server +0 -122
  601. data/distro/debian/etc/init.d/chef-server-webui +0 -123
  602. data/distro/debian/etc/init.d/chef-solr +0 -176
  603. data/distro/debian/etc/init/chef-client.conf +0 -17
  604. data/distro/debian/etc/init/chef-expander.conf +0 -17
  605. data/distro/debian/etc/init/chef-server-webui.conf +0 -17
  606. data/distro/debian/etc/init/chef-server.conf +0 -17
  607. data/distro/debian/etc/init/chef-solr.conf +0 -17
  608. data/distro/redhat/etc/init.d/chef-client +0 -121
  609. data/distro/redhat/etc/init.d/chef-expander +0 -104
  610. data/distro/redhat/etc/init.d/chef-server +0 -112
  611. data/distro/redhat/etc/init.d/chef-server-webui +0 -112
  612. data/distro/redhat/etc/init.d/chef-solr +0 -104
  613. data/distro/redhat/etc/logrotate.d/chef-client +0 -8
  614. data/distro/redhat/etc/logrotate.d/chef-expander +0 -8
  615. data/distro/redhat/etc/logrotate.d/chef-server +0 -8
  616. data/distro/redhat/etc/logrotate.d/chef-server-webui +0 -8
  617. data/distro/redhat/etc/logrotate.d/chef-solr +0 -8
  618. data/distro/redhat/etc/sysconfig/chef-client +0 -15
  619. data/distro/redhat/etc/sysconfig/chef-expander +0 -7
  620. data/distro/redhat/etc/sysconfig/chef-server +0 -14
  621. data/distro/redhat/etc/sysconfig/chef-server-webui +0 -14
  622. data/distro/redhat/etc/sysconfig/chef-solr +0 -8
  623. data/distro/windows/service_manager.rb +0 -20
  624. data/lib/chef/resource_platform_map.rb +0 -151
  625. data/spec/support/shared/matchers.rb +0 -17
  626. data/spec/unit/resource_platform_map_spec.rb +0 -164
@@ -54,25 +54,25 @@ describe Chef::Provider::Template::Content do
54
54
  end
55
55
 
56
56
  it "finds the template file in the cookbook cache if it isn't local" do
57
- content.template_location.should == CHEF_SPEC_DATA + '/cookbooks/openldap/templates/default/openldap_stuff.conf.erb'
57
+ expect(content.template_location).to eq(CHEF_SPEC_DATA + '/cookbooks/openldap/templates/default/openldap_stuff.conf.erb')
58
58
  end
59
59
 
60
60
  it "finds the template file locally if it is local" do
61
- new_resource.stub(:local).and_return(true)
62
- new_resource.stub(:source).and_return('/tmp/its_on_disk.erb')
63
- content.template_location.should == '/tmp/its_on_disk.erb'
61
+ allow(new_resource).to receive(:local).and_return(true)
62
+ allow(new_resource).to receive(:source).and_return('/tmp/its_on_disk.erb')
63
+ expect(content.template_location).to eq('/tmp/its_on_disk.erb')
64
64
  end
65
65
 
66
66
  it "should use the cookbook name if defined in the template resource" do
67
- new_resource.stub(:cookbook_name).and_return('apache2')
68
- new_resource.stub(:cookbook).and_return('openldap')
69
- new_resource.stub(:source).and_return("test.erb")
70
- content.template_location.should == CHEF_SPEC_DATA + '/cookbooks/openldap/templates/default/test.erb'
67
+ allow(new_resource).to receive(:cookbook_name).and_return('apache2')
68
+ allow(new_resource).to receive(:cookbook).and_return('openldap')
69
+ allow(new_resource).to receive(:source).and_return("test.erb")
70
+ expect(content.template_location).to eq(CHEF_SPEC_DATA + '/cookbooks/openldap/templates/default/test.erb')
71
71
  end
72
72
 
73
73
  it "creates the template with the rendered content" do
74
74
  run_context.node.normal[:slappiness] = "a warm gun"
75
- IO.read(content.tempfile.path).should == "slappiness is a warm gun"
75
+ expect(IO.read(content.tempfile.path)).to eq("slappiness is a warm gun")
76
76
  end
77
77
 
78
78
  end
@@ -39,7 +39,7 @@ describe Chef::Provider::Template do
39
39
 
40
40
  let(:provider) do
41
41
  provider = described_class.new(resource, run_context)
42
- provider.stub(:content).and_return(content)
42
+ allow(provider).to receive(:content).and_return(content)
43
43
  provider
44
44
  end
45
45
 
@@ -51,7 +51,7 @@ describe Chef::Provider::Template do
51
51
 
52
52
  let(:content) do
53
53
  content = double('Chef::Provider::File::Content::Template', :template_location => "/foo/bar/baz")
54
- File.stub(:exists?).with("/foo/bar/baz").and_return(true)
54
+ allow(File).to receive(:exists?).with("/foo/bar/baz").and_return(true)
55
55
  content
56
56
  end
57
57
 
@@ -73,15 +73,15 @@ describe Chef::Provider::Template do
73
73
 
74
74
  let(:provider) do
75
75
  provider = described_class.new(resource, run_context)
76
- provider.stub(:content).and_return(content)
76
+ allow(provider).to receive(:content).and_return(content)
77
77
  provider
78
78
  end
79
79
 
80
80
  it "stops executing when the local template source can't be found" do
81
81
  setup_normal_file
82
- content.stub(:template_location).and_return("/baz/bar/foo")
83
- File.stub(:exists?).with("/baz/bar/foo").and_return(false)
84
- lambda { provider.run_action(:create) }.should raise_error Chef::Mixin::WhyRun::ResourceRequirements::Assertion::AssertionFailure
82
+ allow(content).to receive(:template_location).and_return("/baz/bar/foo")
83
+ allow(File).to receive(:exists?).with("/baz/bar/foo").and_return(false)
84
+ expect { provider.run_action(:create) }.to raise_error Chef::Mixin::WhyRun::ResourceRequirements::Assertion::AssertionFailure
85
85
  end
86
86
 
87
87
  end
@@ -23,10 +23,13 @@ require 'ostruct'
23
23
  require 'mixlib/shellout'
24
24
 
25
25
  describe Chef::Provider::User::Dscl do
26
+ before do
27
+ allow(Chef::Platform).to receive(:windows?) { false }
28
+ end
26
29
  let(:node) {
27
30
  node = Chef::Node.new
28
- node.stub(:[]).with(:platform_version).and_return(mac_version)
29
- node.stub(:[]).with(:platform).and_return("mac_os_x")
31
+ allow(node).to receive(:[]).with(:platform_version).and_return(mac_version)
32
+ allow(node).to receive(:[]).with(:platform).and_return("mac_os_x")
30
33
  node
31
34
  }
32
35
 
@@ -112,38 +115,38 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
112
115
  describe "when shelling out to dscl" do
113
116
  it "should run dscl with the supplied cmd /Path args" do
114
117
  shell_return = ShellCmdResult.new('stdout', 'err', 0)
115
- provider.should_receive(:shell_out).with("dscl . -cmd /Path args").and_return(shell_return)
116
- provider.run_dscl("cmd /Path args").should == 'stdout'
118
+ expect(provider).to receive(:shell_out).with("dscl . -cmd /Path args").and_return(shell_return)
119
+ expect(provider.run_dscl("cmd /Path args")).to eq('stdout')
117
120
  end
118
121
 
119
122
  it "returns an empty string from delete commands" do
120
123
  shell_return = ShellCmdResult.new('out', 'err', 23)
121
- provider.should_receive(:shell_out).with("dscl . -delete /Path args").and_return(shell_return)
122
- provider.run_dscl("delete /Path args").should == ""
124
+ expect(provider).to receive(:shell_out).with("dscl . -delete /Path args").and_return(shell_return)
125
+ expect(provider.run_dscl("delete /Path args")).to eq("")
123
126
  end
124
127
 
125
128
  it "should raise an exception for any other command" do
126
129
  shell_return = ShellCmdResult.new('out', 'err', 23)
127
- provider.should_receive(:shell_out).with('dscl . -cmd /Path arguments').and_return(shell_return)
128
- lambda { provider.run_dscl("cmd /Path arguments") }.should raise_error(Chef::Exceptions::DsclCommandFailed)
130
+ expect(provider).to receive(:shell_out).with('dscl . -cmd /Path arguments').and_return(shell_return)
131
+ expect { provider.run_dscl("cmd /Path arguments") }.to raise_error(Chef::Exceptions::DsclCommandFailed)
129
132
  end
130
133
 
131
134
  it "raises an exception when dscl reports 'no such key'" do
132
135
  shell_return = ShellCmdResult.new("No such key: ", 'err', 23)
133
- provider.should_receive(:shell_out).with('dscl . -cmd /Path args').and_return(shell_return)
134
- lambda { provider.run_dscl("cmd /Path args") }.should raise_error(Chef::Exceptions::DsclCommandFailed)
136
+ expect(provider).to receive(:shell_out).with('dscl . -cmd /Path args').and_return(shell_return)
137
+ expect { provider.run_dscl("cmd /Path args") }.to raise_error(Chef::Exceptions::DsclCommandFailed)
135
138
  end
136
139
 
137
140
  it "raises an exception when dscl reports 'eDSRecordNotFound'" do
138
141
  shell_return = ShellCmdResult.new("<dscl_cmd> DS Error: -14136 (eDSRecordNotFound)", 'err', -14136)
139
- provider.should_receive(:shell_out).with('dscl . -cmd /Path args').and_return(shell_return)
140
- lambda { provider.run_dscl("cmd /Path args") }.should raise_error(Chef::Exceptions::DsclCommandFailed)
142
+ expect(provider).to receive(:shell_out).with('dscl . -cmd /Path args').and_return(shell_return)
143
+ expect { provider.run_dscl("cmd /Path args") }.to raise_error(Chef::Exceptions::DsclCommandFailed)
141
144
  end
142
145
  end
143
146
 
144
147
  describe "get_free_uid" do
145
148
  before do
146
- provider.should_receive(:run_dscl).with("list /Users uid").and_return("\nwheel 200\nstaff 201\nbrahms 500\nchopin 501\n")
149
+ expect(provider).to receive(:run_dscl).with("list /Users uid").and_return("\nwheel 200\nstaff 201\nbrahms 500\nchopin 501\n")
147
150
  end
148
151
 
149
152
  describe "when resource is configured as system" do
@@ -152,59 +155,59 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
152
155
  end
153
156
 
154
157
  it "should return the first unused uid number on or above 500" do
155
- provider.get_free_uid.should eq(202)
158
+ expect(provider.get_free_uid).to eq(202)
156
159
  end
157
160
  end
158
161
 
159
162
  it "should return the first unused uid number on or above 200" do
160
- provider.get_free_uid.should eq(502)
163
+ expect(provider.get_free_uid).to eq(502)
161
164
  end
162
165
 
163
166
  it "should raise an exception when the search limit is exhausted" do
164
167
  search_limit = 1
165
- lambda { provider.get_free_uid(search_limit) }.should raise_error(RuntimeError)
168
+ expect { provider.get_free_uid(search_limit) }.to raise_error(RuntimeError)
166
169
  end
167
170
  end
168
171
 
169
172
  describe "uid_used?" do
170
173
  it "should return false if not given any valid uid number" do
171
- provider.uid_used?(nil).should be_false
174
+ expect(provider.uid_used?(nil)).to be_false
172
175
  end
173
176
 
174
177
  describe "when called with a user id" do
175
178
  before do
176
- provider.should_receive(:run_dscl).with("list /Users uid").and_return("\naj 500\n")
179
+ expect(provider).to receive(:run_dscl).with("list /Users uid").and_return("\naj 500\n")
177
180
  end
178
181
 
179
182
  it "should return true for a used uid number" do
180
- provider.uid_used?(500).should be_true
183
+ expect(provider.uid_used?(500)).to be_true
181
184
  end
182
185
 
183
186
  it "should return false for an unused uid number" do
184
- provider.uid_used?(501).should be_false
187
+ expect(provider.uid_used?(501)).to be_false
185
188
  end
186
189
  end
187
190
  end
188
191
 
189
192
  describe "when determining the uid to set" do
190
193
  it "raises RequestedUIDUnavailable if the requested uid is already in use" do
191
- provider.stub(:uid_used?).and_return(true)
192
- provider.should_receive(:get_free_uid).and_return(501)
193
- lambda { provider.dscl_set_uid }.should raise_error(Chef::Exceptions::RequestedUIDUnavailable)
194
+ allow(provider).to receive(:uid_used?).and_return(true)
195
+ expect(provider).to receive(:get_free_uid).and_return(501)
196
+ expect { provider.dscl_set_uid }.to raise_error(Chef::Exceptions::RequestedUIDUnavailable)
194
197
  end
195
198
 
196
199
  it "finds a valid, unused uid when none is specified" do
197
- provider.should_receive(:run_dscl).with("list /Users uid").and_return('')
198
- provider.should_receive(:run_dscl).with("create /Users/toor UniqueID 501")
199
- provider.should_receive(:get_free_uid).and_return(501)
200
+ expect(provider).to receive(:run_dscl).with("list /Users uid").and_return('')
201
+ expect(provider).to receive(:run_dscl).with("create /Users/toor UniqueID 501")
202
+ expect(provider).to receive(:get_free_uid).and_return(501)
200
203
  provider.dscl_set_uid
201
- new_resource.uid.should eq(501)
204
+ expect(new_resource.uid).to eq(501)
202
205
  end
203
206
 
204
207
  it "sets the uid specified in the resource" do
205
208
  new_resource.uid(1000)
206
- provider.should_receive(:run_dscl).with("create /Users/toor UniqueID 1000").and_return(true)
207
- provider.should_receive(:run_dscl).with("list /Users uid").and_return('')
209
+ expect(provider).to receive(:run_dscl).with("create /Users/toor UniqueID 1000").and_return(true)
210
+ expect(provider).to receive(:run_dscl).with("list /Users uid").and_return('')
208
211
  provider.dscl_set_uid
209
212
  end
210
213
  end
@@ -223,14 +226,14 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
223
226
 
224
227
  it "deletes the home directory when resource#home is nil" do
225
228
  new_resource.instance_variable_set(:@home, nil)
226
- provider.should_receive(:run_dscl).with("delete /Users/toor NFSHomeDirectory").and_return(true)
229
+ expect(provider).to receive(:run_dscl).with("delete /Users/toor NFSHomeDirectory").and_return(true)
227
230
  provider.dscl_set_home
228
231
  end
229
232
 
230
233
 
231
234
  it "raises InvalidHomeDirectory when the resource's home directory doesn't look right" do
232
235
  new_resource.home('epic-fail')
233
- lambda { provider.dscl_set_home }.should raise_error(Chef::Exceptions::InvalidHomeDirectory)
236
+ expect { provider.dscl_set_home }.to raise_error(Chef::Exceptions::InvalidHomeDirectory)
234
237
  end
235
238
 
236
239
  it "moves the users home to the new location if it exists and the target location is different" do
@@ -240,34 +243,34 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
240
243
  current_home_files = [current_home + '/my-dot-emacs', current_home + '/my-dot-vim']
241
244
  current_resource.home(current_home)
242
245
  new_resource.gid(23)
243
- ::File.stub(:exists?).with('/old/home/toor').and_return(true)
244
- ::File.stub(:exists?).with('/Users/toor').and_return(true)
246
+ allow(::File).to receive(:exists?).with('/old/home/toor').and_return(true)
247
+ allow(::File).to receive(:exists?).with('/Users/toor').and_return(true)
245
248
 
246
- FileUtils.should_receive(:mkdir_p).with('/Users/toor').and_return(true)
247
- FileUtils.should_receive(:rmdir).with(current_home)
248
- ::Dir.should_receive(:glob).with("#{CHEF_SPEC_DATA}/old_home_dir/*",::File::FNM_DOTMATCH).and_return(current_home_files)
249
- FileUtils.should_receive(:mv).with(current_home_files, "/Users/toor", :force => true)
250
- FileUtils.should_receive(:chown_R).with('toor','23','/Users/toor')
249
+ expect(FileUtils).to receive(:mkdir_p).with('/Users/toor').and_return(true)
250
+ expect(FileUtils).to receive(:rmdir).with(current_home)
251
+ expect(::Dir).to receive(:glob).with("#{CHEF_SPEC_DATA}/old_home_dir/*",::File::FNM_DOTMATCH).and_return(current_home_files)
252
+ expect(FileUtils).to receive(:mv).with(current_home_files, "/Users/toor", :force => true)
253
+ expect(FileUtils).to receive(:chown_R).with('toor','23','/Users/toor')
251
254
 
252
- provider.should_receive(:run_dscl).with("create /Users/toor NFSHomeDirectory '/Users/toor'")
255
+ expect(provider).to receive(:run_dscl).with("create /Users/toor NFSHomeDirectory '/Users/toor'")
253
256
  provider.dscl_set_home
254
257
  end
255
258
 
256
259
  it "should raise an exception when the systems user template dir (skel) cannot be found" do
257
- ::File.stub(:exists?).and_return(false,false,false)
258
- lambda { provider.dscl_set_home }.should raise_error(Chef::Exceptions::User)
260
+ allow(::File).to receive(:exists?).and_return(false,false,false)
261
+ expect { provider.dscl_set_home }.to raise_error(Chef::Exceptions::User)
259
262
  end
260
263
 
261
264
  it "should run ditto to copy any missing files from skel to the new home dir" do
262
- ::File.should_receive(:exists?).with("/System/Library/User\ Template/English.lproj").and_return(true)
263
- FileUtils.should_receive(:chown_R).with('toor', '', '/Users/toor')
264
- provider.should_receive(:shell_out!).with("ditto '/System/Library/User Template/English.lproj' '/Users/toor'")
265
+ expect(::File).to receive(:exists?).with("/System/Library/User\ Template/English.lproj").and_return(true)
266
+ expect(FileUtils).to receive(:chown_R).with('toor', '', '/Users/toor')
267
+ expect(provider).to receive(:shell_out!).with("ditto '/System/Library/User Template/English.lproj' '/Users/toor'")
265
268
  provider.ditto_home
266
269
  end
267
270
 
268
271
  it "creates the user's NFSHomeDirectory and home directory" do
269
- provider.should_receive(:run_dscl).with("create /Users/toor NFSHomeDirectory '/Users/toor'").and_return(true)
270
- provider.should_receive(:ditto_home)
272
+ expect(provider).to receive(:run_dscl).with("create /Users/toor NFSHomeDirectory '/Users/toor'").and_return(true)
273
+ expect(provider).to receive(:ditto_home)
271
274
  provider.dscl_set_home
272
275
  end
273
276
  end
@@ -277,8 +280,8 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
277
280
  let(:plutil_exists) { true }
278
281
 
279
282
  before do
280
- ::File.stub(:exists?).with("/usr/bin/dscl").and_return(dscl_exists)
281
- ::File.stub(:exists?).with("/usr/bin/plutil").and_return(plutil_exists)
283
+ allow(::File).to receive(:exists?).with("/usr/bin/dscl").and_return(dscl_exists)
284
+ allow(::File).to receive(:exists?).with("/usr/bin/plutil").and_return(plutil_exists)
282
285
  end
283
286
 
284
287
  def run_requirements
@@ -291,7 +294,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
291
294
  let(:dscl_exists) { false }
292
295
 
293
296
  it "should raise an error" do
294
- lambda { run_requirements }.should raise_error
297
+ expect { run_requirements }.to raise_error
295
298
  end
296
299
  end
297
300
 
@@ -299,7 +302,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
299
302
  let(:plutil_exists) { false }
300
303
 
301
304
  it "should raise an error" do
302
- lambda { run_requirements }.should raise_error
305
+ expect { run_requirements }.to raise_error
303
306
  end
304
307
  end
305
308
 
@@ -309,7 +312,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
309
312
  }
310
313
 
311
314
  it "should raise an error" do
312
- lambda { run_requirements }.should raise_error
315
+ expect { run_requirements }.to raise_error
313
316
  end
314
317
  end
315
318
 
@@ -322,7 +325,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
322
325
  let(:password) { salted_sha512_password }
323
326
 
324
327
  it "should not raise an error" do
325
- lambda { run_requirements }.should_not raise_error
328
+ expect { run_requirements }.not_to raise_error
326
329
  end
327
330
  end
328
331
 
@@ -330,7 +333,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
330
333
  let(:password) { salted_sha512_pbkdf2_password }
331
334
 
332
335
  it "should raise an error" do
333
- lambda { run_requirements }.should raise_error
336
+ expect { run_requirements }.to raise_error
334
337
  end
335
338
  end
336
339
  end
@@ -345,7 +348,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
345
348
  let(:password) { salted_sha512_password }
346
349
 
347
350
  it "should raise an error" do
348
- lambda { run_requirements }.should raise_error
351
+ expect { run_requirements }.to raise_error
349
352
  end
350
353
  end
351
354
 
@@ -354,7 +357,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
354
357
 
355
358
  describe "when salt and iteration is not set" do
356
359
  it "should raise an error" do
357
- lambda { run_requirements }.should raise_error
360
+ expect { run_requirements }.to raise_error
358
361
  end
359
362
  end
360
363
 
@@ -363,7 +366,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
363
366
  let(:iterations) { salted_sha512_pbkdf2_iterations }
364
367
 
365
368
  it "should not raise an error" do
366
- lambda { run_requirements }.should_not raise_error
369
+ expect { run_requirements }.not_to raise_error
367
370
  end
368
371
  end
369
372
  end
@@ -376,8 +379,8 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
376
379
  let(:user_plist_file) { nil }
377
380
 
378
381
  before do
379
- provider.should_receive(:shell_out).with("dscacheutil '-flushcache'")
380
- provider.should_receive(:shell_out).with("plutil -convert xml1 -o - /var/db/dslocal/nodes/Default/users/toor.plist") do
382
+ expect(provider).to receive(:shell_out).with("dscacheutil '-flushcache'")
383
+ expect(provider).to receive(:shell_out).with("plutil -convert xml1 -o - /var/db/dslocal/nodes/Default/users/toor.plist") do
381
384
  if user_plist_file.nil?
382
385
  ShellCmdResult.new('Can not find the file', 'Sorry!!', 1)
383
386
  else
@@ -386,23 +389,23 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
386
389
  end
387
390
 
388
391
  if !user_plist_file.nil?
389
- provider.should_receive(:convert_binary_plist_to_xml).and_return(File.read(File.join(CHEF_SPEC_DATA, "mac_users/#{user_plist_file}.shadow.xml")))
392
+ expect(provider).to receive(:convert_binary_plist_to_xml).and_return(File.read(File.join(CHEF_SPEC_DATA, "mac_users/#{user_plist_file}.shadow.xml")))
390
393
  end
391
394
  end
392
395
 
393
396
  describe "when user is not there" do
394
397
  it "shouldn't raise an error" do
395
- lambda { provider.load_current_resource }.should_not raise_error
398
+ expect { provider.load_current_resource }.not_to raise_error
396
399
  end
397
400
 
398
401
  it "should set @user_exists" do
399
402
  provider.load_current_resource
400
- provider.instance_variable_get(:@user_exists).should be_false
403
+ expect(provider.instance_variable_get(:@user_exists)).to be_false
401
404
  end
402
405
 
403
406
  it "should set username" do
404
407
  provider.load_current_resource
405
- provider.current_resource.username.should eq("toor")
408
+ expect(provider.current_resource.username).to eq("toor")
406
409
  end
407
410
  end
408
411
 
@@ -418,12 +421,12 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
418
421
 
419
422
  it "collects the user data correctly" do
420
423
  provider.load_current_resource
421
- provider.current_resource.comment.should eq("vagrant")
422
- provider.current_resource.uid.should eq("11112222-3333-4444-AAAA-BBBBCCCCDDDD")
423
- provider.current_resource.gid.should eq("80")
424
- provider.current_resource.home.should eq("/Users/vagrant")
425
- provider.current_resource.shell.should eq("/bin/bash")
426
- provider.current_resource.password.should eq(vagrant_sha_512)
424
+ expect(provider.current_resource.comment).to eq("vagrant")
425
+ expect(provider.current_resource.uid).to eq("11112222-3333-4444-AAAA-BBBBCCCCDDDD")
426
+ expect(provider.current_resource.gid).to eq("80")
427
+ expect(provider.current_resource.home).to eq("/Users/vagrant")
428
+ expect(provider.current_resource.shell).to eq("/bin/bash")
429
+ expect(provider.current_resource.password).to eq(vagrant_sha_512)
427
430
  end
428
431
 
429
432
  describe "when a plain password is set that is same" do
@@ -431,7 +434,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
431
434
 
432
435
  it "diverged_password? should report false" do
433
436
  provider.load_current_resource
434
- provider.diverged_password?.should be_false
437
+ expect(provider.diverged_password?).to be_false
435
438
  end
436
439
  end
437
440
 
@@ -440,7 +443,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
440
443
 
441
444
  it "diverged_password? should report true" do
442
445
  provider.load_current_resource
443
- provider.diverged_password?.should be_true
446
+ expect(provider.diverged_password?).to be_true
444
447
  end
445
448
  end
446
449
 
@@ -450,7 +453,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
450
453
 
451
454
  it "diverged_password? should report false" do
452
455
  provider.load_current_resource
453
- provider.diverged_password?.should be_false
456
+ expect(provider.diverged_password?).to be_false
454
457
  end
455
458
  end
456
459
 
@@ -459,7 +462,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
459
462
 
460
463
  it "diverged_password? should report true" do
461
464
  provider.load_current_resource
462
- provider.diverged_password?.should be_true
465
+ expect(provider.diverged_password?).to be_true
463
466
  end
464
467
  end
465
468
 
@@ -469,7 +472,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
469
472
 
470
473
  it "diverged_password? should report false" do
471
474
  provider.load_current_resource
472
- provider.diverged_password?.should be_false
475
+ expect(provider.diverged_password?).to be_false
473
476
  end
474
477
  end
475
478
  end
@@ -483,19 +486,19 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30"
483
486
 
484
487
  it "collects the user data correctly" do
485
488
  provider.load_current_resource
486
- provider.current_resource.comment.should eq("vagrant")
487
- provider.current_resource.uid.should eq("11112222-3333-4444-AAAA-BBBBCCCCDDDD")
488
- provider.current_resource.gid.should eq("80")
489
- provider.current_resource.home.should eq("/Users/vagrant")
490
- provider.current_resource.shell.should eq("/bin/bash")
491
- provider.current_resource.password.should eq("ea4c2d265d801ba0ec0dfccd\
489
+ expect(provider.current_resource.comment).to eq("vagrant")
490
+ expect(provider.current_resource.uid).to eq("11112222-3333-4444-AAAA-BBBBCCCCDDDD")
491
+ expect(provider.current_resource.gid).to eq("80")
492
+ expect(provider.current_resource.home).to eq("/Users/vagrant")
493
+ expect(provider.current_resource.shell).to eq("/bin/bash")
494
+ expect(provider.current_resource.password).to eq("ea4c2d265d801ba0ec0dfccd\
492
495
  253dfc1de91cbe0806b4acc1ed7fe22aebcf6beb5344d0f442e590\
493
496
  ffa04d679075da3afb119e41b72b5eaf08ee4aa54693722646d5\
494
497
  19ee04843deb8a3e977428d33f625e83887913e5c13b70035961\
495
498
  5e00ad7bc3e7a0c98afc3e19d1360272454f8d33a9214d2fbe8b\
496
499
  e68d1f9821b26689312366")
497
- provider.current_resource.salt.should eq("f994ef2f73b7c5594ebd1553300976b20733ce0e24d659783d87f3d81cbbb6a9")
498
- provider.current_resource.iterations.should eq(39840)
500
+ expect(provider.current_resource.salt).to eq("f994ef2f73b7c5594ebd1553300976b20733ce0e24d659783d87f3d81cbbb6a9")
501
+ expect(provider.current_resource.iterations).to eq(39840)
499
502
  end
500
503
  end
501
504
 
@@ -509,12 +512,12 @@ e68d1f9821b26689312366")
509
512
 
510
513
  it "collects the user data correctly" do
511
514
  provider.load_current_resource
512
- provider.current_resource.comment.should eq("vagrant")
513
- provider.current_resource.uid.should eq("11112222-3333-4444-AAAA-BBBBCCCCDDDD")
514
- provider.current_resource.gid.should eq("80")
515
- provider.current_resource.home.should eq("/Users/vagrant")
516
- provider.current_resource.shell.should eq("/bin/bash")
517
- provider.current_resource.password.should eq("6f75d7190441facc34291ebbea1fc756b242d4f\
515
+ expect(provider.current_resource.comment).to eq("vagrant")
516
+ expect(provider.current_resource.uid).to eq("11112222-3333-4444-AAAA-BBBBCCCCDDDD")
517
+ expect(provider.current_resource.gid).to eq("80")
518
+ expect(provider.current_resource.home).to eq("/Users/vagrant")
519
+ expect(provider.current_resource.shell).to eq("/bin/bash")
520
+ expect(provider.current_resource.password).to eq("6f75d7190441facc34291ebbea1fc756b242d4f\
518
521
  e9bcff141bccb84f1979e27e539539aa31f9f7dcc92c0cea959\
519
522
  ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
520
523
  end
@@ -522,7 +525,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
522
525
  describe "when a plain text password is set" do
523
526
  it "reports password needs to be updated" do
524
527
  provider.load_current_resource
525
- provider.diverged_password?.should be_true
528
+ expect(provider.diverged_password?).to be_true
526
529
  end
527
530
  end
528
531
 
@@ -533,7 +536,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
533
536
 
534
537
  it "reports password needs to be updated" do
535
538
  provider.load_current_resource
536
- provider.diverged_password?.should be_true
539
+ expect(provider.diverged_password?).to be_true
537
540
  end
538
541
  end
539
542
  end
@@ -547,14 +550,14 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
547
550
 
548
551
  it "collects the user data correctly" do
549
552
  provider.load_current_resource
550
- provider.current_resource.comment.should eq("vagrant")
551
- provider.current_resource.uid.should eq("11112222-3333-4444-AAAA-BBBBCCCCDDDD")
552
- provider.current_resource.gid.should eq("80")
553
- provider.current_resource.home.should eq("/Users/vagrant")
554
- provider.current_resource.shell.should eq("/bin/bash")
555
- provider.current_resource.password.should eq(vagrant_sha_512_pbkdf2)
556
- provider.current_resource.salt.should eq(vagrant_sha_512_pbkdf2_salt)
557
- provider.current_resource.iterations.should eq(vagrant_sha_512_pbkdf2_iterations)
553
+ expect(provider.current_resource.comment).to eq("vagrant")
554
+ expect(provider.current_resource.uid).to eq("11112222-3333-4444-AAAA-BBBBCCCCDDDD")
555
+ expect(provider.current_resource.gid).to eq("80")
556
+ expect(provider.current_resource.home).to eq("/Users/vagrant")
557
+ expect(provider.current_resource.shell).to eq("/bin/bash")
558
+ expect(provider.current_resource.password).to eq(vagrant_sha_512_pbkdf2)
559
+ expect(provider.current_resource.salt).to eq(vagrant_sha_512_pbkdf2_salt)
560
+ expect(provider.current_resource.iterations).to eq(vagrant_sha_512_pbkdf2_iterations)
558
561
  end
559
562
 
560
563
  describe "when a plain password is set that is same" do
@@ -562,7 +565,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
562
565
 
563
566
  it "diverged_password? should report false" do
564
567
  provider.load_current_resource
565
- provider.diverged_password?.should be_false
568
+ expect(provider.diverged_password?).to be_false
566
569
  end
567
570
  end
568
571
 
@@ -571,7 +574,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
571
574
 
572
575
  it "diverged_password? should report true" do
573
576
  provider.load_current_resource
574
- provider.diverged_password?.should be_true
577
+ expect(provider.diverged_password?).to be_true
575
578
  end
576
579
  end
577
580
 
@@ -582,7 +585,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
582
585
 
583
586
  it "diverged_password? should report true" do
584
587
  provider.load_current_resource
585
- provider.diverged_password?.should be_true
588
+ expect(provider.diverged_password?).to be_true
586
589
  end
587
590
  end
588
591
 
@@ -593,7 +596,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
593
596
 
594
597
  it "diverged_password? should report true" do
595
598
  provider.load_current_resource
596
- provider.diverged_password?.should be_true
599
+ expect(provider.diverged_password?).to be_true
597
600
  end
598
601
  end
599
602
 
@@ -604,7 +607,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
604
607
 
605
608
  it "diverged_password? should report true" do
606
609
  provider.load_current_resource
607
- provider.diverged_password?.should be_true
610
+ expect(provider.diverged_password?).to be_true
608
611
  end
609
612
  end
610
613
  end
@@ -613,23 +616,23 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
613
616
 
614
617
  describe "salted_sha512_pbkdf2?" do
615
618
  it "should return true when the string is a salted_sha512_pbkdf2 hash" do
616
- provider.salted_sha512_pbkdf2?(salted_sha512_pbkdf2_password).should be_true
619
+ expect(provider.salted_sha512_pbkdf2?(salted_sha512_pbkdf2_password)).to be_true
617
620
  end
618
621
 
619
622
  it "should return false otherwise" do
620
- provider.salted_sha512_pbkdf2?(salted_sha512_password).should be_false
621
- provider.salted_sha512_pbkdf2?("any other string").should be_false
623
+ expect(provider.salted_sha512_pbkdf2?(salted_sha512_password)).to be_false
624
+ expect(provider.salted_sha512_pbkdf2?("any other string")).to be_false
622
625
  end
623
626
  end
624
627
 
625
628
  describe "salted_sha512?" do
626
629
  it "should return true when the string is a salted_sha512_pbkdf2 hash" do
627
- provider.salted_sha512_pbkdf2?(salted_sha512_pbkdf2_password).should be_true
630
+ expect(provider.salted_sha512_pbkdf2?(salted_sha512_pbkdf2_password)).to be_true
628
631
  end
629
632
 
630
633
  it "should return false otherwise" do
631
- provider.salted_sha512?(salted_sha512_pbkdf2_password).should be_false
632
- provider.salted_sha512?("any other string").should be_false
634
+ expect(provider.salted_sha512?(salted_sha512_pbkdf2_password)).to be_false
635
+ expect(provider.salted_sha512?("any other string")).to be_false
633
636
  end
634
637
  end
635
638
 
@@ -644,9 +647,9 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
644
647
 
645
648
  it "password_shadow_info should have salted-sha-512 format" do
646
649
  shadow_info = provider.prepare_password_shadow_info
647
- shadow_info.should have_key("SALTED-SHA512")
650
+ expect(shadow_info).to have_key("SALTED-SHA512")
648
651
  info = shadow_info["SALTED-SHA512"].string.unpack('H*').first
649
- provider.salted_sha512?(info).should be_true
652
+ expect(provider.salted_sha512?(info)).to be_true
650
653
  end
651
654
  end
652
655
 
@@ -655,10 +658,10 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
655
658
 
656
659
  it "password_shadow_info should have salted-sha-512 format" do
657
660
  shadow_info = provider.prepare_password_shadow_info
658
- shadow_info.should have_key("SALTED-SHA512")
661
+ expect(shadow_info).to have_key("SALTED-SHA512")
659
662
  info = shadow_info["SALTED-SHA512"].string.unpack('H*').first
660
- provider.salted_sha512?(info).should be_true
661
- info.should eq(vagrant_sha_512)
663
+ expect(provider.salted_sha512?(info)).to be_true
664
+ expect(info).to eq(vagrant_sha_512)
662
665
  end
663
666
  end
664
667
  end
@@ -674,12 +677,12 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
674
677
 
675
678
  it "password_shadow_info should have salted-sha-512 format" do
676
679
  shadow_info = provider.prepare_password_shadow_info
677
- shadow_info.should have_key("SALTED-SHA512-PBKDF2")
678
- shadow_info["SALTED-SHA512-PBKDF2"].should have_key("entropy")
679
- shadow_info["SALTED-SHA512-PBKDF2"].should have_key("salt")
680
- shadow_info["SALTED-SHA512-PBKDF2"].should have_key("iterations")
680
+ expect(shadow_info).to have_key("SALTED-SHA512-PBKDF2")
681
+ expect(shadow_info["SALTED-SHA512-PBKDF2"]).to have_key("entropy")
682
+ expect(shadow_info["SALTED-SHA512-PBKDF2"]).to have_key("salt")
683
+ expect(shadow_info["SALTED-SHA512-PBKDF2"]).to have_key("iterations")
681
684
  info = shadow_info["SALTED-SHA512-PBKDF2"]["entropy"].string.unpack('H*').first
682
- provider.salted_sha512_pbkdf2?(info).should be_true
685
+ expect(provider.salted_sha512_pbkdf2?(info)).to be_true
683
686
  end
684
687
  end
685
688
 
@@ -690,13 +693,13 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
690
693
 
691
694
  it "password_shadow_info should have salted-sha-512 format" do
692
695
  shadow_info = provider.prepare_password_shadow_info
693
- shadow_info.should have_key("SALTED-SHA512-PBKDF2")
694
- shadow_info["SALTED-SHA512-PBKDF2"].should have_key("entropy")
695
- shadow_info["SALTED-SHA512-PBKDF2"].should have_key("salt")
696
- shadow_info["SALTED-SHA512-PBKDF2"].should have_key("iterations")
696
+ expect(shadow_info).to have_key("SALTED-SHA512-PBKDF2")
697
+ expect(shadow_info["SALTED-SHA512-PBKDF2"]).to have_key("entropy")
698
+ expect(shadow_info["SALTED-SHA512-PBKDF2"]).to have_key("salt")
699
+ expect(shadow_info["SALTED-SHA512-PBKDF2"]).to have_key("iterations")
697
700
  info = shadow_info["SALTED-SHA512-PBKDF2"]["entropy"].string.unpack('H*').first
698
- provider.salted_sha512_pbkdf2?(info).should be_true
699
- info.should eq(vagrant_sha_512_pbkdf2)
701
+ expect(provider.salted_sha512_pbkdf2?(info)).to be_true
702
+ expect(info).to eq(vagrant_sha_512_pbkdf2)
700
703
  end
701
704
  end
702
705
  end
@@ -709,14 +712,14 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
709
712
  end
710
713
 
711
714
  it "should sleep and flush the dscl cache before saving the password" do
712
- provider.should_receive(:prepare_password_shadow_info).and_return({ })
715
+ expect(provider).to receive(:prepare_password_shadow_info).and_return({ })
713
716
  mock_shellout = double("Mock::Shellout")
714
- mock_shellout.stub(:run_command)
715
- Mixlib::ShellOut.should_receive(:new).and_return(mock_shellout)
716
- provider.should_receive(:read_user_info)
717
- provider.should_receive(:dscl_set)
718
- provider.should_receive(:sleep).with(3)
719
- provider.should_receive(:save_user_info)
717
+ allow(mock_shellout).to receive(:run_command)
718
+ expect(Mixlib::ShellOut).to receive(:new).and_return(mock_shellout)
719
+ expect(provider).to receive(:read_user_info)
720
+ expect(provider).to receive(:dscl_set)
721
+ expect(provider).to receive(:sleep).with(3)
722
+ expect(provider).to receive(:save_user_info)
720
723
  provider.set_password
721
724
  end
722
725
  end
@@ -729,33 +732,33 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
729
732
  end
730
733
 
731
734
  it "creates the user, comment field, sets uid, gid, configures the home directory, sets the shell, and sets the password" do
732
- provider.should_receive :dscl_create_user
733
- provider.should_receive :dscl_create_comment
734
- provider.should_receive :dscl_set_uid
735
- provider.should_receive :dscl_set_gid
736
- provider.should_receive :dscl_set_home
737
- provider.should_receive :dscl_set_shell
738
- provider.should_receive :set_password
735
+ expect(provider).to receive :dscl_create_user
736
+ expect(provider).to receive :dscl_create_comment
737
+ expect(provider).to receive :dscl_set_uid
738
+ expect(provider).to receive :dscl_set_gid
739
+ expect(provider).to receive :dscl_set_home
740
+ expect(provider).to receive :dscl_set_shell
741
+ expect(provider).to receive :set_password
739
742
  provider.create_user
740
743
  end
741
744
 
742
745
  it "creates the user and sets the comment field" do
743
- provider.should_receive(:run_dscl).with("create /Users/toor").and_return(true)
746
+ expect(provider).to receive(:run_dscl).with("create /Users/toor").and_return(true)
744
747
  provider.dscl_create_user
745
748
  end
746
749
 
747
750
  it "sets the comment field" do
748
- provider.should_receive(:run_dscl).with("create /Users/toor RealName '#mockssuck'").and_return(true)
751
+ expect(provider).to receive(:run_dscl).with("create /Users/toor RealName '#mockssuck'").and_return(true)
749
752
  provider.dscl_create_comment
750
753
  end
751
754
 
752
755
  it "should run run_dscl with create /Users/user PrimaryGroupID to set the users primary group" do
753
- provider.should_receive(:run_dscl).with("create /Users/toor PrimaryGroupID '1001'").and_return(true)
756
+ expect(provider).to receive(:run_dscl).with("create /Users/toor PrimaryGroupID '1001'").and_return(true)
754
757
  provider.dscl_set_gid
755
758
  end
756
759
 
757
760
  it "should run run_dscl with create /Users/user UserShell to set the users login shell" do
758
- provider.should_receive(:run_dscl).with("create /Users/toor UserShell '/usr/bin/false'").and_return(true)
761
+ expect(provider).to receive(:run_dscl).with("create /Users/toor UserShell '/usr/bin/false'").and_return(true)
759
762
  provider.dscl_set_shell
760
763
  end
761
764
  end
@@ -767,15 +770,15 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
767
770
  end
768
771
 
769
772
  it "should map the group name to a numeric ID when the group exists" do
770
- provider.should_receive(:run_dscl).with("read /Groups/newgroup PrimaryGroupID").ordered.and_return("PrimaryGroupID: 1001\n")
771
- provider.should_receive(:run_dscl).with("create /Users/toor PrimaryGroupID '1001'").ordered.and_return(true)
773
+ expect(provider).to receive(:run_dscl).with("read /Groups/newgroup PrimaryGroupID").ordered.and_return("PrimaryGroupID: 1001\n")
774
+ expect(provider).to receive(:run_dscl).with("create /Users/toor PrimaryGroupID '1001'").ordered.and_return(true)
772
775
  provider.dscl_set_gid
773
776
  end
774
777
 
775
778
  it "should raise an exception when the group does not exist" do
776
779
  shell_return = ShellCmdResult.new("<dscl_cmd> DS Error: -14136 (eDSRecordNotFound)", 'err', -14136)
777
- provider.should_receive(:shell_out).with('dscl . -read /Groups/newgroup PrimaryGroupID').and_return(shell_return)
778
- lambda { provider.dscl_set_gid }.should raise_error(Chef::Exceptions::GroupIDNotFound)
780
+ expect(provider).to receive(:shell_out).with('dscl . -read /Groups/newgroup PrimaryGroupID').and_return(shell_return)
781
+ expect { provider.dscl_set_gid }.to raise_error(Chef::Exceptions::GroupIDNotFound)
779
782
  end
780
783
  end
781
784
  end
@@ -794,13 +797,13 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
794
797
  end
795
798
 
796
799
  it "sets the user, comment field, uid, gid, moves the home directory, sets the shell, and sets the password" do
797
- provider.should_receive :dscl_create_user
798
- provider.should_receive :dscl_create_comment
799
- provider.should_receive :dscl_set_uid
800
- provider.should_receive :dscl_set_gid
801
- provider.should_receive :dscl_set_home
802
- provider.should_receive :dscl_set_shell
803
- provider.should_receive :set_password
800
+ expect(provider).to receive :dscl_create_user
801
+ expect(provider).to receive :dscl_create_comment
802
+ expect(provider).to receive :dscl_set_uid
803
+ expect(provider).to receive :dscl_set_gid
804
+ expect(provider).to receive :dscl_set_home
805
+ expect(provider).to receive :dscl_set_shell
806
+ expect(provider).to receive :set_password
804
807
  provider.create_user
805
808
  end
806
809
  end
@@ -815,15 +818,15 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
815
818
  end
816
819
 
817
820
  it "sets the gid" do
818
- provider.should_receive :dscl_set_gid
821
+ expect(provider).to receive :dscl_set_gid
819
822
  provider.manage_user
820
823
  end
821
824
  end
822
825
 
823
826
  describe "when the user exists" do
824
827
  before do
825
- provider.should_receive(:shell_out).with("dscacheutil '-flushcache'")
826
- provider.should_receive(:shell_out).with("plutil -convert xml1 -o - /var/db/dslocal/nodes/Default/users/toor.plist") do
828
+ expect(provider).to receive(:shell_out).with("dscacheutil '-flushcache'")
829
+ expect(provider).to receive(:shell_out).with("plutil -convert xml1 -o - /var/db/dslocal/nodes/Default/users/toor.plist") do
827
830
  ShellCmdResult.new(File.read(File.join(CHEF_SPEC_DATA, "mac_users/10.9.plist.xml")), "", 0)
828
831
  end
829
832
  provider.load_current_resource
@@ -832,20 +835,20 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
832
835
  describe "when Chef is removing the user" do
833
836
  it "removes the user from the groups and deletes home directory when the resource is configured to manage home" do
834
837
  new_resource.supports({ :manage_home => true })
835
- provider.should_receive(:run_dscl).with("list /Groups").and_return("my_group\nyour_group\nreal_group\n")
836
- provider.should_receive(:run_dscl).with("read /Groups/my_group").and_raise(Chef::Exceptions::DsclCommandFailed) # Empty group
837
- provider.should_receive(:run_dscl).with("read /Groups/your_group").and_return("GroupMembership: not_you")
838
- provider.should_receive(:run_dscl).with("read /Groups/real_group").and_return("GroupMembership: toor")
839
- provider.should_receive(:run_dscl).with("delete /Groups/real_group GroupMembership 'toor'")
840
- provider.should_receive(:run_dscl).with("delete /Users/toor")
841
- FileUtils.should_receive(:rm_rf).with("/Users/vagrant")
838
+ expect(provider).to receive(:run_dscl).with("list /Groups").and_return("my_group\nyour_group\nreal_group\n")
839
+ expect(provider).to receive(:run_dscl).with("read /Groups/my_group").and_raise(Chef::Exceptions::DsclCommandFailed) # Empty group
840
+ expect(provider).to receive(:run_dscl).with("read /Groups/your_group").and_return("GroupMembership: not_you")
841
+ expect(provider).to receive(:run_dscl).with("read /Groups/real_group").and_return("GroupMembership: toor")
842
+ expect(provider).to receive(:run_dscl).with("delete /Groups/real_group GroupMembership 'toor'")
843
+ expect(provider).to receive(:run_dscl).with("delete /Users/toor")
844
+ expect(FileUtils).to receive(:rm_rf).with("/Users/vagrant")
842
845
  provider.remove_user
843
846
  end
844
847
  end
845
848
 
846
849
  describe "when user is not locked" do
847
850
  it "determines the user as not locked" do
848
- provider.should_not be_locked
851
+ expect(provider).not_to be_locked
849
852
  end
850
853
  end
851
854
 
@@ -856,11 +859,11 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
856
859
  end
857
860
 
858
861
  it "determines the user as not locked" do
859
- provider.should be_locked
862
+ expect(provider).to be_locked
860
863
  end
861
864
 
862
865
  it "can unlock the user" do
863
- provider.should_receive(:run_dscl).with("create /Users/toor AuthenticationAuthority ';ShadowHash;HASHLIST:<SALTED-SHA512-PBKDF2>'")
866
+ expect(provider).to receive(:run_dscl).with("create /Users/toor AuthenticationAuthority ';ShadowHash;HASHLIST:<SALTED-SHA512-PBKDF2>'")
864
867
  provider.unlock_user
865
868
  end
866
869
  end
@@ -868,7 +871,7 @@ ea18e18b720e358e7fbe3cfbeaa561456f6ba008937a30")
868
871
 
869
872
  describe "when locking the user" do
870
873
  it "should run run_dscl with append /Users/user AuthenticationAuthority ;DisabledUser; to lock the user account" do
871
- provider.should_receive(:run_dscl).with("append /Users/toor AuthenticationAuthority ';DisabledUser;'")
874
+ expect(provider).to receive(:run_dscl).with("append /Users/toor AuthenticationAuthority ';DisabledUser;'")
872
875
  provider.lock_user
873
876
  end
874
877
  end