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
@@ -26,7 +26,7 @@ if RUBY_PLATFORM.match?(/mswin|mingw|windows/)
26
26
 
27
27
  def service_main(*startup_parameters)
28
28
  while running?
29
- unless File.exists?(@test_service_file)
29
+ unless File.exist?(@test_service_file)
30
30
  File.open(@test_service_file, "wb") do |f|
31
31
  f.write("This file is created by SpecService")
32
32
  end
@@ -173,6 +173,6 @@ shared_context Chef::Resource::Directory do
173
173
  end
174
174
 
175
175
  after(:each) do
176
- FileUtils.rm_r(path) if File.exists?(path)
176
+ FileUtils.rm_r(path) if File.exist?(path)
177
177
  end
178
178
  end
@@ -62,7 +62,7 @@ shared_context "a command that can be executed as an alternate user" do
62
62
  end
63
63
 
64
64
  after do
65
- File.delete(script_output_path) if File.exists?(script_output_path)
65
+ File.delete(script_output_path) if File.exist?(script_output_path)
66
66
  Dir.rmdir(script_output_dir) if Dir.exist?(script_output_dir)
67
67
  end
68
68
  end
@@ -366,7 +366,6 @@ shared_examples_for "a configured file resource" do
366
366
  include_context "diff disabled"
367
367
 
368
368
  before do
369
- Chef::Log.level = :info
370
369
  Chef::Config[:ssl_verify_mode] = :verify_none
371
370
  end
372
371
 
@@ -477,12 +476,12 @@ shared_examples_for "a configured file resource" do
477
476
  end
478
477
 
479
478
  it "issues a warning/assumption in whyrun mode" do
480
- begin
481
- Chef::Config[:why_run] = true
482
- resource.run_action(:create) # should not raise
483
- ensure
484
- Chef::Config[:why_run] = false
485
- end
479
+
480
+ Chef::Config[:why_run] = true
481
+ resource.run_action(:create) # should not raise
482
+ ensure
483
+ Chef::Config[:why_run] = false
484
+
486
485
  end
487
486
  end
488
487
 
@@ -505,12 +504,12 @@ shared_examples_for "a configured file resource" do
505
504
  end
506
505
 
507
506
  it "issues a warning/assumption in whyrun mode" do
508
- begin
509
- Chef::Config[:why_run] = true
510
- resource.run_action(:create) # should not raise
511
- ensure
512
- Chef::Config[:why_run] = false
513
- end
507
+
508
+ Chef::Config[:why_run] = true
509
+ resource.run_action(:create) # should not raise
510
+ ensure
511
+ Chef::Config[:why_run] = false
512
+
514
513
  end
515
514
  end
516
515
 
@@ -536,12 +535,12 @@ shared_examples_for "a configured file resource" do
536
535
  end
537
536
 
538
537
  it "issues a warning/assumption in whyrun mode" do
539
- begin
540
- Chef::Config[:why_run] = true
541
- resource.run_action(:create) # should not raise
542
- ensure
543
- Chef::Config[:why_run] = false
544
- end
538
+
539
+ Chef::Config[:why_run] = true
540
+ resource.run_action(:create) # should not raise
541
+ ensure
542
+ Chef::Config[:why_run] = false
543
+
545
544
  end
546
545
  end
547
546
 
@@ -1038,8 +1037,8 @@ shared_context Chef::Resource::File do
1038
1037
  end
1039
1038
 
1040
1039
  after(:each) do
1041
- FileUtils.rm_r(path) if File.exists?(path)
1042
- FileUtils.rm_r(CHEF_SPEC_BACKUP_PATH) if File.exists?(CHEF_SPEC_BACKUP_PATH)
1040
+ FileUtils.rm_r(path) if File.exist?(path)
1041
+ FileUtils.rm_r(CHEF_SPEC_BACKUP_PATH) if File.exist?(CHEF_SPEC_BACKUP_PATH)
1043
1042
  end
1044
1043
 
1045
1044
  after do
@@ -19,7 +19,6 @@
19
19
  #
20
20
 
21
21
  require "etc"
22
- require "functional/resource/base"
23
22
 
24
23
  shared_context "setup correct permissions" do
25
24
  if windows?
@@ -135,7 +134,7 @@ shared_context "use Windows permissions", :windows_only do
135
134
  }
136
135
  end
137
136
 
138
- let (:write_flag) { 3 }
137
+ let(:write_flag) { 3 }
139
138
 
140
139
  RSpec::Matchers.define :have_expected_properties do |mask, type, flags|
141
140
  match do |ace|
@@ -1,5 +1,4 @@
1
1
 
2
- require "functional/resource/base"
3
2
 
4
3
  ALL_EXPANDED_PERMISSIONS = ["generic read",
5
4
  "generic write",
@@ -30,7 +30,7 @@ shared_context "using Win32::Service" do
30
30
  end
31
31
 
32
32
  # Delete the test_service_file if it exists
33
- if File.exists?(test_service_file)
33
+ if File.exist?(test_service_file)
34
34
  File.delete(test_service_file)
35
35
  end
36
36
  end
@@ -39,11 +39,11 @@ shared_context Chef::Resource::WindowsScript do
39
39
  end
40
40
 
41
41
  before(:each) do
42
- File.delete(script_output_path) if File.exists?(script_output_path)
42
+ File.delete(script_output_path) if File.exist?(script_output_path)
43
43
  end
44
44
 
45
45
  after(:each) do
46
- File.delete(script_output_path) if File.exists?(script_output_path)
46
+ File.delete(script_output_path) if File.exist?(script_output_path)
47
47
  end
48
48
 
49
49
  shared_examples_for "a script resource with architecture attribute" do
@@ -91,7 +91,7 @@ shared_context Chef::Resource::WindowsScript do
91
91
  end
92
92
 
93
93
  context "when the guard's architecture is specified as 64-bit" do
94
- let (:guard_architecture) { :x86_64 }
94
+ let(:guard_architecture) { :x86_64 }
95
95
  it "executes a 64-bit guard", :windows64_only do
96
96
  resource.only_if resource_guard_command, architecture: guard_architecture
97
97
  resource.run_action(:run)
@@ -100,7 +100,7 @@ shared_context Chef::Resource::WindowsScript do
100
100
  end
101
101
 
102
102
  context "when the guard's architecture is specified as 32-bit" do
103
- let (:guard_architecture) { :i386 }
103
+ let(:guard_architecture) { :i386 }
104
104
  it "executes a 32-bit guard" do
105
105
  resource.only_if resource_guard_command, architecture: guard_architecture
106
106
  resource.run_action(:run)
@@ -138,7 +138,7 @@ shared_context Chef::Resource::WindowsScript do
138
138
 
139
139
  after do
140
140
  script_file.close! if script_file
141
- ::File.delete(script_file.to_path) if script_file && ::File.exists?(script_file.to_path)
141
+ ::File.delete(script_file.to_path) if script_file && ::File.exist?(script_file.to_path)
142
142
  end
143
143
 
144
144
  include_context "alternate user identity"
@@ -44,15 +44,30 @@ module IntegrationSupport
44
44
 
45
45
  def when_the_repository(desc, *tags, &block)
46
46
  context("when the chef repo #{desc}", *tags) do
47
- include_context "with a chef repo"
47
+ before :each do
48
+ raise "Can only create one directory per test" if @repository_dir
48
49
 
49
- module_eval(&block)
50
- end
51
- end
50
+ @repository_dir = Dir.mktmpdir("chef_repo")
51
+ Chef::Config.chef_repo_path = @repository_dir
52
+ %w{client cookbook data_bag environment node role user}.each do |object_name|
53
+ Chef::Config.delete("#{object_name}_path".to_sym)
54
+ end
55
+ end
56
+
57
+ after :each do
58
+ if @repository_dir
59
+ begin
60
+ # TODO: "force" actually means "silence all exceptions". this
61
+ # silences a weird permissions error on Windows that we should track
62
+ # down, but for now there's no reason for it to blow up our CI.
63
+ FileUtils.remove_entry_secure(@repository_dir, force = ChefUtils.windows?)
64
+ ensure
65
+ @repository_dir = nil
66
+ end
67
+ end
68
+ Dir.chdir(@old_cwd) if @old_cwd
69
+ end
52
70
 
53
- def with_versioned_cookbooks(&block)
54
- context("with versioned cookbooks") do
55
- include_context "with versioned cookbooks"
56
71
  module_eval(&block)
57
72
  end
58
73
  end
@@ -105,49 +120,4 @@ module IntegrationSupport
105
120
  @old_cwd = Dir.pwd
106
121
  Dir.chdir(path_to(relative_path))
107
122
  end
108
-
109
- RSpec.shared_context "with a chef repo" do
110
- before :each do
111
- raise "Can only create one directory per test" if @repository_dir
112
-
113
- @repository_dir = Dir.mktmpdir("chef_repo")
114
- Chef::Config.chef_repo_path = @repository_dir
115
- %w{client cookbook data_bag environment node role user}.each do |object_name|
116
- Chef::Config.delete("#{object_name}_path".to_sym)
117
- end
118
- end
119
-
120
- after :each do
121
- if @repository_dir
122
- begin
123
- %w{client cookbook data_bag environment node role user}.each do |object_name|
124
- Chef::Config.delete("#{object_name}_path".to_sym)
125
- end
126
- Chef::Config.delete(:chef_repo_path)
127
- # TODO: "force" actually means "silence all exceptions". this
128
- # silences a weird permissions error on Windows that we should track
129
- # down, but for now there's no reason for it to blow up our CI.
130
- FileUtils.remove_entry_secure(@repository_dir, force = ChefUtils.windows?)
131
- ensure
132
- @repository_dir = nil
133
- end
134
- end
135
- Dir.chdir(@old_cwd) if @old_cwd
136
- end
137
-
138
- end
139
-
140
- # Versioned cookbooks
141
-
142
- RSpec.shared_context "with versioned cookbooks", versioned_cookbooks: true do
143
- before(:each) { Chef::Config[:versioned_cookbooks] = true }
144
- after(:each) { Chef::Config.delete(:versioned_cookbooks) }
145
- end
146
-
147
- RSpec.shared_context "without versioned cookbooks", versioned_cookbooks: false do
148
- # Just make sure this goes back to default
149
- before(:each) { Chef::Config[:versioned_cookbooks] = false }
150
- after(:each) { Chef::Config.delete(:versioned_cookbooks) }
151
- end
152
-
153
123
  end
@@ -39,10 +39,7 @@ module KnifeSupport
39
39
 
40
40
  # Work on machines where we can't access /var
41
41
  Dir.mktmpdir("checksums") do |checksums_cache_dir|
42
- Chef::Config[:cache_options] = {
43
- path: checksums_cache_dir,
44
- skip_expires: true,
45
- }
42
+ Chef::Config[:syntax_check_cache_path] = checksums_cache_dir
46
43
 
47
44
  # This is Chef::Knife.run without load_commands--we'll load stuff
48
45
  # ourselves, thank you very much
@@ -55,8 +52,6 @@ module KnifeSupport
55
52
  STDIN
56
53
  end
57
54
 
58
- old_loggers = Chef::Log.loggers
59
- old_log_level = Chef::Log.level
60
55
  begin
61
56
  puts "knife: #{args.join(" ")}" if DEBUG
62
57
  subcommand_class = Chef::Knife.subcommand_class_from(args)
@@ -115,9 +110,7 @@ module KnifeSupport
115
110
  rescue SystemExit => e
116
111
  exit_code = e.status
117
112
  ensure
118
- Chef::Log.use_log_devices(old_loggers)
119
- Chef::Log.level = old_log_level
120
- Chef::Config.delete(:cache_options)
113
+ Chef::Config.delete(:syntax_check_cache_path)
121
114
  Chef::Config.delete(:concurrency)
122
115
  end
123
116
 
@@ -41,7 +41,6 @@ shared_examples_for "an application that loads a dot d" do
41
41
  expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/00-foo.rb").cleanpath.to_s).and_return("foo 0")
42
42
  expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/01-bar.rb").cleanpath.to_s).and_return("bar 0")
43
43
  expect(IO).to receive(:read).with(Pathname.new("#{client_d_dir}/02-strings.rb").cleanpath.to_s).and_return("strings 0")
44
- allow(app).to receive(:apply_config).with(anything, Chef::Config.platform_specific_path("/etc/chef/client.rb")).and_call_original.ordered
45
44
  expect(app).to receive(:apply_config).with("foo 0", Pathname.new("#{client_d_dir}/00-foo.rb").cleanpath.to_s).and_call_original.ordered
46
45
  expect(app).to receive(:apply_config).with("bar 0", Pathname.new("#{client_d_dir}/01-bar.rb").cleanpath.to_s).and_call_original.ordered
47
46
  expect(app).to receive(:apply_config).with("strings 0", Pathname.new("#{client_d_dir}/02-strings.rb").cleanpath.to_s).and_call_original.ordered
@@ -484,19 +484,23 @@ shared_examples_for Chef::Provider::File do
484
484
 
485
485
  it "raises an exception if any verification fails" do
486
486
  allow(File).to receive(:directory?).with("C:\\Windows\\system32/cmd.exe").and_return(false)
487
- provider.new_resource.verify windows? ? "REM" : "true"
488
- provider.new_resource.verify windows? ? "cmd.exe /c exit 1" : "false"
489
- msg = "Proposed content for #{provider.new_resource.path} failed verification #{windows? ? "cmd.exe /c exit 1" : "false"}"
490
- expect { provider.send(:do_validate_content) }.to raise_error(Chef::Exceptions::ValidationFailed, /#{msg}/)
487
+ allow(provider).to receive(:tempfile).and_return(tempfile)
488
+ provider.new_resource.verify windows? ? "cmd.exe c exit 1" : "false"
489
+ provider.new_resource.verify.each do |v|
490
+ allow(v).to receive(:verify).and_return(false)
491
+ end
492
+ expect { provider.send(:do_validate_content) }.to raise_error(Chef::Exceptions::ValidationFailed)
491
493
  end
492
494
 
493
495
  it "does not show verification for sensitive resources" do
494
496
  allow(File).to receive(:directory?).with("C:\\Windows\\system32/cmd.exe").and_return(false)
495
- provider.new_resource.verify windows? ? "REM" : "true"
496
- provider.new_resource.verify windows? ? "cmd.exe /c exit 1" : "false"
497
+ allow(provider).to receive(:tempfile).and_return(tempfile)
497
498
  provider.new_resource.sensitive true
498
- msg = "Proposed content for #{provider.new_resource.path} failed verification [sensitive]\nTemporary file moved to #{backupfile}"
499
- expect { provider.send(:do_validate_content) }.to raise_error(Chef::Exceptions::ValidationFailed, msg)
499
+ provider.new_resource.verify windows? ? "cmd.exe c exit 1" : "false"
500
+ provider.new_resource.verify.each do |v|
501
+ allow(v).to receive(:verify).and_return(false)
502
+ end
503
+ expect { provider.send(:do_validate_content) }.to raise_error(Chef::Exceptions::ValidationFailed, /sensitive/)
500
504
  end
501
505
  end
502
506
  end
@@ -47,21 +47,6 @@ shared_examples_for "a script resource" do
47
47
  end
48
48
 
49
49
  describe "when executing guards" do
50
- let(:resource) do
51
- resource = script_resource
52
- resource.run_context = run_context
53
- resource.code "echo hi"
54
- resource
55
- end
56
- let(:node) do
57
- node = Chef::Node.new
58
- node.automatic[:platform] = "debian"
59
- node.automatic[:platform_version] = "6.0"
60
- node
61
- end
62
- let(:events) { Chef::EventDispatch::Dispatcher.new }
63
- let(:run_context) { Chef::RunContext.new(node, {}, events) }
64
-
65
50
  it "inherits exactly the :cwd, :environment, :group, :path, :user, and :umask attributes from a parent resource class" do
66
51
  inherited_difference = Chef::Resource::Script.guard_inherited_attributes -
67
52
  %i{cwd environment group path user umask}
@@ -73,16 +58,17 @@ shared_examples_for "a script resource" do
73
58
  expect_any_instance_of(Chef::Resource::Conditional).not_to receive(:evaluate_block)
74
59
  expect_any_instance_of(Chef::GuardInterpreter::ResourceGuardInterpreter).not_to receive(:evaluate_action)
75
60
  expect_any_instance_of(Chef::GuardInterpreter::DefaultGuardInterpreter).to receive(:evaluate).and_return(true)
76
- resource.only_if "echo hi"
77
- expect(resource.should_skip?(:run)).to eq(nil)
61
+ script_resource.only_if "echo hi"
62
+ expect(script_resource.should_skip?(:run)).to eq(nil)
78
63
  end
79
64
 
80
65
  it "when a valid guard_interpreter resource is specified, a block should be used to evaluate the guard" do
66
+ expect_any_instance_of(Chef::Resource::Conditional).not_to receive(:evaluate_block)
81
67
  expect_any_instance_of(Chef::GuardInterpreter::DefaultGuardInterpreter).not_to receive(:evaluate)
82
68
  expect_any_instance_of(Chef::GuardInterpreter::ResourceGuardInterpreter).to receive(:evaluate_action).and_return(true)
83
- resource.guard_interpreter :script
84
- resource.only_if "echo hi"
85
- expect(resource.should_skip?(:run)).to eq(nil)
69
+ script_resource.guard_interpreter :script
70
+ script_resource.only_if "echo hi"
71
+ expect(script_resource.should_skip?(:run)).to eq(nil)
86
72
  end
87
73
  end
88
74
  end
@@ -20,59 +20,46 @@ require "support/shared/unit/execute_resource"
20
20
  require "support/shared/unit/script_resource"
21
21
 
22
22
  shared_examples_for "a Windows script resource" do
23
- before(:each) do
24
- node = Chef::Node.new
25
-
26
- node.default["kernel"] = {}
27
- node.default["kernel"][:machine] = :x86_64.to_s
28
-
29
- run_context = Chef::RunContext.new(node, nil, nil)
30
-
31
- @resource = resource_instance
32
-
33
- end
34
-
35
23
  it "should be a kind of Chef::Resource::WindowsScript" do
36
- expect(@resource).to be_a_kind_of(Chef::Resource)
37
- expect(@resource).to be_a_kind_of(Chef::Resource::WindowsScript)
24
+ expect(windows_script_resource).to be_a_kind_of(Chef::Resource)
25
+ expect(windows_script_resource).to be_a_kind_of(Chef::Resource::WindowsScript)
38
26
  end
39
27
 
40
28
  context "when evaluating guards" do
41
29
  it "should have a default_guard_interpreter attribute that is the same as the resource" do
42
- expect(@resource.default_guard_interpreter).to eq(@resource.resource_name)
30
+ expect(windows_script_resource.default_guard_interpreter).to eq(windows_script_resource.resource_name)
43
31
  end
44
32
 
45
33
  it "should default to using guard_interpreter attribute that is the same as the resource" do
46
- expect(@resource.guard_interpreter).to eq(@resource.resource_name)
34
+ expect(windows_script_resource.guard_interpreter).to eq(windows_script_resource.resource_name)
47
35
  end
48
36
 
49
37
  it "should use a resource to evaluate the guard when guard_interpreter is not specified" do
50
38
  expect_any_instance_of(Chef::GuardInterpreter::ResourceGuardInterpreter).to receive(:evaluate_action).and_return(true)
51
39
  expect_any_instance_of(Chef::GuardInterpreter::DefaultGuardInterpreter).not_to receive(:evaluate)
52
- @resource.only_if "echo hi"
53
- expect(@resource.should_skip?(:run)).to eq(nil)
40
+ windows_script_resource.only_if "echo hi"
41
+ expect(windows_script_resource.should_skip?(:run)).to eq(nil)
54
42
  end
55
43
 
56
44
  describe "when the guard is given a ruby block" do
57
45
  it "should evaluate the guard if the guard_interpreter is set to its default value" do
58
- @resource.only_if { true }
59
- expect(@resource.should_skip?(:run)).to eq(nil)
46
+ windows_script_resource.only_if { true }
47
+ expect(windows_script_resource.should_skip?(:run)).to eq(nil)
60
48
  end
61
49
 
62
50
  it "should raise an exception if the guard_interpreter is overridden from its default value" do
63
- @resource.guard_interpreter :bash
64
- @resource.only_if { true }
65
- expect { @resource.should_skip?(:run) }.to raise_error(ArgumentError)
51
+ windows_script_resource.guard_interpreter :bash
52
+ windows_script_resource.only_if { true }
53
+ expect { windows_script_resource.should_skip?(:run) }.to raise_error(ArgumentError)
66
54
  end
67
55
  end
68
56
  end
69
57
 
70
58
  context "script with a default guard interpreter" do
71
- let(:script_resource) do
72
- resource_instance.guard_interpreter :default
73
- resource_instance
74
- end
59
+ let(:script_resource) { windows_script_resource }
60
+
61
+ before { windows_script_resource.guard_interpreter :default }
62
+
75
63
  it_should_behave_like "a script resource"
76
64
  end
77
-
78
65
  end