chef 16.1.16-universal-mingw32 → 16.3.45-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require "functional/resource/base"
21
20
  require "chef/mixin/shell_out"
22
21
 
23
22
  # run this test only for following platforms.
@@ -26,6 +25,7 @@ describe Chef::Resource::RpmPackage, :requires_root, external: exclude_test do
26
25
  include Chef::Mixin::ShellOut
27
26
 
28
27
  let(:new_resource) do
28
+ run_context = Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
29
29
  new_resource = Chef::Resource::RpmPackage.new(@pkg_name, run_context)
30
30
  new_resource.source @pkg_path
31
31
  new_resource
@@ -21,6 +21,8 @@ describe Chef::Resource::Timezone, :windows_only do
21
21
  let(:timezone) { "GMT Standard Time" }
22
22
 
23
23
  def timezone_resource
24
+ run_context = Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
25
+
24
26
  Chef::Resource::Timezone.new(timezone, run_context)
25
27
  end
26
28
 
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require "functional/resource/base"
21
20
 
22
21
  describe Chef::Resource::WindowsPackage, :windows_only, :volatile do
23
22
  let(:pkg_name) { nil }
@@ -21,6 +21,10 @@ require "spec_helper"
21
21
  describe Chef::Resource::WindowsPath, :windows_only do
22
22
  let(:path) { "test_path" }
23
23
 
24
+ let(:run_context) do
25
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
26
+ end
27
+
24
28
  before(:all) do
25
29
  @old_path = ENV["PATH"].dup
26
30
  end
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require "functional/resource/base"
21
20
  require "chef/mixin/powershell_out"
22
21
 
23
22
  describe Chef::Resource::WindowsSecurityPolicy, :windows_only do
@@ -62,6 +62,10 @@ describe Chef::Resource::WindowsService, :windows_only, :system_windows_service_
62
62
  r
63
63
  end
64
64
 
65
+ let(:run_context) do
66
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
67
+ end
68
+
65
69
  before do
66
70
  user_resource.run_action(:create)
67
71
 
@@ -25,12 +25,13 @@ describe Chef::Resource::WindowsTask, :windows_only do
25
25
  let(:task_name) { "chef-client-functional-test" }
26
26
  let(:new_resource) { Chef::Resource::WindowsTask.new(task_name) }
27
27
  let(:windows_task_provider) do
28
- node = Chef::Node.new
29
- events = Chef::EventDispatch::Dispatcher.new
30
- run_context = Chef::RunContext.new(node, {}, events)
31
28
  Chef::Provider::WindowsTask.new(new_resource, run_context)
32
29
  end
33
30
 
31
+ let(:run_context) do
32
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
33
+ end
34
+
34
35
  describe "action :create" do
35
36
  after { delete_task }
36
37
  context "when command is with arguments" do
@@ -513,13 +514,13 @@ describe Chef::Resource::WindowsTask, :windows_only do
513
514
  it "not raises any Argument error if frequency_modifier set as 'first, second, third' and day is provided" do
514
515
  subject.frequency_modifier "first, second, third"
515
516
  subject.day "Mon, Fri"
516
- expect { subject.after_created }.not_to raise_error(ArgumentError)
517
+ expect { subject.after_created }.not_to raise_error
517
518
  end
518
519
 
519
520
  it "not raises any Argument error if frequency_modifier 2 " do
520
521
  subject.frequency_modifier 2
521
522
  subject.day "Mon, Sun"
522
- expect { subject.after_created }.not_to raise_error(ArgumentError)
523
+ expect { subject.after_created }.not_to raise_error
523
524
  end
524
525
 
525
526
  it "raises argument error if frequency_modifier > 12" do
@@ -535,7 +536,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
535
536
  it "creates scheduled task to run task monthly on Monday and Friday of first, second and third week of month" do
536
537
  subject.frequency_modifier "first, second, third"
537
538
  subject.day "Mon, Fri"
538
- expect { subject.after_created }.not_to raise_error(ArgumentError)
539
+ expect { subject.after_created }.not_to raise_error
539
540
  call_for_create_action
540
541
  current_resource = call_for_load_current_resource
541
542
  expect(current_resource.exists).to eq(true)
@@ -558,7 +559,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
558
559
  it "creates scheduled task to run task monthly on every 6 months when frequency_modifier is 6 and to run on 1st and 2nd day of month" do
559
560
  subject.frequency_modifier 6
560
561
  subject.day "1, 2"
561
- expect { subject.after_created }.not_to raise_error(ArgumentError)
562
+ expect { subject.after_created }.not_to raise_error
562
563
  call_for_create_action
563
564
  current_resource = call_for_load_current_resource
564
565
  expect(current_resource.exists).to eq(true)
@@ -590,7 +591,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
590
591
 
591
592
  it "creates scheduled task to run monthly to run last day of the month" do
592
593
  subject.day "last"
593
- expect { subject.after_created }.not_to raise_error(ArgumentError)
594
+ expect { subject.after_created }.not_to raise_error
594
595
  call_for_create_action
595
596
  current_resource = call_for_load_current_resource
596
597
  expect(current_resource.exists).to eq(true)
@@ -611,7 +612,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
611
612
 
612
613
  it "day property set as 'lastday' creates scheduled task to run monthly to run last day of the month" do
613
614
  subject.day "lastday"
614
- expect { subject.after_created }.not_to raise_error(ArgumentError)
615
+ expect { subject.after_created }.not_to raise_error
615
616
  call_for_create_action
616
617
  current_resource = call_for_load_current_resource
617
618
  expect(current_resource.exists).to eq(true)
@@ -635,7 +636,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
635
636
  it "creates scheduled task to run monthly on last week of the month" do
636
637
  subject.frequency_modifier "last"
637
638
  subject.day "Mon, Fri"
638
- expect { subject.after_created }.not_to raise_error(ArgumentError)
639
+ expect { subject.after_created }.not_to raise_error
639
640
  call_for_create_action
640
641
  current_resource = call_for_load_current_resource
641
642
  expect(current_resource.exists).to eq(true)
@@ -659,7 +660,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
659
660
  context "when wild card (*) set as months" do
660
661
  it "creates the scheduled task to run on 1st day of the all months" do
661
662
  subject.months "*"
662
- expect { subject.after_created }.not_to raise_error(ArgumentError)
663
+ expect { subject.after_created }.not_to raise_error
663
664
  call_for_create_action
664
665
  current_resource = call_for_load_current_resource
665
666
  expect(current_resource.exists).to eq(true)
@@ -15,8 +15,7 @@
15
15
  # limitations under the License.
16
16
  #
17
17
 
18
- require_relative "../../spec_helper"
19
- require_relative "../../functional/resource/base"
18
+ require "spec_helper"
20
19
 
21
20
  describe Chef::Resource::WindowsUserPrivilege, :windows_only do
22
21
  let(:principal) { nil }
@@ -16,7 +16,6 @@
16
16
  #
17
17
 
18
18
  require "spec_helper"
19
- require "functional/resource/base"
20
19
  require "chef/mixin/shell_out"
21
20
 
22
21
  # run this test only for following platforms.
@@ -64,6 +63,10 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
64
63
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
65
64
  end
66
65
 
66
+ let(:run_context) do
67
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
68
+ end
69
+
67
70
  let(:package_name) { "chef_rpm" }
68
71
  let(:yum_package) do
69
72
  r = Chef::Resource::YumPackage.new(package_name, run_context)
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require "functional/resource/base"
21
20
  require "chef/mixin/shell_out"
22
21
 
23
22
  describe Chef::Resource::ZypperPackage, :requires_root, :suse_only do
@@ -52,6 +51,10 @@ describe Chef::Resource::ZypperPackage, :requires_root, :suse_only do
52
51
  FileUtils.rm_f "/etc/zypp/repos.d/chef-zypp-localtesting.repo"
53
52
  end
54
53
 
54
+ let(:run_context) do
55
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
56
+ end
57
+
55
58
  let(:package_name) { "chef_rpm" }
56
59
  let(:zypper_package) do
57
60
  r = Chef::Resource::ZypperPackage.new(package_name, run_context)
@@ -15,7 +15,7 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
 
18
- require_relative "../spec_helper"
18
+ require "spec_helper"
19
19
  require "chef/client"
20
20
 
21
21
  describe Chef::RunLock do
@@ -435,6 +435,7 @@ describe Chef::RunLock do
435
435
 
436
436
  class TestRunLock < Chef::RunLock
437
437
  attr_accessor :client_process
438
+
438
439
  def create_lock
439
440
  super
440
441
  client_process.fire_event("created lock")
@@ -17,7 +17,6 @@
17
17
  #
18
18
 
19
19
  require "spec_helper"
20
- require "functional/resource/base"
21
20
  require "chef/version"
22
21
  require "chef/shell"
23
22
 
@@ -98,13 +97,13 @@ describe Shell do
98
97
  [output, e.status]
99
98
  end
100
99
 
101
- it "boots correctly with -lauto" do
100
+ it "boots correctly with -lauto", :executables do
102
101
  output, exitstatus = run_chef_shell_with("-lauto")
103
102
  expect(output).to include("done")
104
103
  expect(exitstatus).to eq(0)
105
104
  end
106
105
 
107
- it "sets the log_level from the command line" do
106
+ it "sets the log_level from the command line", :executables do
108
107
  output, exitstatus = run_chef_shell_with("-lfatal") do |out, keyboard|
109
108
  show_log_level_code = %q[puts "===#{Chef::Log.level}==="]
110
109
  keyboard.puts(show_log_level_code)
@@ -115,13 +114,13 @@ describe Shell do
115
114
  end
116
115
 
117
116
  context "on solo mode" do
118
- it "starts correctly" do
117
+ it "starts correctly", :executables do
119
118
  output, exitstatus = run_chef_shell_with("--solo")
120
119
  expect(output).to include("done")
121
120
  expect(exitstatus).to eq(0)
122
121
  end
123
122
 
124
- it "should be able to use the API" do
123
+ it "should be able to use the API", :executables do
125
124
  output, exitstatus = run_chef_shell_with("-s") do |out, keyboard|
126
125
  simple_api_get = "api.get('data')"
127
126
  keyboard.puts(simple_api_get)
@@ -132,7 +131,7 @@ describe Shell do
132
131
  end
133
132
  end
134
133
 
135
- it "sets the override_runlist from the command line" do
134
+ it "sets the override_runlist from the command line", :executables do
136
135
  output, exitstatus = run_chef_shell_with("-o 'override::foo,override::bar'") do |out, keyboard|
137
136
  show_recipes_code = %q[puts "#{node["recipes"].inspect}"]
138
137
  keyboard.puts(show_recipes_code)
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  require "chef/json_compat"
20
- require_relative "../../../spec_helper"
20
+ require "spec_helper"
21
21
 
22
22
  describe Chef::Util::Powershell::Cmdlet, :windows_powershell_dsc_only do
23
23
  before(:all) do
@@ -15,7 +15,7 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
 
18
- require_relative "../spec_helper"
18
+ require "spec_helper"
19
19
  require "chef/mixin/shell_out"
20
20
  require "chef/version"
21
21
  require "ohai/version"
@@ -32,7 +32,7 @@ describe "Chef::ReservedNames::Win32::Crypto", :windows_only do
32
32
  @run_context = Chef::RunContext.new(new_node, {}, events)
33
33
  end
34
34
 
35
- let (:plaintext) { "p@assword" }
35
+ let(:plaintext) { "p@assword" }
36
36
 
37
37
  it "can be decrypted by powershell" do
38
38
  encrypted = Chef::ReservedNames::Win32::Crypto.encrypt(plaintext)
@@ -26,8 +26,9 @@ describe "knife config list-profiles", :workstation do
26
26
 
27
27
  let(:cmd_args) { [] }
28
28
  let(:knife_list_profiles) do
29
- knife("config", "list-profiles", *cmd_args, instance_filter: proc {
30
- # Clear the stub set up in KnifeSupport.
29
+ knife("config", "list-profiles", *cmd_args, instance_filter: lambda { |instance|
30
+ # Fake the failsafe check because this command doesn't actually process knife.rb.
31
+ $__KNIFE_INTEGRATION_FAILSAFE_CHECK << " ole"
31
32
  allow(File).to receive(:file?).and_call_original
32
33
  })
33
34
  end
@@ -140,6 +141,33 @@ describe "knife config list-profiles", :workstation do
140
141
  EOH
141
142
  end
142
143
 
144
+ context "with a bad profile as an active profile" do
145
+ let(:cmd_args) { %w{--profile production} }
146
+ before { file(".chef/credentials", <<~EOH) }
147
+ [default]
148
+ client_name = "testuser"
149
+ client_key = "testkey.pem"
150
+ chef_server_url = "https://example.com/organizations/testorg"
151
+
152
+ [prod]
153
+ client_name = "testuser"
154
+ client_key = "testkey.pem"
155
+ chef_server_url = "https://example.com/organizations/prod"
156
+
157
+ [qa]
158
+ client_name = "qauser"
159
+ client_key = "~/src/qauser.pem"
160
+ chef_server_url = "https://example.com/organizations/testorg"
161
+ EOH
162
+ it { is_expected.to eq <<~EOH.delete("#") }
163
+ Profile Client Key Server #
164
+ ---------------------------------------------------------------------------------#
165
+ default testuser ~/.chef/testkey.pem https://example.com/organizations/testorg#
166
+ prod testuser ~/.chef/testkey.pem https://example.com/organizations/prod #
167
+ qa qauser ~/src/qauser.pem https://example.com/organizations/testorg#
168
+ EOH
169
+ end
170
+
143
171
  context "with a minimal profile" do
144
172
  before { file(".chef/credentials", <<~EOH) }
145
173
  [default]
@@ -30,6 +30,7 @@ describe "knife config use-profile", :workstation do
30
30
  knife("config", "use-profile", *cmd_args, instance_filter: lambda { |instance|
31
31
  # Fake the failsafe check because this command doesn't actually process knife.rb.
32
32
  $__KNIFE_INTEGRATION_FAILSAFE_CHECK << " ole"
33
+ allow(File).to receive(:file?).and_call_original
33
34
  })
34
35
  end
35
36
 
@@ -73,15 +74,56 @@ describe "knife config use-profile", :workstation do
73
74
 
74
75
  context "with an argument" do
75
76
  let(:cmd_args) { %w{production} }
77
+ before { file(".chef/credentials", <<~EOH) }
78
+ [production]
79
+ client_name = "testuser"
80
+ client_key = "testkey.pem"
81
+ chef_server_url = "https://example.com/organizations/testorg"
82
+ EOH
76
83
  it do
77
84
  is_expected.to eq "Set default profile to production\n"
78
85
  expect(File.read(path_to(".chef/context"))).to eq "production\n"
79
86
  end
80
87
  end
81
88
 
89
+ context "with no credentials file" do
90
+ let(:cmd_args) { %w{production} }
91
+ subject { knife_use_profile.stderr }
92
+ it { is_expected.to eq "FATAL: No profiles found, #{path_to(".chef/credentials")} does not exist or is empty\n" }
93
+ end
94
+
95
+ context "with an empty credentials file" do
96
+ let(:cmd_args) { %w{production} }
97
+ before { file(".chef/credentials", "") }
98
+ subject { knife_use_profile.stderr }
99
+ it { is_expected.to eq "FATAL: No profiles found, #{path_to(".chef/credentials")} does not exist or is empty\n" }
100
+ end
101
+
102
+ context "with an wrong argument" do
103
+ let(:cmd_args) { %w{staging} }
104
+ before { file(".chef/credentials", <<~EOH) }
105
+ [production]
106
+ client_name = "testuser"
107
+ client_key = "testkey.pem"
108
+ chef_server_url = "https://example.com/organizations/testorg"
109
+ EOH
110
+ subject { knife_use_profile }
111
+ it { expect { subject }.to raise_error ChefConfig::ConfigurationError, "Profile staging doesn't exist. Please add it to #{path_to(".chef/credentials")} and if it is profile with DNS name check that you are not missing single quotes around it as per docs https://docs.chef.io/workstation/knife_setup/#knife-profiles." }
112
+ end
113
+
82
114
  context "with $CHEF_HOME" do
83
115
  let(:cmd_args) { %w{staging} }
84
- before { ENV["CHEF_HOME"] = path_to("chefhome"); file("chefhome/tmp", "") }
116
+ before do
117
+ ENV["CHEF_HOME"] = path_to("chefhome"); file("chefhome/tmp", "")
118
+ file("chefhome/.chef/credentials", <<~EOH
119
+ [staging]
120
+ client_name = "testuser"
121
+ client_key = "testkey.pem"
122
+ chef_server_url = "https://example.com/organizations/testorg"
123
+ EOH
124
+ )
125
+ end
126
+
85
127
  it do
86
128
  is_expected.to eq "Set default profile to staging\n"
87
129
  expect(File.read(path_to("chefhome/.chef/context"))).to eq "staging\n"
@@ -91,7 +133,18 @@ describe "knife config use-profile", :workstation do
91
133
 
92
134
  context "with $KNIFE_HOME" do
93
135
  let(:cmd_args) { %w{development} }
94
- before { ENV["KNIFE_HOME"] = path_to("knifehome"); file("knifehome/tmp", "") }
136
+
137
+ before do
138
+ ENV["KNIFE_HOME"] = path_to("knifehome"); file("knifehome/tmp", "")
139
+ file("knifehome/.chef/credentials", <<~EOH
140
+ [development]
141
+ client_name = "testuser"
142
+ client_key = "testkey.pem"
143
+ chef_server_url = "https://example.com/organizations/testorg"
144
+ EOH
145
+ )
146
+ end
147
+
95
148
  it do
96
149
  is_expected.to eq "Set default profile to development\n"
97
150
  expect(File.read(path_to("knifehome/.chef/context"))).to eq "development\n"
@@ -25,7 +25,7 @@ describe "knife cookbook upload", :workstation do
25
25
 
26
26
  include_context "default config options"
27
27
 
28
- let (:cb_dir) { "#{@repository_dir}/cookbooks" }
28
+ let(:cb_dir) { "#{@repository_dir}/cookbooks" }
29
29
 
30
30
  when_the_chef_server "is empty" do
31
31
  when_the_repository "has a cookbook" do
@@ -97,5 +97,32 @@ describe "knife cookbook upload", :workstation do
97
97
  expect { knife("cookbook upload x -o #{cb_dir}") }.to raise_error(Chef::Exceptions::MetadataNotValid)
98
98
  end
99
99
  end
100
+
101
+ when_the_repository "has cookbooks at multiple paths" do
102
+
103
+ let(:cb_dir_first) do
104
+ File.join(@repository_dir, "cookbooks")
105
+ .gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
106
+ end
107
+
108
+ let(:cb_dir_second) do
109
+ File.join(@repository_dir, "test_cookbooks")
110
+ .gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
111
+ end
112
+
113
+ before(:each) do
114
+ file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
115
+ file "test_cookbooks/y/metadata.rb", cb_metadata("y", "1.0.0")
116
+ end
117
+
118
+ it "knife cookbook upload with -o or --cookbook-path" do
119
+ knife("cookbook upload x y -o #{cb_dir_first}#{File::PATH_SEPARATOR}#{cb_dir_second}").should_succeed stderr: <<~EOM
120
+ Uploading x [1.0.0]
121
+ Uploading y [1.0.0]
122
+ Uploaded 2 cookbooks.
123
+ EOM
124
+ end
125
+
126
+ end
100
127
  end
101
128
  end