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
@@ -46,64 +46,84 @@ describe Chef::Knife::DataBagCreate do
46
46
  allow(knife).to receive(:config).and_return(config)
47
47
  end
48
48
 
49
- it "tries to create a data bag with an invalid name when given one argument" do
50
- knife.name_args = ["invalid&char"]
51
- expect(Chef::DataBag).to receive(:validate_name!).with(knife.name_args[0]).and_raise(Chef::Exceptions::InvalidDataBagName)
52
- expect { knife.run }.to exit_with_code(1)
53
- end
54
-
55
- context "when given one argument" do
56
- before do
57
- knife.name_args = [bag_name]
58
- end
59
-
60
- it "creates a data bag" do
61
- expect(rest).to receive(:post).with("data", { "name" => bag_name })
62
- expect(knife.ui).to receive(:info).with("Created data_bag[#{bag_name}]")
49
+ context "when data_bag already exist" do
50
+ it "doesn't creates a data bag" do
51
+ expect(knife).to receive(:create_object).and_yield(raw_hash)
52
+ expect(rest).to receive(:get).with("data/#{bag_name}")
53
+ expect(rest).to_not receive(:post).with("data", { "name" => bag_name })
54
+ expect(knife.ui).to receive(:info).with("Data bag #{bag_name} already exists")
63
55
 
64
56
  knife.run
65
57
  end
66
58
  end
67
59
 
68
- context "no secret is specified for encryption" do
69
- let(:item) do
70
- item = Chef::DataBagItem.from_hash(raw_hash)
71
- item.data_bag(bag_name)
72
- item
60
+ context "when data_bag doesn't exist" do
61
+ before do
62
+ # Data bag doesn't exist by default so we mock the GET request to return 404
63
+ exception = double("404 error", :code => "404")
64
+ allow(rest).to receive(:get)
65
+ .with("data/#{bag_name}")
66
+ .and_raise(Net::HTTPServerException.new("404", exception))
73
67
  end
74
68
 
75
- it "creates a data bag item" do
76
- expect(knife).to receive(:create_object).and_yield(raw_hash)
77
- expect(knife).to receive(:encryption_secret_provided?).and_return(false)
78
- expect(rest).to receive(:post).with("data", { "name" => bag_name }).ordered
79
- expect(rest).to receive(:post).with("data/#{bag_name}", item).ordered
80
-
81
- knife.run
69
+ it "tries to create a data bag with an invalid name when given one argument" do
70
+ knife.name_args = ["invalid&char"]
71
+ expect(Chef::DataBag).to receive(:validate_name!).with(knife.name_args[0]).and_raise(Chef::Exceptions::InvalidDataBagName)
72
+ expect { knife.run }.to exit_with_code(1)
82
73
  end
83
- end
84
74
 
85
- context "a secret is specified for encryption" do
86
- let(:encoded_data) { Chef::EncryptedDataBagItem.encrypt_data_bag_item(raw_hash, secret) }
75
+ context "when given one argument" do
76
+ before do
77
+ knife.name_args = [bag_name]
78
+ end
79
+
80
+ it "creates a data bag" do
81
+ expect(rest).to receive(:post).with("data", { "name" => bag_name })
82
+ expect(knife.ui).to receive(:info).with("Created data_bag[#{bag_name}]")
87
83
 
88
- let(:item) do
89
- item = Chef::DataBagItem.from_hash(encoded_data)
90
- item.data_bag(bag_name)
91
- item
84
+ knife.run
85
+ end
92
86
  end
93
87
 
94
- it "creates an encrypted data bag item" do
95
- expect(knife).to receive(:create_object).and_yield(raw_hash)
96
- expect(knife).to receive(:encryption_secret_provided?).and_return(true)
97
- expect(knife).to receive(:read_secret).and_return(secret)
98
- expect(Chef::EncryptedDataBagItem)
99
- .to receive(:encrypt_data_bag_item)
100
- .with(raw_hash, secret)
101
- .and_return(encoded_data)
102
- expect(rest).to receive(:post).with("data", { "name" => bag_name }).ordered
103
- expect(rest).to receive(:post).with("data/#{bag_name}", item).ordered
88
+ context "no secret is specified for encryption" do
89
+ let(:item) do
90
+ item = Chef::DataBagItem.from_hash(raw_hash)
91
+ item.data_bag(bag_name)
92
+ item
93
+ end
94
+
95
+ it "creates a data bag item" do
96
+ expect(knife).to receive(:create_object).and_yield(raw_hash)
97
+ expect(knife).to receive(:encryption_secret_provided?).and_return(false)
98
+ expect(rest).to receive(:post).with("data", { "name" => bag_name }).ordered
99
+ expect(rest).to receive(:post).with("data/#{bag_name}", item).ordered
100
+
101
+ knife.run
102
+ end
103
+ end
104
104
 
105
- knife.run
105
+ context "a secret is specified for encryption" do
106
+ let(:encoded_data) { Chef::EncryptedDataBagItem.encrypt_data_bag_item(raw_hash, secret) }
107
+
108
+ let(:item) do
109
+ item = Chef::DataBagItem.from_hash(encoded_data)
110
+ item.data_bag(bag_name)
111
+ item
112
+ end
113
+
114
+ it "creates an encrypted data bag item" do
115
+ expect(knife).to receive(:create_object).and_yield(raw_hash)
116
+ expect(knife).to receive(:encryption_secret_provided?).and_return(true)
117
+ expect(knife).to receive(:read_secret).and_return(secret)
118
+ expect(Chef::EncryptedDataBagItem)
119
+ .to receive(:encrypt_data_bag_item)
120
+ .with(raw_hash, secret)
121
+ .and_return(encoded_data)
122
+ expect(rest).to receive(:post).with("data", { "name" => bag_name }).ordered
123
+ expect(rest).to receive(:post).with("data/#{bag_name}", item).ordered
124
+
125
+ knife.run
126
+ end
106
127
  end
107
128
  end
108
-
109
129
  end
@@ -21,54 +21,53 @@ require "net/ssh"
21
21
  require "net/ssh/multi"
22
22
 
23
23
  describe Chef::Knife::Ssh do
24
- before(:each) do
25
- Chef::Config[:client_key] = CHEF_SPEC_DATA + "/ssl/private_key.pem"
26
- end
24
+ let(:query_result) { double("chef search results") }
27
25
 
28
26
  before do
27
+ Chef::Config[:client_key] = CHEF_SPEC_DATA + "/ssl/private_key.pem"
29
28
  @knife = Chef::Knife::Ssh.new
30
29
  @knife.merge_configs
31
- @node_foo = Chef::Node.new
32
- @node_foo.automatic_attrs[:fqdn] = "foo.example.org"
33
- @node_foo.automatic_attrs[:ipaddress] = "10.0.0.1"
30
+ @node_foo = {}
31
+ @node_foo["fqdn"] = "foo.example.org"
32
+ @node_foo["ipaddress"] = "10.0.0.1"
33
+ @node_foo["cloud"] = {}
34
+
35
+ @node_bar = {}
36
+ @node_bar["fqdn"] = "bar.example.org"
37
+ @node_bar["ipaddress"] = "10.0.0.2"
38
+ @node_bar["cloud"] = {}
34
39
 
35
- @node_bar = Chef::Node.new
36
- @node_bar.automatic_attrs[:fqdn] = "bar.example.org"
37
- @node_bar.automatic_attrs[:ipaddress] = "10.0.0.2"
38
40
  end
39
41
 
40
42
  describe "#configure_session" do
41
43
  context "manual is set to false (default)" do
42
44
  before do
43
45
  @knife.config[:manual] = false
44
- @query = Chef::Search::Query.new
45
- end
46
-
47
- def configure_query(node_array)
48
- allow(@query).to receive(:search).and_return([node_array])
49
- allow(Chef::Search::Query).to receive(:new).and_return(@query)
46
+ allow(query_result).to receive(:search).with(any_args).and_yield(@node_foo).and_yield(@node_bar)
47
+ allow(Chef::Search::Query).to receive(:new).and_return(query_result)
50
48
  end
51
49
 
52
50
  def self.should_return_specified_attributes
53
51
  it "returns an array of the attributes specified on the command line OR config file, if only one is set" do
52
+ @node_bar["config"] = "10.0.0.2"
53
+ @node_foo["config"] = "10.0.0.1"
54
54
  @knife.config[:attribute] = "ipaddress"
55
55
  Chef::Config[:knife][:ssh_attribute] = "ipaddress" # this value will be in the config file
56
- configure_query([@node_foo, @node_bar])
57
56
  expect(@knife).to receive(:session_from_list).with([["10.0.0.1", nil], ["10.0.0.2", nil]])
58
57
  @knife.configure_session
59
58
  end
60
59
 
61
60
  it "returns an array of the attributes specified on the command line even when a config value is set" do
61
+ @node_bar["config"] = "10.0.0.2"
62
+ @node_foo["config"] = "10.0.0.1"
62
63
  Chef::Config[:knife][:ssh_attribute] = "config_file" # this value will be in the config file
63
64
  @knife.config[:attribute] = "ipaddress" # this is the value of the command line via #configure_attribute
64
- configure_query([@node_foo, @node_bar])
65
65
  expect(@knife).to receive(:session_from_list).with([["10.0.0.1", nil], ["10.0.0.2", nil]])
66
66
  @knife.configure_session
67
67
  end
68
68
  end
69
69
 
70
70
  it "searchs for and returns an array of fqdns" do
71
- configure_query([@node_foo, @node_bar])
72
71
  expect(@knife).to receive(:session_from_list).with([
73
72
  ["foo.example.org", nil],
74
73
  ["bar.example.org", nil],
@@ -80,11 +79,10 @@ describe Chef::Knife::Ssh do
80
79
 
81
80
  context "when cloud hostnames are available" do
82
81
  before do
83
- @node_foo.automatic_attrs[:cloud][:public_hostname] = "ec2-10-0-0-1.compute-1.amazonaws.com"
84
- @node_bar.automatic_attrs[:cloud][:public_hostname] = "ec2-10-0-0-2.compute-1.amazonaws.com"
82
+ @node_foo["cloud"]["public_hostname"] = "ec2-10-0-0-1.compute-1.amazonaws.com"
83
+ @node_bar["cloud"]["public_hostname"] = "ec2-10-0-0-2.compute-1.amazonaws.com"
85
84
  end
86
85
  it "returns an array of cloud public hostnames" do
87
- configure_query([@node_foo, @node_bar])
88
86
  expect(@knife).to receive(:session_from_list).with([
89
87
  ["ec2-10-0-0-1.compute-1.amazonaws.com", nil],
90
88
  ["ec2-10-0-0-2.compute-1.amazonaws.com", nil],
@@ -97,12 +95,11 @@ describe Chef::Knife::Ssh do
97
95
 
98
96
  context "when cloud hostnames are available but empty" do
99
97
  before do
100
- @node_foo.automatic_attrs[:cloud][:public_hostname] = ""
101
- @node_bar.automatic_attrs[:cloud][:public_hostname] = ""
98
+ @node_foo["cloud"]["public_hostname"] = ""
99
+ @node_bar["cloud"]["public_hostname"] = ""
102
100
  end
103
101
 
104
102
  it "returns an array of fqdns" do
105
- configure_query([@node_foo, @node_bar])
106
103
  expect(@knife).to receive(:session_from_list).with([
107
104
  ["foo.example.org", nil],
108
105
  ["bar.example.org", nil],
@@ -114,7 +111,7 @@ describe Chef::Knife::Ssh do
114
111
  end
115
112
 
116
113
  it "should raise an error if no host are found" do
117
- configure_query([ ])
114
+ allow(query_result).to receive(:search).with(any_args)
118
115
  expect(@knife.ui).to receive(:fatal)
119
116
  expect(@knife).to receive(:exit).with(10)
120
117
  @knife.configure_session
@@ -122,10 +119,8 @@ describe Chef::Knife::Ssh do
122
119
 
123
120
  context "when there are some hosts found but they do not have an attribute to connect with" do
124
121
  before do
125
- allow(@query).to receive(:search).and_return([[@node_foo, @node_bar]])
126
- @node_foo.automatic_attrs[:fqdn] = nil
127
- @node_bar.automatic_attrs[:fqdn] = nil
128
- allow(Chef::Search::Query).to receive(:new).and_return(@query)
122
+ @node_foo["fqdn"] = nil
123
+ @node_bar["fqdn"] = nil
129
124
  end
130
125
 
131
126
  it "should raise a specific error (CHEF-3402)" do
@@ -158,31 +153,34 @@ describe Chef::Knife::Ssh do
158
153
  before do
159
154
  Chef::Config[:knife][:ssh_attribute] = nil
160
155
  @knife.config[:attribute] = nil
161
- @node_foo.automatic_attrs[:cloud][:public_hostname] = "ec2-10-0-0-1.compute-1.amazonaws.com"
162
- @node_bar.automatic_attrs[:cloud][:public_hostname] = ""
156
+ @node_foo["cloud"]["public_hostname"] = "ec2-10-0-0-1.compute-1.amazonaws.com"
157
+ @node_bar["cloud"]["public_hostname"] = ""
163
158
  end
164
159
 
165
160
  it "should return fqdn by default" do
166
- expect(@knife.get_ssh_attribute(Chef::Node.new)).to eq("fqdn")
161
+ expect(@knife.get_ssh_attribute({ "fqdn" => "fqdn" })).to eq("fqdn")
167
162
  end
168
163
 
169
164
  it "should return cloud.public_hostname attribute if available" do
170
- expect(@knife.get_ssh_attribute(@node_foo)).to eq("cloud.public_hostname")
165
+ expect(@knife.get_ssh_attribute(@node_foo)).to eq("ec2-10-0-0-1.compute-1.amazonaws.com")
171
166
  end
172
167
 
173
168
  it "should favor to attribute_from_cli over config file and cloud" do
174
169
  @knife.config[:attribute] = "command_line"
175
170
  Chef::Config[:knife][:ssh_attribute] = "config_file"
171
+ @node_foo["config"] = "command_line"
172
+ @node_foo["knife_config"] = "config_file"
176
173
  expect( @knife.get_ssh_attribute(@node_foo)).to eq("command_line")
177
174
  end
178
175
 
179
176
  it "should favor config file over cloud and default" do
180
177
  Chef::Config[:knife][:ssh_attribute] = "config_file"
178
+ @node_foo["knife_config"] = "config_file"
181
179
  expect( @knife.get_ssh_attribute(@node_foo)).to eq("config_file")
182
180
  end
183
181
 
184
182
  it "should return fqdn if cloud.hostname is empty" do
185
- expect( @knife.get_ssh_attribute(@node_bar)).to eq("fqdn")
183
+ expect( @knife.get_ssh_attribute(@node_bar)).to eq("bar.example.org")
186
184
  end
187
185
  end
188
186
 
@@ -190,7 +188,7 @@ describe Chef::Knife::Ssh do
190
188
  before :each do
191
189
  @knife.instance_variable_set(:@longest, 0)
192
190
  ssh_config = { :timeout => 50, :user => "locutus", :port => 23 }
193
- allow(Net::SSH).to receive(:configuration_for).with("the.b.org").and_return(ssh_config)
191
+ allow(Net::SSH).to receive(:configuration_for).with("the.b.org", true).and_return(ssh_config)
194
192
  end
195
193
 
196
194
  it "uses the port from an ssh config file" do
@@ -294,7 +292,7 @@ describe Chef::Knife::Ssh do
294
292
  describe "#run" do
295
293
  before do
296
294
  @query = Chef::Search::Query.new
297
- expect(@query).to receive(:search).and_return([[@node_foo]])
295
+ expect(@query).to receive(:search).and_yield(@node_foo)
298
296
  allow(Chef::Search::Query).to receive(:new).and_return(@query)
299
297
  allow(@knife).to receive(:ssh_command).and_return(exit_code)
300
298
  @knife.name_args = ["*:*", "false"]
@@ -144,9 +144,9 @@ describe Chef::Knife do
144
144
  end
145
145
 
146
146
  it "finds a subcommand class based on ARGV" do
147
- Chef::Knife.subcommands["cookbook_site_vendor"] = :CookbookSiteVendor
147
+ Chef::Knife.subcommands["cookbook_site_install"] = :CookbookSiteInstall
148
148
  Chef::Knife.subcommands["cookbook"] = :Cookbook
149
- expect(Chef::Knife.subcommand_class_from(%w{cookbook site vendor --help foo bar baz})).to eq(:CookbookSiteVendor)
149
+ expect(Chef::Knife.subcommand_class_from(%w{cookbook site install --help foo bar baz})).to eq(:CookbookSiteInstall)
150
150
  end
151
151
 
152
152
  it "special case sets the subcommand_loader to GemGlobLoader when running rehash" do
@@ -1,6 +1,6 @@
1
1
  #
2
2
  # Author:: Christopher Walters (<cw@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");
@@ -41,14 +41,11 @@ describe "LWRP" do
41
41
  Chef::ResourceResolver.resolve(name)
42
42
  end
43
43
 
44
- def get_lwrp_provider(name)
45
- old_treat_deprecation_warnings_as_errors = Chef::Config[:treat_deprecation_warnings_as_errors]
46
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
47
- begin
48
- Chef::Provider.const_get(convert_to_class_name(name.to_s))
49
- ensure
50
- Chef::Config[:treat_deprecation_warnings_as_errors] = old_treat_deprecation_warnings_as_errors
51
- end
44
+ def get_dynamic_lwrp_provider(name)
45
+ # need a node to do dynamic lookup, so also need a run_context and a resource instance
46
+ node = Chef::Node.new
47
+ run_context = Chef::RunContext.new(node, {}, nil)
48
+ Chef::Resource.new("name", run_context).lookup_provider_constant(name)
52
49
  end
53
50
 
54
51
  describe "when overriding an existing class" do
@@ -324,14 +321,7 @@ describe "LWRP" do
324
321
  end
325
322
  end
326
323
 
327
- def raise_if_deprecated!
328
- if Chef::VERSION.split(".").first.to_i > 12
329
- raise "This test should be removed and the associated code should be removed!"
330
- end
331
- end
332
-
333
324
  it "amends actions when they are already defined" do
334
- raise_if_deprecated!
335
325
  expect(child.actions).to eq([:nothing, :eat, :sleep, :drink])
336
326
  end
337
327
  end
@@ -393,7 +383,7 @@ describe "LWRP" do
393
383
 
394
384
  let(:runner) { Chef::Runner.new(run_context) }
395
385
 
396
- let(:lwrp_cookbok_name) { "lwrp" }
386
+ let(:lwrp_cookbook_name) { "lwrp" }
397
387
 
398
388
  before do
399
389
  Chef::Provider::LWRPBase.class_eval { @loaded_lwrps = {} }
@@ -401,18 +391,18 @@ describe "LWRP" do
401
391
 
402
392
  before(:each) do
403
393
  Dir[File.expand_path(File.expand_path("../../data/lwrp/resources/*", __FILE__))].each do |file|
404
- Chef::Resource::LWRPBase.build_from_file(lwrp_cookbok_name, file, run_context)
394
+ Chef::Resource::LWRPBase.build_from_file(lwrp_cookbook_name, file, run_context)
405
395
  end
406
396
 
407
397
  Dir[File.expand_path(File.expand_path("../../data/lwrp/providers/*", __FILE__))].each do |file|
408
- Chef::Provider::LWRPBase.build_from_file(lwrp_cookbok_name, file, run_context)
398
+ Chef::Provider::LWRPBase.build_from_file(lwrp_cookbook_name, file, run_context)
409
399
  end
410
400
  end
411
401
 
412
402
  it "should properly handle a new_resource reference" do
413
403
  resource = get_lwrp(:lwrp_foo).new("morpheus", run_context)
414
404
  resource.monkey("bob")
415
- resource.provider(get_lwrp_provider(:lwrp_monkey_name_printer))
405
+ resource.provider(get_dynamic_lwrp_provider(:lwrp_monkey_name_printer))
416
406
  provider = resource.provider_for_action(:twiddle_thumbs)
417
407
  provider.action_twiddle_thumbs
418
408
  end
@@ -427,14 +417,13 @@ describe "LWRP" do
427
417
  Chef::Config[:treat_deprecation_warnings_as_errors] = @old_treat_deprecation_warnings_as_errors
428
418
  end
429
419
 
430
- it "should load the provider into a properly-named class" do
431
- expect(Chef::Provider.const_get("LwrpBuckPasser")).to be_kind_of(Class)
432
- expect(Chef::Provider::LwrpBuckPasser <= Chef::Provider::LWRPBase).to be_truthy
420
+ it "should not load the provider into a const" do
421
+ expect(defined?(Chef::Provider::LwrpBuckPasser)).to be_nil
433
422
  end
434
423
 
435
424
  it "should create a method for each action" do
436
- expect(get_lwrp_provider(:lwrp_buck_passer).instance_methods).to include(:action_pass_buck)
437
- expect(get_lwrp_provider(:lwrp_thumb_twiddler).instance_methods).to include(:action_twiddle_thumbs)
425
+ expect(get_dynamic_lwrp_provider(:lwrp_buck_passer).instance_methods).to include(:action_pass_buck)
426
+ expect(get_dynamic_lwrp_provider(:lwrp_thumb_twiddler).instance_methods).to include(:action_twiddle_thumbs)
438
427
  end
439
428
 
440
429
  it "sets itself as a provider for a resource of the same name" do
@@ -442,30 +431,30 @@ describe "LWRP" do
442
431
  # we bypass the per-file loading to get the file to load each time,
443
432
  # which creates the LWRP class repeatedly. New things get prepended to
444
433
  # the list of providers.
445
- expect(found_providers.first).to eq(get_lwrp_provider(:lwrp_buck_passer))
434
+ expect(found_providers.first).to eq(get_dynamic_lwrp_provider(:lwrp_buck_passer))
446
435
  end
447
436
 
448
437
  context "with a cookbook with an underscore in the name" do
449
438
 
450
- let(:lwrp_cookbok_name) { "l_w_r_p" }
439
+ let(:lwrp_cookbook_name) { "l_w_r_p" }
451
440
 
452
441
  it "sets itself as a provider for a resource of the same name" do
453
442
  found_providers = Chef::Platform::ProviderHandlerMap.instance.list(node, :l_w_r_p_buck_passer)
454
443
  expect(found_providers.size).to eq(1)
455
- expect(found_providers.last).to eq(get_lwrp_provider(:l_w_r_p_buck_passer))
444
+ expect(found_providers.last).to eq(get_dynamic_lwrp_provider(:l_w_r_p_buck_passer))
456
445
  end
457
446
  end
458
447
 
459
448
  context "with a cookbook with a hypen in the name" do
460
449
 
461
- let(:lwrp_cookbok_name) { "l-w-r-p" }
450
+ let(:lwrp_cookbook_name) { "l-w-r-p" }
462
451
 
463
452
  it "sets itself as a provider for a resource of the same name" do
464
453
  incorrect_providers = Chef::Platform::ProviderHandlerMap.instance.list(node, :'l-w-r-p_buck_passer')
465
454
  expect(incorrect_providers).to eq([])
466
455
 
467
456
  found_providers = Chef::Platform::ProviderHandlerMap.instance.list(node, :l_w_r_p_buck_passer)
468
- expect(found_providers.first).to eq(get_lwrp_provider(:l_w_r_p_buck_passer))
457
+ expect(found_providers.first).to eq(get_dynamic_lwrp_provider(:l_w_r_p_buck_passer))
469
458
  end
470
459
  end
471
460
  end
@@ -473,7 +462,7 @@ describe "LWRP" do
473
462
  it "should insert resources embedded in the provider into the middle of the resource collection" do
474
463
  injector = get_lwrp(:lwrp_foo).new("morpheus", run_context)
475
464
  injector.action(:pass_buck)
476
- injector.provider(get_lwrp_provider(:lwrp_buck_passer))
465
+ injector.provider(get_dynamic_lwrp_provider(:lwrp_buck_passer))
477
466
  dummy = Chef::Resource::ZenMaster.new("keanu reeves", run_context)
478
467
  dummy.provider(Chef::Provider::Easy)
479
468
  run_context.resource_collection.insert(injector)
@@ -490,11 +479,11 @@ describe "LWRP" do
490
479
  it "should insert embedded resources from multiple providers, including from the last position, properly into the resource collection" do
491
480
  injector = get_lwrp(:lwrp_foo).new("morpheus", run_context)
492
481
  injector.action(:pass_buck)
493
- injector.provider(get_lwrp_provider(:lwrp_buck_passer))
482
+ injector.provider(get_dynamic_lwrp_provider(:lwrp_buck_passer))
494
483
 
495
484
  injector2 = get_lwrp(:lwrp_bar).new("tank", run_context)
496
485
  injector2.action(:pass_buck)
497
- injector2.provider(get_lwrp_provider(:lwrp_buck_passer_2))
486
+ injector2.provider(get_dynamic_lwrp_provider(:lwrp_buck_passer_2))
498
487
 
499
488
  dummy = Chef::Resource::ZenMaster.new("keanu reeves", run_context)
500
489
  dummy.provider(Chef::Provider::Easy)
@@ -517,7 +506,7 @@ describe "LWRP" do
517
506
  it "should properly handle a new_resource reference" do
518
507
  resource = get_lwrp(:lwrp_foo).new("morpheus", run_context)
519
508
  resource.monkey("bob")
520
- resource.provider(get_lwrp_provider(:lwrp_monkey_name_printer))
509
+ resource.provider(get_dynamic_lwrp_provider(:lwrp_monkey_name_printer))
521
510
 
522
511
  provider = resource.provider_for_action(:twiddle_thumbs)
523
512
  provider.action_twiddle_thumbs
@@ -528,7 +517,7 @@ describe "LWRP" do
528
517
  it "should properly handle an embedded Resource accessing the enclosing Provider's scope" do
529
518
  resource = get_lwrp(:lwrp_foo).new("morpheus", run_context)
530
519
  resource.monkey("bob")
531
- resource.provider(get_lwrp_provider(:lwrp_embedded_resource_accesses_providers_scope))
520
+ resource.provider(get_dynamic_lwrp_provider(:lwrp_embedded_resource_accesses_providers_scope))
532
521
 
533
522
  provider = resource.provider_for_action(:twiddle_thumbs)
534
523
  #provider = @runner.build_provider(resource)
@@ -548,7 +537,7 @@ describe "LWRP" do
548
537
  @resource = get_lwrp(:lwrp_foo).new("morpheus", run_context)
549
538
  @resource.allowed_actions << :test
550
539
  @resource.action(:test)
551
- @resource.provider(get_lwrp_provider(:lwrp_inline_compiler))
540
+ @resource.provider(get_dynamic_lwrp_provider(:lwrp_inline_compiler))
552
541
  end
553
542
 
554
543
  it "does not add interior resources to the exterior resource collection" do
@@ -581,55 +570,28 @@ describe "LWRP" do
581
570
  end
582
571
 
583
572
  context "resource class created" do
573
+ let(:test_lwrp_class) { @test_lwrp_class }
584
574
  before(:context) do
585
575
  @tmpdir = Dir.mktmpdir("lwrp_test")
586
576
  resource_path = File.join(@tmpdir, "once.rb")
587
577
  IO.write(resource_path, "default_action :create")
588
-
589
- @old_treat_deprecation_warnings_as_errors = Chef::Config[:treat_deprecation_warnings_as_errors]
590
- Chef::Config[:treat_deprecation_warnings_as_errors] = false
591
- Chef::Resource::LWRPBase.build_from_file("lwrp", resource_path, nil)
578
+ @test_lwrp_class = Chef::Resource::LWRPBase.build_from_file("lwrp", resource_path, nil)
592
579
  end
593
580
 
594
581
  after(:context) do
595
582
  FileUtils.remove_entry @tmpdir
596
- Chef::Config[:treat_deprecation_warnings_as_errors] = @old_treat_deprecation_warnings_as_errors
597
583
  end
598
584
 
599
- it "should load the resource into a properly-named class" do
600
- expect(Chef::Resource::LwrpOnce).to be_kind_of(Class)
601
- expect(Chef::Resource::LwrpOnce <= Chef::Resource::LWRPBase).to be_truthy
585
+ it "should not load the resource into a const" do
586
+ expect(defined?(Chef::Resource::LwrpOnce)).to be_nil
602
587
  end
603
588
 
604
- it "get_lwrp(:lwrp_once).new is a Chef::Resource::LwrpOnce" do
589
+ it "get_lwrp(:lwrp_once).new is an instance of the LWRP class" do
605
590
  lwrp = get_lwrp(:lwrp_once).new("hi")
606
- expect(lwrp.kind_of?(Chef::Resource::LwrpOnce)).to be_truthy
607
- expect(lwrp.is_a?(Chef::Resource::LwrpOnce)).to be_truthy
591
+ expect(lwrp.kind_of?(test_lwrp_class)).to be_truthy
592
+ expect(lwrp.is_a?(test_lwrp_class)).to be_truthy
608
593
  expect(get_lwrp(:lwrp_once) === lwrp).to be_truthy
609
- expect(Chef::Resource::LwrpOnce === lwrp).to be_truthy
610
- end
611
-
612
- it "Chef::Resource::LwrpOnce.new is a get_lwrp(:lwrp_once)" do
613
- lwrp = Chef::Resource::LwrpOnce.new("hi")
614
- expect(lwrp.kind_of?(get_lwrp(:lwrp_once))).to be_truthy
615
- expect(lwrp.is_a?(get_lwrp(:lwrp_once))).to be_truthy
616
- expect(get_lwrp(:lwrp_once) === lwrp).to be_truthy
617
- expect(Chef::Resource::LwrpOnce === lwrp).to be_truthy
618
- end
619
-
620
- it "works even if LwrpOnce exists in the top level" do
621
- module ::LwrpOnce
622
- end
623
- expect(Chef::Resource::LwrpOnce).not_to eq(::LwrpOnce)
624
- end
625
-
626
- it "allows monkey patching of the lwrp through Chef::Resource" do
627
- monkey = Module.new do
628
- def issue_3607
629
- end
630
- end
631
- Chef::Resource::LwrpOnce.send(:include, monkey)
632
- expect { get_lwrp(:lwrp_once).new("blah").issue_3607 }.not_to raise_error
594
+ expect(test_lwrp_class === lwrp).to be_truthy
633
595
  end
634
596
 
635
597
  context "with a subclass of get_lwrp(:lwrp_once)" do
@@ -644,54 +606,12 @@ describe "LWRP" do
644
606
  expect(subclass === lwrp).to be_truthy
645
607
  expect(lwrp.class === subclass)
646
608
  end
647
- it "subclass.new is a Chef::Resource::LwrpOnce" do
648
- lwrp = subclass.new("hi")
649
- expect(lwrp.kind_of?(Chef::Resource::LwrpOnce)).to be_truthy
650
- expect(lwrp.is_a?(Chef::Resource::LwrpOnce)).to be_truthy
651
- expect(Chef::Resource::LwrpOnce === lwrp).to be_truthy
652
- expect(lwrp.class === Chef::Resource::LwrpOnce)
653
- end
654
- it "subclass.new is a get_lwrp(:lwrp_once)" do
655
- lwrp = subclass.new("hi")
656
- expect(lwrp.kind_of?(get_lwrp(:lwrp_once))).to be_truthy
657
- expect(lwrp.is_a?(get_lwrp(:lwrp_once))).to be_truthy
658
- expect(get_lwrp(:lwrp_once) === lwrp).to be_truthy
659
- expect(lwrp.class === get_lwrp(:lwrp_once))
660
- end
661
- it "Chef::Resource::LwrpOnce.new is *not* a subclass" do
662
- lwrp = Chef::Resource::LwrpOnce.new("hi")
663
- expect(lwrp.kind_of?(subclass)).to be_falsey
664
- expect(lwrp.is_a?(subclass)).to be_falsey
665
- expect(subclass === lwrp.class).to be_falsey
666
- expect(subclass === Chef::Resource::LwrpOnce).to be_falsey
667
- end
668
- it "get_lwrp(:lwrp_once).new is *not* a subclass" do
669
- lwrp = get_lwrp(:lwrp_once).new("hi")
670
- expect(lwrp.kind_of?(subclass)).to be_falsey
671
- expect(lwrp.is_a?(subclass)).to be_falsey
672
- expect(subclass === lwrp.class).to be_falsey
673
- expect(subclass === get_lwrp(:lwrp_once)).to be_falsey
674
- end
675
- end
676
-
677
- context "with a subclass of Chef::Resource::LwrpOnce" do
678
- let(:subclass) do
679
- Class.new(Chef::Resource::LwrpOnce)
680
- end
681
-
682
- it "subclass.new is a subclass" do
683
- lwrp = subclass.new("hi")
684
- expect(lwrp.kind_of?(subclass)).to be_truthy
685
- expect(lwrp.is_a?(subclass)).to be_truthy
686
- expect(subclass === lwrp).to be_truthy
687
- expect(lwrp.class === subclass)
688
- end
689
- it "subclass.new is a Chef::Resource::LwrpOnce" do
609
+ it "subclass.new is an instance of the LWRP class" do
690
610
  lwrp = subclass.new("hi")
691
- expect(lwrp.kind_of?(Chef::Resource::LwrpOnce)).to be_truthy
692
- expect(lwrp.is_a?(Chef::Resource::LwrpOnce)).to be_truthy
693
- expect(Chef::Resource::LwrpOnce === lwrp).to be_truthy
694
- expect(lwrp.class === Chef::Resource::LwrpOnce)
611
+ expect(lwrp.kind_of?(test_lwrp_class)).to be_truthy
612
+ expect(lwrp.is_a?(test_lwrp_class)).to be_truthy
613
+ expect(test_lwrp_class === lwrp).to be_truthy
614
+ expect(lwrp.class === test_lwrp_class)
695
615
  end
696
616
  it "subclass.new is a get_lwrp(:lwrp_once)" do
697
617
  lwrp = subclass.new("hi")
@@ -700,13 +620,6 @@ describe "LWRP" do
700
620
  expect(get_lwrp(:lwrp_once) === lwrp).to be_truthy
701
621
  expect(lwrp.class === get_lwrp(:lwrp_once))
702
622
  end
703
- it "Chef::Resource::LwrpOnce.new is *not* a subclass" do
704
- lwrp = Chef::Resource::LwrpOnce.new("hi")
705
- expect(lwrp.kind_of?(subclass)).to be_falsey
706
- expect(lwrp.is_a?(subclass)).to be_falsey
707
- expect(subclass === lwrp.class).to be_falsey
708
- expect(subclass === Chef::Resource::LwrpOnce).to be_falsey
709
- end
710
623
  it "get_lwrp(:lwrp_once).new is *not* a subclass" do
711
624
  lwrp = get_lwrp(:lwrp_once).new("hi")
712
625
  expect(lwrp.kind_of?(subclass)).to be_falsey
@@ -731,8 +644,6 @@ describe "LWRP" do
731
644
  end
732
645
 
733
646
  class MyAwesomeProvider < Chef::Provider::LWRPBase
734
- use_inline_resources
735
-
736
647
  provides :my_awesome_resource
737
648
 
738
649
  action :create do