chef 12.18.31 → 13.0.118

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 (611) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +15 -11
  3. data/README.md +13 -13
  4. data/Rakefile +1 -19
  5. data/VERSION +1 -1
  6. data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
  7. data/acceptance/Gemfile +8 -5
  8. data/acceptance/Gemfile.lock +90 -81
  9. data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
  10. data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
  11. data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
  12. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
  13. data/chef-universal-mingw32.gemspec +2 -3
  14. data/chef.gemspec +8 -7
  15. data/lib/chef/api_client.rb +8 -15
  16. data/lib/chef/api_client_v1.rb +9 -11
  17. data/lib/chef/application/apply.rb +8 -10
  18. data/lib/chef/application/client.rb +1 -1
  19. data/lib/chef/application/exit_code.rb +11 -82
  20. data/lib/chef/application/knife.rb +2 -2
  21. data/lib/chef/application/solo.rb +0 -1
  22. data/lib/chef/application/windows_service.rb +36 -37
  23. data/lib/chef/application/windows_service_manager.rb +1 -1
  24. data/lib/chef/application.rb +15 -25
  25. data/lib/chef/audit/audit_event_proxy.rb +2 -2
  26. data/lib/chef/audit/control_group_data.rb +1 -1
  27. data/lib/chef/blacklist.rb +81 -0
  28. data/lib/chef/chef_class.rb +1 -0
  29. data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
  30. data/lib/chef/chef_fs/command_line.rb +15 -16
  31. data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
  32. data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
  33. data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
  34. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  35. data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
  36. data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
  37. data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
  38. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
  39. data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
  40. data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
  41. data/lib/chef/chef_fs/file_pattern.rb +2 -2
  42. data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
  43. data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
  44. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
  45. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
  46. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
  47. data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
  48. data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
  49. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
  50. data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
  51. data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
  52. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
  53. data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
  54. data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
  55. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
  56. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
  57. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
  58. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
  59. data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
  60. data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
  61. data/lib/chef/chef_fs/file_system.rb +1 -1
  62. data/lib/chef/chef_fs/parallelizer.rb +9 -11
  63. data/lib/chef/client.rb +47 -11
  64. data/lib/chef/config_fetcher.rb +4 -4
  65. data/lib/chef/constants.rb +1 -1
  66. data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
  67. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  68. data/lib/chef/cookbook/gem_installer.rb +10 -6
  69. data/lib/chef/cookbook/manifest_v0.rb +68 -0
  70. data/lib/chef/cookbook/manifest_v2.rb +41 -0
  71. data/lib/chef/cookbook/metadata.rb +25 -134
  72. data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
  73. data/lib/chef/cookbook/synchronizer.rb +24 -21
  74. data/lib/chef/cookbook/syntax_check.rb +1 -1
  75. data/lib/chef/cookbook_manifest.rb +91 -65
  76. data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
  77. data/lib/chef/cookbook_uploader.rb +1 -1
  78. data/lib/chef/cookbook_version.rb +69 -157
  79. data/lib/chef/data_bag.rb +1 -7
  80. data/lib/chef/data_bag_item.rb +5 -10
  81. data/lib/chef/data_collector/messages.rb +2 -0
  82. data/lib/chef/data_collector/resource_report.rb +32 -4
  83. data/lib/chef/data_collector.rb +3 -4
  84. data/lib/chef/decorator/unchain.rb +0 -16
  85. data/lib/chef/decorator.rb +1 -1
  86. data/lib/chef/deprecated.rb +53 -19
  87. data/lib/chef/dsl/audit.rb +2 -2
  88. data/lib/chef/dsl/declare_resource.rb +11 -17
  89. data/lib/chef/dsl/platform_introspection.rb +29 -31
  90. data/lib/chef/dsl/reboot_pending.rb +1 -1
  91. data/lib/chef/dsl/recipe.rb +1 -4
  92. data/lib/chef/dsl/resources.rb +4 -13
  93. data/lib/chef/encrypted_data_bag_item.rb +2 -2
  94. data/lib/chef/environment.rb +9 -16
  95. data/lib/chef/event_dispatch/base.rb +16 -0
  96. data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
  97. data/lib/chef/exceptions.rb +6 -10
  98. data/lib/chef/file_access_control/unix.rb +14 -14
  99. data/lib/chef/file_access_control/windows.rb +1 -1
  100. data/lib/chef/formatters/error_description.rb +18 -1
  101. data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
  102. data/lib/chef/formatters/error_mapper.rb +6 -6
  103. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
  104. data/lib/chef/http/api_versions.rb +54 -0
  105. data/lib/chef/http/authenticator.rb +15 -6
  106. data/lib/chef/http/json_output.rb +4 -1
  107. data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
  108. data/lib/chef/http/validate_content_length.rb +2 -2
  109. data/lib/chef/http.rb +39 -0
  110. data/lib/chef/json_compat.rb +7 -103
  111. data/lib/chef/key.rb +5 -10
  112. data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
  113. data/lib/chef/knife/bootstrap.rb +6 -0
  114. data/lib/chef/knife/configure.rb +1 -3
  115. data/lib/chef/knife/configure_client.rb +1 -3
  116. data/lib/chef/knife/cookbook_create.rb +1 -434
  117. data/lib/chef/knife/cookbook_download.rb +3 -4
  118. data/lib/chef/knife/cookbook_show.rb +7 -3
  119. data/lib/chef/knife/cookbook_site_install.rb +2 -2
  120. data/lib/chef/knife/core/bootstrap_context.rb +8 -7
  121. data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
  122. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  123. data/lib/chef/knife/core/status_presenter.rb +1 -1
  124. data/lib/chef/knife/core/subcommand_loader.rb +2 -32
  125. data/lib/chef/knife/core/ui.rb +20 -27
  126. data/lib/chef/knife/data_bag_create.rb +6 -4
  127. data/lib/chef/knife/data_bag_secret_options.rb +1 -1
  128. data/lib/chef/knife/deps.rb +32 -34
  129. data/lib/chef/knife/edit.rb +1 -1
  130. data/lib/chef/knife/help.rb +1 -1
  131. data/lib/chef/knife/list.rb +1 -1
  132. data/lib/chef/knife/search.rb +9 -20
  133. data/lib/chef/knife/ssh.rb +62 -36
  134. data/lib/chef/knife/ssl_check.rb +1 -1
  135. data/lib/chef/knife/user_delete.rb +1 -1
  136. data/lib/chef/knife/xargs.rb +1 -1
  137. data/lib/chef/knife.rb +6 -7
  138. data/lib/chef/mash.rb +1 -1
  139. data/lib/chef/mixin/create_path.rb +3 -5
  140. data/lib/chef/mixin/from_file.rb +2 -2
  141. data/lib/chef/mixin/get_source_from_package.rb +2 -2
  142. data/lib/chef/mixin/notifying_block.rb +7 -9
  143. data/lib/chef/mixin/params_validate.rb +9 -8
  144. data/lib/chef/mixin/path_sanity.rb +17 -19
  145. data/lib/chef/mixin/securable.rb +1 -1
  146. data/lib/chef/mixin/shell_out.rb +33 -29
  147. data/lib/chef/mixin/unformatter.rb +2 -2
  148. data/lib/chef/mixin/uris.rb +4 -6
  149. data/lib/chef/mixin/versioned_api.rb +84 -0
  150. data/lib/chef/mixin/which.rb +25 -8
  151. data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
  152. data/lib/chef/mixin/xml_escape.rb +3 -5
  153. data/lib/chef/mixins.rb +0 -1
  154. data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
  155. data/lib/chef/node/attribute.rb +9 -32
  156. data/lib/chef/node/attribute_collections.rb +1 -19
  157. data/lib/chef/node/common_api.rb +5 -7
  158. data/lib/chef/node/immutable_collections.rb +42 -38
  159. data/lib/chef/node/mixin/immutablize_array.rb +1 -1
  160. data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
  161. data/lib/chef/node.rb +21 -20
  162. data/lib/chef/node_map.rb +2 -5
  163. data/lib/chef/org.rb +10 -17
  164. data/lib/chef/platform/provider_mapping.rb +2 -169
  165. data/lib/chef/platform/query_helpers.rb +1 -1
  166. data/lib/chef/platform/rebooter.rb +1 -2
  167. data/lib/chef/policy_builder/expand_node_object.rb +3 -29
  168. data/lib/chef/policy_builder/policyfile.rb +8 -6
  169. data/lib/chef/property.rb +66 -80
  170. data/lib/chef/provider/apt_repository.rb +6 -10
  171. data/lib/chef/provider/apt_update.rb +1 -7
  172. data/lib/chef/provider/batch.rb +1 -1
  173. data/lib/chef/provider/breakpoint.rb +2 -2
  174. data/lib/chef/provider/cookbook_file.rb +3 -9
  175. data/lib/chef/provider/cron.rb +42 -60
  176. data/lib/chef/provider/deploy/revision.rb +3 -5
  177. data/lib/chef/provider/deploy.rb +82 -88
  178. data/lib/chef/provider/directory.rb +33 -37
  179. data/lib/chef/provider/dsc_resource.rb +23 -11
  180. data/lib/chef/provider/dsc_script.rb +1 -5
  181. data/lib/chef/provider/env/windows.rb +5 -1
  182. data/lib/chef/provider/env.rb +32 -30
  183. data/lib/chef/provider/erl_call.rb +15 -47
  184. data/lib/chef/provider/execute.rb +7 -8
  185. data/lib/chef/provider/file.rb +49 -61
  186. data/lib/chef/provider/git.rb +56 -60
  187. data/lib/chef/provider/group.rb +1 -7
  188. data/lib/chef/provider/http_request.rb +37 -41
  189. data/lib/chef/provider/ifconfig/redhat.rb +1 -1
  190. data/lib/chef/provider/ifconfig.rb +0 -6
  191. data/lib/chef/provider/launchd.rb +6 -2
  192. data/lib/chef/provider/link.rb +51 -55
  193. data/lib/chef/provider/log.rb +3 -7
  194. data/lib/chef/provider/lwrp_base.rb +0 -9
  195. data/lib/chef/provider/mdadm.rb +25 -33
  196. data/lib/chef/provider/mount/aix.rb +2 -2
  197. data/lib/chef/provider/mount/mount.rb +2 -2
  198. data/lib/chef/provider/mount.rb +1 -5
  199. data/lib/chef/provider/noop.rb +1 -1
  200. data/lib/chef/provider/ohai.rb +1 -7
  201. data/lib/chef/provider/osx_profile.rb +24 -29
  202. data/lib/chef/provider/package/aix.rb +55 -53
  203. data/lib/chef/provider/package/apt.rb +15 -13
  204. data/lib/chef/provider/package/cab.rb +48 -20
  205. data/lib/chef/provider/package/chocolatey.rb +9 -10
  206. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  207. data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
  208. data/lib/chef/provider/package/dnf/version.rb +1 -1
  209. data/lib/chef/provider/package/dnf.rb +21 -19
  210. data/lib/chef/provider/package/dpkg.rb +8 -9
  211. data/lib/chef/provider/package/freebsd/base.rb +10 -10
  212. data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
  213. data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
  214. data/lib/chef/provider/package/freebsd/port.rb +7 -7
  215. data/lib/chef/provider/package/homebrew.rb +11 -10
  216. data/lib/chef/provider/package/ips.rb +18 -24
  217. data/lib/chef/provider/package/macports.rb +23 -23
  218. data/lib/chef/provider/package/msu.rb +11 -12
  219. data/lib/chef/provider/package/openbsd.rb +25 -22
  220. data/lib/chef/provider/package/pacman.rb +16 -17
  221. data/lib/chef/provider/package/paludis.rb +26 -27
  222. data/lib/chef/provider/package/portage.rb +22 -23
  223. data/lib/chef/provider/package/powershell.rb +17 -17
  224. data/lib/chef/provider/package/rpm.rb +25 -26
  225. data/lib/chef/provider/package/rubygems.rb +64 -62
  226. data/lib/chef/provider/package/smartos.rb +16 -16
  227. data/lib/chef/provider/package/solaris.rb +44 -45
  228. data/lib/chef/provider/package/windows/exe.rb +6 -6
  229. data/lib/chef/provider/package/windows/msi.rb +7 -7
  230. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
  231. data/lib/chef/provider/package/windows.rb +3 -3
  232. data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
  233. data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
  234. data/lib/chef/provider/package/yum.rb +319 -269
  235. data/lib/chef/provider/package/zypper.rb +10 -20
  236. data/lib/chef/provider/package.rb +71 -63
  237. data/lib/chef/provider/powershell_script.rb +15 -7
  238. data/lib/chef/provider/reboot.rb +10 -14
  239. data/lib/chef/provider/registry_key.rb +39 -43
  240. data/lib/chef/provider/remote_directory.rb +3 -15
  241. data/lib/chef/provider/remote_file.rb +3 -9
  242. data/lib/chef/provider/route.rb +1 -7
  243. data/lib/chef/provider/ruby_block.rb +4 -8
  244. data/lib/chef/provider/script.rb +42 -6
  245. data/lib/chef/provider/service/aix.rb +1 -5
  246. data/lib/chef/provider/service/debian.rb +15 -21
  247. data/lib/chef/provider/service/freebsd.rb +0 -1
  248. data/lib/chef/provider/service/gentoo.rb +0 -1
  249. data/lib/chef/provider/service/init.rb +0 -1
  250. data/lib/chef/provider/service/insserv.rb +2 -2
  251. data/lib/chef/provider/service/openbsd.rb +0 -1
  252. data/lib/chef/provider/service/redhat.rb +2 -2
  253. data/lib/chef/provider/service/simple.rb +0 -5
  254. data/lib/chef/provider/service/solaris.rb +5 -4
  255. data/lib/chef/provider/service/systemd.rb +1 -1
  256. data/lib/chef/provider/service/upstart.rb +10 -12
  257. data/lib/chef/provider/service/windows.rb +1 -5
  258. data/lib/chef/provider/service.rb +51 -58
  259. data/lib/chef/provider/subversion.rb +40 -46
  260. data/lib/chef/provider/systemd_unit.rb +2 -0
  261. data/lib/chef/provider/template/content.rb +24 -1
  262. data/lib/chef/provider/template.rb +3 -9
  263. data/lib/chef/provider/user/dscl.rb +3 -3
  264. data/lib/chef/provider/user/linux.rb +6 -5
  265. data/lib/chef/provider/user/pw.rb +4 -10
  266. data/lib/chef/provider/user/solaris.rb +2 -2
  267. data/lib/chef/provider/user/useradd.rb +5 -5
  268. data/lib/chef/provider/user.rb +43 -59
  269. data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
  270. data/lib/chef/provider/windows_task.rb +418 -0
  271. data/lib/chef/provider/yum_repository.rb +3 -6
  272. data/lib/chef/provider.rb +63 -115
  273. data/lib/chef/provider_resolver.rb +8 -34
  274. data/lib/chef/providers.rb +1 -1
  275. data/lib/chef/recipe.rb +9 -1
  276. data/lib/chef/resource/action_class.rb +13 -17
  277. data/lib/chef/resource/apt_repository.rb +0 -1
  278. data/lib/chef/resource/apt_update.rb +3 -1
  279. data/lib/chef/resource/chef_gem.rb +4 -11
  280. data/lib/chef/resource/chocolatey_package.rb +4 -1
  281. data/lib/chef/resource/dnf_package.rb +6 -3
  282. data/lib/chef/resource/dsc_resource.rb +9 -1
  283. data/lib/chef/resource/execute.rb +66 -19
  284. data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
  285. data/lib/chef/resource/file/verification.rb +2 -7
  286. data/lib/chef/resource/freebsd_package.rb +1 -1
  287. data/lib/chef/resource/gem_package.rb +16 -2
  288. data/lib/chef/resource/launchd.rb +3 -3
  289. data/lib/chef/resource/lwrp_base.rb +0 -2
  290. data/lib/chef/resource/mount.rb +5 -12
  291. data/lib/chef/resource/package.rb +2 -2
  292. data/lib/chef/resource/powershell_script.rb +1 -1
  293. data/lib/chef/resource/registry_key.rb +1 -1
  294. data/lib/chef/resource/script.rb +8 -34
  295. data/lib/chef/resource/service.rb +15 -13
  296. data/lib/chef/resource/systemd_unit.rb +5 -0
  297. data/lib/chef/resource/user/aix_user.rb +1 -1
  298. data/lib/chef/resource/user/dscl_user.rb +1 -1
  299. data/lib/chef/resource/user/linux_user.rb +1 -10
  300. data/lib/chef/resource/user/pw_user.rb +1 -1
  301. data/lib/chef/resource/user/solaris_user.rb +1 -1
  302. data/lib/chef/resource/user/windows_user.rb +1 -1
  303. data/lib/chef/resource/user.rb +1 -19
  304. data/lib/chef/resource/windows_package.rb +4 -1
  305. data/lib/chef/resource/windows_task.rb +237 -0
  306. data/lib/chef/resource/yum_package.rb +13 -4
  307. data/lib/chef/resource/yum_repository.rb +0 -1
  308. data/lib/chef/resource/zypper_package.rb +2 -0
  309. data/lib/chef/resource.rb +90 -202
  310. data/lib/chef/resource_builder.rb +1 -65
  311. data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
  312. data/lib/chef/resource_collection/resource_list.rb +6 -0
  313. data/lib/chef/resource_collection/resource_set.rb +44 -17
  314. data/lib/chef/resource_collection.rb +10 -0
  315. data/lib/chef/resource_reporter.rb +1 -1
  316. data/lib/chef/resource_resolver.rb +1 -25
  317. data/lib/chef/resources.rb +1 -1
  318. data/lib/chef/role.rb +0 -6
  319. data/lib/chef/run_context/cookbook_compiler.rb +49 -5
  320. data/lib/chef/run_context.rb +4 -25
  321. data/lib/chef/run_list/run_list_item.rb +1 -1
  322. data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
  323. data/lib/chef/search/query.rb +26 -31
  324. data/lib/chef/server_api.rb +2 -0
  325. data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
  326. data/lib/chef/shell/ext.rb +3 -3
  327. data/lib/chef/shell/shell_session.rb +14 -4
  328. data/lib/chef/shell.rb +32 -7
  329. data/lib/chef/user.rb +9 -16
  330. data/lib/chef/user_v1.rb +9 -16
  331. data/lib/chef/util/diff.rb +1 -1
  332. data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
  333. data/lib/chef/util/selinux.rb +1 -1
  334. data/lib/chef/util/windows/net_group.rb +18 -30
  335. data/lib/chef/util/windows/net_use.rb +7 -11
  336. data/lib/chef/util/windows/net_user.rb +12 -18
  337. data/lib/chef/util/windows/volume.rb +9 -15
  338. data/lib/chef/version.rb +1 -1
  339. data/lib/chef/version_class.rb +1 -1
  340. data/lib/chef/win32/api/file.rb +25 -31
  341. data/lib/chef/win32/api/installer.rb +2 -2
  342. data/lib/chef/win32/api.rb +4 -6
  343. data/lib/chef/win32/file.rb +4 -6
  344. data/lib/chef/win32/registry.rb +9 -9
  345. data/lib/chef/win32/security/acl.rb +2 -2
  346. data/lib/chef/win32/security/sid.rb +5 -0
  347. data/lib/chef/win32/security.rb +2 -2
  348. data/lib/chef/win32/unicode.rb +2 -2
  349. data/lib/chef/win32/version.rb +1 -1
  350. data/lib/chef.rb +1 -2
  351. data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
  352. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  353. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  354. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  355. data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
  356. data/spec/data/lwrp/resources/buck_passer.rb +5 -0
  357. data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
  358. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
  359. data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
  360. data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
  361. data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
  362. data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
  363. data/spec/data/prefer_metadata_json/metadata.json +51 -0
  364. data/spec/data/prefer_metadata_json/metadata.rb +6 -0
  365. data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
  366. data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
  367. data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
  368. data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
  369. data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
  370. data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
  371. data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
  372. data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
  373. data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
  374. data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
  375. data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
  376. data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
  377. data/spec/data/shef-config.rb +11 -10
  378. data/spec/functional/knife/ssh_spec.rb +34 -6
  379. data/spec/functional/rebooter_spec.rb +1 -0
  380. data/spec/functional/resource/bash_spec.rb +11 -45
  381. data/spec/functional/resource/batch_spec.rb +5 -1
  382. data/spec/functional/resource/cron_spec.rb +2 -2
  383. data/spec/functional/resource/dsc_script_spec.rb +2 -4
  384. data/spec/functional/resource/execute_spec.rb +17 -0
  385. data/spec/functional/resource/link_spec.rb +3 -3
  386. data/spec/functional/resource/template_spec.rb +33 -0
  387. data/spec/functional/resource/user/dscl_spec.rb +2 -4
  388. data/spec/functional/root_alias_spec.rb +78 -0
  389. data/spec/functional/shell_spec.rb +38 -40
  390. data/spec/integration/client/client_spec.rb +109 -16
  391. data/spec/integration/client/exit_code_spec.rb +1 -105
  392. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
  393. data/spec/integration/knife/cookbook_download_spec.rb +0 -24
  394. data/spec/integration/knife/cookbook_show_spec.rb +12 -23
  395. data/spec/integration/knife/deps_spec.rb +5 -9
  396. data/spec/integration/knife/search_node_spec.rb +39 -0
  397. data/spec/integration/knife/serve_spec.rb +58 -22
  398. data/spec/integration/knife/upload_spec.rb +3 -11
  399. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
  400. data/spec/integration/recipes/notifies_spec.rb +60 -0
  401. data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
  402. data/spec/integration/recipes/resource_action_spec.rb +37 -30
  403. data/spec/spec_helper.rb +7 -0
  404. data/spec/support/chef_helpers.rb +5 -7
  405. data/spec/support/platform_helpers.rb +10 -3
  406. data/spec/support/platforms/prof/gc.rb +4 -6
  407. data/spec/support/shared/context/client.rb +9 -2
  408. data/spec/support/shared/functional/execute_resource.rb +150 -0
  409. data/spec/support/shared/functional/windows_script.rb +74 -4
  410. data/spec/support/shared/integration/knife_support.rb +1 -1
  411. data/spec/support/shared/unit/execute_resource.rb +37 -9
  412. data/spec/support/shared/unit/provider/file.rb +10 -0
  413. data/spec/support/shared/unit/script_resource.rb +1 -9
  414. data/spec/unit/application/exit_code_spec.rb +4 -89
  415. data/spec/unit/application_spec.rb +39 -29
  416. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
  417. data/spec/unit/client_spec.rb +72 -31
  418. data/spec/unit/config_fetcher_spec.rb +2 -2
  419. data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
  420. data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
  421. data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
  422. data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
  423. data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
  424. data/spec/unit/cookbook/metadata_spec.rb +29 -108
  425. data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
  426. data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
  427. data/spec/unit/cookbook_loader_spec.rb +17 -19
  428. data/spec/unit/cookbook_manifest_spec.rb +12 -44
  429. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
  430. data/spec/unit/cookbook_spec.rb +10 -14
  431. data/spec/unit/cookbook_uploader_spec.rb +1 -1
  432. data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
  433. data/spec/unit/cookbook_version_spec.rb +19 -128
  434. data/spec/unit/data_bag_item_spec.rb +4 -0
  435. data/spec/unit/data_collector/messages_spec.rb +137 -0
  436. data/spec/unit/data_collector/resource_report_spec.rb +145 -0
  437. data/spec/unit/deprecation_spec.rb +0 -14
  438. data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
  439. data/spec/unit/formatters/error_description_spec.rb +52 -7
  440. data/spec/unit/http/api_versions_spec.rb +79 -0
  441. data/spec/unit/http/authenticator_spec.rb +20 -0
  442. data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
  443. data/spec/unit/json_compat_spec.rb +0 -32
  444. data/spec/unit/knife/bootstrap_spec.rb +34 -0
  445. data/spec/unit/knife/configure_client_spec.rb +0 -2
  446. data/spec/unit/knife/cookbook_create_spec.rb +1 -220
  447. data/spec/unit/knife/cookbook_download_spec.rb +46 -28
  448. data/spec/unit/knife/cookbook_show_spec.rb +42 -9
  449. data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
  450. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
  451. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
  452. data/spec/unit/knife/core/ui_spec.rb +21 -11
  453. data/spec/unit/knife/data_bag_create_spec.rb +65 -45
  454. data/spec/unit/knife/ssh_spec.rb +34 -36
  455. data/spec/unit/knife_spec.rb +2 -2
  456. data/spec/unit/lwrp_spec.rb +38 -127
  457. data/spec/unit/mixin/path_sanity_spec.rb +7 -7
  458. data/spec/unit/mixin/shell_out_spec.rb +18 -84
  459. data/spec/unit/mixin/versioned_api_spec.rb +128 -0
  460. data/spec/unit/mixin/which.rb +160 -0
  461. data/spec/unit/node/attribute_spec.rb +65 -33
  462. data/spec/unit/node/immutable_collections_spec.rb +104 -1
  463. data/spec/unit/node_map_spec.rb +1 -23
  464. data/spec/unit/node_spec.rb +81 -98
  465. data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
  466. data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
  467. data/spec/unit/property/validation_spec.rb +51 -69
  468. data/spec/unit/property_spec.rb +105 -125
  469. data/spec/unit/provider/apt_repository_spec.rb +33 -27
  470. data/spec/unit/provider/cron_spec.rb +15 -39
  471. data/spec/unit/provider/deploy_spec.rb +1 -1
  472. data/spec/unit/provider/directory_spec.rb +10 -0
  473. data/spec/unit/provider/dsc_resource_spec.rb +175 -0
  474. data/spec/unit/provider/erl_call_spec.rb +5 -13
  475. data/spec/unit/provider/execute_spec.rb +3 -14
  476. data/spec/unit/provider/launchd_spec.rb +2 -2
  477. data/spec/unit/provider/package/aix_spec.rb +22 -22
  478. data/spec/unit/provider/package/apt_spec.rb +37 -27
  479. data/spec/unit/provider/package/cab_spec.rb +59 -5
  480. data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
  481. data/spec/unit/provider/package/dpkg_spec.rb +16 -16
  482. data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
  483. data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
  484. data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
  485. data/spec/unit/provider/package/homebrew_spec.rb +9 -9
  486. data/spec/unit/provider/package/ips_spec.rb +37 -31
  487. data/spec/unit/provider/package/macports_spec.rb +10 -10
  488. data/spec/unit/provider/package/openbsd_spec.rb +10 -10
  489. data/spec/unit/provider/package/pacman_spec.rb +6 -6
  490. data/spec/unit/provider/package/paludis_spec.rb +7 -7
  491. data/spec/unit/provider/package/portage_spec.rb +6 -7
  492. data/spec/unit/provider/package/rpm_spec.rb +23 -23
  493. data/spec/unit/provider/package/rubygems_spec.rb +135 -46
  494. data/spec/unit/provider/package/solaris_spec.rb +15 -15
  495. data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
  496. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
  497. data/spec/unit/provider/package/windows_spec.rb +2 -1
  498. data/spec/unit/provider/package/yum_spec.rb +58 -50
  499. data/spec/unit/provider/package/zypper_spec.rb +54 -97
  500. data/spec/unit/provider/package_spec.rb +8 -0
  501. data/spec/unit/provider/powershell_script_spec.rb +14 -4
  502. data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
  503. data/spec/unit/provider/route_spec.rb +7 -1
  504. data/spec/unit/provider/script_spec.rb +49 -6
  505. data/spec/unit/provider/service/debian_service_spec.rb +14 -20
  506. data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
  507. data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
  508. data/spec/unit/provider/subversion_spec.rb +2 -2
  509. data/spec/unit/provider/user/linux_spec.rb +5 -43
  510. data/spec/unit/provider/user/pw_spec.rb +7 -27
  511. data/spec/unit/provider/windows_task_spec.rb +392 -0
  512. data/spec/unit/provider_resolver_spec.rb +0 -1
  513. data/spec/unit/provider_spec.rb +10 -3
  514. data/spec/unit/recipe_spec.rb +3 -172
  515. data/spec/unit/resource/chef_gem_spec.rb +16 -62
  516. data/spec/unit/resource/conditional_spec.rb +4 -4
  517. data/spec/unit/resource/cookbook_file_spec.rb +2 -2
  518. data/spec/unit/resource/cron_spec.rb +1 -1
  519. data/spec/unit/resource/deploy_spec.rb +4 -4
  520. data/spec/unit/resource/directory_spec.rb +2 -2
  521. data/spec/unit/resource/dsc_resource_spec.rb +6 -0
  522. data/spec/unit/resource/env_spec.rb +1 -1
  523. data/spec/unit/resource/execute_spec.rb +215 -1
  524. data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
  525. data/spec/unit/resource/file/verification_spec.rb +8 -14
  526. data/spec/unit/resource/file_spec.rb +3 -3
  527. data/spec/unit/resource/freebsd_package_spec.rb +2 -2
  528. data/spec/unit/resource/group_spec.rb +2 -2
  529. data/spec/unit/resource/ifconfig_spec.rb +1 -1
  530. data/spec/unit/resource/link_spec.rb +2 -2
  531. data/spec/unit/resource/mdadm_spec.rb +1 -1
  532. data/spec/unit/resource/mount_spec.rb +3 -3
  533. data/spec/unit/resource/ohai_spec.rb +1 -1
  534. data/spec/unit/resource/package_spec.rb +14 -4
  535. data/spec/unit/resource/registry_key_spec.rb +2 -2
  536. data/spec/unit/resource/remote_directory_spec.rb +2 -2
  537. data/spec/unit/resource/remote_file_spec.rb +2 -2
  538. data/spec/unit/resource/route_spec.rb +1 -1
  539. data/spec/unit/resource/scm_spec.rb +2 -2
  540. data/spec/unit/resource/script_spec.rb +1 -1
  541. data/spec/unit/resource/service_spec.rb +25 -5
  542. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  543. data/spec/unit/resource/template_spec.rb +2 -2
  544. data/spec/unit/resource/user_spec.rb +6 -6
  545. data/spec/unit/resource/windows_task_spec.rb +213 -0
  546. data/spec/unit/resource/yum_package_spec.rb +42 -1
  547. data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
  548. data/spec/unit/resource_collection_spec.rb +4 -3
  549. data/spec/unit/resource_reporter_spec.rb +6 -6
  550. data/spec/unit/resource_spec.rb +55 -71
  551. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
  552. data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
  553. data/spec/unit/runner_spec.rb +10 -28
  554. data/spec/unit/search/query_spec.rb +32 -34
  555. data/spec/unit/server_api_versions_spec.rb +44 -0
  556. data/spec/unit/shell/shell_session_spec.rb +33 -2
  557. data/spec/unit/util/selinux_spec.rb +3 -14
  558. data/spec/unit/win32/error_spec.rb +67 -0
  559. data/spec/unit/win32/security_spec.rb +66 -0
  560. data/tasks/bundle.rb +36 -52
  561. data/tasks/changelog.rb +1 -1
  562. data/tasks/dependencies.rb +54 -52
  563. data/tasks/version.rb +41 -0
  564. metadata +91 -76
  565. data/lib/chef/deprecation/mixin/template.rb +0 -48
  566. data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
  567. data/lib/chef/deprecation/provider/file.rb +0 -198
  568. data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
  569. data/lib/chef/deprecation/provider/remote_file.rb +0 -85
  570. data/lib/chef/deprecation/provider/template.rb +0 -63
  571. data/lib/chef/dsl/method_missing.rb +0 -75
  572. data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
  573. data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
  574. data/lib/chef/mixin/command/unix.rb +0 -220
  575. data/lib/chef/mixin/command/windows.rb +0 -71
  576. data/lib/chef/mixin/command.rb +0 -194
  577. data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
  578. data/lib/chef/provider/package/easy_install.rb +0 -135
  579. data/lib/chef/rest.rb +0 -210
  580. data/lib/chef/shell_out.rb +0 -13
  581. data/lib/chef/tasks/chef_repo.rake +0 -200
  582. data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
  583. data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
  584. data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
  585. data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
  586. data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
  587. data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
  588. data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
  589. data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
  590. data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
  591. data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
  592. data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
  593. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
  594. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
  595. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
  596. data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
  597. data/spec/functional/rest_spec.rb +0 -95
  598. data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
  599. data/spec/unit/lib_backcompat_spec.rb +0 -34
  600. data/spec/unit/mixin/command_spec.rb +0 -107
  601. data/spec/unit/platform_spec.rb +0 -242
  602. data/spec/unit/provider/package/easy_install_spec.rb +0 -114
  603. data/spec/unit/resource/easy_install_package_spec.rb +0 -39
  604. data/spec/unit/rest/auth_credentials_spec.rb +0 -292
  605. data/spec/unit/rest_spec.rb +0 -753
  606. data/spec/unit/shell_out_spec.rb +0 -18
  607. data/tasks/bin/bundle-platform +0 -20
  608. data/tasks/bin/bundle-platform.bat +0 -2
  609. data/tasks/bin/bundler_patch.rb +0 -27
  610. data/tasks/bin/gem-version-diff +0 -37
  611. data/tasks/bundle_util.rb +0 -110
@@ -3,7 +3,7 @@
3
3
  # Author:: Christopher Walters (<cw@chef.io>)
4
4
  # Author:: Tim Hinderliter (<tim@chef.io>)
5
5
  # Author:: Seth Chisamore (<schisamo@chef.io>)
6
- # Copyright:: Copyright 2008-2016, Chef Software Inc.
6
+ # Copyright:: Copyright 2008-2017, Chef Software Inc.
7
7
  # License:: Apache License, Version 2.0
8
8
  #
9
9
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -160,7 +160,7 @@ describe Chef::Resource do
160
160
  end
161
161
 
162
162
  it "describes its state" do
163
- resource_state = file_resource.state
163
+ resource_state = file_resource.state_for_resource_reporter
164
164
  expect(resource_state.keys).to match_array([:checksum, :owner, :group, :mode])
165
165
  expect(resource_state[:checksum]).to eq("abc123")
166
166
  expect(resource_state[:owner]).to eq("root")
@@ -192,7 +192,6 @@ describe Chef::Resource do
192
192
  describe "load_from" do
193
193
  let(:prior_resource) do
194
194
  prior_resource = Chef::Resource.new("funk")
195
- prior_resource.supports(:funky => true)
196
195
  prior_resource.source_line
197
196
  prior_resource.allowed_actions << :funkytown
198
197
  prior_resource.action(:funkytown)
@@ -205,7 +204,6 @@ describe Chef::Resource do
205
204
 
206
205
  it "should load the attributes of a prior resource" do
207
206
  resource.load_from(prior_resource)
208
- expect(resource.supports).to eq({ :funky => true })
209
207
  end
210
208
 
211
209
  it "should not inherit the action from the prior resource" do
@@ -233,14 +231,6 @@ describe Chef::Resource do
233
231
  end
234
232
  end
235
233
 
236
- describe "noop" do
237
- it "should accept true or false for noop" do
238
- expect { resource.noop true }.not_to raise_error
239
- expect { resource.noop false }.not_to raise_error
240
- expect { resource.noop "eat it" }.to raise_error(ArgumentError)
241
- end
242
- end
243
-
244
234
  describe "notifies" do
245
235
  it "should make notified resources appear in the actions hash" do
246
236
  run_context.resource_collection << Chef::Resource::ZenMaster.new("coffee")
@@ -294,6 +284,23 @@ describe Chef::Resource do
294
284
  resource.notifies :reload, run_context.resource_collection.find(:zen_master => "coffee, tea")
295
285
  expect(resource.delayed_notifications.detect { |e| e.resource.name == "coffee, tea" && e.action == :reload }).not_to be_nil
296
286
  end
287
+
288
+ it "notifies a resource without a name via a string name with brackets" do
289
+ run_context.resource_collection << Chef::Resource::ZenMaster.new("")
290
+ resource.notifies :reload, "zen_master[]"
291
+ end
292
+
293
+ it "notifies a resource without a name via a string name without brackets" do
294
+ run_context.resource_collection << Chef::Resource::ZenMaster.new("")
295
+ resource.notifies :reload, "zen_master"
296
+ expect(resource.delayed_notifications.first.resource).to eql("zen_master")
297
+ end
298
+
299
+ it "notifies a resource without a name via a hash name with an empty string" do
300
+ run_context.resource_collection << Chef::Resource::ZenMaster.new("")
301
+ resource.notifies :reload, zen_master: ""
302
+ expect(resource.delayed_notifications.first.resource).to eql(zen_master: "")
303
+ end
297
304
  end
298
305
 
299
306
  describe "subscribes" do
@@ -354,6 +361,24 @@ describe Chef::Resource do
354
361
  end
355
362
  end
356
363
 
364
+ describe "to_text" do
365
+ it "prints nice message" do
366
+ resource_class = Class.new(Chef::Resource) { property :foo, String }
367
+ resource = resource_class.new("sensitive_property_tests")
368
+ resource.foo = "some value"
369
+ expect(resource.to_text).to match(/foo "some value"/)
370
+ end
371
+
372
+ context "when property is sensitive" do
373
+ it "supresses that properties value" do
374
+ resource_class = Class.new(Chef::Resource) { property :foo, String, sensitive: true }
375
+ resource = resource_class.new("sensitive_property_tests")
376
+ resource.foo = "some value"
377
+ expect(resource.to_text).to match(/foo "\*sensitive value suppressed\*"/)
378
+ end
379
+ end
380
+ end
381
+
357
382
  describe "self.resource_name" do
358
383
  context "When resource_name is not set" do
359
384
  it "and there are no provides lines, resource_name is nil" do
@@ -434,18 +459,6 @@ describe Chef::Resource do
434
459
  end
435
460
  end
436
461
 
437
- describe "is" do
438
- it "should return the arguments passed with 'is'" do
439
- zm = Chef::Resource::ZenMaster.new("coffee")
440
- expect(zm.is("one", "two", "three")).to eq(%w{one two three})
441
- end
442
-
443
- it "should allow arguments preceded by is to methods" do
444
- resource.noop(resource.is(true))
445
- expect(resource.noop).to eql(true)
446
- end
447
- end
448
-
449
462
  describe "to_json" do
450
463
  it "should serialize to json" do
451
464
  json = resource.to_json
@@ -463,10 +476,10 @@ describe Chef::Resource do
463
476
  let(:resource_class) { Class.new(Chef::Resource) { property :a, default: 1 } }
464
477
  it "should include the default in the hash" do
465
478
  expect(resource.to_hash.keys.sort).to eq([:a, :allowed_actions, :params, :provider, :updated,
466
- :updated_by_last_action, :before, :supports,
467
- :noop, :ignore_failure, :name, :source_line,
468
- :action, :retries, :retry_delay, :elapsed_time,
469
- :default_guard_interpreter, :guard_interpreter, :sensitive].sort)
479
+ :updated_by_last_action, :before,
480
+ :name, :source_line,
481
+ :action, :elapsed_time,
482
+ :default_guard_interpreter, :guard_interpreter].sort)
470
483
  expect(resource.to_hash[:name]).to eq "funk"
471
484
  expect(resource.to_hash[:a]).to eq 1
472
485
  end
@@ -475,10 +488,10 @@ describe Chef::Resource do
475
488
  it "should convert to a hash" do
476
489
  hash = resource.to_hash
477
490
  expected_keys = [ :allowed_actions, :params, :provider, :updated,
478
- :updated_by_last_action, :before, :supports,
479
- :noop, :ignore_failure, :name, :source_line,
480
- :action, :retries, :retry_delay, :elapsed_time,
481
- :default_guard_interpreter, :guard_interpreter, :sensitive ]
491
+ :updated_by_last_action, :before,
492
+ :name, :source_line,
493
+ :action, :elapsed_time,
494
+ :default_guard_interpreter, :guard_interpreter ]
482
495
  expect(hash.keys - expected_keys).to eq([])
483
496
  expect(expected_keys - hash.keys).to eq([])
484
497
  expect(hash[:name]).to eql("funk")
@@ -488,24 +501,12 @@ describe Chef::Resource do
488
501
  describe "self.json_create" do
489
502
  it "should deserialize itself from json" do
490
503
  json = Chef::JSONCompat.to_json(resource)
491
- serialized_node = Chef::JSONCompat.from_json(json)
504
+ serialized_node = Chef::Resource.from_json(json)
492
505
  expect(serialized_node).to be_a_kind_of(Chef::Resource)
493
506
  expect(serialized_node.name).to eql(resource.name)
494
507
  end
495
508
  end
496
509
 
497
- describe "supports" do
498
- it "should allow you to set what features this resource supports" do
499
- support_hash = { :one => :two }
500
- resource.supports(support_hash)
501
- expect(resource.supports).to eql(support_hash)
502
- end
503
-
504
- it "should return the current value of supports" do
505
- expect(resource.supports).to eq({})
506
- end
507
- end
508
-
509
510
  describe "ignore_failure" do
510
511
  it "should default to throwing an error if a provider fails for a resource" do
511
512
  expect(resource.ignore_failure).to eq(false)
@@ -565,31 +566,18 @@ describe Chef::Resource do
565
566
  expect { retriable_resource.run_action(:purr) }.to raise_error(RuntimeError)
566
567
  expect(retriable_resource.retries).to eq(3)
567
568
  end
568
- end
569
-
570
- describe "setting the base provider class for the resource" do
571
-
572
- it "defaults to Chef::Provider for the base class" do
573
- expect(Chef::Resource.provider_base).to eq(Chef::Provider)
574
- end
575
569
 
576
- it "allows the base provider to be overridden" do
577
- Chef::Config.treat_deprecation_warnings_as_errors(false)
578
- class OverrideProviderBaseTest < Chef::Resource
579
- provider_base Chef::Provider::Package
580
- end
570
+ it "should not rescue from non-StandardError exceptions" do
571
+ retriable_resource.retries(3)
572
+ retriable_resource.retry_delay(0) # No need to wait.
581
573
 
582
- expect(OverrideProviderBaseTest.provider_base).to eq(Chef::Provider::Package)
583
- end
574
+ provider = Chef::Provider::SnakeOil.new(retriable_resource, run_context)
575
+ allow(Chef::Provider::SnakeOil).to receive(:new).and_return(provider)
576
+ allow(provider).to receive(:action_purr).and_raise(LoadError)
584
577
 
585
- it "warns when setting provider_base" do
586
- expect do
587
- class OverrideProviderBaseTest2 < Chef::Resource
588
- provider_base Chef::Provider::Package
589
- end
590
- end.to raise_error(Chef::Exceptions::DeprecatedFeatureError)
578
+ expect(retriable_resource).not_to receive(:sleep)
579
+ expect { retriable_resource.run_action(:purr) }.to raise_error(LoadError)
591
580
  end
592
-
593
581
  end
594
582
 
595
583
  it "runs an action by finding its provider, loading the current resource and then running the action" do
@@ -839,11 +827,7 @@ describe Chef::Resource do
839
827
  snitch_var1 = snitch_var2 = 0
840
828
  runner = Chef::Runner.new(run_context)
841
829
 
842
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
843
- Chef::Platform.set(
844
- :resource => :cat,
845
- :provider => Chef::Provider::SnakeOil
846
- )
830
+ Chef::Provider::SnakeOil.provides :cat
847
831
 
848
832
  resource1.only_if { snitch_var1 = 1 }
849
833
  resource1.not_if { snitch_var2 = 2 }
@@ -163,9 +163,7 @@ describe Chef::RunContext::CookbookCompiler do
163
163
  describe "event dispatch" do
164
164
  let(:recipe) { "dependency1::default" }
165
165
  let(:recipe_path) do
166
- File.expand_path("../../../data/run_context/cookbooks/dependency1/recipes/default.rb", __FILE__).tap do |path|
167
- path.gsub!(File::SEPARATOR, File::ALT_SEPARATOR) if File::ALT_SEPARATOR
168
- end
166
+ File.expand_path("../../../data/run_context/cookbooks/dependency1/recipes/default.rb", __FILE__)
169
167
  end
170
168
  before do
171
169
  node.run_list(recipe)
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Stephen Delano (<stephen@chef.io>)
3
- # Copyright:: Copyright 2010-2016, Chef Software Inc.
3
+ # Copyright:: Copyright 2010-2017, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -186,9 +186,12 @@ describe Chef::RunList::VersionedRecipeList do
186
186
  end
187
187
  end
188
188
 
189
- context "with duplicated names", chef: ">= 13" do
190
- it "should fail in Chef 13" do
191
- expect(list).to_not respond_to(:with_duplicate_names)
189
+ context "with duplicate names" do
190
+ let(:fq_names) { list.with_duplicate_names }
191
+ let(:recipes) { %w{ foo bar::default } }
192
+
193
+ it "expands default recipes" do
194
+ expect(fq_names).to eq(%w{foo foo::default bar bar::default})
192
195
  end
193
196
  end
194
197
  end
@@ -1,6 +1,6 @@
1
1
 
2
2
  # Author:: Adam Jacob (<adam@chef.io>)
3
- # Copyright:: Copyright 2008-2016, Chef Software Inc.
3
+ # Copyright:: Copyright 2008-2017, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -98,25 +98,6 @@ describe Chef::Runner do
98
98
  run_context.resource_collection << first_resource
99
99
  end
100
100
 
101
- context "when we fall through to old Chef::Platform resolution" do
102
- let(:provider_resolver) { Chef::ProviderResolver.new(node, first_resource, nil) }
103
- before do
104
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
105
- # set up old Chef::Platform resolution instead of provider_resolver
106
- Chef::Platform.set(
107
- :resource => :cat,
108
- :provider => Chef::Provider::SnakeOil
109
- )
110
- allow(Chef::ProviderResolver).to receive(:new).and_return(provider_resolver)
111
- allow(provider_resolver).to receive(:maybe_dynamic_provider_resolution).with(first_resource, anything()).and_return(nil)
112
- end
113
-
114
- it "should use the platform provider if it has one" do
115
- expect(Chef::Platform).to receive(:find_provider_for_node).with(node, first_resource).and_call_original
116
- runner.converge
117
- end
118
- end
119
-
120
101
  context "when we are doing dynamic provider resolution" do
121
102
 
122
103
  it "should pass each resource in the collection to a provider" do
@@ -141,25 +122,26 @@ describe Chef::Runner do
141
122
 
142
123
  it "should raise exceptions as thrown by a provider" do
143
124
  provider = Chef::Provider::SnakeOil.new(run_context.resource_collection[0], run_context)
144
- allow(Chef::Provider::SnakeOil).to receive(:new).once.and_return(provider)
145
- allow(provider).to receive(:action_sell).once.and_raise(ArgumentError)
125
+ expect(Chef::Provider::SnakeOil).to receive(:new).once.and_return(provider)
126
+ expect(provider).to receive(:action_sell).once.and_raise(ArgumentError)
146
127
  expect { runner.converge }.to raise_error(ArgumentError)
147
128
  end
148
129
 
149
130
  it "should not raise exceptions thrown by providers if the resource has ignore_failure set to true" do
150
131
  allow(run_context.resource_collection[0]).to receive(:ignore_failure).and_return(true)
151
132
  provider = Chef::Provider::SnakeOil.new(run_context.resource_collection[0], run_context)
152
- allow(Chef::Provider::SnakeOil).to receive(:new).once.and_return(provider)
153
- allow(provider).to receive(:action_sell).once.and_raise(ArgumentError)
133
+ expect(Chef::Provider::SnakeOil).to receive(:new).once.and_return(provider)
134
+ expect(provider).to receive(:action_sell).once.and_raise(ArgumentError)
154
135
  expect { runner.converge }.not_to raise_error
155
136
  end
156
137
 
157
138
  it "should retry with the specified delay if retries are specified" do
158
- first_resource.retries 3
139
+ num_retries = 3
140
+ allow(run_context.resource_collection[0]).to receive(:retries).and_return(num_retries)
159
141
  provider = Chef::Provider::SnakeOil.new(run_context.resource_collection[0], run_context)
160
- allow(Chef::Provider::SnakeOil).to receive(:new).once.and_return(provider)
161
- allow(provider).to receive(:action_sell).and_raise(ArgumentError)
162
- expect(first_resource).to receive(:sleep).with(2).exactly(3).times
142
+ expect(Chef::Provider::SnakeOil).to receive(:new).exactly(num_retries + 1).times.and_return(provider)
143
+ expect(provider).to receive(:action_sell).exactly(num_retries + 1).times.and_raise(ArgumentError)
144
+ expect(run_context.resource_collection[0]).to receive(:sleep).with(2).exactly(num_retries).times
163
145
  expect { runner.converge }.to raise_error(ArgumentError)
164
146
  end
165
147
 
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Adam Jacob (<adam@chef.io>)
3
- # Copyright:: Copyright 2009-2016, Chef Software Inc.
3
+ # Copyright:: Copyright 2009-2017, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -24,7 +24,7 @@ describe Chef::Search::Query do
24
24
  let(:query) { Chef::Search::Query.new }
25
25
 
26
26
  shared_context "filtered search" do
27
- let(:query_string) { "search/node?q=platform:rhel&sort=X_CHEF_id_CHEF_X%20asc&start=0" }
27
+ let(:query_string) { "search/node?q=platform:rhel&start=0" }
28
28
  let(:server_url) { "https://api.opscode.com/organizations/opscode/nodes" }
29
29
  let(:args) { { filter_key => filter_hash } }
30
30
  let(:filter_hash) do
@@ -81,10 +81,10 @@ describe Chef::Search::Query do
81
81
  end
82
82
 
83
83
  describe "search" do
84
- let(:query_string) { "search/node?q=platform:rhel&sort=X_CHEF_id_CHEF_X%20asc&start=0" }
85
- let(:query_string_continue) { "search/node?q=platform:rhel&sort=X_CHEF_id_CHEF_X%20asc&start=4" }
86
- let(:query_string_with_rows) { "search/node?q=platform:rhel&sort=X_CHEF_id_CHEF_X%20asc&start=0&rows=4" }
87
- let(:query_string_continue_with_rows) { "search/node?q=platform:rhel&sort=X_CHEF_id_CHEF_X%20asc&start=4&rows=4" }
84
+ let(:query_string) { "search/node?q=platform:rhel&start=0" }
85
+ let(:query_string_continue) { "search/node?q=platform:rhel&start=4" }
86
+ let(:query_string_with_rows) { "search/node?q=platform:rhel&start=0&rows=4" }
87
+ let(:query_string_continue_with_rows) { "search/node?q=platform:rhel&start=4&rows=4" }
88
88
 
89
89
  let(:response) do
90
90
  {
@@ -178,27 +178,22 @@ describe Chef::Search::Query do
178
178
  end
179
179
 
180
180
  it "queries for every object of a type by default" do
181
- expect(rest).to receive(:get).with("search/node?q=*:*&sort=X_CHEF_id_CHEF_X%20asc&start=0").and_return(response)
181
+ expect(rest).to receive(:get).with("search/node?q=*:*&start=0").and_return(response)
182
182
  query.search(:node)
183
183
  end
184
184
 
185
185
  it "allows a custom query" do
186
- expect(rest).to receive(:get).with("search/node?q=platform:rhel&sort=X_CHEF_id_CHEF_X%20asc&start=0").and_return(response)
186
+ expect(rest).to receive(:get).with("search/node?q=platform:rhel&start=0").and_return(response)
187
187
  query.search(:node, "platform:rhel")
188
188
  end
189
189
 
190
- it "lets you set a sort order" do
191
- expect(rest).to receive(:get).with("search/node?q=platform:rhel&sort=id%20desc&start=0").and_return(response)
192
- query.search(:node, "platform:rhel", sort: "id desc")
193
- end
194
-
195
190
  it "lets you set a starting object" do
196
- expect(rest).to receive(:get).with("search/node?q=platform:rhel&sort=X_CHEF_id_CHEF_X%20asc&start=2").and_return(response)
191
+ expect(rest).to receive(:get).with("search/node?q=platform:rhel&start=2").and_return(response)
197
192
  query.search(:node, "platform:rhel", start: 2)
198
193
  end
199
194
 
200
195
  it "lets you set how many rows to return" do
201
- expect(rest).to receive(:get).with("search/node?q=platform:rhel&sort=X_CHEF_id_CHEF_X%20asc&start=0&rows=40").and_return(response)
196
+ expect(rest).to receive(:get).with("search/node?q=platform:rhel&start=0&rows=40").and_return(response)
202
197
  query.search(:node, "platform:rhel", rows: 40)
203
198
  end
204
199
 
@@ -223,7 +218,7 @@ describe Chef::Search::Query do
223
218
  it "pages through the responses" do
224
219
  @call_me = double("blocky")
225
220
  response["rows"].each { |r| expect(@call_me).to receive(:do).with(Chef::Node.from_hash(r)) }
226
- query.search(:node, "*:*", sort: nil, start: 0, rows: 4) { |r| @call_me.do(r) }
221
+ query.search(:node, "*:*", start: 0, rows: 4) { |r| @call_me.do(r) }
227
222
  end
228
223
 
229
224
  it "sends multiple API requests when the server indicates there is more data" do
@@ -242,6 +237,27 @@ describe Chef::Search::Query do
242
237
  end
243
238
  end
244
239
 
240
+ it "fuzzifies node searches when fuzz is set" do
241
+ expect(rest).to receive(:get).with(
242
+ "search/node?q=tags:*free.messi*%20OR%20roles:*free.messi*%20OR%20fqdn:*free.messi*%20OR%20addresses:*free.messi*%20OR%20policy_name:*free.messi*%20OR%20policy_group:*free.messi*&start=0"
243
+ ).and_return(response)
244
+ query.search(:node, "free.messi", fuzz: true)
245
+ end
246
+
247
+ it "does not fuzzify node searches when fuzz is not set" do
248
+ expect(rest).to receive(:get).with(
249
+ "search/node?q=free.messi&start=0"
250
+ ).and_return(response)
251
+ query.search(:node, "free.messi")
252
+ end
253
+
254
+ it "does not fuzzify client searches" do
255
+ expect(rest).to receive(:get).with(
256
+ "search/client?q=messi&start=0"
257
+ ).and_return(response)
258
+ query.search(:client, "messi", fuzz: true)
259
+ end
260
+
245
261
  context "when :filter_result is provided as a result" do
246
262
  include_context "filtered search" do
247
263
  let(:filter_key) { :filter_result }
@@ -269,22 +285,4 @@ describe Chef::Search::Query do
269
285
  end
270
286
  end
271
287
 
272
- describe "#partial_search" do
273
- include_context "filtered search" do
274
- let(:filter_key) { :keys }
275
-
276
- it "emits a deprecation warning" do
277
- # partial_search calls search, so we'll stub search to return empty
278
- allow(query).to receive(:search).and_return( [ [], 0, 0 ] )
279
- expect(Chef::Log).to receive(:warn).with(/DEPRECATED: The 'partial_search' API is deprecated/)
280
- query.partial_search(:node, "platform:rhel", args)
281
- end
282
-
283
- it "returns an array of filtered hashes" do
284
- expect(rest).to receive(:post).with(query_string, args[filter_key]).and_return(response)
285
- results = query.partial_search(:node, "platform:rhel", args)
286
- expect(results[0]).to match_array(response_rows)
287
- end
288
- end
289
- end
290
288
  end
@@ -0,0 +1,44 @@
1
+ #
2
+ # Copyright:: Copyright 2017, Chef Software, Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require "spec_helper"
19
+
20
+ describe Chef::ServerAPIVersions do
21
+ before do
22
+ Chef::ServerAPIVersions.instance.reset!
23
+ end
24
+
25
+ describe "#min_server_version" do
26
+ it "returns nil if no versions have been recorded" do
27
+ expect(Chef::ServerAPIVersions.instance.min_server_version).to be_nil
28
+ end
29
+ it "returns the correct value" do
30
+ Chef::ServerAPIVersions.instance.set_versions({ "min_version" => 0, "max_version" => 2 })
31
+ expect(Chef::ServerAPIVersions.instance.min_server_version).to eq(0)
32
+ end
33
+ end
34
+
35
+ describe "#max_server_version" do
36
+ it "returns nil if no versions have been recorded" do
37
+ expect(Chef::ServerAPIVersions.instance.max_server_version).to be_nil
38
+ end
39
+ it "returns the correct value" do
40
+ Chef::ServerAPIVersions.instance.set_versions({ "min_version" => 0, "max_version" => 2 })
41
+ expect(Chef::ServerAPIVersions.instance.max_server_version).to eq(2)
42
+ end
43
+ end
44
+ end
@@ -77,6 +77,37 @@ describe Shell::ClientSession do
77
77
 
78
78
  end
79
79
 
80
+ describe Shell::SoloSession do
81
+ before do
82
+ Chef::Config[:shell_config] = { :override_runlist => [Chef::RunList::RunListItem.new("shell::override")] }
83
+ @chef_rest = double("Chef::ServerAPI")
84
+ @session = Shell::SoloSession.instance
85
+ @node = Chef::Node.build("foo")
86
+ @session.node = @node
87
+ @client = double("Chef::Client.new",
88
+ :run_ohai => true,
89
+ :load_node => true,
90
+ :build_node => true,
91
+ :register => true,
92
+ :sync_cookbooks => {})
93
+ end
94
+
95
+ it "builds the node's run_context with the proper environment" do
96
+ @session.instance_variable_set(:@client, @client)
97
+ @expansion = Chef::RunList::RunListExpansion.new(@node.chef_environment, [])
98
+
99
+ expect(@node.run_list).to receive(:expand).with(@node.chef_environment).and_return(@expansion)
100
+ expect(Chef::ServerAPI).to receive(:new).with(Chef::Config[:chef_server_url]).and_return(@chef_rest)
101
+ @session.rebuild_context
102
+ end
103
+
104
+ it "passes the shell CLI args to the client" do
105
+ expect(Chef::Client).to receive(:new).with(nil, Chef::Config[:shell_config]).and_return(@client)
106
+ @session.send(:rebuild_node)
107
+ end
108
+
109
+ end
110
+
80
111
  describe Shell::StandAloneSession do
81
112
  before do
82
113
  Chef::Config[:shell_config] = { :override_runlist => [Chef::RunList::RunListItem.new("shell::override")] }
@@ -128,11 +159,11 @@ describe Shell::StandAloneSession do
128
159
 
129
160
  end
130
161
 
131
- describe Shell::SoloSession do
162
+ describe Shell::SoloLegacySession do
132
163
  before do
133
164
  Chef::Config[:shell_config] = { :override_runlist => [Chef::RunList::RunListItem.new("shell::override")] }
134
165
  Chef::Config[:shell_solo] = true
135
- @session = Shell::SoloSession.instance
166
+ @session = Shell::SoloLegacySession.instance
136
167
  @node = Chef::Node.new
137
168
  @events = Chef::EventDispatch::Dispatcher.new
138
169
  @run_context = @session.run_context = Chef::RunContext.new(@node, {}, @events)
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Serdar Sutay (<serdar@chef.io>)
3
- # Copyright:: Copyright 2013-2016, Chef Software Inc.
3
+ # Copyright:: Copyright 2013-2017, Chef Software Inc.
4
4
  # License:: Apache License, Version 2.0
5
5
  #
6
6
  # Licensed under the Apache License, Version 2.0 (the "License");
@@ -148,21 +148,10 @@ describe Chef::Util::Selinux do
148
148
  end
149
149
 
150
150
  describe "when restorecon doesn't exist on the system" do
151
- before do
152
- allow(File).to receive(:executable?) do |file_path|
153
- expect(file_path.end_with?("restorecon")).to be_truthy
154
- false
155
- end
156
- end
157
-
158
151
  it "should log a warning message" do
159
- log = [ ]
160
- allow(Chef::Log).to receive(:warn) do |message|
161
- log << message
162
- end
163
-
152
+ allow(File).to receive(:executable?).with(/restorecon$/).and_return(false)
153
+ expect(Chef::Log).to receive(:warn).with(/Can not find 'restorecon' on the system. Skipping selinux security context restore./).at_least(:once)
164
154
  @test_instance.restore_security_context(path)
165
- expect(log).not_to be_empty
166
155
  expect(File).not_to receive(:executable?)
167
156
  @test_instance.restore_security_context(path)
168
157
  end
@@ -0,0 +1,67 @@
1
+ #
2
+ # Author:: Aliasgar Batterywala (aliasgar.batterywala@msystechnologies.com)
3
+ # Copyright:: Copyright 2017, Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require "spec_helper"
20
+ if Chef::Platform.windows?
21
+ require "chef/win32/error"
22
+ require "chef/win32/api/error"
23
+ end
24
+
25
+ describe "Chef::Win32::Error", :windows_only do
26
+ describe "self.raise!" do
27
+ context "code is not passed to the raise! method" do
28
+ context "last error received is user_not_found" do
29
+ it "raises UserIDNotFound exception" do
30
+ expect(Chef::ReservedNames::Win32::Error).to receive(:get_last_error).and_return(
31
+ Chef::ReservedNames::Win32::API::Error::ERROR_USER_NOT_FOUND
32
+ )
33
+ expect(Chef::ReservedNames::Win32::Error).to receive_message_chain(:format_message, :strip)
34
+ expect { Chef::ReservedNames::Win32::Error.raise! }.to raise_error Chef::Exceptions::UserIDNotFound
35
+ end
36
+ end
37
+
38
+ context "last error received is not user_not_found" do
39
+ it "raises Win32APIError exception" do
40
+ expect(Chef::ReservedNames::Win32::Error).to receive(:get_last_error).and_return(
41
+ Chef::ReservedNames::Win32::API::Error::ERROR_BAD_USERNAME
42
+ )
43
+ expect(Chef::ReservedNames::Win32::Error).to receive_message_chain(:format_message, :strip).and_return("Bad Username")
44
+ expect { Chef::ReservedNames::Win32::Error.raise! }.to raise_error Chef::Exceptions::Win32APIError
45
+ end
46
+ end
47
+ end
48
+
49
+ context "code is passed to the raise! method" do
50
+ context "last error received is user_not_found" do
51
+ it "raises UserIDNotFound exception" do
52
+ expect(Chef::ReservedNames::Win32::Error).to_not receive(:get_last_error)
53
+ expect(Chef::ReservedNames::Win32::Error).to receive_message_chain(:format_message, :strip)
54
+ expect { Chef::ReservedNames::Win32::Error.raise! nil, Chef::ReservedNames::Win32::API::Error::ERROR_USER_NOT_FOUND }.to raise_error Chef::Exceptions::UserIDNotFound
55
+ end
56
+ end
57
+
58
+ context "last error received is not user_not_found" do
59
+ it "raises Win32APIError exception" do
60
+ expect(Chef::ReservedNames::Win32::Error).to_not receive(:get_last_error)
61
+ expect(Chef::ReservedNames::Win32::Error).to receive_message_chain(:format_message, :strip).and_return("Bad Username")
62
+ expect { Chef::ReservedNames::Win32::Error.raise! nil, Chef::ReservedNames::Win32::API::Error::ERROR_BAD_USERNAME }.to raise_error Chef::Exceptions::Win32APIError
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end