chef 16.2.50-universal-mingw32 → 16.4.38-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (377) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/Rakefile +3 -16
  4. data/chef-universal-mingw32.gemspec +2 -3
  5. data/chef.gemspec +4 -3
  6. data/lib/chef/action_collection.rb +4 -0
  7. data/lib/chef/api_client/registration.rb +2 -2
  8. data/lib/chef/application.rb +13 -1
  9. data/lib/chef/application/apply.rb +6 -5
  10. data/lib/chef/application/windows_service.rb +27 -27
  11. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  12. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  13. data/lib/chef/chef_class.rb +0 -1
  14. data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
  15. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  16. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
  17. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  18. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  19. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
  20. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
  21. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  22. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  23. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  24. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
  25. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  26. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  27. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  28. data/lib/chef/client.rb +14 -14
  29. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  30. data/lib/chef/cookbook/syntax_check.rb +1 -2
  31. data/lib/chef/cookbook_loader.rb +15 -29
  32. data/lib/chef/data_bag.rb +1 -2
  33. data/lib/chef/data_collector/run_end_message.rb +11 -1
  34. data/lib/chef/deprecated.rb +8 -0
  35. data/lib/chef/digester.rb +3 -2
  36. data/lib/chef/dsl/platform_introspection.rb +9 -7
  37. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  38. data/lib/chef/environment.rb +3 -4
  39. data/lib/chef/exceptions.rb +4 -1
  40. data/lib/chef/file_access_control/windows.rb +2 -2
  41. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  42. data/lib/chef/file_content_management/tempfile.rb +9 -9
  43. data/lib/chef/handler.rb +2 -0
  44. data/lib/chef/http.rb +12 -12
  45. data/lib/chef/http/authenticator.rb +3 -1
  46. data/lib/chef/json_compat.rb +1 -1
  47. data/lib/chef/knife.rb +4 -4
  48. data/lib/chef/knife/bootstrap.rb +18 -15
  49. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  50. data/lib/chef/knife/config_get.rb +1 -0
  51. data/lib/chef/knife/config_list_profiles.rb +4 -1
  52. data/lib/chef/knife/configure.rb +1 -1
  53. data/lib/chef/knife/cookbook_download.rb +1 -1
  54. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  55. data/lib/chef/knife/cookbook_upload.rb +29 -37
  56. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  57. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  58. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  59. data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
  60. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  61. data/lib/chef/knife/core/ui.rb +8 -2
  62. data/lib/chef/knife/core/windows_bootstrap_context.rb +33 -26
  63. data/lib/chef/knife/delete.rb +15 -15
  64. data/lib/chef/knife/exec.rb +2 -2
  65. data/lib/chef/knife/rehash.rb +3 -21
  66. data/lib/chef/knife/ssh.rb +11 -7
  67. data/lib/chef/knife/xargs.rb +19 -19
  68. data/lib/chef/knife/yaml_convert.rb +1 -1
  69. data/lib/chef/log.rb +7 -2
  70. data/lib/chef/mixin/checksum.rb +0 -1
  71. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  72. data/lib/chef/mixin/deep_merge.rb +35 -6
  73. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  74. data/lib/chef/mixin/openssl_helper.rb +30 -6
  75. data/lib/chef/mixin/path_sanity.rb +5 -4
  76. data/lib/chef/mixin/shell_out.rb +4 -188
  77. data/lib/chef/mixin/template.rb +1 -0
  78. data/lib/chef/mixin/which.rb +6 -3
  79. data/lib/chef/mixins.rb +1 -0
  80. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  81. data/lib/chef/node.rb +36 -12
  82. data/lib/chef/node/attribute.rb +2 -4
  83. data/lib/chef/node_map.rb +21 -18
  84. data/lib/chef/platform/service_helpers.rb +31 -28
  85. data/lib/chef/property.rb +1 -1
  86. data/lib/chef/provider/cron/unix.rb +0 -2
  87. data/lib/chef/provider/git.rb +17 -9
  88. data/lib/chef/provider/group.rb +0 -2
  89. data/lib/chef/provider/group/suse.rb +5 -5
  90. data/lib/chef/provider/ifconfig.rb +1 -4
  91. data/lib/chef/provider/mount.rb +0 -2
  92. data/lib/chef/provider/mount/solaris.rb +0 -1
  93. data/lib/chef/provider/package.rb +0 -2
  94. data/lib/chef/provider/package/rubygems.rb +1 -1
  95. data/lib/chef/provider/package/snap.rb +3 -4
  96. data/lib/chef/provider/package/windows.rb +9 -4
  97. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
  98. data/lib/chef/provider/package/zypper.rb +0 -1
  99. data/lib/chef/provider/powershell_script.rb +21 -5
  100. data/lib/chef/provider/route.rb +1 -1
  101. data/lib/chef/provider/service.rb +2 -2
  102. data/lib/chef/provider/service/arch.rb +1 -1
  103. data/lib/chef/provider/service/debian.rb +1 -1
  104. data/lib/chef/provider/service/gentoo.rb +2 -2
  105. data/lib/chef/provider/service/macosx.rb +2 -2
  106. data/lib/chef/provider/service/openbsd.rb +1 -4
  107. data/lib/chef/provider/service/redhat.rb +2 -2
  108. data/lib/chef/provider/service/upstart.rb +1 -1
  109. data/lib/chef/provider/service/windows.rb +10 -10
  110. data/lib/chef/provider/systemd_unit.rb +0 -2
  111. data/lib/chef/provider/template/content.rb +1 -0
  112. data/lib/chef/provider/user/dscl.rb +2 -2
  113. data/lib/chef/provider/user/mac.rb +9 -9
  114. data/lib/chef/provider/windows_task.rb +0 -3
  115. data/lib/chef/provider/yum_repository.rb +1 -1
  116. data/lib/chef/provider/zypper_repository.rb +1 -2
  117. data/lib/chef/providers.rb +0 -1
  118. data/lib/chef/recipe.rb +1 -1
  119. data/lib/chef/resource.rb +9 -11
  120. data/lib/chef/resource/apt_repository.rb +1 -10
  121. data/lib/chef/resource/build_essential.rb +2 -2
  122. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  123. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  124. data/lib/chef/resource/chef_vault_secret.rb +13 -13
  125. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  126. data/lib/chef/resource/cron/cron_d.rb +1 -1
  127. data/lib/chef/resource/cron_access.rb +2 -2
  128. data/lib/chef/resource/dmg_package.rb +1 -1
  129. data/lib/chef/resource/execute.rb +4 -5
  130. data/lib/chef/resource/homebrew_update.rb +2 -2
  131. data/lib/chef/resource/hostname.rb +18 -18
  132. data/lib/chef/resource/launchd.rb +1 -1
  133. data/lib/chef/resource/lwrp_base.rb +1 -0
  134. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  135. data/lib/chef/resource/openssl_dhparam.rb +2 -0
  136. data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
  137. data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
  138. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
  139. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  140. data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
  141. data/lib/chef/resource/openssl_x509_crl.rb +3 -2
  142. data/lib/chef/resource/openssl_x509_request.rb +23 -20
  143. data/lib/chef/resource/osx_profile.rb +227 -5
  144. data/lib/chef/resource/powershell_package_source.rb +1 -1
  145. data/lib/chef/resource/powershell_script.rb +24 -30
  146. data/lib/chef/resource/service.rb +2 -2
  147. data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
  148. data/lib/chef/resource/sudo.rb +2 -2
  149. data/lib/chef/resource/sysctl.rb +5 -5
  150. data/lib/chef/resource/user_ulimit.rb +1 -1
  151. data/lib/chef/resource/windows_ad_join.rb +2 -0
  152. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  153. data/lib/chef/resource/windows_auto_run.rb +2 -0
  154. data/lib/chef/resource/windows_certificate.rb +2 -0
  155. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  156. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  157. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  158. data/lib/chef/resource/windows_dns_record.rb +25 -5
  159. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  160. data/lib/chef/resource/windows_feature.rb +2 -0
  161. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  162. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  163. data/lib/chef/resource/windows_firewall_profile.rb +199 -0
  164. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  165. data/lib/chef/resource/windows_font.rb +3 -1
  166. data/lib/chef/resource/windows_pagefile.rb +4 -0
  167. data/lib/chef/resource/windows_printer.rb +17 -18
  168. data/lib/chef/resource/windows_printer_port.rb +14 -13
  169. data/lib/chef/resource/windows_security_policy.rb +51 -20
  170. data/lib/chef/resource/windows_share.rb +5 -3
  171. data/lib/chef/resource/windows_shortcut.rb +2 -0
  172. data/lib/chef/resource/windows_uac.rb +2 -0
  173. data/lib/chef/resource/windows_user_privilege.rb +27 -2
  174. data/lib/chef/resource/windows_workgroup.rb +2 -3
  175. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  176. data/lib/chef/resource_inspector.rb +7 -1
  177. data/lib/chef/resources.rb +1 -0
  178. data/lib/chef/role.rb +3 -4
  179. data/lib/chef/run_context/cookbook_compiler.rb +20 -20
  180. data/lib/chef/run_status.rb +2 -6
  181. data/lib/chef/server_api_versions.rb +4 -0
  182. data/lib/chef/shell.rb +1 -1
  183. data/lib/chef/shell/shell_session.rb +2 -0
  184. data/lib/chef/util/backup.rb +1 -1
  185. data/lib/chef/util/diff.rb +11 -12
  186. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  187. data/lib/chef/version.rb +2 -2
  188. data/lib/chef/win32/file.rb +2 -2
  189. data/lib/chef/win32/file/version_info.rb +5 -5
  190. data/lib/chef/win32/registry.rb +1 -2
  191. data/spec/data/ssl/chef-rspec.cert +15 -15
  192. data/spec/functional/knife/configure_spec.rb +1 -1
  193. data/spec/functional/knife/ssh_spec.rb +5 -16
  194. data/spec/functional/resource/aix_service_spec.rb +9 -2
  195. data/spec/functional/resource/aixinit_service_spec.rb +8 -9
  196. data/spec/functional/resource/apt_package_spec.rb +0 -1
  197. data/spec/functional/resource/bash_spec.rb +3 -2
  198. data/spec/functional/resource/bff_spec.rb +3 -3
  199. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  200. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  201. data/spec/functional/resource/cron_spec.rb +10 -2
  202. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  203. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  204. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  205. data/spec/functional/resource/execute_spec.rb +1 -1
  206. data/spec/functional/resource/git_spec.rb +23 -1
  207. data/spec/functional/resource/group_spec.rb +21 -9
  208. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  209. data/spec/functional/resource/insserv_spec.rb +7 -7
  210. data/spec/functional/resource/link_spec.rb +22 -25
  211. data/spec/functional/resource/mount_spec.rb +9 -1
  212. data/spec/functional/resource/msu_package_spec.rb +9 -3
  213. data/spec/functional/resource/powershell_script_spec.rb +8 -8
  214. data/spec/functional/resource/remote_file_spec.rb +7 -13
  215. data/spec/functional/resource/rpm_spec.rb +3 -3
  216. data/spec/functional/resource/timezone_spec.rb +2 -0
  217. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  218. data/spec/functional/resource/windows_font_spec.rb +49 -0
  219. data/spec/functional/resource/windows_package_spec.rb +0 -1
  220. data/spec/functional/resource/windows_path_spec.rb +4 -0
  221. data/spec/functional/resource/windows_security_policy_spec.rb +0 -4
  222. data/spec/functional/resource/windows_service_spec.rb +4 -0
  223. data/spec/functional/resource/windows_task_spec.rb +4 -3
  224. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  225. data/spec/functional/resource/yum_package_spec.rb +4 -1
  226. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  227. data/spec/functional/run_lock_spec.rb +26 -25
  228. data/spec/functional/shell_spec.rb +5 -6
  229. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  230. data/spec/functional/version_spec.rb +1 -1
  231. data/spec/functional/win32/crypto_spec.rb +1 -1
  232. data/spec/functional/win32/registry_spec.rb +8 -8
  233. data/spec/functional/win32/service_manager_spec.rb +1 -1
  234. data/spec/integration/knife/common_options_spec.rb +12 -12
  235. data/spec/integration/knife/config_get_profile_spec.rb +69 -68
  236. data/spec/integration/knife/config_get_spec.rb +126 -125
  237. data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
  238. data/spec/integration/knife/config_use_profile_spec.rb +110 -109
  239. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  240. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  241. data/spec/integration/knife/diff_spec.rb +3 -1
  242. data/spec/integration/knife/download_spec.rb +3 -1
  243. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  244. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  245. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  246. data/spec/integration/knife/serve_spec.rb +5 -5
  247. data/spec/integration/knife/upload_spec.rb +3 -1
  248. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  249. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
  250. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  251. data/spec/integration/recipes/notifies_spec.rb +1 -1
  252. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  253. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  254. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  255. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  256. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  257. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  258. data/spec/scripts/ssl-serve.rb +1 -1
  259. data/spec/spec_helper.rb +16 -10
  260. data/spec/support/chef_helpers.rb +1 -20
  261. data/spec/support/platform_helpers.rb +9 -11
  262. data/spec/support/platforms/win32/spec_service.rb +1 -1
  263. data/spec/support/shared/functional/directory_resource.rb +1 -1
  264. data/spec/support/shared/functional/execute_resource.rb +1 -1
  265. data/spec/support/shared/functional/file_resource.rb +20 -21
  266. data/spec/support/shared/functional/securable_resource.rb +1 -2
  267. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  268. data/spec/support/shared/functional/win32_service.rb +1 -1
  269. data/spec/support/shared/functional/windows_script.rb +5 -5
  270. data/spec/support/shared/integration/integration_helper.rb +22 -52
  271. data/spec/support/shared/integration/knife_support.rb +2 -9
  272. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  273. data/spec/support/shared/unit/provider/file.rb +12 -8
  274. data/spec/support/shared/unit/script_resource.rb +6 -20
  275. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  276. data/spec/unit/application/solo_spec.rb +4 -2
  277. data/spec/unit/application_spec.rb +4 -2
  278. data/spec/unit/chef_fs/config_spec.rb +2 -2
  279. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  280. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  281. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  282. data/spec/unit/client_spec.rb +4 -1
  283. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  284. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  285. data/spec/unit/data_bag_spec.rb +6 -3
  286. data/spec/unit/data_collector_spec.rb +29 -1
  287. data/spec/unit/decorator_spec.rb +23 -23
  288. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  289. data/spec/unit/environment_spec.rb +12 -8
  290. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  291. data/spec/unit/guard_interpreter_spec.rb +1 -1
  292. data/spec/unit/http/api_versions_spec.rb +20 -2
  293. data/spec/unit/json_compat_spec.rb +1 -1
  294. data/spec/unit/knife/bootstrap_spec.rb +17 -20
  295. data/spec/unit/knife/cookbook_download_spec.rb +6 -6
  296. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  297. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  298. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  299. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  300. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  301. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  302. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  303. data/spec/unit/log/syslog_spec.rb +6 -10
  304. data/spec/unit/log/winevt_spec.rb +21 -13
  305. data/spec/unit/lwrp_spec.rb +9 -6
  306. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  307. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  308. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  309. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  310. data/spec/unit/mixin/securable_spec.rb +0 -1
  311. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  312. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  313. data/spec/unit/mixin/template_spec.rb +30 -30
  314. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  315. data/spec/unit/mixin/uris_spec.rb +1 -1
  316. data/spec/unit/mixin/which.rb +8 -0
  317. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  318. data/spec/unit/node/immutable_collections_spec.rb +6 -2
  319. data/spec/unit/node_spec.rb +103 -16
  320. data/spec/unit/property_spec.rb +5 -5
  321. data/spec/unit/provider/batch_spec.rb +1 -1
  322. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  323. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  324. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  325. data/spec/unit/provider/execute_spec.rb +1 -8
  326. data/spec/unit/provider/git_spec.rb +3 -3
  327. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  328. data/spec/unit/provider/mdadm_spec.rb +1 -3
  329. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  330. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  331. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  332. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  333. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  334. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  335. data/spec/unit/provider/package/windows_spec.rb +30 -53
  336. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  337. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  338. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  339. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  340. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  341. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  342. data/spec/unit/provider/service/redhat_spec.rb +3 -3
  343. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  344. data/spec/unit/provider/service/windows_spec.rb +2 -6
  345. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  346. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  347. data/spec/unit/provider/windows_env_spec.rb +5 -4
  348. data/spec/unit/provider_resolver_spec.rb +6 -6
  349. data/spec/unit/provider_spec.rb +1 -0
  350. data/spec/unit/resource/batch_spec.rb +6 -6
  351. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  352. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  353. data/spec/unit/resource/execute_spec.rb +123 -118
  354. data/spec/unit/resource/file/verification_spec.rb +2 -1
  355. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  356. data/spec/unit/resource/osx_profile_spec.rb +233 -0
  357. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  358. data/spec/unit/resource/script_spec.rb +6 -1
  359. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  360. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  361. data/spec/unit/resource/windows_package_spec.rb +1 -0
  362. data/spec/unit/resource_reporter_spec.rb +1 -1
  363. data/spec/unit/resource_spec.rb +25 -8
  364. data/spec/unit/role_spec.rb +30 -28
  365. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  366. data/spec/unit/run_lock_spec.rb +1 -1
  367. data/spec/unit/scan_access_control_spec.rb +1 -1
  368. data/spec/unit/server_api_spec.rb +43 -16
  369. data/spec/unit/util/backup_spec.rb +1 -1
  370. data/spec/unit/util/diff_spec.rb +1 -15
  371. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  372. data/spec/unit/util/selinux_spec.rb +2 -1
  373. data/spec/unit/win32/security_spec.rb +4 -3
  374. data/tasks/rspec.rb +1 -1
  375. metadata +53 -40
  376. data/lib/chef/provider/osx_profile.rb +0 -255
  377. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -164,6 +164,8 @@ describe Chef::Application::Solo do
164
164
  end
165
165
 
166
166
  context "in local mode" do
167
+ let(:root_path) { windows? ? "C:/var/chef" : "/var/chef" }
168
+
167
169
  before do
168
170
  Chef::Config[:solo_legacy_mode] = false
169
171
  end
@@ -197,10 +199,10 @@ describe Chef::Application::Solo do
197
199
  end
198
200
 
199
201
  it "sets the repo path" do
200
- expect(Chef::Config).to receive(:find_chef_repo_path).and_return("/var/chef")
202
+ expect(Chef::Config).to receive(:find_chef_repo_path).and_return(root_path)
201
203
  app.reconfigure
202
204
  expect(Chef::Config.key?(:chef_repo_path)).to be_truthy
203
- expect(Chef::Config[:chef_repo_path]).to eq ("/var/chef")
205
+ expect(Chef::Config[:chef_repo_path]).to eq (root_path)
204
206
  end
205
207
 
206
208
  it "runs chef-client in local mode" do
@@ -22,12 +22,10 @@ describe Chef::Application do
22
22
  before do
23
23
  @original_argv = ARGV.dup
24
24
  ARGV.clear
25
- Chef::Log.logger = Logger.new(StringIO.new)
26
25
  @app = Chef::Application.new
27
26
  allow(@app).to receive(:trap)
28
27
  allow(Dir).to receive(:chdir).and_return(0)
29
28
  allow(@app).to receive(:reconfigure)
30
- Chef::Log.init(STDERR)
31
29
  end
32
30
 
33
31
  after do
@@ -254,6 +252,10 @@ describe Chef::Application do
254
252
  end
255
253
 
256
254
  context "when log_level is not set" do
255
+ before do
256
+ Chef::Config.delete(:log_level)
257
+ end
258
+
257
259
  it_behaves_like "log_level_is_auto"
258
260
  end
259
261
 
@@ -203,8 +203,8 @@ describe Chef::ChefFS::Config do
203
203
  })
204
204
  end
205
205
 
206
- let (:path) { "/roles/foo.json" }
207
- let (:entry) { Entry.new(path) }
206
+ let(:path) { "/roles/foo.json" }
207
+ let(:entry) { Entry.new(path) }
208
208
 
209
209
  it "returns the entry's path if the cwd isn't in the config" do
210
210
  cfg = Chef::ChefFS::Config.new(config, "/my_repo/cookbooks")
@@ -20,17 +20,17 @@ require "spec_helper"
20
20
  require "chef/chef_fs/file_pattern"
21
21
  require "chef/chef_fs/command_line"
22
22
 
23
- # Removes the date stamp from the diff and replaces it with ' DATE'
24
- # example match: "/dev/null\t2012-10-16 16:15:54.000000000 +0000"
25
- # windows match: "--- /dev/null\tTue Oct 16 18:04:34 2012"
26
- def remove_os_differences(diff)
27
- diff = diff.gsub(/([+-]{3}.*)\t.*/, '\1 DATE')
28
- diff.gsub(/^@@ -\d(,\d)? \+\d(,\d)? @@/, "CONTEXT_LINE_NUMBERS")
29
- end
30
-
31
23
  describe "diff", uses_diff: true do
32
24
  include FileSystemSupport
33
25
 
26
+ # Removes the date stamp from the diff and replaces it with ' DATE'
27
+ # example match: "/dev/null\t2012-10-16 16:15:54.000000000 +0000"
28
+ # windows match: "--- /dev/null\tTue Oct 16 18:04:34 2012"
29
+ def remove_os_differences(diff)
30
+ diff = diff.gsub(/([+-]{3}.*)\t.*/, '\1 DATE')
31
+ diff.gsub(/^@@ -\d(,\d)? \+\d(,\d)? @@/, "CONTEXT_LINE_NUMBERS")
32
+ end
33
+
34
34
  context "with two filesystems with all types of difference" do
35
35
  let(:a) do
36
36
  memory_fs("a", {
@@ -25,11 +25,9 @@ describe Chef::ChefFS::FileSystem::OperationFailedError do
25
25
 
26
26
  context "has a cause attribute and HTTP result code is 400" do
27
27
  it "include error cause" do
28
- allow_message_expectations_on_nil
29
28
  response_body = '{"error":["Invalid key test in request body"]}'
30
- allow(@response).to receive(:code).and_return("400")
31
- allow(@response).to receive(:body).and_return(response_body)
32
- exception = Net::HTTPClientException.new("(exception) unauthorized", @response)
29
+ response = double(:response, code: "400", body: response_body)
30
+ exception = Net::HTTPClientException.new("(exception) unauthorized", response)
33
31
  expect do
34
32
  raise Chef::ChefFS::FileSystem::OperationFailedError.new(:write, self, exception), error_message
35
33
  end.to raise_error(Chef::ChefFS::FileSystem::OperationFailedError, "#{error_message} cause: #{response_body}")
@@ -405,7 +405,7 @@ describe Chef::ChefFS::Parallelizer do
405
405
  expect do
406
406
  b = enum.enum_for(:each)
407
407
  b.next
408
- end.to raise_error
408
+ end.to raise_error(RuntimeError, "each() called on parallel enumerable twice simultaneously! Bad mojo")
409
409
  end
410
410
  end
411
411
  end
@@ -749,9 +749,12 @@ describe Chef::Client do
749
749
 
750
750
  context "when any directory of cookbook_path contains no cookbook" do
751
751
  it "raises CookbookNotFound error" do
752
+ invalid_cookbook_path = windows? ? "C:/path/to/invalid/cookbook_path" : "/path/to/invalid/cookbook_path"
753
+ msg = "None of the cookbook paths set in Chef::Config[:cookbook_path], [\"#{invalid_cookbook_path}\"], contain any cookbooks"
754
+
752
755
  expect do
753
756
  client.send(:assert_cookbook_path_not_empty, nil)
754
- end.to raise_error(Chef::Exceptions::CookbookNotFound, 'None of the cookbook paths set in Chef::Config[:cookbook_path], ["/path/to/invalid/cookbook_path"], contain any cookbooks')
757
+ end.to raise_error(Chef::Exceptions::CookbookNotFound, msg)
755
758
  end
756
759
  end
757
760
  end
@@ -95,7 +95,8 @@ describe Chef::Cookbook::GemInstaller do
95
95
 
96
96
  it "skip metadata installation when Chef::Config[:skip_gem_metadata_installation] is set to true" do
97
97
  Chef::Config[:skip_gem_metadata_installation] = true
98
- expect(gem_installer.install).to_not receive(:shell_out!)
98
+ expect(gem_installer).to_not receive(:shell_out!)
99
+ expect(gem_installer.install).to be_nil
99
100
  end
100
101
 
101
102
  it "install metadata when Chef::Config[:skip_gem_metadata_installation] is not true" do
@@ -217,6 +217,8 @@ describe Chef::CookbookSynchronizer do
217
217
  path: "/tmp/cookbook_a_template_default_tempfile")
218
218
  end
219
219
 
220
+ let(:root) { windows? ? "C:/file-cache/cookbooks/cookbook_a" : "/file-cache/cookbooks/cookbook_a" }
221
+
220
222
  def setup_common_files_missing_expectations
221
223
  # Files are not in the cache:
222
224
  expect(file_cache).to receive(:key?)
@@ -234,7 +236,7 @@ describe Chef::CookbookSynchronizer do
234
236
  .with("/tmp/cookbook_a_recipes_default_rb", "cookbooks/cookbook_a/recipes/default.rb")
235
237
  expect(file_cache).to receive(:load)
236
238
  .with("cookbooks/cookbook_a/recipes/default.rb", false)
237
- .and_return("/file-cache/cookbooks/cookbook_a/recipes/default.rb")
239
+ .and_return("#{root}/recipes/default.rb")
238
240
 
239
241
  # Fetch and copy default.rb attribute file
240
242
  expect(server_api).to receive(:streaming_request)
@@ -244,7 +246,7 @@ describe Chef::CookbookSynchronizer do
244
246
  .with("/tmp/cookbook_a_attributes_default_rb", "cookbooks/cookbook_a/attributes/default.rb")
245
247
  expect(file_cache).to receive(:load)
246
248
  .with("cookbooks/cookbook_a/attributes/default.rb", false)
247
- .and_return("/file-cache/cookbooks/cookbook_a/attributes/default.rb")
249
+ .and_return("#{root}/attributes/default.rb")
248
250
  end
249
251
 
250
252
  def setup_no_lazy_files_and_templates_missing_expectations
@@ -262,7 +264,7 @@ describe Chef::CookbookSynchronizer do
262
264
  .with("/tmp/cookbook_a_file_default_tempfile", "cookbooks/cookbook_a/files/default/megaman.conf")
263
265
  expect(file_cache).to receive(:load)
264
266
  .with("cookbooks/cookbook_a/files/default/megaman.conf", false)
265
- .and_return("/file-cache/cookbooks/cookbook_a/default/megaman.conf")
267
+ .and_return("#{root}/default/megaman.conf")
266
268
 
267
269
  expect(server_api).to receive(:streaming_request)
268
270
  .with("http://chef.example.com/ffffff")
@@ -271,7 +273,7 @@ describe Chef::CookbookSynchronizer do
271
273
  .with("/tmp/cookbook_a_template_default_tempfile", "cookbooks/cookbook_a/templates/default/apache2.conf.erb")
272
274
  expect(file_cache).to receive(:load)
273
275
  .with("cookbooks/cookbook_a/templates/default/apache2.conf.erb", false)
274
- .and_return("/file-cache/cookbooks/cookbook_a/templates/default/apache2.conf.erb")
276
+ .and_return("#{root}/templates/default/apache2.conf.erb")
275
277
  end
276
278
 
277
279
  def setup_common_files_chksum_mismatch_expectations
@@ -292,11 +294,11 @@ describe Chef::CookbookSynchronizer do
292
294
  expect(file_cache).to receive(:load)
293
295
  .with("cookbooks/cookbook_a/recipes/default.rb", false)
294
296
  .twice
295
- .and_return("/file-cache/cookbooks/cookbook_a/recipes/default.rb")
297
+ .and_return("#{root}/recipes/default.rb")
296
298
 
297
299
  # Current file has fff000, want abc123
298
300
  expect(Chef::CookbookVersion).to receive(:checksum_cookbook_file)
299
- .with("/file-cache/cookbooks/cookbook_a/recipes/default.rb")
301
+ .with("#{root}/recipes/default.rb")
300
302
  .and_return("fff000").at_least(:once)
301
303
 
302
304
  # Fetch and copy default.rb attribute file
@@ -308,11 +310,11 @@ describe Chef::CookbookSynchronizer do
308
310
  expect(file_cache).to receive(:load)
309
311
  .with("cookbooks/cookbook_a/attributes/default.rb", false)
310
312
  .twice
311
- .and_return("/file-cache/cookbooks/cookbook_a/attributes/default.rb")
313
+ .and_return("#{root}/attributes/default.rb")
312
314
 
313
315
  # Current file has fff000, want abc456
314
316
  expect(Chef::CookbookVersion).to receive(:checksum_cookbook_file)
315
- .with("/file-cache/cookbooks/cookbook_a/attributes/default.rb")
317
+ .with("#{root}/attributes/default.rb")
316
318
  .and_return("fff000").at_least(:once)
317
319
  end
318
320
 
@@ -334,7 +336,7 @@ describe Chef::CookbookSynchronizer do
334
336
  expect(file_cache).to receive(:load)
335
337
  .with("cookbooks/cookbook_a/files/default/megaman.conf", false)
336
338
  .twice
337
- .and_return("/file-cache/cookbooks/cookbook_a/default/megaman.conf")
339
+ .and_return("#{root}/default/megaman.conf")
338
340
 
339
341
  # Fetch and copy apache2.conf template
340
342
  expect(server_api).to receive(:streaming_request)
@@ -345,16 +347,16 @@ describe Chef::CookbookSynchronizer do
345
347
  expect(file_cache).to receive(:load)
346
348
  .with("cookbooks/cookbook_a/templates/default/apache2.conf.erb", false)
347
349
  .twice
348
- .and_return("/file-cache/cookbooks/cookbook_a/templates/default/apache2.conf.erb")
350
+ .and_return("#{root}/templates/default/apache2.conf.erb")
349
351
 
350
352
  # Current file has fff000
351
353
  expect(Chef::CookbookVersion).to receive(:checksum_cookbook_file)
352
- .with("/file-cache/cookbooks/cookbook_a/default/megaman.conf")
354
+ .with("#{root}/default/megaman.conf")
353
355
  .and_return("fff000")
354
356
 
355
357
  # Current file has fff000
356
358
  expect(Chef::CookbookVersion).to receive(:checksum_cookbook_file)
357
- .with("/file-cache/cookbooks/cookbook_a/templates/default/apache2.conf.erb")
359
+ .with("#{root}/templates/default/apache2.conf.erb")
358
360
  .and_return("fff000")
359
361
  end
360
362
 
@@ -369,23 +371,23 @@ describe Chef::CookbookSynchronizer do
369
371
 
370
372
  # Current file has abc123, want abc123
371
373
  expect(Chef::CookbookVersion).to receive(:checksum_cookbook_file)
372
- .with("/file-cache/cookbooks/cookbook_a/recipes/default.rb")
374
+ .with("#{root}/recipes/default.rb")
373
375
  .and_return("abc123").at_least(:once)
374
376
 
375
377
  # Current file has abc456, want abc456
376
378
  expect(Chef::CookbookVersion).to receive(:checksum_cookbook_file)
377
- .with("/file-cache/cookbooks/cookbook_a/attributes/default.rb")
379
+ .with("#{root}/attributes/default.rb")
378
380
  .and_return("abc456").at_least(:once)
379
381
 
380
382
  # :load called twice
381
383
  expect(file_cache).to receive(:load)
382
384
  .with("cookbooks/cookbook_a/recipes/default.rb", false)
383
385
  .twice
384
- .and_return("/file-cache/cookbooks/cookbook_a/recipes/default.rb")
386
+ .and_return("#{root}/recipes/default.rb")
385
387
  expect(file_cache).to receive(:load)
386
388
  .with("cookbooks/cookbook_a/attributes/default.rb", false)
387
389
  .twice
388
- .and_return("/file-cache/cookbooks/cookbook_a/attributes/default.rb")
390
+ .and_return("#{root}/attributes/default.rb")
389
391
  end
390
392
 
391
393
  def setup_no_lazy_files_and_templates_present_expectations
@@ -399,23 +401,23 @@ describe Chef::CookbookSynchronizer do
399
401
 
400
402
  # Current file has abc124, want abc124
401
403
  expect(Chef::CookbookVersion).to receive(:checksum_cookbook_file)
402
- .with("/file-cache/cookbooks/cookbook_a/default/megaman.conf")
404
+ .with("#{root}/default/megaman.conf")
403
405
  .and_return("abc124")
404
406
 
405
407
  # Current file has abc125, want abc125
406
408
  expect(Chef::CookbookVersion).to receive(:checksum_cookbook_file)
407
- .with("/file-cache/cookbooks/cookbook_a/templates/default/apache2.conf.erb")
409
+ .with("#{root}/templates/default/apache2.conf.erb")
408
410
  .and_return("abc125")
409
411
 
410
412
  # :load called twice
411
413
  expect(file_cache).to receive(:load)
412
414
  .with("cookbooks/cookbook_a/files/default/megaman.conf", false)
413
415
  .twice
414
- .and_return("/file-cache/cookbooks/cookbook_a/default/megaman.conf")
416
+ .and_return("#{root}/default/megaman.conf")
415
417
  expect(file_cache).to receive(:load)
416
418
  .with("cookbooks/cookbook_a/templates/default/apache2.conf.erb", false)
417
419
  .twice
418
- .and_return("/file-cache/cookbooks/cookbook_a/templates/default/apache2.conf.erb")
420
+ .and_return("#{root}/templates/default/apache2.conf.erb")
419
421
  end
420
422
 
421
423
  describe "#server_api" do
@@ -535,19 +537,19 @@ describe Chef::CookbookSynchronizer do
535
537
  expect(file_cache).to receive(:load)
536
538
  .with("cookbooks/cookbook_a/recipes/default.rb", false)
537
539
  .once
538
- .and_return("/file-cache/cookbooks/cookbook_a/recipes/default.rb")
540
+ .and_return("#{root}/recipes/default.rb")
539
541
  expect(file_cache).to receive(:load)
540
542
  .with("cookbooks/cookbook_a/attributes/default.rb", false)
541
543
  .once
542
- .and_return("/file-cache/cookbooks/cookbook_a/attributes/default.rb")
544
+ .and_return("#{root}/attributes/default.rb")
543
545
  expect(file_cache).to receive(:load)
544
546
  .with("cookbooks/cookbook_a/templates/default/apache2.conf.erb", false)
545
547
  .once
546
- .and_return("/file-cache/cookbooks/cookbook_a/templates/default/apache2.conf.erb")
548
+ .and_return("#{root}/templates/default/apache2.conf.erb")
547
549
  expect(file_cache).to receive(:load)
548
550
  .with("cookbooks/cookbook_a/files/default/megaman.conf", false)
549
551
  .once
550
- .and_return("/file-cache/cookbooks/cookbook_a/files/default/megaman.conf")
552
+ .and_return("#{root}/files/default/megaman.conf")
551
553
  expect(Chef::Log).to receive(:warn)
552
554
  .with("skipping cookbook synchronization! DO NOT LEAVE THIS ENABLED IN PRODUCTION!!!")
553
555
  .once
@@ -240,20 +240,23 @@ describe Chef::DataBag do
240
240
 
241
241
  it "should raise an error if the configured data_bag_path is invalid" do
242
242
  file_dir_stub(@paths.first, false)
243
+ msg = "Data bag path '#{windows? ? "C:/var/chef" : "/var/chef"}/data_bags' not found. Please create this directory."
243
244
 
244
245
  expect do
245
246
  Chef::DataBag.load("foo")
246
- end.to raise_error Chef::Exceptions::InvalidDataBagPath, "Data bag path '/var/chef/data_bags' not found. Please create this directory."
247
+ end.to raise_error Chef::Exceptions::InvalidDataBagPath, msg
247
248
  end
248
249
 
249
250
  end
250
251
 
251
252
  describe "data bag with string path" do
252
- it_should_behave_like "data bag in solo mode", "/var/chef/data_bags"
253
+ it_should_behave_like "data bag in solo mode", "#{windows? ? "C:/var/chef" : "/var/chef"}/data_bags"
253
254
  end
254
255
 
255
256
  describe "data bag with array path" do
256
- it_should_behave_like "data bag in solo mode", ["/var/chef/data_bags", "/var/chef/data_bags_2"]
257
+ it_should_behave_like "data bag in solo mode", %w{data_bags data_bags_2}.map { |data_bag|
258
+ "#{windows? ? "C:/var/chef" : "/var/chef"}/#{data_bag}"
259
+ }
257
260
  end
258
261
  end
259
262
 
@@ -15,7 +15,7 @@
15
15
  # limitations under the License.
16
16
  #
17
17
 
18
- require_relative "../spec_helper"
18
+ require "spec_helper"
19
19
  require "chef/data_collector"
20
20
  require "socket"
21
21
 
@@ -39,6 +39,13 @@ describe Chef::DataCollector do
39
39
  let(:new_resource) do
40
40
  new_resource = Chef::Resource::File.new("/tmp/a-file.txt")
41
41
  new_resource.checksum nil
42
+ # This next line is a hack to work around the fact that the name property will not have been autovivified yet
43
+ # in these unit tests which breaks some assumptions. Really the Formatters::ErrorMapper.resource_failed and
44
+ # related APIs need to properly walk and get properties on the resource rather than walking through instance
45
+ # variables, but the ErrorMappers probably pre-date the conversion to properties. But this next line is necesary
46
+ # to populate the name_property instance variable (which will happen naturally during the course of running the
47
+ # provider, so I don't think this is a user-visibile bug).
48
+ new_resource.path
42
49
  new_resource
43
50
  end
44
51
 
@@ -780,6 +787,13 @@ describe Chef::DataCollector do
780
787
  let(:resource_record) do
781
788
  rec = resource_record_for(new_resource, current_resource, nil, :create, "failed", "1234")
782
789
  rec["error_message"] = "imperial to metric conversion error"
790
+ rec["error"] = {
791
+ "class" => exception.class,
792
+ "message" => exception.message,
793
+ "backtrace" => exception.backtrace,
794
+ "description" => error_description,
795
+ }
796
+
783
797
  [ rec ]
784
798
  end
785
799
  let(:status) { "failure" }
@@ -808,6 +822,13 @@ describe Chef::DataCollector do
808
822
  rec = resource_record_for(new_resource, nil, nil, :create, "failed", "1234")
809
823
  rec["before"] = {}
810
824
  rec["error_message"] = "imperial to metric conversion error"
825
+ rec["error"] = {
826
+ "class" => exception.class,
827
+ "message" => exception.message,
828
+ "backtrace" => exception.backtrace,
829
+ "description" => error_description,
830
+ }
831
+
811
832
  [ rec ]
812
833
  end
813
834
  let(:status) { "failure" }
@@ -842,6 +863,13 @@ describe Chef::DataCollector do
842
863
  let(:resource_record) do
843
864
  rec1 = resource_record_for(new_resource, current_resource, nil, :create, "failed", "1234")
844
865
  rec1["error_message"] = "imperial to metric conversion error"
866
+ rec1["error"] = {
867
+ "class" => exception.class,
868
+ "message" => exception.message,
869
+ "backtrace" => exception.backtrace,
870
+ "description" => error_description,
871
+ }
872
+
845
873
  rec2 = resource_record_for(unprocessed_resource, nil, nil, :nothing, "unprocessed", "")
846
874
  [ rec1, rec2 ]
847
875
  end
@@ -18,37 +18,37 @@
18
18
 
19
19
  require "spec_helper"
20
20
 
21
- def impersonates_a(klass)
22
- it "#is_a?(#{klass}) is true" do
23
- expect(decorator.is_a?(klass)).to be true
24
- end
21
+ describe Chef::Decorator do
22
+ def self.impersonates_a(klass)
23
+ it "#is_a?(#{klass}) is true" do
24
+ expect(decorator.is_a?(klass)).to be true
25
+ end
25
26
 
26
- it "#is_a?(Chef::Decorator) is true" do
27
- expect(decorator.is_a?(Chef::Decorator)).to be true
28
- end
27
+ it "#is_a?(Chef::Decorator) is true" do
28
+ expect(decorator.is_a?(Chef::Decorator)).to be true
29
+ end
29
30
 
30
- it "#kind_of?(#{klass}) is true" do
31
- expect(decorator.is_a?(klass)).to be true
32
- end
31
+ it "#kind_of?(#{klass}) is true" do
32
+ expect(decorator.is_a?(klass)).to be true
33
+ end
33
34
 
34
- it "#kind_of?(Chef::Decorator) is true" do
35
- expect(decorator.is_a?(Chef::Decorator)).to be true
36
- end
35
+ it "#kind_of?(Chef::Decorator) is true" do
36
+ expect(decorator.is_a?(Chef::Decorator)).to be true
37
+ end
37
38
 
38
- it "#instance_of?(#{klass}) is false" do
39
- expect(decorator.instance_of?(klass)).to be false
40
- end
39
+ it "#instance_of?(#{klass}) is false" do
40
+ expect(decorator.instance_of?(klass)).to be false
41
+ end
41
42
 
42
- it "#instance_of?(Chef::Decorator) is true" do
43
- expect(decorator.instance_of?(Chef::Decorator)).to be true
44
- end
43
+ it "#instance_of?(Chef::Decorator) is true" do
44
+ expect(decorator.instance_of?(Chef::Decorator)).to be true
45
+ end
45
46
 
46
- it "#class is Chef::Decorator" do
47
- expect(decorator.class).to eql(Chef::Decorator)
47
+ it "#class is Chef::Decorator" do
48
+ expect(decorator.class).to eql(Chef::Decorator)
49
+ end
48
50
  end
49
- end
50
51
 
51
- describe Chef::Decorator do
52
52
  let(:obj) {}
53
53
  let(:decorator) { Chef::Decorator.new(obj) }
54
54