chef 16.1.0-universal-mingw32 → 16.3.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 (424) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -7
  3. data/README.md +3 -3
  4. data/Rakefile +4 -3
  5. data/chef-universal-mingw32.gemspec +2 -2
  6. data/chef.gemspec +7 -6
  7. data/distro/powershell/chef/chef.psm1 +3 -3
  8. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  9. data/lib/chef/application.rb +12 -0
  10. data/lib/chef/application/apply.rb +2 -1
  11. data/lib/chef/application/base.rb +1 -1
  12. data/lib/chef/application/client.rb +1 -1
  13. data/lib/chef/application/windows_service_manager.rb +1 -1
  14. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  15. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  16. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  17. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  18. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  19. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  20. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  21. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  22. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  23. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +2 -2
  24. data/lib/chef/chef_fs/path_utils.rb +4 -4
  25. data/lib/chef/client.rb +3 -3
  26. data/lib/chef/cookbook/chefignore.rb +1 -1
  27. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  28. data/lib/chef/cookbook/metadata.rb +2 -2
  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 +16 -30
  32. data/lib/chef/cookbook_manifest.rb +1 -1
  33. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  34. data/lib/chef/cookbook_version.rb +4 -4
  35. data/lib/chef/data_bag.rb +5 -6
  36. data/lib/chef/data_collector.rb +1 -1
  37. data/lib/chef/data_collector/error_handlers.rb +1 -1
  38. data/lib/chef/decorator/lazy_array.rb +2 -2
  39. data/lib/chef/deprecated.rb +12 -0
  40. data/lib/chef/digester.rb +5 -4
  41. data/lib/chef/dsl/declare_resource.rb +1 -1
  42. data/lib/chef/dsl/platform_introspection.rb +2 -0
  43. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  44. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  45. data/lib/chef/environment.rb +1 -2
  46. data/lib/chef/exceptions.rb +3 -0
  47. data/lib/chef/file_access_control.rb +1 -1
  48. data/lib/chef/file_access_control/windows.rb +2 -2
  49. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  50. data/lib/chef/formatters/base.rb +1 -1
  51. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  52. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  53. data/lib/chef/http.rb +19 -4
  54. data/lib/chef/http/authenticator.rb +1 -1
  55. data/lib/chef/http/decompressor.rb +1 -1
  56. data/lib/chef/http/http_request.rb +1 -1
  57. data/lib/chef/http/json_output.rb +1 -1
  58. data/lib/chef/http/ssl_policies.rb +18 -0
  59. data/lib/chef/json_compat.rb +1 -1
  60. data/lib/chef/key.rb +1 -1
  61. data/lib/chef/knife.rb +6 -6
  62. data/lib/chef/knife/bootstrap.rb +24 -24
  63. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  64. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  65. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  66. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
  67. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  68. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  69. data/lib/chef/knife/config_get.rb +2 -1
  70. data/lib/chef/knife/config_list_profiles.rb +4 -1
  71. data/lib/chef/knife/config_use_profile.rb +15 -5
  72. data/lib/chef/knife/configure.rb +1 -1
  73. data/lib/chef/knife/cookbook_delete.rb +1 -1
  74. data/lib/chef/knife/cookbook_upload.rb +6 -14
  75. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  76. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  77. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  78. data/lib/chef/knife/core/hashed_command_loader.rb +2 -1
  79. data/lib/chef/knife/core/node_presenter.rb +1 -1
  80. data/lib/chef/knife/core/status_presenter.rb +1 -1
  81. data/lib/chef/knife/core/subcommand_loader.rb +21 -2
  82. data/lib/chef/knife/core/ui.rb +8 -2
  83. data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -4
  84. data/lib/chef/knife/data_bag_create.rb +1 -1
  85. data/lib/chef/knife/key_create_base.rb +1 -1
  86. data/lib/chef/knife/key_edit_base.rb +1 -1
  87. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  88. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  89. data/lib/chef/knife/rehash.rb +3 -21
  90. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  91. data/lib/chef/knife/ssh.rb +7 -3
  92. data/lib/chef/knife/supermarket_share.rb +1 -1
  93. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  94. data/lib/chef/log.rb +8 -3
  95. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  96. data/lib/chef/mixin/checksum.rb +0 -1
  97. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  98. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  99. data/lib/chef/mixin/openssl_helper.rb +31 -9
  100. data/lib/chef/mixin/path_sanity.rb +5 -4
  101. data/lib/chef/mixin/properties.rb +2 -2
  102. data/lib/chef/mixin/securable.rb +2 -2
  103. data/lib/chef/mixin/shell_out.rb +4 -188
  104. data/lib/chef/mixin/template.rb +1 -0
  105. data/lib/chef/mixin/which.rb +6 -3
  106. data/lib/chef/mixins.rb +1 -0
  107. data/lib/chef/node.rb +36 -12
  108. data/lib/chef/node/attribute.rb +2 -2
  109. data/lib/chef/node/immutable_collections.rb +1 -1
  110. data/lib/chef/node_map.rb +21 -18
  111. data/lib/chef/platform/service_helpers.rb +31 -28
  112. data/lib/chef/policy_builder/policyfile.rb +1 -1
  113. data/lib/chef/powershell.rb +1 -1
  114. data/lib/chef/property.rb +2 -2
  115. data/lib/chef/provider.rb +3 -3
  116. data/lib/chef/provider/batch.rb +3 -10
  117. data/lib/chef/provider/cron.rb +2 -14
  118. data/lib/chef/provider/directory.rb +1 -1
  119. data/lib/chef/provider/execute.rb +2 -1
  120. data/lib/chef/provider/file.rb +1 -1
  121. data/lib/chef/provider/git.rb +12 -4
  122. data/lib/chef/provider/group/dscl.rb +2 -2
  123. data/lib/chef/provider/group/windows.rb +1 -1
  124. data/lib/chef/provider/ifconfig.rb +7 -7
  125. data/lib/chef/provider/mount/aix.rb +1 -1
  126. data/lib/chef/provider/mount/solaris.rb +0 -1
  127. data/lib/chef/provider/mount/windows.rb +2 -2
  128. data/lib/chef/provider/noop.rb +1 -1
  129. data/lib/chef/provider/package/chocolatey.rb +1 -1
  130. data/lib/chef/provider/package/dpkg.rb +1 -1
  131. data/lib/chef/provider/package/openbsd.rb +1 -1
  132. data/lib/chef/provider/package/portage.rb +3 -2
  133. data/lib/chef/provider/package/powershell.rb +6 -2
  134. data/lib/chef/provider/package/rubygems.rb +3 -3
  135. data/lib/chef/provider/package/snap.rb +97 -29
  136. data/lib/chef/provider/package/windows.rb +11 -6
  137. data/lib/chef/provider/package/windows/msi.rb +3 -3
  138. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  139. data/lib/chef/provider/package/yum.rb +1 -1
  140. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  141. data/lib/chef/provider/package/zypper.rb +0 -1
  142. data/lib/chef/provider/powershell_script.rb +10 -14
  143. data/lib/chef/provider/remote_directory.rb +2 -2
  144. data/lib/chef/provider/remote_file/http.rb +4 -1
  145. data/lib/chef/provider/script.rb +4 -75
  146. data/lib/chef/provider/service.rb +2 -2
  147. data/lib/chef/provider/service/arch.rb +2 -2
  148. data/lib/chef/provider/service/debian.rb +2 -2
  149. data/lib/chef/provider/service/openbsd.rb +4 -4
  150. data/lib/chef/provider/service/redhat.rb +1 -1
  151. data/lib/chef/provider/service/upstart.rb +1 -1
  152. data/lib/chef/provider/service/windows.rb +1 -1
  153. data/lib/chef/provider/subversion.rb +2 -2
  154. data/lib/chef/provider/user/aix.rb +1 -1
  155. data/lib/chef/provider/user/dscl.rb +6 -6
  156. data/lib/chef/provider/user/linux.rb +3 -3
  157. data/lib/chef/provider/user/mac.rb +15 -11
  158. data/lib/chef/provider/windows_script.rb +87 -25
  159. data/lib/chef/provider/windows_task.rb +4 -2
  160. data/lib/chef/provider/yum_repository.rb +1 -1
  161. data/lib/chef/provider/zypper_repository.rb +31 -11
  162. data/lib/chef/resource.rb +27 -14
  163. data/lib/chef/resource/alternatives.rb +1 -1
  164. data/lib/chef/resource/apt_package.rb +1 -1
  165. data/lib/chef/resource/archive_file.rb +28 -8
  166. data/lib/chef/resource/bash.rb +0 -1
  167. data/lib/chef/resource/batch.rb +4 -2
  168. data/lib/chef/resource/build_essential.rb +2 -2
  169. data/lib/chef/resource/chef_client_scheduled_task.rb +14 -2
  170. data/lib/chef/resource/chef_gem.rb +57 -21
  171. data/lib/chef/resource/chef_handler.rb +2 -2
  172. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  173. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  174. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  175. data/lib/chef/resource/cron/cron.rb +46 -0
  176. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
  177. data/lib/chef/resource/cron_access.rb +13 -5
  178. data/lib/chef/resource/csh.rb +0 -1
  179. data/lib/chef/resource/dmg_package.rb +2 -2
  180. data/lib/chef/resource/execute.rb +480 -10
  181. data/lib/chef/resource/file.rb +10 -8
  182. data/lib/chef/resource/freebsd_package.rb +1 -1
  183. data/lib/chef/resource/gem_package.rb +35 -2
  184. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  185. data/lib/chef/resource/homebrew_package.rb +30 -1
  186. data/lib/chef/resource/homebrew_update.rb +107 -0
  187. data/lib/chef/resource/hostname.rb +7 -20
  188. data/lib/chef/resource/kernel_module.rb +14 -1
  189. data/lib/chef/resource/launchd.rb +1 -1
  190. data/lib/chef/resource/locale.rb +3 -3
  191. data/lib/chef/resource/lwrp_base.rb +1 -0
  192. data/lib/chef/resource/macos_userdefaults.rb +176 -56
  193. data/lib/chef/resource/mount.rb +1 -1
  194. data/lib/chef/resource/openssl_x509_certificate.rb +11 -14
  195. data/lib/chef/resource/openssl_x509_crl.rb +1 -2
  196. data/lib/chef/resource/perl.rb +0 -1
  197. data/lib/chef/resource/plist.rb +23 -4
  198. data/lib/chef/resource/powershell_script.rb +4 -2
  199. data/lib/chef/resource/python.rb +0 -1
  200. data/lib/chef/resource/remote_file.rb +26 -10
  201. data/lib/chef/resource/ruby.rb +0 -1
  202. data/lib/chef/resource/scm/git.rb +1 -1
  203. data/lib/chef/resource/service.rb +2 -2
  204. data/lib/chef/resource/ssh_known_hosts_entry.rb +16 -1
  205. data/lib/chef/resource/sudo.rb +30 -3
  206. data/lib/chef/resource/swap_file.rb +17 -0
  207. data/lib/chef/resource/template.rb +1 -1
  208. data/lib/chef/resource/timezone.rb +15 -0
  209. data/lib/chef/resource/user_ulimit.rb +1 -1
  210. data/lib/chef/resource/windows_ad_join.rb +30 -1
  211. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  212. data/lib/chef/resource/windows_auto_run.rb +11 -0
  213. data/lib/chef/resource/windows_certificate.rb +27 -1
  214. data/lib/chef/resource/windows_dfs_server.rb +1 -1
  215. data/lib/chef/resource/windows_dns_record.rb +17 -0
  216. data/lib/chef/resource/windows_firewall_profile.rb +197 -0
  217. data/lib/chef/resource/windows_font.rb +3 -3
  218. data/lib/chef/resource/windows_package.rb +1 -1
  219. data/lib/chef/resource/windows_pagefile.rb +2 -2
  220. data/lib/chef/resource/windows_script.rb +2 -16
  221. data/lib/chef/resource/windows_security_policy.rb +67 -36
  222. data/lib/chef/resource/windows_shortcut.rb +1 -2
  223. data/lib/chef/resource/windows_task.rb +10 -10
  224. data/lib/chef/resource/windows_user_privilege.rb +33 -10
  225. data/lib/chef/resource/yum_repository.rb +9 -9
  226. data/lib/chef/resource_inspector.rb +11 -4
  227. data/lib/chef/resources.rb +5 -2
  228. data/lib/chef/role.rb +1 -2
  229. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  230. data/lib/chef/search/query.rb +1 -1
  231. data/lib/chef/shell/ext.rb +1 -1
  232. data/lib/chef/shell/shell_session.rb +2 -0
  233. data/lib/chef/util/diff.rb +2 -3
  234. data/lib/chef/util/windows/net_user.rb +1 -1
  235. data/lib/chef/util/windows/volume.rb +1 -1
  236. data/lib/chef/version.rb +2 -2
  237. data/lib/chef/win32/api.rb +2 -2
  238. data/lib/chef/win32/api/error.rb +3 -1
  239. data/lib/chef/win32/api/file.rb +1 -1
  240. data/lib/chef/win32/api/net.rb +1 -0
  241. data/lib/chef/win32/file.rb +1 -1
  242. data/lib/chef/win32/mutex.rb +1 -1
  243. data/lib/chef/win32/net.rb +1 -0
  244. data/lib/chef/win32/registry.rb +3 -4
  245. data/lib/chef/win32/security.rb +1 -1
  246. data/lib/chef/win32/security/sid.rb +4 -4
  247. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  248. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  249. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  250. data/spec/functional/knife/configure_spec.rb +1 -1
  251. data/spec/functional/knife/ssh_spec.rb +5 -16
  252. data/spec/functional/resource/aix_service_spec.rb +9 -2
  253. data/spec/functional/resource/aixinit_service_spec.rb +1 -2
  254. data/spec/functional/resource/apt_package_spec.rb +0 -1
  255. data/spec/functional/resource/bash_spec.rb +3 -2
  256. data/spec/functional/resource/bff_spec.rb +1 -1
  257. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  258. data/spec/functional/resource/cron_spec.rb +20 -2
  259. data/spec/functional/resource/dnf_package_spec.rb +6 -3
  260. data/spec/functional/resource/execute_spec.rb +1 -1
  261. data/spec/functional/resource/git_spec.rb +29 -7
  262. data/spec/functional/resource/group_spec.rb +15 -3
  263. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  264. data/spec/functional/resource/insserv_spec.rb +3 -3
  265. data/spec/functional/resource/link_spec.rb +2 -5
  266. data/spec/functional/resource/mount_spec.rb +9 -1
  267. data/spec/functional/resource/msu_package_spec.rb +9 -3
  268. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  269. data/spec/functional/resource/remote_file_spec.rb +9 -15
  270. data/spec/functional/resource/rpm_spec.rb +1 -1
  271. data/spec/functional/resource/timezone_spec.rb +2 -0
  272. data/spec/functional/resource/windows_package_spec.rb +0 -1
  273. data/spec/functional/resource/windows_path_spec.rb +4 -0
  274. data/spec/functional/resource/windows_security_policy_spec.rb +0 -1
  275. data/spec/functional/resource/windows_service_spec.rb +4 -0
  276. data/spec/functional/resource/windows_task_spec.rb +16 -15
  277. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  278. data/spec/functional/resource/yum_package_spec.rb +4 -1
  279. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  280. data/spec/functional/run_lock_spec.rb +2 -1
  281. data/spec/functional/shell_spec.rb +5 -6
  282. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  283. data/spec/functional/version_spec.rb +1 -1
  284. data/spec/functional/win32/crypto_spec.rb +1 -1
  285. data/spec/integration/knife/config_list_profiles_spec.rb +30 -2
  286. data/spec/integration/knife/config_use_profile_spec.rb +55 -2
  287. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  288. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  289. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  290. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  291. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  292. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  293. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  294. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  295. data/spec/integration/recipes/notifies_spec.rb +1 -1
  296. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  297. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  298. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  299. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  300. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  301. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  302. data/spec/scripts/ssl-serve.rb +1 -1
  303. data/spec/spec_helper.rb +10 -4
  304. data/spec/support/chef_helpers.rb +2 -21
  305. data/spec/support/platform_helpers.rb +1 -3
  306. data/spec/support/platforms/win32/spec_service.rb +1 -1
  307. data/spec/support/shared/functional/execute_resource.rb +1 -1
  308. data/spec/support/shared/functional/file_resource.rb +0 -1
  309. data/spec/support/shared/functional/securable_resource.rb +1 -2
  310. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  311. data/spec/support/shared/functional/windows_script.rb +3 -3
  312. data/spec/support/shared/integration/knife_support.rb +2 -9
  313. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  314. data/spec/support/shared/unit/execute_resource.rb +1 -1
  315. data/spec/support/shared/unit/provider/file.rb +12 -8
  316. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  317. data/spec/unit/application/solo_spec.rb +4 -2
  318. data/spec/unit/application_spec.rb +11 -2
  319. data/spec/unit/chef_fs/config_spec.rb +2 -2
  320. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  321. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  322. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  323. data/spec/unit/client_spec.rb +4 -1
  324. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  325. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  326. data/spec/unit/data_bag_spec.rb +6 -3
  327. data/spec/unit/data_collector_spec.rb +1 -1
  328. data/spec/unit/decorator_spec.rb +23 -23
  329. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  330. data/spec/unit/environment_spec.rb +5 -1
  331. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  332. data/spec/unit/guard_interpreter_spec.rb +1 -1
  333. data/spec/unit/http/api_versions_spec.rb +1 -1
  334. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  335. data/spec/unit/json_compat_spec.rb +1 -1
  336. data/spec/unit/knife/bootstrap_spec.rb +5 -8
  337. data/spec/unit/knife/cookbook_download_spec.rb +2 -2
  338. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  339. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  340. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
  341. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  342. data/spec/unit/log/syslog_spec.rb +6 -10
  343. data/spec/unit/log/winevt_spec.rb +21 -13
  344. data/spec/unit/lwrp_spec.rb +9 -6
  345. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  346. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  347. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  348. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  349. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  350. data/spec/unit/mixin/securable_spec.rb +0 -1
  351. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  352. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  353. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  354. data/spec/unit/mixin/uris_spec.rb +1 -1
  355. data/spec/unit/mixin/user_context_spec.rb +1 -9
  356. data/spec/unit/mixin/which.rb +8 -0
  357. data/spec/unit/node/attribute_spec.rb +1 -1
  358. data/spec/unit/node_spec.rb +98 -11
  359. data/spec/unit/property_spec.rb +6 -6
  360. data/spec/unit/provider/batch_spec.rb +130 -0
  361. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  362. data/spec/unit/provider/cron_spec.rb +9 -49
  363. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  364. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  365. data/spec/unit/provider/execute_spec.rb +1 -8
  366. data/spec/unit/provider/git_spec.rb +3 -3
  367. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  368. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  369. data/spec/unit/provider/mdadm_spec.rb +1 -3
  370. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  371. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  372. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  373. data/spec/unit/provider/package/portage_spec.rb +2 -2
  374. data/spec/unit/provider/package/powershell_spec.rb +96 -87
  375. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  376. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  377. data/spec/unit/provider/package/snap_spec.rb +1 -1
  378. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  379. data/spec/unit/provider/package/windows_spec.rb +30 -53
  380. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  381. data/spec/unit/provider/script_spec.rb +20 -110
  382. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  383. data/spec/unit/provider/service/windows_spec.rb +2 -6
  384. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  385. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  386. data/spec/unit/provider/windows_env_spec.rb +5 -4
  387. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  388. data/spec/unit/provider_spec.rb +1 -0
  389. data/spec/unit/resource/archive_file_spec.rb +11 -2
  390. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  391. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  392. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  393. data/spec/unit/resource/cron_spec.rb +2 -2
  394. data/spec/unit/resource/execute_spec.rb +10 -0
  395. data/spec/unit/resource/file/verification_spec.rb +2 -1
  396. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  397. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  398. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  399. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  400. data/spec/unit/resource/timezone_spec.rb +1 -1
  401. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  402. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  403. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  404. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  405. data/spec/unit/resource/windows_package_spec.rb +1 -0
  406. data/spec/unit/resource/windows_task_spec.rb +1 -1
  407. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  408. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  409. data/spec/unit/resource_reporter_spec.rb +1 -1
  410. data/spec/unit/resource_spec.rb +84 -1
  411. data/spec/unit/role_spec.rb +23 -21
  412. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  413. data/spec/unit/run_lock_spec.rb +1 -1
  414. data/spec/unit/scan_access_control_spec.rb +1 -1
  415. data/spec/unit/util/backup_spec.rb +1 -1
  416. data/spec/unit/util/diff_spec.rb +1 -15
  417. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  418. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  419. data/spec/unit/util/selinux_spec.rb +2 -1
  420. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  421. data/spec/unit/win32/registry_spec.rb +1 -1
  422. data/spec/unit/win32/security_spec.rb +4 -3
  423. metadata +68 -40
  424. data/lib/chef/resource/cron.rb +0 -157
@@ -22,12 +22,8 @@ require "spec_helper"
22
22
  describe Chef::Provider::Service::Windows, "load_current_resource" do
23
23
  include_context "Win32"
24
24
 
25
- before(:all) do
26
- Chef::ReservedNames::Win32::Security = Class.new unless windows?
27
- end
28
-
29
- after(:all) do
30
- Chef::ReservedNames::Win32.send(:remove_const, :Security) unless windows?
25
+ before do
26
+ stub_const("Chef::ReservedNames::Win32::Security", Class.new) unless windows?
31
27
  end
32
28
 
33
29
  let(:logger) { double("Mixlib::Log::Child").as_null_object }
@@ -220,31 +220,35 @@ describe Chef::Provider::SystemdUnit do
220
220
  expect(current_resource.content).to eq(nil)
221
221
  end
222
222
 
223
- it "loads the user unit content if the file exists and user is set" do
224
- new_resource.user("joe")
225
- allow(File).to receive(:exist?)
226
- .with(unit_path_user)
227
- .and_return(true)
228
- allow(File).to receive(:read)
229
- .with(unit_path_user)
230
- .and_return(unit_content_string)
231
- expect(File).to receive(:exist?)
232
- .with(unit_path_user)
233
- expect(File).to receive(:read)
234
- .with(unit_path_user)
235
- provider.load_current_resource
236
- expect(current_resource.content).to eq(unit_content_string)
237
- end
223
+ # A password is required when specifying a user on Windows. Since systemd resources
224
+ # won't actually run on Windows, skip these tests rather than code a workaround.
225
+ unless windows?
226
+ it "loads the user unit content if the file exists and user is set" do
227
+ new_resource.user("joe")
228
+ allow(File).to receive(:exist?)
229
+ .with(unit_path_user)
230
+ .and_return(true)
231
+ allow(File).to receive(:read)
232
+ .with(unit_path_user)
233
+ .and_return(unit_content_string)
234
+ expect(File).to receive(:exist?)
235
+ .with(unit_path_user)
236
+ expect(File).to receive(:read)
237
+ .with(unit_path_user)
238
+ provider.load_current_resource
239
+ expect(current_resource.content).to eq(unit_content_string)
240
+ end
238
241
 
239
- it "does not load the user unit if the file does not exist and user is set" do
240
- new_resource.user("joe")
241
- allow(File).to receive(:exist?)
242
- .with(unit_path_user)
243
- .and_return(false)
244
- expect(File).to_not receive(:read)
245
- .with(unit_path_user)
246
- provider.load_current_resource
247
- expect(current_resource.content).to eq(nil)
242
+ it "does not load the user unit if the file does not exist and user is set" do
243
+ new_resource.user("joe")
244
+ allow(File).to receive(:exist?)
245
+ .with(unit_path_user)
246
+ .and_return(false)
247
+ expect(File).to_not receive(:read)
248
+ .with(unit_path_user)
249
+ provider.load_current_resource
250
+ expect(current_resource.content).to eq(nil)
251
+ end
248
252
  end
249
253
  end
250
254
 
@@ -30,7 +30,7 @@ describe Chef::Provider::User::Dscl do
30
30
  let(:salt) { nil }
31
31
  let(:iterations) { nil }
32
32
 
33
- let (:events) { Chef::EventDispatch::Dispatcher.new }
33
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
34
34
 
35
35
  let(:node) do
36
36
  Chef::Node.new.tap do |node|
@@ -39,7 +39,7 @@ describe Chef::Provider::User::Dscl do
39
39
  end
40
40
  end
41
41
 
42
- let (:run_context) { Chef::RunContext.new(node, {}, events) }
42
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
43
43
 
44
44
  let(:new_resource) do
45
45
  r = Chef::Resource::User::DsclUser.new("toor", run_context)
@@ -20,14 +20,15 @@ require "spec_helper"
20
20
 
21
21
  describe Chef::Provider::WindowsEnv, :windows_only do
22
22
 
23
+ let(:run_context) do
24
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
25
+ end
26
+
23
27
  before do
24
- @node = Chef::Node.new
25
- @events = Chef::EventDispatch::Dispatcher.new
26
- @run_context = Chef::RunContext.new(@node, {}, @events)
27
28
  @new_resource = Chef::Resource::WindowsEnv.new("FOO")
28
29
  @new_resource.value("bar")
29
30
  @new_resource.user("<System>")
30
- @provider = Chef::Provider::WindowsEnv.new(@new_resource, @run_context)
31
+ @provider = Chef::Provider::WindowsEnv.new(@new_resource, run_context)
31
32
  end
32
33
 
33
34
  it "assumes the key_name exists by default" do
@@ -28,12 +28,40 @@ describe Chef::Provider::ZypperRepository do
28
28
 
29
29
  # Output of the command:
30
30
  # => gpg --with-fingerprint [FILE]
31
- ZYPPER_GPG_FINGER = <<~EOF.freeze
31
+ ZYPPER_GPG_20 = <<~EOF.freeze
32
32
  pub 2048R/3DBDC284 2011-08-19 [expires: 2024-06-14]
33
33
  Key fingerprint = 573B FD6B 3D8F BC64 1079 A6AB ABF5 BD82 7BD9 BF62
34
34
  uid nginx signing key <signing-key@nginx.com>
35
35
  EOF
36
36
 
37
+ # Output of the command:
38
+ # => gpg --import-options import-show --dry-run --import --with-colons [FILE]
39
+ ZYPPER_GPG_22 = <<~EOF.freeze
40
+ pub:-:2048:1:ABF5BD827BD9BF62:1313747554:1718374819::-:::scSC::::::23::0:
41
+ fpr:::::::::573BFD6B3D8FBC641079A6ABABF5BD827BD9BF62:
42
+ uid:-::::1466086904::F18C4DBBFCB45099ABB59088DB6B252FA7E9FB41::nginx signing key <signing-key@nginx.com>::::::::::0:
43
+ gpg: Total number processed: 1
44
+ EOF
45
+
46
+ # Output of the command:
47
+ # -> gpg --version
48
+ ZYPPER_GPG_VERSION = <<~EOF.freeze
49
+ gpg (GnuPG) 2.2.20
50
+ libgcrypt 1.8.5
51
+ Copyright (C) 2020 Free Software Foundation, Inc.
52
+ License GPLv3+: GNU GPL version 3 or later <https://gnu.org/licenses/gpl.html>
53
+ This is free software: you are free to change and redistribute it.
54
+ There is NO WARRANTY, to the extent permitted by law.
55
+
56
+ Home: /Users/tsmith/.gnupg
57
+ Supported algorithms:
58
+ Pubkey: RSA, ELG, DSA, ECDH, ECDSA, EDDSA
59
+ Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
60
+ CAMELLIA128, CAMELLIA192, CAMELLIA256
61
+ Hash: SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
62
+ Compression: Uncompressed, ZIP, ZLIB, BZIP2
63
+ EOF
64
+
37
65
  let(:new_resource) { Chef::Resource::ZypperRepository.new("Nginx Repository") }
38
66
  let(:logger) { double("Mixlib::Log::Child").as_null_object }
39
67
  let(:provider) do
@@ -48,8 +76,16 @@ describe Chef::Provider::ZypperRepository do
48
76
  double("shell_out", stdout: ZYPPER_RPM_KEYS, exitstatus: 0, error?: false)
49
77
  end
50
78
 
51
- let(:gpg_finger) do
52
- double("shell_out", stdout: ZYPPER_GPG_FINGER, exitstatus: 0, error?: false)
79
+ let(:gpg_20) do
80
+ double("shell_out", stdout: ZYPPER_GPG_20, exitstatus: 0, error?: false)
81
+ end
82
+
83
+ let(:gpg_22) do
84
+ double("shell_out", stdout: ZYPPER_GPG_22, exitstatus: 0, error?: false)
85
+ end
86
+
87
+ let(:gpg_ver) do
88
+ double("shell_out", stdout: ZYPPER_GPG_VERSION, exitstatus: 0, error?: false)
53
89
  end
54
90
 
55
91
  it "responds to load_current_resource" do
@@ -96,24 +132,38 @@ describe Chef::Provider::ZypperRepository do
96
132
 
97
133
  describe "#key_installed?" do
98
134
  before do
99
- expect(provider).to receive(:shell_out).with("rpm -qa gpg-pubkey*").and_return(rpm_key_finger)
135
+ expect(provider).to receive(:shell_out).with("/bin/rpm -qa gpg-pubkey*").and_return(rpm_key_finger)
100
136
  end
101
137
 
102
138
  it "returns true if the key is installed" do
103
- expect(provider).to receive(:key_fingerprint).and_return("3dbdc284")
139
+ expect(provider).to receive(:short_key_id).and_return("3dbdc284")
104
140
  expect(provider.key_installed?("/foo/nginx.key")).to be_truthy
105
141
  end
106
142
 
107
143
  it "returns false if the key is not installed" do
108
- expect(provider).to receive(:key_fingerprint).and_return("BOGUS")
144
+ expect(provider).to receive(:short_key_id).and_return("BOGUS")
109
145
  expect(provider.key_installed?("/foo/nginx.key")).to be_falsey
110
146
  end
111
147
  end
112
148
 
113
- describe "#key_fingerprint" do
114
- it "returns the key's fingerprint" do
115
- expect(provider).to receive(:shell_out!).with("gpg --with-fingerprint /foo/nginx.key").and_return(gpg_finger)
116
- expect(provider.key_fingerprint("/foo/nginx.key")).to eq("3dbdc284")
149
+ describe "#gpg_version" do
150
+ it "returns the gpg version by shelling out to gpg" do
151
+ expect(provider).to receive(:shell_out!).with("gpg --version").and_return(gpg_ver)
152
+ expect(provider.gpg_version).to eq(Gem::Version.new("2.2.20"))
153
+ end
154
+ end
155
+
156
+ describe "#short_key_id" do
157
+ it "returns the short key ID via running a dry-run import on gpg 2.2+" do
158
+ expect(provider).to receive(:gpg_version).and_return(Gem::Version.new("2.2"))
159
+ expect(provider).to receive(:shell_out!).with("gpg --import-options import-show --dry-run --import --with-colons /foo/nginx.key").and_return(gpg_22)
160
+ expect(provider.short_key_id("/foo/nginx.key")).to eq("7bd9bf62")
161
+ end
162
+
163
+ it "returns the short key ID via --with-fingerpint on gpg < 2.2" do
164
+ expect(provider).to receive(:gpg_version).and_return(Gem::Version.new("2.0"))
165
+ expect(provider).to receive(:shell_out!).with("gpg --with-fingerprint /foo/nginx.key").and_return(gpg_20)
166
+ expect(provider.short_key_id("/foo/nginx.key")).to eq("3dbdc284")
117
167
  end
118
168
  end
119
169
 
@@ -20,6 +20,7 @@ require "spec_helper"
20
20
 
21
21
  class NoWhyrunDemonstrator < Chef::Provider
22
22
  attr_reader :system_state_altered
23
+
23
24
  def whyrun_supported?
24
25
  false
25
26
  end
@@ -18,8 +18,11 @@
18
18
  require "spec_helper"
19
19
 
20
20
  describe Chef::Resource::ArchiveFile do
21
-
22
- let(:resource) { Chef::Resource::ArchiveFile.new("foo") }
21
+ let(:node) { Chef::Node.new }
22
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
23
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
24
+ let(:resource) { Chef::Resource::ArchiveFile.new("foo", run_context) }
25
+ let(:provider) { resource.provider_for_action(:extract) }
23
26
 
24
27
  it "has a resource name of :archive_file" do
25
28
  expect(resource.resource_name).to eql(:archive_file)
@@ -41,6 +44,12 @@ describe Chef::Resource::ArchiveFile do
41
44
  expect(resource.mode).to eql("755")
42
45
  end
43
46
 
47
+ it "mode property throws a deprecation warning if Integers are passed" do
48
+ expect(Chef::Log).to receive(:deprecation)
49
+ resource.mode 755
50
+ provider.define_resource_requirements
51
+ end
52
+
44
53
  it "options property defaults to [:time]" do
45
54
  expect(resource.options).to eql([:time])
46
55
  end
@@ -76,13 +76,19 @@ describe Chef::Resource::ChefClientCron do
76
76
  allow(provider).to receive(:splay_sleep_time).and_return("123")
77
77
  end
78
78
 
79
+ let(:root_path) { windows? ? "C:\\chef/client.rb" : "/etc/chef/client.rb" }
80
+
79
81
  it "creates a valid command if using all default properties" do
80
- expect(provider.cron_command).to eql("/bin/sleep 123; /opt/chef/bin/chef-client -c /etc/chef/client.rb -L /var/log/chef/client.log")
82
+ expect(provider.cron_command).to eql(
83
+ "/bin/sleep 123; /opt/chef/bin/chef-client -c #{root_path} -L /var/log/chef/client.log"
84
+ )
81
85
  end
82
86
 
83
87
  it "uses daemon_options if set" do
84
88
  resource.daemon_options ["--foo 1", "--bar 2"]
85
- expect(provider.cron_command).to eql("/bin/sleep 123; /opt/chef/bin/chef-client --foo 1 --bar 2 -c /etc/chef/client.rb -L /var/log/chef/client.log")
89
+ expect(provider.cron_command).to eql(
90
+ "/bin/sleep 123; /opt/chef/bin/chef-client --foo 1 --bar 2 -c #{root_path} -L /var/log/chef/client.log"
91
+ )
86
92
  end
87
93
 
88
94
  it "uses custom config dir if set" do
@@ -93,27 +99,37 @@ describe Chef::Resource::ChefClientCron do
93
99
  it "uses custom log files / paths if set" do
94
100
  resource.log_file_name "my-client.log"
95
101
  resource.log_directory "/var/log/my-chef/"
96
- expect(provider.cron_command).to eql("/bin/sleep 123; /opt/chef/bin/chef-client -c /etc/chef/client.rb -L /var/log/my-chef/my-client.log")
102
+ expect(provider.cron_command).to eql(
103
+ "/bin/sleep 123; /opt/chef/bin/chef-client -c #{root_path} -L /var/log/my-chef/my-client.log"
104
+ )
97
105
  end
98
106
 
99
107
  it "uses mailto if set" do
100
108
  resource.mailto "bob@example.com"
101
- expect(provider.cron_command).to eql("/bin/sleep 123; /opt/chef/bin/chef-client -c /etc/chef/client.rb -L /var/log/chef/client.log || echo \"Chef Infra Client execution failed\"")
109
+ expect(provider.cron_command).to eql(
110
+ "/bin/sleep 123; /opt/chef/bin/chef-client -c #{root_path} -L /var/log/chef/client.log || echo \"Chef Infra Client execution failed\""
111
+ )
102
112
  end
103
113
 
104
114
  it "uses custom chef-client binary if set" do
105
115
  resource.chef_binary_path "/usr/local/bin/chef-client"
106
- expect(provider.cron_command).to eql("/bin/sleep 123; /usr/local/bin/chef-client -c /etc/chef/client.rb -L /var/log/chef/client.log")
116
+ expect(provider.cron_command).to eql(
117
+ "/bin/sleep 123; /usr/local/bin/chef-client -c #{root_path} -L /var/log/chef/client.log"
118
+ )
107
119
  end
108
120
 
109
121
  it "appends to the log file appending if set to false" do
110
122
  resource.append_log_file false
111
- expect(provider.cron_command).to eql("/bin/sleep 123; /opt/chef/bin/chef-client -c /etc/chef/client.rb > /var/log/chef/client.log 2>&1")
123
+ expect(provider.cron_command).to eql(
124
+ "/bin/sleep 123; /opt/chef/bin/chef-client -c #{root_path} > /var/log/chef/client.log 2>&1"
125
+ )
112
126
  end
113
127
 
114
128
  it "sets the license acceptance flag if set" do
115
129
  resource.accept_chef_license true
116
- expect(provider.cron_command).to eql("/bin/sleep 123; /opt/chef/bin/chef-client -c /etc/chef/client.rb --chef-license accept -L /var/log/chef/client.log")
130
+ expect(provider.cron_command).to eql(
131
+ "/bin/sleep 123; /opt/chef/bin/chef-client -c #{root_path} --chef-license accept -L /var/log/chef/client.log"
132
+ )
117
133
  end
118
134
  end
119
135
  end
@@ -43,16 +43,26 @@ describe Chef::Resource::ChefClientScheduledTask do
43
43
  expect(resource.frequency_modifier).to eql(10)
44
44
  end
45
45
 
46
+ it "expects default frequency modifier to be 30 when frequency is set to 'minute'" do
47
+ resource.frequency "minute"
48
+ expect(resource.frequency_modifier).to eql(30)
49
+ end
50
+
51
+ it "expects default frequency modifier to be 1 when frequency is set to 'daily'" do
52
+ resource.frequency "daily"
53
+ expect(resource.frequency_modifier).to eql(1)
54
+ end
55
+
46
56
  it "validates the start_time property input" do
47
57
  expect { resource.start_time("8:00 am") }.to raise_error(Chef::Exceptions::ValidationFailed)
48
58
  expect { resource.start_time("8:00") }.to raise_error(Chef::Exceptions::ValidationFailed)
49
- expect { resource.start_time("08:00") }.not_to raise_error(Chef::Exceptions::ValidationFailed)
59
+ expect { resource.start_time("08:00") }.not_to raise_error
50
60
  end
51
61
 
52
62
  it "validates the start_date property input" do
53
63
  expect { resource.start_date("2/1/20") }.to raise_error(Chef::Exceptions::ValidationFailed)
54
64
  expect { resource.start_date("02/01/20") }.to raise_error(Chef::Exceptions::ValidationFailed)
55
- expect { resource.start_date("02/01/2020") }.not_to raise_error(Chef::Exceptions::ValidationFailed)
65
+ expect { resource.start_date("02/01/2020") }.not_to raise_error
56
66
  end
57
67
 
58
68
  it "raises an error if frequency_modifier is not a positive number" do
@@ -70,12 +80,12 @@ describe Chef::Resource::ChefClientScheduledTask do
70
80
 
71
81
  describe "#client_cmd" do
72
82
  it "creates a valid command if using all default properties" do
73
- expect(provider.client_cmd).to eql("C:/opscode/chef/bin/chef-client -L /etc/chef/log/client.log -c /etc/chef/client.rb")
83
+ expect(provider.client_cmd).to eql("C:/opscode/chef/bin/chef-client -L /etc/chef/log/client.log -c /etc/chef/client.rb") | eql("C:/opscode/chef/bin/chef-client -L C:\\chef/log/client.log -c C:\\chef/client.rb")
74
84
  end
75
85
 
76
86
  it "uses daemon_options if set" do
77
87
  resource.daemon_options ["--foo 1", "--bar 2"]
78
- expect(provider.client_cmd).to eql("C:/opscode/chef/bin/chef-client -L /etc/chef/log/client.log -c /etc/chef/client.rb --foo 1 --bar 2")
88
+ expect(provider.client_cmd).to eql("C:/opscode/chef/bin/chef-client -L /etc/chef/log/client.log -c /etc/chef/client.rb --foo 1 --bar 2") | eql("C:/opscode/chef/bin/chef-client -L C:\\chef/log/client.log -c C:\\chef/client.rb --foo 1 --bar 2")
79
89
  end
80
90
 
81
91
  it "uses custom config dir if set" do
@@ -86,17 +96,17 @@ describe Chef::Resource::ChefClientScheduledTask do
86
96
  it "uses custom log files / paths if set" do
87
97
  resource.log_file_name "my-client.log"
88
98
  resource.log_directory "C:/foo/bar"
89
- expect(provider.client_cmd).to eql("C:/opscode/chef/bin/chef-client -L C:/foo/bar/my-client.log -c /etc/chef/client.rb")
99
+ expect(provider.client_cmd).to eql("C:/opscode/chef/bin/chef-client -L C:/foo/bar/my-client.log -c /etc/chef/client.rb") | eql("C:/opscode/chef/bin/chef-client -L C:/foo/bar/my-client.log -c C:\\chef/client.rb")
90
100
  end
91
101
 
92
102
  it "uses custom chef-client binary if set" do
93
103
  resource.chef_binary_path "C:/foo/bar/chef-client"
94
- expect(provider.client_cmd).to eql("C:/foo/bar/chef-client -L /etc/chef/log/client.log -c /etc/chef/client.rb")
104
+ expect(provider.client_cmd).to eql("C:/foo/bar/chef-client -L /etc/chef/log/client.log -c /etc/chef/client.rb") | eql("C:/foo/bar/chef-client -L C:\\chef/log/client.log -c C:\\chef/client.rb")
95
105
  end
96
106
 
97
107
  it "sets the license acceptance flag if set" do
98
108
  resource.accept_chef_license true
99
- expect(provider.client_cmd).to eql("C:/opscode/chef/bin/chef-client -L /etc/chef/log/client.log -c /etc/chef/client.rb --chef-license accept")
109
+ expect(provider.client_cmd).to eql("C:/opscode/chef/bin/chef-client -L /etc/chef/log/client.log -c /etc/chef/client.rb --chef-license accept") | eql("C:/opscode/chef/bin/chef-client -L C:\\chef/log/client.log -c C:\\chef/client.rb --chef-license accept")
100
110
  end
101
111
  end
102
112
  end
@@ -43,13 +43,16 @@ describe Chef::Resource::ChefClientSystemdTimer do
43
43
  end
44
44
 
45
45
  describe "#chef_client_cmd" do
46
+
47
+ let(:root_path) { windows? ? "C:\\chef/client.rb" : "/etc/chef/client.rb" }
48
+
46
49
  it "creates a valid command if using all default properties" do
47
- expect(provider.chef_client_cmd).to eql("/opt/chef/bin/chef-client -c /etc/chef/client.rb")
50
+ expect(provider.chef_client_cmd).to eql("/opt/chef/bin/chef-client -c #{root_path}")
48
51
  end
49
52
 
50
53
  it "uses daemon_options if set" do
51
54
  resource.daemon_options ["--foo 1", "--bar 2"]
52
- expect(provider.chef_client_cmd).to eql("/opt/chef/bin/chef-client --foo 1 --bar 2 -c /etc/chef/client.rb")
55
+ expect(provider.chef_client_cmd).to eql("/opt/chef/bin/chef-client --foo 1 --bar 2 -c #{root_path}")
53
56
  end
54
57
 
55
58
  it "uses custom config dir if set" do
@@ -59,12 +62,12 @@ describe Chef::Resource::ChefClientSystemdTimer do
59
62
 
60
63
  it "uses custom chef-client binary if set" do
61
64
  resource.chef_binary_path "/usr/local/bin/chef-client"
62
- expect(provider.chef_client_cmd).to eql("/usr/local/bin/chef-client -c /etc/chef/client.rb")
65
+ expect(provider.chef_client_cmd).to eql("/usr/local/bin/chef-client -c #{root_path}")
63
66
  end
64
67
 
65
68
  it "sets the license acceptance flag if set" do
66
69
  resource.accept_chef_license true
67
- expect(provider.chef_client_cmd).to eql("/opt/chef/bin/chef-client --chef-license accept -c /etc/chef/client.rb")
70
+ expect(provider.chef_client_cmd).to eql("/opt/chef/bin/chef-client --chef-license accept -c #{root_path}")
68
71
  end
69
72
  end
70
73
  end
@@ -132,10 +132,10 @@ describe Chef::Resource::Cron do
132
132
 
133
133
  describe "weekday" do
134
134
  it "rejects any weekday over 7" do
135
- expect { resource.weekday "8" }.to raise_error(RangeError)
135
+ expect { resource.weekday "8" }.to raise_error(Chef::Exceptions::ValidationFailed)
136
136
  end
137
137
  it "rejects any symbols which don't represent day of week" do
138
- expect { resource.weekday :foo }.to raise_error(RangeError)
138
+ expect { resource.weekday :foo }.to raise_error(Chef::Exceptions::ValidationFailed)
139
139
  end
140
140
  end
141
141
 
@@ -63,6 +63,16 @@ describe Chef::Resource::Execute do
63
63
  expect(identity[:user]).to eq("user")
64
64
  end
65
65
  end
66
+
67
+ context "when username is passed as an integer" do
68
+ let(:username) { 499 }
69
+
70
+ it "correctly parses the user and domain" do
71
+ identity = resource.qualify_user(username, password, domain)
72
+ expect(identity[:domain]).to eq(nil)
73
+ expect(identity[:user]).to eq(499)
74
+ end
75
+ end
66
76
  end
67
77
 
68
78
  shared_examples_for "it received valid credentials" do