chef 16.2.44-universal-mingw32 → 16.4.35-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 (383) 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/config_use_profile.rb +15 -5
  53. data/lib/chef/knife/configure.rb +1 -1
  54. data/lib/chef/knife/cookbook_download.rb +1 -1
  55. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  56. data/lib/chef/knife/cookbook_upload.rb +29 -37
  57. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  58. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  59. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  60. data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
  61. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  62. data/lib/chef/knife/core/ui.rb +8 -2
  63. data/lib/chef/knife/core/windows_bootstrap_context.rb +33 -26
  64. data/lib/chef/knife/delete.rb +15 -15
  65. data/lib/chef/knife/exec.rb +2 -2
  66. data/lib/chef/knife/rehash.rb +3 -21
  67. data/lib/chef/knife/ssh.rb +11 -7
  68. data/lib/chef/knife/xargs.rb +19 -19
  69. data/lib/chef/knife/yaml_convert.rb +1 -1
  70. data/lib/chef/log.rb +7 -2
  71. data/lib/chef/mixin/checksum.rb +0 -1
  72. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  73. data/lib/chef/mixin/deep_merge.rb +35 -6
  74. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  75. data/lib/chef/mixin/openssl_helper.rb +30 -6
  76. data/lib/chef/mixin/path_sanity.rb +5 -4
  77. data/lib/chef/mixin/shell_out.rb +4 -188
  78. data/lib/chef/mixin/template.rb +1 -0
  79. data/lib/chef/mixin/which.rb +6 -3
  80. data/lib/chef/mixins.rb +1 -0
  81. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  82. data/lib/chef/node.rb +36 -12
  83. data/lib/chef/node/attribute.rb +2 -4
  84. data/lib/chef/node_map.rb +21 -18
  85. data/lib/chef/platform/service_helpers.rb +31 -28
  86. data/lib/chef/property.rb +1 -1
  87. data/lib/chef/provider/cron/unix.rb +0 -2
  88. data/lib/chef/provider/git.rb +17 -9
  89. data/lib/chef/provider/group.rb +0 -2
  90. data/lib/chef/provider/group/suse.rb +5 -5
  91. data/lib/chef/provider/ifconfig.rb +1 -4
  92. data/lib/chef/provider/mount.rb +0 -2
  93. data/lib/chef/provider/mount/solaris.rb +0 -1
  94. data/lib/chef/provider/package.rb +0 -2
  95. data/lib/chef/provider/package/rubygems.rb +1 -1
  96. data/lib/chef/provider/package/snap.rb +3 -4
  97. data/lib/chef/provider/package/windows.rb +9 -4
  98. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
  99. data/lib/chef/provider/package/zypper.rb +0 -1
  100. data/lib/chef/provider/powershell_script.rb +21 -5
  101. data/lib/chef/provider/route.rb +1 -1
  102. data/lib/chef/provider/service.rb +2 -2
  103. data/lib/chef/provider/service/arch.rb +1 -1
  104. data/lib/chef/provider/service/debian.rb +1 -1
  105. data/lib/chef/provider/service/gentoo.rb +2 -2
  106. data/lib/chef/provider/service/macosx.rb +2 -2
  107. data/lib/chef/provider/service/openbsd.rb +1 -4
  108. data/lib/chef/provider/service/redhat.rb +2 -2
  109. data/lib/chef/provider/service/upstart.rb +1 -1
  110. data/lib/chef/provider/service/windows.rb +10 -10
  111. data/lib/chef/provider/systemd_unit.rb +0 -2
  112. data/lib/chef/provider/template/content.rb +1 -0
  113. data/lib/chef/provider/user/dscl.rb +2 -2
  114. data/lib/chef/provider/user/mac.rb +9 -9
  115. data/lib/chef/provider/windows_task.rb +0 -3
  116. data/lib/chef/provider/yum_repository.rb +1 -1
  117. data/lib/chef/provider/zypper_repository.rb +1 -2
  118. data/lib/chef/providers.rb +0 -1
  119. data/lib/chef/recipe.rb +1 -1
  120. data/lib/chef/resource.rb +9 -11
  121. data/lib/chef/resource/alternatives.rb +1 -1
  122. data/lib/chef/resource/apt_repository.rb +1 -10
  123. data/lib/chef/resource/build_essential.rb +2 -2
  124. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  125. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  126. data/lib/chef/resource/chef_gem.rb +57 -21
  127. data/lib/chef/resource/chef_vault_secret.rb +13 -13
  128. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  129. data/lib/chef/resource/cron/cron_d.rb +1 -1
  130. data/lib/chef/resource/cron_access.rb +2 -2
  131. data/lib/chef/resource/dmg_package.rb +2 -2
  132. data/lib/chef/resource/execute.rb +4 -5
  133. data/lib/chef/resource/gem_package.rb +35 -2
  134. data/lib/chef/resource/homebrew_update.rb +2 -2
  135. data/lib/chef/resource/hostname.rb +18 -18
  136. data/lib/chef/resource/launchd.rb +1 -1
  137. data/lib/chef/resource/lwrp_base.rb +1 -0
  138. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  139. data/lib/chef/resource/openssl_dhparam.rb +2 -0
  140. data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
  141. data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
  142. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
  143. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  144. data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
  145. data/lib/chef/resource/openssl_x509_crl.rb +3 -2
  146. data/lib/chef/resource/openssl_x509_request.rb +23 -20
  147. data/lib/chef/resource/osx_profile.rb +227 -5
  148. data/lib/chef/resource/powershell_package_source.rb +1 -1
  149. data/lib/chef/resource/powershell_script.rb +24 -30
  150. data/lib/chef/resource/service.rb +2 -2
  151. data/lib/chef/resource/ssh_known_hosts_entry.rb +16 -1
  152. data/lib/chef/resource/sudo.rb +31 -4
  153. data/lib/chef/resource/swap_file.rb +17 -0
  154. data/lib/chef/resource/sysctl.rb +5 -5
  155. data/lib/chef/resource/timezone.rb +15 -0
  156. data/lib/chef/resource/user_ulimit.rb +1 -1
  157. data/lib/chef/resource/windows_ad_join.rb +2 -0
  158. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  159. data/lib/chef/resource/windows_auto_run.rb +2 -0
  160. data/lib/chef/resource/windows_certificate.rb +2 -0
  161. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  162. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  163. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  164. data/lib/chef/resource/windows_dns_record.rb +25 -5
  165. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  166. data/lib/chef/resource/windows_feature.rb +2 -0
  167. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  168. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  169. data/lib/chef/resource/windows_firewall_profile.rb +199 -0
  170. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  171. data/lib/chef/resource/windows_font.rb +3 -1
  172. data/lib/chef/resource/windows_pagefile.rb +4 -0
  173. data/lib/chef/resource/windows_printer.rb +17 -18
  174. data/lib/chef/resource/windows_printer_port.rb +14 -13
  175. data/lib/chef/resource/windows_security_policy.rb +52 -21
  176. data/lib/chef/resource/windows_share.rb +5 -3
  177. data/lib/chef/resource/windows_shortcut.rb +2 -0
  178. data/lib/chef/resource/windows_uac.rb +2 -0
  179. data/lib/chef/resource/windows_user_privilege.rb +27 -2
  180. data/lib/chef/resource/windows_workgroup.rb +2 -3
  181. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  182. data/lib/chef/resource_inspector.rb +7 -1
  183. data/lib/chef/resources.rb +1 -0
  184. data/lib/chef/role.rb +3 -4
  185. data/lib/chef/run_context/cookbook_compiler.rb +20 -20
  186. data/lib/chef/run_status.rb +2 -6
  187. data/lib/chef/server_api_versions.rb +4 -0
  188. data/lib/chef/shell.rb +1 -1
  189. data/lib/chef/shell/shell_session.rb +2 -0
  190. data/lib/chef/util/backup.rb +1 -1
  191. data/lib/chef/util/diff.rb +11 -12
  192. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  193. data/lib/chef/version.rb +2 -2
  194. data/lib/chef/win32/file.rb +2 -2
  195. data/lib/chef/win32/file/version_info.rb +5 -5
  196. data/lib/chef/win32/registry.rb +1 -2
  197. data/spec/data/ssl/chef-rspec.cert +15 -15
  198. data/spec/functional/knife/configure_spec.rb +1 -1
  199. data/spec/functional/knife/ssh_spec.rb +5 -16
  200. data/spec/functional/resource/aix_service_spec.rb +9 -2
  201. data/spec/functional/resource/aixinit_service_spec.rb +8 -9
  202. data/spec/functional/resource/apt_package_spec.rb +0 -1
  203. data/spec/functional/resource/bash_spec.rb +3 -2
  204. data/spec/functional/resource/bff_spec.rb +3 -3
  205. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  206. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  207. data/spec/functional/resource/cron_spec.rb +10 -2
  208. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  209. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  210. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  211. data/spec/functional/resource/execute_spec.rb +1 -1
  212. data/spec/functional/resource/git_spec.rb +23 -1
  213. data/spec/functional/resource/group_spec.rb +21 -9
  214. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  215. data/spec/functional/resource/insserv_spec.rb +7 -7
  216. data/spec/functional/resource/link_spec.rb +22 -25
  217. data/spec/functional/resource/mount_spec.rb +9 -1
  218. data/spec/functional/resource/msu_package_spec.rb +9 -3
  219. data/spec/functional/resource/powershell_script_spec.rb +8 -8
  220. data/spec/functional/resource/remote_file_spec.rb +7 -13
  221. data/spec/functional/resource/rpm_spec.rb +3 -3
  222. data/spec/functional/resource/timezone_spec.rb +2 -0
  223. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  224. data/spec/functional/resource/windows_font_spec.rb +49 -0
  225. data/spec/functional/resource/windows_package_spec.rb +0 -1
  226. data/spec/functional/resource/windows_path_spec.rb +4 -0
  227. data/spec/functional/resource/windows_security_policy_spec.rb +0 -4
  228. data/spec/functional/resource/windows_service_spec.rb +4 -0
  229. data/spec/functional/resource/windows_task_spec.rb +4 -3
  230. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  231. data/spec/functional/resource/yum_package_spec.rb +4 -1
  232. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  233. data/spec/functional/run_lock_spec.rb +26 -25
  234. data/spec/functional/shell_spec.rb +5 -6
  235. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  236. data/spec/functional/version_spec.rb +1 -1
  237. data/spec/functional/win32/crypto_spec.rb +1 -1
  238. data/spec/functional/win32/registry_spec.rb +8 -8
  239. data/spec/functional/win32/service_manager_spec.rb +1 -1
  240. data/spec/integration/knife/common_options_spec.rb +12 -12
  241. data/spec/integration/knife/config_get_profile_spec.rb +69 -68
  242. data/spec/integration/knife/config_get_spec.rb +126 -125
  243. data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
  244. data/spec/integration/knife/config_use_profile_spec.rb +115 -61
  245. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  246. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  247. data/spec/integration/knife/diff_spec.rb +3 -1
  248. data/spec/integration/knife/download_spec.rb +3 -1
  249. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  250. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  251. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  252. data/spec/integration/knife/serve_spec.rb +5 -5
  253. data/spec/integration/knife/upload_spec.rb +3 -1
  254. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  255. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
  256. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  257. data/spec/integration/recipes/notifies_spec.rb +1 -1
  258. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  259. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  260. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  261. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  262. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  263. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  264. data/spec/scripts/ssl-serve.rb +1 -1
  265. data/spec/spec_helper.rb +16 -10
  266. data/spec/support/chef_helpers.rb +1 -20
  267. data/spec/support/platform_helpers.rb +9 -11
  268. data/spec/support/platforms/win32/spec_service.rb +1 -1
  269. data/spec/support/shared/functional/directory_resource.rb +1 -1
  270. data/spec/support/shared/functional/execute_resource.rb +1 -1
  271. data/spec/support/shared/functional/file_resource.rb +20 -21
  272. data/spec/support/shared/functional/securable_resource.rb +1 -2
  273. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  274. data/spec/support/shared/functional/win32_service.rb +1 -1
  275. data/spec/support/shared/functional/windows_script.rb +5 -5
  276. data/spec/support/shared/integration/integration_helper.rb +22 -52
  277. data/spec/support/shared/integration/knife_support.rb +2 -9
  278. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  279. data/spec/support/shared/unit/provider/file.rb +12 -8
  280. data/spec/support/shared/unit/script_resource.rb +6 -20
  281. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  282. data/spec/unit/application/solo_spec.rb +4 -2
  283. data/spec/unit/application_spec.rb +4 -2
  284. data/spec/unit/chef_fs/config_spec.rb +2 -2
  285. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  286. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  287. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  288. data/spec/unit/client_spec.rb +4 -1
  289. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  290. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  291. data/spec/unit/data_bag_spec.rb +6 -3
  292. data/spec/unit/data_collector_spec.rb +23 -1
  293. data/spec/unit/decorator_spec.rb +23 -23
  294. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  295. data/spec/unit/environment_spec.rb +12 -8
  296. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  297. data/spec/unit/guard_interpreter_spec.rb +1 -1
  298. data/spec/unit/http/api_versions_spec.rb +20 -2
  299. data/spec/unit/json_compat_spec.rb +1 -1
  300. data/spec/unit/knife/bootstrap_spec.rb +17 -20
  301. data/spec/unit/knife/cookbook_download_spec.rb +6 -6
  302. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  303. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  304. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  305. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  306. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  307. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  308. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  309. data/spec/unit/log/syslog_spec.rb +6 -10
  310. data/spec/unit/log/winevt_spec.rb +21 -13
  311. data/spec/unit/lwrp_spec.rb +9 -6
  312. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  313. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  314. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  315. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  316. data/spec/unit/mixin/securable_spec.rb +0 -1
  317. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  318. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  319. data/spec/unit/mixin/template_spec.rb +30 -30
  320. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  321. data/spec/unit/mixin/uris_spec.rb +1 -1
  322. data/spec/unit/mixin/which.rb +8 -0
  323. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  324. data/spec/unit/node/immutable_collections_spec.rb +6 -2
  325. data/spec/unit/node_spec.rb +103 -16
  326. data/spec/unit/property_spec.rb +5 -5
  327. data/spec/unit/provider/batch_spec.rb +1 -1
  328. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  329. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  330. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  331. data/spec/unit/provider/execute_spec.rb +1 -8
  332. data/spec/unit/provider/git_spec.rb +3 -3
  333. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  334. data/spec/unit/provider/mdadm_spec.rb +1 -3
  335. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  336. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  337. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  338. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  339. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  340. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  341. data/spec/unit/provider/package/windows_spec.rb +30 -53
  342. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  343. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  344. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  345. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  346. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  347. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  348. data/spec/unit/provider/service/redhat_spec.rb +3 -3
  349. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  350. data/spec/unit/provider/service/windows_spec.rb +2 -6
  351. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  352. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  353. data/spec/unit/provider/windows_env_spec.rb +5 -4
  354. data/spec/unit/provider_resolver_spec.rb +6 -6
  355. data/spec/unit/provider_spec.rb +1 -0
  356. data/spec/unit/resource/batch_spec.rb +6 -6
  357. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  358. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  359. data/spec/unit/resource/execute_spec.rb +123 -118
  360. data/spec/unit/resource/file/verification_spec.rb +2 -1
  361. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  362. data/spec/unit/resource/osx_profile_spec.rb +233 -0
  363. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  364. data/spec/unit/resource/script_spec.rb +6 -1
  365. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  366. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  367. data/spec/unit/resource/windows_package_spec.rb +1 -0
  368. data/spec/unit/resource_reporter_spec.rb +1 -1
  369. data/spec/unit/resource_spec.rb +25 -8
  370. data/spec/unit/role_spec.rb +30 -28
  371. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  372. data/spec/unit/run_lock_spec.rb +1 -1
  373. data/spec/unit/scan_access_control_spec.rb +1 -1
  374. data/spec/unit/server_api_spec.rb +43 -16
  375. data/spec/unit/util/backup_spec.rb +1 -1
  376. data/spec/unit/util/diff_spec.rb +1 -15
  377. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  378. data/spec/unit/util/selinux_spec.rb +2 -1
  379. data/spec/unit/win32/security_spec.rb +4 -3
  380. data/tasks/rspec.rb +1 -1
  381. metadata +53 -40
  382. data/lib/chef/provider/osx_profile.rb +0 -255
  383. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -31,9 +31,9 @@ class ChildWithoutDirective < SubclassDirectiveParent
31
31
  end
32
32
 
33
33
  describe Chef::Mixin::Uris do
34
- let (:child) { SubclassDirectiveChild.new }
34
+ let(:child) { SubclassDirectiveChild.new }
35
35
 
36
- let (:other_child) { ChildWithoutDirective.new }
36
+ let(:other_child) { ChildWithoutDirective.new }
37
37
 
38
38
  it "the child instance has the directive set" do
39
39
  expect(child.behave_differently?).to be true
@@ -104,16 +104,16 @@ describe Chef::Mixin::Template, "render_template" do
104
104
  end
105
105
 
106
106
  it "should render local files" do
107
- begin
108
- tf = Tempfile.new("partial")
109
- tf.write "test"
110
- tf.rewind
111
-
112
- output = @template_context.render_template_from_string("before {<%= render '#{tf.path}', :local => true %>} after")
113
- expect(output).to eq("before {test} after")
114
- ensure
115
- tf.close
116
- end
107
+
108
+ tf = Tempfile.new("partial")
109
+ tf.write "test"
110
+ tf.rewind
111
+
112
+ output = @template_context.render_template_from_string("before {<%= render '#{tf.path}', :local => true %>} after")
113
+ expect(output).to eq("before {test} after")
114
+ ensure
115
+ tf.close
116
+
117
117
  end
118
118
 
119
119
  it "should render partials from a different cookbook" do
@@ -124,16 +124,16 @@ describe Chef::Mixin::Template, "render_template" do
124
124
  end
125
125
 
126
126
  it "should render using the source argument if provided" do
127
- begin
128
- tf = Tempfile.new("partial")
129
- tf.write "test"
130
- tf.rewind
131
-
132
- output = @template_context.render_template_from_string("before {<%= render 'something', :local => true, :source => '#{tf.path}' %>} after")
133
- expect(output).to eq("before {test} after")
134
- ensure
135
- tf.close
136
- end
127
+
128
+ tf = Tempfile.new("partial")
129
+ tf.write "test"
130
+ tf.rewind
131
+
132
+ output = @template_context.render_template_from_string("before {<%= render 'something', :local => true, :source => '#{tf.path}' %>} after")
133
+ expect(output).to eq("before {test} after")
134
+ ensure
135
+ tf.close
136
+
137
137
  end
138
138
 
139
139
  it "should pass the node to partials" do
@@ -195,11 +195,11 @@ describe Chef::Mixin::Template, "render_template" do
195
195
 
196
196
  describe "the raised TemplateError" do
197
197
  subject(:exception) do
198
- begin
199
- do_raise
200
- rescue Chef::Mixin::Template::TemplateError => e
201
- e
202
- end
198
+
199
+ do_raise
200
+ rescue Chef::Mixin::Template::TemplateError => e
201
+ e
202
+
203
203
  end
204
204
 
205
205
  it "should contain template file and line numbers" do
@@ -274,11 +274,11 @@ describe Chef::Mixin::Template, "render_template" do
274
274
 
275
275
  describe "the raised TemplateError" do
276
276
  before :each do
277
- begin
278
- do_raise
279
- rescue Chef::Mixin::Template::TemplateError => e
280
- @exception = e
281
- end
277
+
278
+ do_raise
279
+ rescue Chef::Mixin::Template::TemplateError => e
280
+ @exception = e
281
+
282
282
  end
283
283
 
284
284
  it "should have the original exception" do
@@ -27,8 +27,8 @@ class Chef::UnformatterTest
27
27
  end
28
28
 
29
29
  describe Chef::Mixin::Unformatter do
30
- let (:unformatter) { Chef::UnformatterTest.new }
31
- let (:message) { "Test Message" }
30
+ let(:unformatter) { Chef::UnformatterTest.new }
31
+ let(:message) { "Test Message" }
32
32
 
33
33
  describe "#write" do
34
34
  context "with a timestamp" do
@@ -24,7 +24,7 @@ class Chef::UrisTest
24
24
  end
25
25
 
26
26
  describe Chef::Mixin::Uris do
27
- let (:uris) { Chef::UrisTest.new }
27
+ let(:uris) { Chef::UrisTest.new }
28
28
 
29
29
  describe "#uri_scheme?" do
30
30
  it "matches 'scheme://foo.com'" do
@@ -159,4 +159,12 @@ describe Chef::Mixin::Which do
159
159
  end
160
160
  end
161
161
  end
162
+
163
+ describe "useful non-stubbed tests" do
164
+ it "works even when the PATH is nuked via adding default_paths", unix_only: true do
165
+ old_path = ENV["PATH"]
166
+ expect(test.which("ls")).to be_truthy
167
+ ENV["PATH"] = old_path
168
+ end
169
+ end
162
170
  end
@@ -50,10 +50,10 @@ describe Chef::Mixin::WindowsArchitectureHelper do
50
50
 
51
51
  it "raises an error if an invalid architecture is passed to assert_valid_windows_architecture!" do
52
52
  @invalid_architectures.each do |architecture|
53
- begin
54
- expect(assert_valid_windows_architecture!(architecture)).to raise_error Chef::Exceptions::Win32ArchitectureIncorrect
55
- rescue Chef::Exceptions::Win32ArchitectureIncorrect
56
- end
53
+
54
+ expect(assert_valid_windows_architecture!(architecture)).to raise_error Chef::Exceptions::Win32ArchitectureIncorrect
55
+ rescue Chef::Exceptions::Win32ArchitectureIncorrect
56
+
57
57
  end
58
58
  end
59
59
 
@@ -73,7 +73,11 @@ shared_examples_for "Immutable#to_yaml" do
73
73
  end
74
74
 
75
75
  it "should create a YAML string with content" do
76
- expect(copy).to eq(parsed_yaml)
76
+ # Roundtrip the test string through YAML to compensate for some changes in libyaml-0.2.5
77
+ # See: https://github.com/yaml/libyaml/pull/186
78
+ expected = YAML.dump(YAML.load(parsed_yaml))
79
+
80
+ expect(copy).to eq(expected)
77
81
  end
78
82
  end
79
83
 
@@ -241,7 +245,7 @@ describe Chef::Node::ImmutableArray do
241
245
 
242
246
  describe "to_yaml" do
243
247
  let(:copy) { @immutable_nested_array.to_yaml }
244
- let(:parsed_yaml) { "---\n- level1\n- - foo\n - bar\n - baz\n - 1\n - 2\n - 3\n - \n - true\n - false\n - - el\n - 0\n - \n- m: m\n" }
248
+ let(:parsed_yaml) { "---\n- level1\n- - foo\n - bar\n - baz\n - 1\n - 2\n - 3\n -\n - true\n - false\n - - el\n - 0\n -\n- m: m\n" }
245
249
 
246
250
  include_examples "Immutable#to_yaml"
247
251
  end
@@ -1483,9 +1483,9 @@ describe Chef::Node do
1483
1483
  end
1484
1484
  end
1485
1485
 
1486
- context "with whitelisted attributes configured" do
1487
- it "should only save whitelisted attributes (and subattributes)" do
1488
- Chef::Config[:default_attribute_whitelist] = [
1486
+ context "with allowed attributes configured" do
1487
+ it "should only save allowed attributes (and subattributes)" do
1488
+ Chef::Config[:allowed_default_attributes] = [
1489
1489
  ["filesystem", "/dev/disk0s2"],
1490
1490
  "network/interfaces/eth0",
1491
1491
  ]
@@ -1525,8 +1525,8 @@ describe Chef::Node do
1525
1525
  node.save
1526
1526
  end
1527
1527
 
1528
- it "should save false-y whitelisted attributes" do
1529
- Chef::Config[:default_attribute_whitelist] = [
1528
+ it "should save false-y allowed attributes" do
1529
+ Chef::Config[:allowed_default_attributes] = [
1530
1530
  "foo/bar/baz",
1531
1531
  ]
1532
1532
 
@@ -1560,8 +1560,8 @@ describe Chef::Node do
1560
1560
  node.save
1561
1561
  end
1562
1562
 
1563
- it "should not save any attributes if the whitelist is empty" do
1564
- Chef::Config[:default_attribute_whitelist] = []
1563
+ it "should not save any attributes if the allowed is empty" do
1564
+ Chef::Config[:allowed_default_attributes] = []
1565
1565
 
1566
1566
  node.default = {
1567
1567
  "filesystem" => {
@@ -1583,8 +1583,52 @@ describe Chef::Node do
1583
1583
  end
1584
1584
  end
1585
1585
 
1586
- context "with blacklisted attributes configured" do
1587
- it "should only save non-blacklisted attributes (and subattributes)" do
1586
+ context "with deprecated whitelist attributes configured" do
1587
+ it "should only save allowed attributes (and subattributes)" do
1588
+ Chef::Config[:default_attribute_whitelist] = [
1589
+ ["filesystem", "/dev/disk0s2"],
1590
+ "network/interfaces/eth0",
1591
+ ]
1592
+
1593
+ node.default = {
1594
+ "filesystem" => {
1595
+ "/dev/disk0s2" => { "size" => "10mb" },
1596
+ "map - autohome" => { "size" => "10mb" },
1597
+ },
1598
+ "network" => {
1599
+ "interfaces" => {
1600
+ "eth0" => {},
1601
+ "eth1" => {},
1602
+ },
1603
+ },
1604
+ }
1605
+ node.automatic = {}
1606
+ node.normal = {}
1607
+ node.override = {}
1608
+
1609
+ selected_data = {
1610
+ "default" => {
1611
+ "filesystem" => {
1612
+ "/dev/disk0s2" => { "size" => "10mb" },
1613
+ },
1614
+ "network" => {
1615
+ "interfaces" => {
1616
+ "eth0" => {},
1617
+ },
1618
+ },
1619
+ },
1620
+ "automatic" => {}, "normal" => {}, "override" => {}
1621
+ }
1622
+
1623
+ node.name("picky-monkey")
1624
+ Chef::Config[:treat_deprecation_warnings_as_errors] = false
1625
+ expect(@rest).to receive(:put).with("nodes/picky-monkey", hash_including(selected_data)).and_return("foo")
1626
+ node.save
1627
+ end
1628
+ end
1629
+
1630
+ context "with deprecated blacklist attributes configured" do
1631
+ it "should only save non-blocklisted attributes (and subattributes)" do
1588
1632
  Chef::Config[:default_attribute_blacklist] = [
1589
1633
  ["filesystem", "/dev/disk0s2"],
1590
1634
  "network/interfaces/eth0",
@@ -1620,12 +1664,55 @@ describe Chef::Node do
1620
1664
  "automatic" => {}, "normal" => {}, "override" => {}
1621
1665
  }
1622
1666
  node.name("picky-monkey")
1667
+ Chef::Config[:treat_deprecation_warnings_as_errors] = false
1623
1668
  expect(@rest).to receive(:put).with("nodes/picky-monkey", hash_including(selected_data)).and_return("foo")
1624
1669
  node.save
1625
1670
  end
1671
+ end
1672
+
1673
+ context "with blocklisted attributes configured" do
1674
+ it "should only save non-blocklisted attributes (and subattributes)" do
1675
+ Chef::Config[:blocked_default_attributes] = [
1676
+ ["filesystem", "/dev/disk0s2"],
1677
+ "network/interfaces/eth0",
1678
+ ]
1679
+
1680
+ node.default = {
1681
+ "filesystem" => {
1682
+ "/dev/disk0s2" => { "size" => "10mb" },
1683
+ "map - autohome" => { "size" => "10mb" },
1684
+ },
1685
+ "network" => {
1686
+ "interfaces" => {
1687
+ "eth0" => {},
1688
+ "eth1" => {},
1689
+ },
1690
+ },
1691
+ }
1692
+ node.automatic = {}
1693
+ node.normal = {}
1694
+ node.override = {}
1626
1695
 
1627
- it "should save all attributes if the blacklist is empty" do
1628
- Chef::Config[:default_attribute_blacklist] = []
1696
+ selected_data = {
1697
+ "default" => {
1698
+ "filesystem" => {
1699
+ "map - autohome" => { "size" => "10mb" },
1700
+ },
1701
+ "network" => {
1702
+ "interfaces" => {
1703
+ "eth1" => {},
1704
+ },
1705
+ },
1706
+ },
1707
+ "automatic" => {}, "normal" => {}, "override" => {}
1708
+ }
1709
+ node.name("picky-monkey")
1710
+ expect(@rest).to receive(:put).with("nodes/picky-monkey", hash_including(selected_data)).and_return("foo")
1711
+ node.save
1712
+ end
1713
+
1714
+ it "should save all attributes if the blocklist is empty" do
1715
+ Chef::Config[:blocked_default_attributes] = []
1629
1716
 
1630
1717
  node.default = {
1631
1718
  "filesystem" => {
@@ -1686,11 +1773,11 @@ describe Chef::Node do
1686
1773
  end
1687
1774
 
1688
1775
  let(:http_exception) do
1689
- begin
1690
- response.error!
1691
- rescue => e
1692
- e
1693
- end
1776
+
1777
+ response.error!
1778
+ rescue => e
1779
+ e
1780
+
1694
1781
  end
1695
1782
 
1696
1783
  let(:trimmed_node) do
@@ -111,11 +111,11 @@ describe "Chef::Resource.property" do
111
111
 
112
112
  with_property ":Straße" do
113
113
  it "properties with UTF-8 in their name work" do
114
- expect(resource.Straße).to eql(nil)
115
- expect(resource.Straße "foo").to eql("foo")
116
- expect(resource.Straße).to eql("foo")
117
- expect(resource.Straße = "bar").to eql("bar")
118
- expect(resource.Straße).to eql("bar")
114
+ expect(resource.Straße).to eql(nil) # rubocop: disable Naming/AsciiIdentifiers
115
+ expect(resource.Straße "foo").to eql("foo") # rubocop: disable Naming/AsciiIdentifiers
116
+ expect(resource.Straße).to eql("foo") # rubocop: disable Naming/AsciiIdentifiers
117
+ expect(resource.Straße = "bar").to eql("bar") # rubocop: disable Naming/AsciiIdentifiers
118
+ expect(resource.Straße).to eql("bar") # rubocop: disable Naming/AsciiIdentifiers
119
119
  end
120
120
  end
121
121
 
@@ -94,7 +94,7 @@ describe Chef::Provider::Batch do
94
94
  end
95
95
 
96
96
  describe "#command" do
97
- let(:basepath) { "C:\\Windows\\system32" }
97
+ let(:basepath) { "C:\\Windows\\system32\\" }
98
98
  let(:interpreter) { File.join(basepath, "cmd.exe") }
99
99
 
100
100
  before do
@@ -93,7 +93,7 @@ describe Chef::Provider::Cron::Unix do
93
93
  end
94
94
 
95
95
  context "when any other error occurs" do
96
- let (:exitstatus) { 2 }
96
+ let(:exitstatus) { 2 }
97
97
 
98
98
  it "should raise an exception if another error occurs" do
99
99
  expect do
@@ -20,15 +20,21 @@ require "chef"
20
20
  require "spec_helper"
21
21
 
22
22
  describe Chef::Provider::DscResource do
23
- let (:events) { Chef::EventDispatch::Dispatcher.new }
24
- let (:run_context) { Chef::RunContext.new(node, {}, events) }
25
- let (:resource) { Chef::Resource::DscResource.new("dscresource", run_context) }
26
- let (:provider) do
23
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
24
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
25
+ let(:resource) { Chef::Resource::DscResource.new("dscresource", run_context) }
26
+ let(:provider) do
27
27
  Chef::Provider::DscResource.new(resource, run_context)
28
28
  end
29
29
 
30
+ let(:node) do
31
+ node = Chef::Node.new
32
+ node.automatic[:languages][:powershell][:version] = "5.0.10586.0"
33
+ node
34
+ end
35
+
30
36
  context "when PowerShell does not support Invoke-DscResource" do
31
- let (:node) do
37
+ let(:node) do
32
38
  node = Chef::Node.new
33
39
  node.automatic[:languages][:powershell][:version] = "4.0"
34
40
  node
@@ -45,7 +51,7 @@ describe Chef::Provider::DscResource do
45
51
 
46
52
  context "when RefreshMode is not set to Disabled" do
47
53
  context "and the WMF 5 is a preview release" do
48
- let (:node) do
54
+ let(:node) do
49
55
  node = Chef::Node.new
50
56
  node.automatic[:languages][:powershell][:version] = "5.0.10018.0"
51
57
  node
@@ -58,7 +64,7 @@ describe Chef::Provider::DscResource do
58
64
  end
59
65
  end
60
66
  context "and the WMF is 5 RTM or newer" do
61
- let (:node) do
67
+ let(:node) do
62
68
  node = Chef::Node.new
63
69
  node.automatic[:languages][:powershell][:version] = "5.0.10586.0"
64
70
  node
@@ -74,15 +80,15 @@ describe Chef::Provider::DscResource do
74
80
  end
75
81
 
76
82
  context "when the LCM supports Invoke-DscResource" do
77
- let (:node) do
83
+ let(:node) do
78
84
  node = Chef::Node.new
79
85
  node.automatic[:languages][:powershell][:version] = "5.0.10018.0"
80
86
  node
81
87
  end
82
- let (:resource_result) { double("CmdletResult", return_value: { "InDesiredState" => true }, stream: "description") }
83
- let (:invoke_dsc_resource) { double("cmdlet", run!: resource_result) }
84
- let (:store) { double("ResourceStore", find: resource_records) }
85
- let (:resource_records) { [] }
88
+ let(:resource_result) { double("CmdletResult", return_value: { "InDesiredState" => true }, stream: "description") }
89
+ let(:invoke_dsc_resource) { double("cmdlet", run!: resource_result) }
90
+ let(:store) { double("ResourceStore", find: resource_records) }
91
+ let(:resource_records) { [] }
86
92
 
87
93
  before do
88
94
  allow(Chef::Util::DSC::ResourceStore).to receive(:instance).and_return(store)
@@ -124,7 +130,7 @@ describe Chef::Provider::DscResource do
124
130
  end
125
131
 
126
132
  context "resource name cannot be found" do
127
- let (:resource_records) { [] }
133
+ let(:resource_records) { [] }
128
134
 
129
135
  it "raises ResourceNotFound" do
130
136
  expect { provider.run_action(:run) }.to raise_error(Chef::Exceptions::ResourceNotFound)
@@ -133,7 +139,7 @@ describe Chef::Provider::DscResource do
133
139
 
134
140
  context "resource name is found" do
135
141
  context "no module name for resource found" do
136
- let (:resource_records) { [{}] }
142
+ let(:resource_records) { [{}] }
137
143
 
138
144
  it "returns the default dsc resource module" do
139
145
  expect(Chef::Util::Powershell::Cmdlet).to receive(:new) do |node, cmdlet, format|
@@ -144,7 +150,7 @@ describe Chef::Provider::DscResource do
144
150
  end
145
151
 
146
152
  context "a module name for resource is found" do
147
- let (:resource_records) { [{ "Module" => { "Name" => "ModuleName" } }] }
153
+ let(:resource_records) { [{ "Module" => { "Name" => "ModuleName" } }] }
148
154
 
149
155
  it "returns the default dsc resource module" do
150
156
  expect(Chef::Util::Powershell::Cmdlet).to receive(:new) do |node, cmdlet, format|
@@ -155,7 +161,7 @@ describe Chef::Provider::DscResource do
155
161
  end
156
162
 
157
163
  context "multiple resource are found" do
158
- let (:resource_records) do
164
+ let(:resource_records) do
159
165
  [
160
166
  { "Module" => { "Name" => "ModuleName1", "Version" => "1.0.0.0" } },
161
167
  { "Module" => { "Name" => "ModuleName1", "Version" => "2.0.0.0" } },
@@ -170,10 +176,6 @@ describe Chef::Provider::DscResource do
170
176
  end
171
177
 
172
178
  describe "define_resource_requirements" do
173
- let (:node) do
174
- set_node_object
175
- end
176
-
177
179
  context "module usage is valid" do
178
180
  before do
179
181
  allow(provider).to receive(:module_usage_valid?).and_return(true)
@@ -208,10 +210,6 @@ describe Chef::Provider::DscResource do
208
210
  end
209
211
 
210
212
  describe "module_usage_valid?" do
211
- let (:node) do
212
- set_node_object
213
- end
214
-
215
213
  context "module_name and module_version both are not provided" do
216
214
  before do
217
215
  provider.instance_variable_set(:@module_name, nil)
@@ -262,10 +260,6 @@ describe Chef::Provider::DscResource do
262
260
  end
263
261
 
264
262
  describe "module_info_object" do
265
- let (:node) do
266
- set_node_object
267
- end
268
-
269
263
  context "module_version is not given" do
270
264
  before do
271
265
  provider.instance_variable_set(:@module_version, nil)
@@ -292,10 +286,6 @@ describe Chef::Provider::DscResource do
292
286
  end
293
287
 
294
288
  describe "invoke_resource" do
295
- let (:node) do
296
- set_node_object
297
- end
298
-
299
289
  let(:cmdlet) { double(run!: nil) }
300
290
 
301
291
  before(:each) do
@@ -338,9 +328,3 @@ describe Chef::Provider::DscResource do
338
328
  end
339
329
  end
340
330
  end
341
-
342
- def set_node_object
343
- node = Chef::Node.new
344
- node.automatic[:languages][:powershell][:version] = "5.0.10586.0"
345
- node
346
- end