chef 16.1.16-universal-mingw32 → 16.3.45-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 (364) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -7
  3. data/README.md +3 -3
  4. data/Rakefile +3 -16
  5. data/chef-universal-mingw32.gemspec +2 -2
  6. data/chef.gemspec +7 -6
  7. data/lib/chef/application.rb +12 -0
  8. data/lib/chef/application/apply.rb +2 -1
  9. data/lib/chef/application/base.rb +1 -1
  10. data/lib/chef/application/client.rb +1 -1
  11. data/lib/chef/application/windows_service_manager.rb +1 -1
  12. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  13. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  14. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  15. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  16. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  17. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  18. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  19. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  20. data/lib/chef/chef_fs/path_utils.rb +1 -1
  21. data/lib/chef/client.rb +3 -3
  22. data/lib/chef/cookbook/chefignore.rb +1 -1
  23. data/lib/chef/cookbook/metadata.rb +1 -1
  24. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  25. data/lib/chef/cookbook/syntax_check.rb +1 -2
  26. data/lib/chef/cookbook_loader.rb +15 -29
  27. data/lib/chef/cookbook_version.rb +2 -2
  28. data/lib/chef/data_bag.rb +5 -6
  29. data/lib/chef/deprecated.rb +12 -0
  30. data/lib/chef/digester.rb +3 -2
  31. data/lib/chef/dsl/platform_introspection.rb +2 -0
  32. data/lib/chef/environment.rb +1 -2
  33. data/lib/chef/exceptions.rb +3 -0
  34. data/lib/chef/file_access_control.rb +1 -1
  35. data/lib/chef/file_access_control/windows.rb +2 -2
  36. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  37. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  38. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  39. data/lib/chef/handler.rb +2 -0
  40. data/lib/chef/http.rb +27 -13
  41. data/lib/chef/http/authenticator.rb +3 -1
  42. data/lib/chef/http/http_request.rb +1 -1
  43. data/lib/chef/http/json_output.rb +1 -1
  44. data/lib/chef/http/ssl_policies.rb +18 -0
  45. data/lib/chef/knife.rb +5 -5
  46. data/lib/chef/knife/bootstrap.rb +19 -19
  47. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  48. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  49. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  50. data/lib/chef/knife/config_get.rb +2 -1
  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_delete.rb +1 -1
  55. data/lib/chef/knife/cookbook_upload.rb +6 -14
  56. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  57. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  58. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  59. data/lib/chef/knife/core/hashed_command_loader.rb +1 -0
  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 +2 -3
  63. data/lib/chef/knife/data_bag_create.rb +1 -1
  64. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  65. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  66. data/lib/chef/knife/rehash.rb +3 -21
  67. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  68. data/lib/chef/knife/ssh.rb +6 -2
  69. data/lib/chef/knife/supermarket_share.rb +1 -1
  70. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  71. data/lib/chef/log.rb +8 -3
  72. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  73. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  74. data/lib/chef/mixin/openssl_helper.rb +27 -5
  75. data/lib/chef/mixin/path_sanity.rb +5 -4
  76. data/lib/chef/mixin/securable.rb +2 -2
  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/node.rb +36 -12
  82. data/lib/chef/node_map.rb +21 -18
  83. data/lib/chef/platform/service_helpers.rb +31 -28
  84. data/lib/chef/powershell.rb +1 -1
  85. data/lib/chef/provider/batch.rb +3 -10
  86. data/lib/chef/provider/cron.rb +2 -14
  87. data/lib/chef/provider/execute.rb +2 -1
  88. data/lib/chef/provider/git.rb +12 -4
  89. data/lib/chef/provider/group/dscl.rb +2 -2
  90. data/lib/chef/provider/group/windows.rb +1 -1
  91. data/lib/chef/provider/ifconfig.rb +7 -7
  92. data/lib/chef/provider/mount/aix.rb +1 -1
  93. data/lib/chef/provider/mount/solaris.rb +0 -1
  94. data/lib/chef/provider/mount/windows.rb +2 -2
  95. data/lib/chef/provider/noop.rb +1 -1
  96. data/lib/chef/provider/package/openbsd.rb +1 -1
  97. data/lib/chef/provider/package/portage.rb +2 -2
  98. data/lib/chef/provider/package/powershell.rb +6 -2
  99. data/lib/chef/provider/package/rubygems.rb +2 -2
  100. data/lib/chef/provider/package/snap.rb +97 -29
  101. data/lib/chef/provider/package/windows.rb +9 -4
  102. data/lib/chef/provider/package/windows/msi.rb +3 -3
  103. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  104. data/lib/chef/provider/package/zypper.rb +0 -1
  105. data/lib/chef/provider/powershell_script.rb +10 -14
  106. data/lib/chef/provider/remote_file/http.rb +4 -1
  107. data/lib/chef/provider/script.rb +4 -75
  108. data/lib/chef/provider/service.rb +2 -2
  109. data/lib/chef/provider/service/arch.rb +1 -1
  110. data/lib/chef/provider/service/debian.rb +2 -2
  111. data/lib/chef/provider/service/openbsd.rb +4 -4
  112. data/lib/chef/provider/service/redhat.rb +1 -1
  113. data/lib/chef/provider/service/windows.rb +1 -1
  114. data/lib/chef/provider/subversion.rb +2 -2
  115. data/lib/chef/provider/user/dscl.rb +4 -4
  116. data/lib/chef/provider/user/linux.rb +3 -3
  117. data/lib/chef/provider/user/mac.rb +5 -5
  118. data/lib/chef/provider/windows_script.rb +87 -25
  119. data/lib/chef/provider/yum_repository.rb +1 -1
  120. data/lib/chef/provider/zypper_repository.rb +31 -11
  121. data/lib/chef/resource.rb +24 -11
  122. data/lib/chef/resource/alternatives.rb +1 -1
  123. data/lib/chef/resource/apt_package.rb +1 -1
  124. data/lib/chef/resource/archive_file.rb +28 -8
  125. data/lib/chef/resource/bash.rb +0 -1
  126. data/lib/chef/resource/batch.rb +4 -2
  127. data/lib/chef/resource/build_essential.rb +2 -2
  128. data/lib/chef/resource/chef_client_scheduled_task.rb +14 -2
  129. data/lib/chef/resource/chef_gem.rb +57 -21
  130. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  131. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  132. data/lib/chef/resource/cron/cron.rb +46 -0
  133. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
  134. data/lib/chef/resource/cron_access.rb +13 -5
  135. data/lib/chef/resource/csh.rb +0 -1
  136. data/lib/chef/resource/dmg_package.rb +2 -2
  137. data/lib/chef/resource/execute.rb +479 -9
  138. data/lib/chef/resource/file.rb +1 -1
  139. data/lib/chef/resource/freebsd_package.rb +1 -1
  140. data/lib/chef/resource/gem_package.rb +35 -2
  141. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  142. data/lib/chef/resource/homebrew_package.rb +30 -1
  143. data/lib/chef/resource/homebrew_update.rb +107 -0
  144. data/lib/chef/resource/hostname.rb +23 -36
  145. data/lib/chef/resource/kernel_module.rb +14 -1
  146. data/lib/chef/resource/launchd.rb +1 -1
  147. data/lib/chef/resource/lwrp_base.rb +1 -0
  148. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  149. data/lib/chef/resource/mount.rb +1 -1
  150. data/lib/chef/resource/openssl_x509_certificate.rb +11 -14
  151. data/lib/chef/resource/openssl_x509_crl.rb +1 -2
  152. data/lib/chef/resource/perl.rb +0 -1
  153. data/lib/chef/resource/plist.rb +23 -4
  154. data/lib/chef/resource/powershell_script.rb +4 -2
  155. data/lib/chef/resource/python.rb +0 -1
  156. data/lib/chef/resource/remote_file.rb +26 -10
  157. data/lib/chef/resource/ruby.rb +0 -1
  158. data/lib/chef/resource/service.rb +2 -2
  159. data/lib/chef/resource/ssh_known_hosts_entry.rb +16 -1
  160. data/lib/chef/resource/sudo.rb +30 -3
  161. data/lib/chef/resource/swap_file.rb +17 -0
  162. data/lib/chef/resource/template.rb +1 -1
  163. data/lib/chef/resource/timezone.rb +15 -0
  164. data/lib/chef/resource/user_ulimit.rb +1 -1
  165. data/lib/chef/resource/windows_ad_join.rb +30 -1
  166. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  167. data/lib/chef/resource/windows_auto_run.rb +11 -0
  168. data/lib/chef/resource/windows_certificate.rb +26 -0
  169. data/lib/chef/resource/windows_dns_record.rb +17 -0
  170. data/lib/chef/resource/windows_firewall_profile.rb +197 -0
  171. data/lib/chef/resource/windows_font.rb +3 -3
  172. data/lib/chef/resource/windows_package.rb +1 -1
  173. data/lib/chef/resource/windows_pagefile.rb +1 -1
  174. data/lib/chef/resource/windows_script.rb +2 -16
  175. data/lib/chef/resource/windows_security_policy.rb +67 -36
  176. data/lib/chef/resource/windows_shortcut.rb +1 -2
  177. data/lib/chef/resource/windows_task.rb +4 -4
  178. data/lib/chef/resource/windows_user_privilege.rb +30 -7
  179. data/lib/chef/resource/yum_repository.rb +9 -9
  180. data/lib/chef/resource_inspector.rb +7 -1
  181. data/lib/chef/resources.rb +5 -2
  182. data/lib/chef/role.rb +1 -2
  183. data/lib/chef/search/query.rb +1 -1
  184. data/lib/chef/server_api_versions.rb +4 -0
  185. data/lib/chef/shell/shell_session.rb +2 -0
  186. data/lib/chef/util/diff.rb +2 -3
  187. data/lib/chef/util/windows/net_user.rb +1 -1
  188. data/lib/chef/util/windows/volume.rb +1 -1
  189. data/lib/chef/version.rb +2 -2
  190. data/lib/chef/win32/file.rb +1 -1
  191. data/lib/chef/win32/registry.rb +3 -4
  192. data/lib/chef/win32/security.rb +1 -1
  193. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  194. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  195. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  196. data/spec/functional/knife/configure_spec.rb +1 -1
  197. data/spec/functional/knife/ssh_spec.rb +5 -16
  198. data/spec/functional/resource/aix_service_spec.rb +9 -2
  199. data/spec/functional/resource/aixinit_service_spec.rb +1 -2
  200. data/spec/functional/resource/apt_package_spec.rb +0 -1
  201. data/spec/functional/resource/bash_spec.rb +3 -2
  202. data/spec/functional/resource/bff_spec.rb +1 -1
  203. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  204. data/spec/functional/resource/cron_spec.rb +20 -2
  205. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  206. data/spec/functional/resource/execute_spec.rb +1 -1
  207. data/spec/functional/resource/git_spec.rb +23 -1
  208. data/spec/functional/resource/group_spec.rb +15 -3
  209. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  210. data/spec/functional/resource/insserv_spec.rb +3 -3
  211. data/spec/functional/resource/link_spec.rb +2 -5
  212. data/spec/functional/resource/mount_spec.rb +9 -1
  213. data/spec/functional/resource/msu_package_spec.rb +9 -3
  214. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  215. data/spec/functional/resource/remote_file_spec.rb +9 -15
  216. data/spec/functional/resource/rpm_spec.rb +1 -1
  217. data/spec/functional/resource/timezone_spec.rb +2 -0
  218. data/spec/functional/resource/windows_package_spec.rb +0 -1
  219. data/spec/functional/resource/windows_path_spec.rb +4 -0
  220. data/spec/functional/resource/windows_security_policy_spec.rb +0 -1
  221. data/spec/functional/resource/windows_service_spec.rb +4 -0
  222. data/spec/functional/resource/windows_task_spec.rb +12 -11
  223. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  224. data/spec/functional/resource/yum_package_spec.rb +4 -1
  225. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  226. data/spec/functional/run_lock_spec.rb +2 -1
  227. data/spec/functional/shell_spec.rb +5 -6
  228. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  229. data/spec/functional/version_spec.rb +1 -1
  230. data/spec/functional/win32/crypto_spec.rb +1 -1
  231. data/spec/integration/knife/config_list_profiles_spec.rb +30 -2
  232. data/spec/integration/knife/config_use_profile_spec.rb +55 -2
  233. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  234. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  235. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  236. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  237. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  238. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  239. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  240. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  241. data/spec/integration/recipes/notifies_spec.rb +1 -1
  242. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  243. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  244. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  245. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  246. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  247. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  248. data/spec/scripts/ssl-serve.rb +1 -1
  249. data/spec/spec_helper.rb +10 -4
  250. data/spec/support/chef_helpers.rb +1 -20
  251. data/spec/support/platform_helpers.rb +1 -3
  252. data/spec/support/platforms/win32/spec_service.rb +1 -1
  253. data/spec/support/shared/functional/execute_resource.rb +1 -1
  254. data/spec/support/shared/functional/file_resource.rb +0 -1
  255. data/spec/support/shared/functional/securable_resource.rb +1 -2
  256. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  257. data/spec/support/shared/functional/windows_script.rb +2 -2
  258. data/spec/support/shared/integration/knife_support.rb +2 -9
  259. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  260. data/spec/support/shared/unit/execute_resource.rb +1 -1
  261. data/spec/support/shared/unit/provider/file.rb +12 -8
  262. data/spec/unit/application/solo_spec.rb +4 -2
  263. data/spec/unit/application_spec.rb +11 -2
  264. data/spec/unit/chef_fs/config_spec.rb +2 -2
  265. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  266. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  267. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  268. data/spec/unit/client_spec.rb +4 -1
  269. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  270. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  271. data/spec/unit/data_bag_spec.rb +6 -3
  272. data/spec/unit/data_collector_spec.rb +1 -1
  273. data/spec/unit/decorator_spec.rb +23 -23
  274. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  275. data/spec/unit/environment_spec.rb +5 -1
  276. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  277. data/spec/unit/guard_interpreter_spec.rb +1 -1
  278. data/spec/unit/http/api_versions_spec.rb +20 -2
  279. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  280. data/spec/unit/json_compat_spec.rb +1 -1
  281. data/spec/unit/knife/bootstrap_spec.rb +5 -8
  282. data/spec/unit/knife/cookbook_download_spec.rb +2 -2
  283. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  284. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  285. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  286. data/spec/unit/log/syslog_spec.rb +6 -10
  287. data/spec/unit/log/winevt_spec.rb +21 -13
  288. data/spec/unit/lwrp_spec.rb +9 -6
  289. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  290. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  291. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  292. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  293. data/spec/unit/mixin/securable_spec.rb +0 -1
  294. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  295. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  296. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  297. data/spec/unit/mixin/uris_spec.rb +1 -1
  298. data/spec/unit/mixin/user_context_spec.rb +1 -9
  299. data/spec/unit/mixin/which.rb +8 -0
  300. data/spec/unit/node_spec.rb +98 -11
  301. data/spec/unit/property_spec.rb +6 -6
  302. data/spec/unit/provider/batch_spec.rb +130 -0
  303. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  304. data/spec/unit/provider/cron_spec.rb +9 -49
  305. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  306. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  307. data/spec/unit/provider/execute_spec.rb +1 -8
  308. data/spec/unit/provider/git_spec.rb +3 -3
  309. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  310. data/spec/unit/provider/mdadm_spec.rb +1 -3
  311. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  312. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  313. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  314. data/spec/unit/provider/package/powershell_spec.rb +95 -86
  315. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  316. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  317. data/spec/unit/provider/package/snap_spec.rb +1 -1
  318. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  319. data/spec/unit/provider/package/windows_spec.rb +30 -53
  320. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  321. data/spec/unit/provider/script_spec.rb +20 -110
  322. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  323. data/spec/unit/provider/service/windows_spec.rb +2 -6
  324. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  325. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  326. data/spec/unit/provider/windows_env_spec.rb +5 -4
  327. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  328. data/spec/unit/provider_spec.rb +1 -0
  329. data/spec/unit/resource/archive_file_spec.rb +11 -2
  330. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  331. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  332. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  333. data/spec/unit/resource/cron_spec.rb +2 -2
  334. data/spec/unit/resource/execute_spec.rb +10 -0
  335. data/spec/unit/resource/file/verification_spec.rb +2 -1
  336. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  337. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  338. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  339. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  340. data/spec/unit/resource/timezone_spec.rb +1 -1
  341. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  342. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  343. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  344. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  345. data/spec/unit/resource/windows_package_spec.rb +1 -0
  346. data/spec/unit/resource/windows_task_spec.rb +1 -1
  347. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  348. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  349. data/spec/unit/resource_reporter_spec.rb +1 -1
  350. data/spec/unit/resource_spec.rb +84 -1
  351. data/spec/unit/role_spec.rb +23 -21
  352. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  353. data/spec/unit/run_lock_spec.rb +1 -1
  354. data/spec/unit/scan_access_control_spec.rb +1 -1
  355. data/spec/unit/server_api_spec.rb +43 -16
  356. data/spec/unit/util/backup_spec.rb +1 -1
  357. data/spec/unit/util/diff_spec.rb +1 -15
  358. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  359. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  360. data/spec/unit/util/selinux_spec.rb +2 -1
  361. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  362. data/spec/unit/win32/security_spec.rb +4 -3
  363. metadata +68 -40
  364. data/lib/chef/resource/cron.rb +0 -157
@@ -47,7 +47,7 @@ describe Chef::Mixin::PowershellExec, :windows_only do
47
47
  end
48
48
 
49
49
  it "raises an error if the command fails" do
50
- expect(object.powershell_exec!("$PSVersionTable")).to be_kind_of(Chef::PowerShell::CommandFailed)
50
+ expect { object.powershell_exec!("this-should-error") }.to raise_error(Chef::PowerShell::CommandFailed)
51
51
  end
52
52
  end
53
53
  end
@@ -30,8 +30,7 @@ describe Chef::Mixin::PowershellOut, :windows_only do
30
30
  it "runs a command and returns the shell_out object" do
31
31
  ret = double("Mixlib::ShellOut")
32
32
  expect(object).to receive(:shell_out).with(
33
- "powershell.exe #{flags} -Command \"Get-Process\"",
34
- {}
33
+ "powershell.exe #{flags} -Command \"Get-Process\""
35
34
  ).and_return(ret)
36
35
  expect(object.powershell_out("Get-Process")).to eql(ret)
37
36
  end
@@ -62,8 +61,7 @@ describe Chef::Mixin::PowershellOut, :windows_only do
62
61
  it "runs a command and returns the shell_out object" do
63
62
  mixlib_shellout = double("Mixlib::ShellOut")
64
63
  expect(object).to receive(:shell_out).with(
65
- "powershell.exe #{flags} -Command \"Get-Process\"",
66
- {}
64
+ "powershell.exe #{flags} -Command \"Get-Process\""
67
65
  ).and_return(mixlib_shellout)
68
66
  expect(mixlib_shellout).to receive(:error!)
69
67
  expect(object.powershell_out!("Get-Process")).to eql(mixlib_shellout)
@@ -25,7 +25,7 @@ class Chef::PSTypeTester
25
25
  end
26
26
 
27
27
  describe Chef::Mixin::PowershellTypeCoercions do
28
- let (:test_class) { Chef::PSTypeTester.new }
28
+ let(:test_class) { Chef::PSTypeTester.new }
29
29
 
30
30
  describe "#translate_type" do
31
31
  it "single quotes a string" do
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  #
3
2
  # Author:: Mark Mzyk (<mmzyk@chef.io>)
4
3
  # Copyright:: Copyright (c) Chef Software Inc.
@@ -21,10 +21,9 @@
21
21
  #
22
22
 
23
23
  require "spec_helper"
24
- require "chef/mixin/path_sanity"
24
+ require "chef/mixin/default_paths"
25
25
 
26
26
  describe Chef::Mixin::ShellOut do
27
- include ChefUtils::DSL::PathSanity
28
27
  let(:shell_out_class) { Class.new { include Chef::Mixin::ShellOut } }
29
28
  subject(:shell_out_obj) { shell_out_class.new }
30
29
 
@@ -57,38 +56,38 @@ describe Chef::Mixin::ShellOut do
57
56
  describe "and environment is an option" do
58
57
  it "should not change environment language settings when they are set to nil" do
59
58
  options = { environment: { "LC_ALL" => nil, "LANGUAGE" => nil, "LANG" => nil, env_path => nil } }
60
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, **options).and_return(retobj)
59
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, **options).and_return(retobj)
61
60
  shell_out_obj.send(method, cmd, **options)
62
61
  end
63
62
 
64
63
  it "should not change environment language settings when they are set to non-nil" do
65
64
  options = { environment: { "LC_ALL" => "en_US.UTF-8", "LANGUAGE" => "en_US.UTF-8", "LANG" => "en_US.UTF-8", env_path => "foo:bar:baz" } }
66
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, **options).and_return(retobj)
65
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, **options).and_return(retobj)
67
66
  shell_out_obj.send(method, cmd, **options)
68
67
  end
69
68
 
70
69
  it "should set environment language settings to the configured internal locale when they are not present" do
71
70
  options = { environment: { "HOME" => "/Users/morty" } }
72
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
71
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd,
73
72
  environment: {
74
73
  "HOME" => "/Users/morty",
75
74
  "LC_ALL" => Chef::Config[:internal_locale],
76
75
  "LANG" => Chef::Config[:internal_locale],
77
76
  "LANGUAGE" => Chef::Config[:internal_locale],
78
- env_path => sanitized_path,
77
+ env_path => shell_out_obj.default_paths,
79
78
  }).and_return(retobj)
80
79
  shell_out_obj.send(method, cmd, **options)
81
80
  end
82
81
 
83
82
  it "should not mutate the options hash when it adds language settings" do
84
83
  options = { environment: { "HOME" => "/Users/morty" } }
85
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
84
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd,
86
85
  environment: {
87
86
  "HOME" => "/Users/morty",
88
87
  "LC_ALL" => Chef::Config[:internal_locale],
89
88
  "LANG" => Chef::Config[:internal_locale],
90
89
  "LANGUAGE" => Chef::Config[:internal_locale],
91
- env_path => sanitized_path,
90
+ env_path => shell_out_obj.default_paths,
92
91
  }).and_return(retobj)
93
92
  shell_out_obj.send(method, cmd, **options)
94
93
  expect(options[:environment].key?("LC_ALL")).to be false
@@ -98,38 +97,38 @@ describe Chef::Mixin::ShellOut do
98
97
  describe "and env is an option" do
99
98
  it "should not change env when langauge options are set to nil" do
100
99
  options = { env: { "LC_ALL" => nil, "LANG" => nil, "LANGUAGE" => nil, env_path => nil } }
101
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, **options).and_return(retobj)
100
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, **options).and_return(retobj)
102
101
  shell_out_obj.send(method, cmd, **options)
103
102
  end
104
103
 
105
104
  it "should not change env when language options are set to non-nil" do
106
105
  options = { env: { "LC_ALL" => "de_DE.UTF-8", "LANG" => "de_DE.UTF-8", "LANGUAGE" => "de_DE.UTF-8", env_path => "foo:bar:baz" } }
107
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, **options).and_return(retobj)
106
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, **options).and_return(retobj)
108
107
  shell_out_obj.send(method, cmd, **options)
109
108
  end
110
109
 
111
110
  it "should set environment language settings to the configured internal locale when they are not present" do
112
111
  options = { env: { "HOME" => "/Users/morty" } }
113
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
112
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd,
114
113
  env: {
115
114
  "HOME" => "/Users/morty",
116
115
  "LC_ALL" => Chef::Config[:internal_locale],
117
116
  "LANG" => Chef::Config[:internal_locale],
118
117
  "LANGUAGE" => Chef::Config[:internal_locale],
119
- env_path => sanitized_path,
118
+ env_path => shell_out_obj.default_paths,
120
119
  }).and_return(retobj)
121
120
  shell_out_obj.send(method, cmd, **options)
122
121
  end
123
122
 
124
123
  it "should not mutate the options hash when it adds language settings" do
125
124
  options = { env: { "HOME" => "/Users/morty" } }
126
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
125
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd,
127
126
  env: {
128
127
  "HOME" => "/Users/morty",
129
128
  "LC_ALL" => Chef::Config[:internal_locale],
130
129
  "LANG" => Chef::Config[:internal_locale],
131
130
  "LANGUAGE" => Chef::Config[:internal_locale],
132
- env_path => sanitized_path,
131
+ env_path => shell_out_obj.default_paths,
133
132
  }).and_return(retobj)
134
133
  shell_out_obj.send(method, cmd, **options)
135
134
  expect(options[:env].key?("LC_ALL")).to be false
@@ -139,13 +138,13 @@ describe Chef::Mixin::ShellOut do
139
138
  describe "and no env/environment option is present" do
140
139
  it "should set environment language settings to the configured internal locale" do
141
140
  options = { user: "morty" }
142
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
141
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd,
143
142
  user: "morty",
144
143
  environment: {
145
144
  "LC_ALL" => Chef::Config[:internal_locale],
146
145
  "LANG" => Chef::Config[:internal_locale],
147
146
  "LANGUAGE" => Chef::Config[:internal_locale],
148
- env_path => sanitized_path,
147
+ env_path => shell_out_obj.default_paths,
149
148
  }).and_return(retobj)
150
149
  shell_out_obj.send(method, cmd, **options)
151
150
  end
@@ -154,12 +153,12 @@ describe Chef::Mixin::ShellOut do
154
153
 
155
154
  describe "when the last argument is not a Hash" do
156
155
  it "should set environment language settings to the configured internal locale" do
157
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
156
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd,
158
157
  environment: {
159
158
  "LC_ALL" => Chef::Config[:internal_locale],
160
159
  "LANG" => Chef::Config[:internal_locale],
161
160
  "LANGUAGE" => Chef::Config[:internal_locale],
162
- env_path => sanitized_path,
161
+ env_path => shell_out_obj.default_paths,
163
162
  }).and_return(retobj)
164
163
  shell_out_obj.send(method, cmd)
165
164
  end
@@ -173,19 +172,19 @@ describe Chef::Mixin::ShellOut do
173
172
  describe "and environment is an option" do
174
173
  it "should not change environment['LC_ALL'] when set to nil" do
175
174
  options = { environment: { "LC_ALL" => nil } }
176
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(true)
175
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, options).and_return(true)
177
176
  shell_out_obj.shell_out(cmd, **options, default_env: false)
178
177
  end
179
178
 
180
179
  it "should not change environment['LC_ALL'] when set to non-nil" do
181
180
  options = { environment: { "LC_ALL" => "en_US.UTF-8" } }
182
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(true)
181
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, options).and_return(true)
183
182
  shell_out_obj.shell_out(cmd, **options, default_env: false)
184
183
  end
185
184
 
186
185
  it "should no longer set environment['LC_ALL'] to nil when 'LC_ALL' not present" do
187
186
  options = { environment: { "HOME" => "/Users/morty" } }
188
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(true)
187
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, options).and_return(true)
189
188
  shell_out_obj.shell_out(cmd, **options, default_env: false)
190
189
  end
191
190
  end
@@ -193,19 +192,19 @@ describe Chef::Mixin::ShellOut do
193
192
  describe "and env is an option" do
194
193
  it "should not change env when set to nil" do
195
194
  options = { env: { "LC_ALL" => nil } }
196
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(true)
195
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, options).and_return(true)
197
196
  shell_out_obj.shell_out(cmd, **options, default_env: false)
198
197
  end
199
198
 
200
199
  it "should not change env when set to non-nil" do
201
200
  options = { env: { "LC_ALL" => "en_US.UTF-8" } }
202
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(true)
201
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, options).and_return(true)
203
202
  shell_out_obj.shell_out(cmd, **options, default_env: false)
204
203
  end
205
204
 
206
205
  it "should no longer set env['LC_ALL'] to nil when 'LC_ALL' not present" do
207
206
  options = { env: { "HOME" => "/Users/morty" } }
208
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(true)
207
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, options).and_return(true)
209
208
  shell_out_obj.shell_out(cmd, **options, default_env: false)
210
209
  end
211
210
  end
@@ -213,7 +212,7 @@ describe Chef::Mixin::ShellOut do
213
212
  describe "and no env/environment option is present" do
214
213
  it "should no longer add environment option and set environment['LC_ALL'] to nil" do
215
214
  options = { user: "morty" }
216
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(true)
215
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, options).and_return(true)
217
216
  shell_out_obj.shell_out(cmd, **options, default_env: false)
218
217
  end
219
218
  end
@@ -221,7 +220,7 @@ describe Chef::Mixin::ShellOut do
221
220
 
222
221
  describe "when the last argument is not a Hash" do
223
222
  it "should no longer add environment options and set environment['LC_ALL'] to nil" do
224
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd).and_return(true)
223
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd).and_return(true)
225
224
  shell_out_obj.shell_out(cmd, default_env: false)
226
225
  end
227
226
  end
@@ -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
@@ -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
@@ -77,17 +77,9 @@ describe "a class that mixes in user_context" do
77
77
  end
78
78
 
79
79
  context "when the block raises an exception" do
80
- class UserContextTestException < RuntimeError
81
- end
82
- let(:block_parameter) { Proc.new { raise UserContextTextException } }
83
-
84
- it "raises the exception raised by the block" do
85
- expect { instance_with_user_context.with_context("kamilah", nil, "chef4life", &block_parameter) }.not_to raise_error(UserContextTestException)
86
- end
87
-
88
80
  it "closes the logon session so resources are not leaked" do
89
81
  expect(logon_session).to receive(:close)
90
- expect { instance_with_user_context.with_context("kamilah", nil, "chef4life", &block_parameter) }.not_to raise_error(UserContextTestException)
82
+ expect { instance_with_user_context.with_context("kamilah", nil, "chef4life") { 1 / 0 } }.to raise_error(ZeroDivisionError)
91
83
  end
92
84
  end
93
85
  end
@@ -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
@@ -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",
@@ -1606,6 +1650,49 @@ describe Chef::Node do
1606
1650
  node.normal = {}
1607
1651
  node.override = {}
1608
1652
 
1653
+ selected_data = {
1654
+ "default" => {
1655
+ "filesystem" => {
1656
+ "map - autohome" => { "size" => "10mb" },
1657
+ },
1658
+ "network" => {
1659
+ "interfaces" => {
1660
+ "eth1" => {},
1661
+ },
1662
+ },
1663
+ },
1664
+ "automatic" => {}, "normal" => {}, "override" => {}
1665
+ }
1666
+ node.name("picky-monkey")
1667
+ Chef::Config[:treat_deprecation_warnings_as_errors] = false
1668
+ expect(@rest).to receive(:put).with("nodes/picky-monkey", hash_including(selected_data)).and_return("foo")
1669
+ node.save
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 = {}
1695
+
1609
1696
  selected_data = {
1610
1697
  "default" => {
1611
1698
  "filesystem" => {
@@ -1624,8 +1711,8 @@ describe Chef::Node do
1624
1711
  node.save
1625
1712
  end
1626
1713
 
1627
- it "should save all attributes if the blacklist is empty" do
1628
- Chef::Config[:default_attribute_blacklist] = []
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" => {