chef 17.10.95 → 18.0.169

Sign up to get free protection for your applications and to get access to all the features.
Files changed (313) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +16 -8
  3. data/README.md +7 -7
  4. data/Rakefile +3 -22
  5. data/{chef-universal-mingw32.gemspec → chef-universal-mingw-ucrt.gemspec} +8 -7
  6. data/chef.gemspec +14 -7
  7. data/lib/chef/api_client_v1.rb +9 -1
  8. data/lib/chef/application/exit_code.rb +3 -3
  9. data/lib/chef/client.rb +169 -17
  10. data/lib/chef/compliance/input.rb +1 -1
  11. data/lib/chef/compliance/profile.rb +1 -1
  12. data/lib/chef/compliance/profile_collection.rb +0 -1
  13. data/lib/chef/compliance/waiver.rb +1 -1
  14. data/lib/chef/cookbook/syntax_check.rb +2 -2
  15. data/lib/chef/dsl/reader_helpers.rb +1 -1
  16. data/lib/chef/dsl/rest_resource.rb +77 -0
  17. data/lib/chef/event_dispatch/base.rb +3 -0
  18. data/lib/chef/exceptions.rb +8 -0
  19. data/lib/chef/http/authenticator.rb +170 -3
  20. data/lib/chef/http/ssl_policies.rb +3 -3
  21. data/lib/chef/mixin/checksum.rb +0 -6
  22. data/lib/chef/mixin/powershell_exec.rb +5 -28
  23. data/lib/chef/node/mixin/immutablize_array.rb +1 -0
  24. data/lib/chef/property.rb +5 -3
  25. data/lib/chef/provider/file.rb +2 -2
  26. data/lib/chef/provider/group/windows.rb +1 -1
  27. data/lib/chef/provider/http_request.rb +11 -9
  28. data/lib/chef/provider/mount/linux.rb +5 -0
  29. data/lib/chef/provider/mount/mount.rb +8 -0
  30. data/lib/chef/provider/mount/windows.rb +1 -1
  31. data/lib/chef/provider/package/chocolatey.rb +1 -18
  32. data/lib/chef/provider/package/rubygems.rb +1 -1
  33. data/lib/chef/provider/package/windows/msi.rb +2 -2
  34. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  35. data/lib/chef/provider/package/windows.rb +1 -1
  36. data/lib/chef/provider/package/zypper/version.rb +60 -0
  37. data/lib/chef/provider/package/zypper.rb +47 -3
  38. data/lib/chef/provider/service/windows.rb +1 -1
  39. data/lib/chef/provider/user/aix.rb +5 -0
  40. data/lib/chef/provider/user/linux.rb +29 -0
  41. data/lib/chef/provider/user/mac.rb +1 -1
  42. data/lib/chef/provider/user.rb +46 -14
  43. data/lib/chef/provider.rb +1 -1
  44. data/lib/chef/recipe.rb +1 -1
  45. data/lib/chef/resource/_rest_resource.rb +389 -0
  46. data/lib/chef/resource/alternatives.rb +0 -1
  47. data/lib/chef/resource/apt_package.rb +0 -1
  48. data/lib/chef/resource/apt_preference.rb +0 -1
  49. data/lib/chef/resource/apt_repository.rb +0 -1
  50. data/lib/chef/resource/apt_update.rb +0 -1
  51. data/lib/chef/resource/archive_file.rb +0 -1
  52. data/lib/chef/resource/bash.rb +0 -1
  53. data/lib/chef/resource/batch.rb +0 -1
  54. data/lib/chef/resource/bff_package.rb +0 -1
  55. data/lib/chef/resource/breakpoint.rb +0 -1
  56. data/lib/chef/resource/build_essential.rb +0 -1
  57. data/lib/chef/resource/cab_package.rb +0 -1
  58. data/lib/chef/resource/chef_client_config.rb +12 -14
  59. data/lib/chef/resource/chef_client_cron.rb +1 -2
  60. data/lib/chef/resource/chef_client_launchd.rb +2 -2
  61. data/lib/chef/resource/chef_client_scheduled_task.rb +3 -3
  62. data/lib/chef/resource/chef_client_systemd_timer.rb +0 -1
  63. data/lib/chef/resource/chef_client_trusted_certificate.rb +0 -1
  64. data/lib/chef/resource/chef_gem.rb +0 -1
  65. data/lib/chef/resource/chef_handler.rb +0 -1
  66. data/lib/chef/resource/chef_sleep.rb +1 -3
  67. data/lib/chef/resource/chef_vault_secret.rb +0 -1
  68. data/lib/chef/resource/chocolatey_config.rb +0 -1
  69. data/lib/chef/resource/chocolatey_feature.rb +0 -1
  70. data/lib/chef/resource/chocolatey_package.rb +0 -1
  71. data/lib/chef/resource/chocolatey_source.rb +0 -1
  72. data/lib/chef/resource/cookbook_file.rb +0 -1
  73. data/lib/chef/resource/cron/_cron_shared.rb +0 -1
  74. data/lib/chef/resource/cron/cron.rb +0 -1
  75. data/lib/chef/resource/cron/cron_d.rb +15 -1
  76. data/lib/chef/resource/cron_access.rb +0 -1
  77. data/lib/chef/resource/csh.rb +0 -1
  78. data/lib/chef/resource/directory.rb +0 -1
  79. data/lib/chef/resource/dmg_package.rb +0 -1
  80. data/lib/chef/resource/dnf_package.rb +0 -1
  81. data/lib/chef/resource/dpkg_package.rb +0 -1
  82. data/lib/chef/resource/dsc_resource.rb +0 -1
  83. data/lib/chef/resource/dsc_script.rb +0 -1
  84. data/lib/chef/resource/execute.rb +0 -1
  85. data/lib/chef/resource/file.rb +0 -1
  86. data/lib/chef/resource/freebsd_package.rb +0 -1
  87. data/lib/chef/resource/gem_package.rb +0 -1
  88. data/lib/chef/resource/group.rb +25 -2
  89. data/lib/chef/resource/habitat/habitat_package.rb +0 -1
  90. data/lib/chef/resource/habitat/habitat_sup.rb +6 -7
  91. data/lib/chef/resource/habitat/habitat_sup_windows.rb +1 -1
  92. data/lib/chef/resource/habitat_config.rb +0 -1
  93. data/lib/chef/resource/habitat_install.rb +0 -1
  94. data/lib/chef/resource/habitat_service.rb +0 -1
  95. data/lib/chef/resource/habitat_user_toml.rb +0 -1
  96. data/lib/chef/resource/homebrew_cask.rb +0 -1
  97. data/lib/chef/resource/homebrew_package.rb +0 -1
  98. data/lib/chef/resource/homebrew_tap.rb +0 -1
  99. data/lib/chef/resource/homebrew_update.rb +0 -2
  100. data/lib/chef/resource/hostname.rb +0 -1
  101. data/lib/chef/resource/http_request.rb +0 -1
  102. data/lib/chef/resource/ifconfig.rb +0 -1
  103. data/lib/chef/resource/inspec_input.rb +0 -1
  104. data/lib/chef/resource/inspec_waiver.rb +0 -1
  105. data/lib/chef/resource/inspec_waiver_file_entry.rb +2 -3
  106. data/lib/chef/resource/ips_package.rb +0 -1
  107. data/lib/chef/resource/kernel_module.rb +0 -1
  108. data/lib/chef/resource/ksh.rb +0 -1
  109. data/lib/chef/resource/launchd.rb +0 -1
  110. data/lib/chef/resource/link.rb +0 -1
  111. data/lib/chef/resource/locale.rb +2 -6
  112. data/lib/chef/resource/log.rb +0 -1
  113. data/lib/chef/resource/lwrp_base.rb +0 -4
  114. data/lib/chef/resource/macos_userdefaults.rb +5 -10
  115. data/lib/chef/resource/macosx_service.rb +0 -1
  116. data/lib/chef/resource/macports_package.rb +0 -1
  117. data/lib/chef/resource/mdadm.rb +0 -1
  118. data/lib/chef/resource/mount.rb +0 -1
  119. data/lib/chef/resource/msu_package.rb +0 -1
  120. data/lib/chef/resource/notify_group.rb +0 -2
  121. data/lib/chef/resource/ohai.rb +0 -1
  122. data/lib/chef/resource/ohai_hint.rb +0 -1
  123. data/lib/chef/resource/openbsd_package.rb +0 -1
  124. data/lib/chef/resource/openssl_dhparam.rb +0 -2
  125. data/lib/chef/resource/openssl_ec_private_key.rb +0 -2
  126. data/lib/chef/resource/openssl_ec_public_key.rb +0 -2
  127. data/lib/chef/resource/openssl_rsa_private_key.rb +0 -2
  128. data/lib/chef/resource/openssl_rsa_public_key.rb +0 -2
  129. data/lib/chef/resource/openssl_x509_certificate.rb +0 -2
  130. data/lib/chef/resource/openssl_x509_crl.rb +0 -2
  131. data/lib/chef/resource/openssl_x509_request.rb +0 -2
  132. data/lib/chef/resource/osx_profile.rb +0 -1
  133. data/lib/chef/resource/package.rb +0 -1
  134. data/lib/chef/resource/pacman_package.rb +0 -1
  135. data/lib/chef/resource/paludis_package.rb +0 -1
  136. data/lib/chef/resource/perl.rb +0 -1
  137. data/lib/chef/resource/plist.rb +7 -3
  138. data/lib/chef/resource/portage_package.rb +0 -1
  139. data/lib/chef/resource/powershell_package.rb +0 -1
  140. data/lib/chef/resource/powershell_package_source.rb +0 -1
  141. data/lib/chef/resource/powershell_script.rb +0 -1
  142. data/lib/chef/resource/python.rb +0 -1
  143. data/lib/chef/resource/reboot.rb +0 -1
  144. data/lib/chef/resource/registry_key.rb +0 -1
  145. data/lib/chef/resource/remote_directory.rb +0 -1
  146. data/lib/chef/resource/remote_file.rb +0 -1
  147. data/lib/chef/resource/rhsm_errata.rb +0 -1
  148. data/lib/chef/resource/rhsm_errata_level.rb +0 -1
  149. data/lib/chef/resource/rhsm_register.rb +0 -3
  150. data/lib/chef/resource/rhsm_repo.rb +0 -1
  151. data/lib/chef/resource/rhsm_subscription.rb +0 -1
  152. data/lib/chef/resource/route.rb +0 -1
  153. data/lib/chef/resource/rpm_package.rb +0 -1
  154. data/lib/chef/resource/ruby.rb +0 -1
  155. data/lib/chef/resource/ruby_block.rb +0 -1
  156. data/lib/chef/resource/scm/_scm.rb +0 -2
  157. data/lib/chef/resource/scm/git.rb +0 -2
  158. data/lib/chef/resource/scm/subversion.rb +0 -2
  159. data/lib/chef/resource/script.rb +0 -1
  160. data/lib/chef/resource/selinux/common_helpers.rb +47 -0
  161. data/lib/chef/resource/selinux/selinux_debian.erb +18 -0
  162. data/lib/chef/resource/selinux/selinux_default.erb +15 -0
  163. data/lib/chef/resource/selinux_boolean.rb +101 -0
  164. data/lib/chef/resource/selinux_fcontext.rb +160 -0
  165. data/lib/chef/resource/selinux_install.rb +107 -0
  166. data/lib/chef/resource/selinux_module.rb +143 -0
  167. data/lib/chef/resource/selinux_permissive.rb +64 -0
  168. data/lib/chef/resource/selinux_port.rb +118 -0
  169. data/lib/chef/resource/selinux_state.rb +166 -0
  170. data/lib/chef/resource/service.rb +0 -1
  171. data/lib/chef/resource/smartos_package.rb +0 -1
  172. data/lib/chef/resource/snap_package.rb +0 -1
  173. data/lib/chef/resource/solaris_package.rb +0 -1
  174. data/lib/chef/resource/ssh_known_hosts_entry.rb +0 -1
  175. data/lib/chef/resource/sudo.rb +0 -1
  176. data/lib/chef/resource/support/client.erb +2 -2
  177. data/lib/chef/resource/swap_file.rb +0 -1
  178. data/lib/chef/resource/sysctl.rb +1 -2
  179. data/lib/chef/resource/systemd_unit.rb +0 -1
  180. data/lib/chef/resource/template.rb +0 -1
  181. data/lib/chef/resource/timezone.rb +0 -1
  182. data/lib/chef/resource/user/aix_user.rb +0 -1
  183. data/lib/chef/resource/user/linux_user.rb +0 -1
  184. data/lib/chef/resource/user/mac_user.rb +0 -1
  185. data/lib/chef/resource/user/pw_user.rb +0 -1
  186. data/lib/chef/resource/user/solaris_user.rb +0 -1
  187. data/lib/chef/resource/user/windows_user.rb +0 -1
  188. data/lib/chef/resource/user.rb +10 -1
  189. data/lib/chef/resource/user_ulimit.rb +0 -1
  190. data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -1
  191. data/lib/chef/resource/windows_ad_join.rb +0 -2
  192. data/lib/chef/resource/windows_audit_policy.rb +0 -2
  193. data/lib/chef/resource/windows_auto_run.rb +0 -1
  194. data/lib/chef/resource/windows_defender.rb +0 -1
  195. data/lib/chef/resource/windows_defender_exclusion.rb +0 -1
  196. data/lib/chef/resource/windows_dfs_folder.rb +0 -1
  197. data/lib/chef/resource/windows_dfs_namespace.rb +0 -1
  198. data/lib/chef/resource/windows_dfs_server.rb +0 -1
  199. data/lib/chef/resource/windows_dns_record.rb +0 -1
  200. data/lib/chef/resource/windows_dns_zone.rb +0 -1
  201. data/lib/chef/resource/windows_env.rb +0 -1
  202. data/lib/chef/resource/windows_feature.rb +0 -1
  203. data/lib/chef/resource/windows_feature_dism.rb +0 -1
  204. data/lib/chef/resource/windows_feature_powershell.rb +0 -1
  205. data/lib/chef/resource/windows_firewall_profile.rb +0 -2
  206. data/lib/chef/resource/windows_firewall_rule.rb +0 -1
  207. data/lib/chef/resource/windows_font.rb +2 -3
  208. data/lib/chef/resource/windows_package.rb +0 -1
  209. data/lib/chef/resource/windows_pagefile.rb +0 -2
  210. data/lib/chef/resource/windows_path.rb +0 -1
  211. data/lib/chef/resource/windows_printer.rb +0 -1
  212. data/lib/chef/resource/windows_printer_port.rb +0 -1
  213. data/lib/chef/resource/windows_script.rb +0 -2
  214. data/lib/chef/resource/windows_security_policy.rb +0 -1
  215. data/lib/chef/resource/windows_service.rb +0 -1
  216. data/lib/chef/resource/windows_share.rb +0 -1
  217. data/lib/chef/resource/windows_shortcut.rb +1 -2
  218. data/lib/chef/resource/windows_task.rb +0 -1
  219. data/lib/chef/resource/windows_uac.rb +0 -1
  220. data/lib/chef/resource/windows_update_settings.rb +0 -1
  221. data/lib/chef/resource/windows_user_privilege.rb +0 -1
  222. data/lib/chef/resource/windows_workgroup.rb +0 -1
  223. data/lib/chef/resource/yum_package.rb +0 -1
  224. data/lib/chef/resource/yum_repository.rb +0 -1
  225. data/lib/chef/resource/zypper_package.rb +0 -1
  226. data/lib/chef/resource/zypper_repository.rb +0 -1
  227. data/lib/chef/resource.rb +12 -5
  228. data/lib/chef/resources.rb +7 -0
  229. data/lib/chef/run_context.rb +3 -3
  230. data/lib/chef/secret_fetcher/azure_key_vault.rb +3 -3
  231. data/lib/chef/version.rb +1 -1
  232. data/lib/chef/win32/handle.rb +6 -7
  233. data/lib/chef/win32/registry.rb +7 -3
  234. data/spec/data/rubygems.org/sexp_processor-info +2 -1
  235. data/spec/data/trusted_certs/example.crt +20 -29
  236. data/spec/data/trusted_certs/example_no_cn.crt +34 -30
  237. data/spec/data/trusted_certs/opscode.pem +54 -33
  238. data/spec/functional/resource/chocolatey_package_spec.rb +20 -32
  239. data/spec/functional/resource/dsc_script_spec.rb +1 -1
  240. data/spec/functional/resource/group_spec.rb +10 -6
  241. data/spec/functional/resource/link_spec.rb +8 -8
  242. data/spec/functional/resource/macos_userdefaults_spec.rb +4 -4
  243. data/spec/functional/resource/plist_spec.rb +25 -0
  244. data/spec/functional/resource/user/linux_user_spec.rb +127 -0
  245. data/spec/functional/resource/windows_certificate_spec.rb +1 -26
  246. data/spec/functional/resource/windows_font_spec.rb +12 -9
  247. data/spec/functional/resource/yum_package_spec.rb +1 -1
  248. data/spec/functional/resource/zypper_package_spec.rb +12 -0
  249. data/spec/functional/shell_spec.rb +1 -2
  250. data/spec/functional/version_spec.rb +1 -1
  251. data/spec/integration/client/client_spec.rb +82 -3
  252. data/spec/integration/client/exit_code_spec.rb +1 -1
  253. data/spec/integration/client/ipv6_spec.rb +1 -1
  254. data/spec/integration/compliance/compliance_spec.rb +1 -1
  255. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  256. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  257. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  258. data/spec/integration/recipes/notifies_spec.rb +1 -1
  259. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  260. data/spec/integration/recipes/remote_directory.rb +1 -1
  261. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  262. data/spec/integration/recipes/use_partial_spec.rb +2 -1
  263. data/spec/integration/solo/solo_spec.rb +2 -2
  264. data/spec/spec_helper.rb +1 -0
  265. data/spec/support/platform_helpers.rb +4 -0
  266. data/spec/support/ruby_installer.rb +1 -1
  267. data/spec/support/shared/functional/windows_script.rb +2 -2
  268. data/spec/unit/application/client_spec.rb +0 -10
  269. data/spec/unit/client_spec.rb +57 -8
  270. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +1 -1
  271. data/spec/unit/cookbook/syntax_check_spec.rb +3 -0
  272. data/spec/unit/http/authenticator_spec.rb +68 -0
  273. data/spec/unit/mixin/checksum_spec.rb +0 -28
  274. data/spec/unit/mixin/powershell_exec_spec.rb +5 -5
  275. data/spec/unit/platform/query_helpers_spec.rb +2 -17
  276. data/spec/unit/provider/http_request_spec.rb +60 -72
  277. data/spec/unit/provider/mount/linux_spec.rb +10 -0
  278. data/spec/unit/provider/package/chocolatey_spec.rb +3 -19
  279. data/spec/unit/provider/package/rubygems_spec.rb +1 -1
  280. data/spec/unit/provider/package/zypper_spec.rb +32 -0
  281. data/spec/unit/provider/user/linux_spec.rb +51 -11
  282. data/spec/unit/provider/user_spec.rb +24 -6
  283. data/spec/unit/resource/archive_file_spec.rb +1 -1
  284. data/spec/unit/resource/chef_client_cron_spec.rb +5 -0
  285. data/spec/unit/resource/chef_client_launchd_spec.rb +5 -0
  286. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +5 -0
  287. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +1 -1
  288. data/spec/unit/resource/cron_d_spec.rb +37 -1
  289. data/spec/unit/resource/macos_user_defaults_spec.rb +4 -4
  290. data/spec/unit/resource/rest_resource_spec.rb +381 -0
  291. data/spec/unit/resource/selinux_boolean_spec.rb +92 -0
  292. data/spec/unit/resource/selinux_fcontext_spec.rb +65 -0
  293. data/spec/unit/resource/selinux_install_spec.rb +60 -0
  294. data/spec/unit/resource/selinux_module_spec.rb +55 -0
  295. data/spec/unit/resource/selinux_permissive_spec.rb +39 -0
  296. data/spec/unit/resource/selinux_port_spec.rb +42 -0
  297. data/spec/unit/resource/selinux_state_spec.rb +46 -0
  298. data/spec/unit/resource/sysctl_spec.rb +2 -2
  299. data/spec/unit/resource/user/linux_user_spec.rb +42 -0
  300. data/spec/unit/resource_spec.rb +0 -1
  301. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +1 -1
  302. data/tasks/rspec.rb +1 -1
  303. metadata +102 -30
  304. /data/spec/functional/assets/chocolatey_feed/{test-A.1.0.0.nupkg → test-A.1.0.nupkg} +0 -0
  305. /data/spec/functional/assets/chocolatey_feed/{test-A.1.5.0.nupkg → test-A.1.5.nupkg} +0 -0
  306. /data/spec/functional/assets/chocolatey_feed/{test-A.2.0.0.nupkg → test-A.2.0.nupkg} +0 -0
  307. /data/spec/functional/assets/chocolatey_feed/{test-B.1.0.0.nupkg → test-B.1.0.nupkg} +0 -0
  308. /data/spec/functional/assets/yumrepo/repodata/{01a3b-filelists.sqlite.bz2 → 4632d67cb92636e7575d911c24f0e04d3505a944e97c483abe0c3e73a7c62d33-filelists.sqlite.bz2} +0 -0
  309. /data/spec/functional/assets/yumrepo/repodata/{6bf96-other.xml.gz → 74599b793e54d877323837d2d81a1c3c594c44e4335f9528234bb490f7b9b439-other.xml.gz} +0 -0
  310. /data/spec/functional/assets/yumrepo/repodata/{5dc1e-primary.sqlite.bz2 → a845d418f919d2115ab95a56b2c76f6825ad0d0bede49181a55c04f58995d057-primary.sqlite.bz2} +0 -0
  311. /data/spec/functional/assets/yumrepo/repodata/{7c365-other.sqlite.bz2 → af9b7cf9ef23bd7b43068d74a460f3b5d06753d638e58e4a0c9edc35bfb9cdc4-other.sqlite.bz2} +0 -0
  312. /data/spec/functional/assets/yumrepo/repodata/{401dc-filelists.xml.gz → bdb4f5f1492a3b9532f22c43110a81500dd744f23da0aec5c33b2a41317c737d-filelists.xml.gz} +0 -0
  313. /data/spec/functional/assets/yumrepo/repodata/{dabe2-primary.xml.gz → c10d1d34ce99e02f12ec96ef68360543ab1bb7c3cb81a4a2bf78df7d8597e9df-primary.xml.gz} +0 -0
@@ -1,36 +1,57 @@
1
1
  -----BEGIN CERTIFICATE-----
2
- MIIGTjCCBTagAwIBAgIQBK55YGZmkBq5xX+mbFvczTANBgkqhkiG9w0BAQsFADBl
2
+ MIIElDCCA3ygAwIBAgIQAf2j627KdciIQ4tyS8+8kTANBgkqhkiG9w0BAQsFADBh
3
3
  MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
4
- d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJv
5
- b3QgQ0EwHhcNMTMxMTA1MTIwMDAwWhcNMjgxMTA1MTIwMDAwWjBlMQswCQYDVQQG
6
- EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNl
7
- cnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBTSEEyIEFzc3VyZWQgSUQgQ0EwggEi
8
- MA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDc+BEjP2q178AneRstBYeiEEMx
9
- 3w7UFRtPd6Qizj6McPC+B47dJyq8AR22LArK3WlYH0HtagUf2mN4WR4iLCv4un7J
10
- NTtW8R98Qn4lsCMZxkU41z1E+SB8YK4csFoYBL6PO/ep8JSapgxjSbZBF1NAMr1P
11
- 5lB6UB8lRejxia/N/17/UPPwFxH/vcWJ9b1iudj7jkUEhW2ZzcVITf0mqwI2Reo2
12
- 119q4hqCQQrc6dn1kReOxiGtODwT5h5/ZpzVTdlG2vbPUqd9OyTDtMFRNcab69Tv
13
- fuR7A+FEvXoLN+BPy4KKDXEY5KbgiSwb87JzPMGwkp4Yfb2rfcV9CKEswp9zAgMB
14
- AAGjggL4MIIC9DASBgNVHRMBAf8ECDAGAQH/AgEAMA4GA1UdDwEB/wQEAwIBhjA0
15
- BggrBgEFBQcBAQQoMCYwJAYIKwYBBQUHMAGGGGh0dHA6Ly9vY3NwLmRpZ2ljZXJ0
16
- LmNvbTCBgQYDVR0fBHoweDA6oDigNoY0aHR0cDovL2NybDQuZGlnaWNlcnQuY29t
17
- L0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDA6oDigNoY0aHR0cDovL2NybDMu
18
- ZGlnaWNlcnQuY29tL0RpZ2lDZXJ0QXNzdXJlZElEUm9vdENBLmNybDAdBgNVHSUE
19
- FjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwggGzBgNVHSAEggGqMIIBpjCCAaIGCmCG
20
- SAGG/WwAAgQwggGSMCgGCCsGAQUFBwIBFhxodHRwczovL3d3dy5kaWdpY2VydC5j
21
- b20vQ1BTMIIBZAYIKwYBBQUHAgIwggFWHoIBUgBBAG4AeQAgAHUAcwBlACAAbwBm
22
- ACAAdABoAGkAcwAgAEMAZQByAHQAaQBmAGkAYwBhAHQAZQAgAGMAbwBuAHMAdABp
23
- AHQAdQB0AGUAcwAgAGEAYwBjAGUAcAB0AGEAbgBjAGUAIABvAGYAIAB0AGgAZQAg
24
- AEQAaQBnAGkAQwBlAHIAdAAgAEMAUAAvAEMAUABTACAAYQBuAGQAIAB0AGgAZQAg
25
- AFIAZQBsAHkAaQBuAGcAIABQAGEAcgB0AHkAIABBAGcAcgBlAGUAbQBlAG4AdAAg
26
- AHcAaABpAGMAaAAgAGwAaQBtAGkAdAAgAGwAaQBhAGIAaQBsAGkAdAB5ACAAYQBu
27
- AGQAIABhAHIAZQAgAGkAbgBjAG8AcgBwAG8AcgBhAHQAZQBkACAAaABlAHIAZQBp
28
- AG4AIABiAHkAIAByAGUAZgBlAHIAZQBuAGMAZQAuMB0GA1UdDgQWBBTnAiOAAE/Y
29
- 17yUC9k/dDlJMjyKeTAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzAN
30
- BgkqhkiG9w0BAQsFAAOCAQEATtSJJ7n9HYd3fg8oBZDxCi/JOz69k5yQxq/6kVGH
31
- MlRr6MrBcVFcmY61+uBiGZmmB5p8Eyfb5QKihBLZFfYKRFfENI9tcx861qABPd7j
32
- guRFa7LrJf2AXh05kL5bQvbOkWDj+aBWDEgQzjNoe82Tq/Bqy09YD7l7XRsEgZ6n
33
- IuJXSSfukpMIvmkIUwI6Ll3IGfRQgE4C2bBdkbSTh/mWloFVQI5m7YLYuyhf7Uxh
34
- 7QZYKBlTEUS8RyApsgRs2IlUmTt122d4LB6SeMZVPVgSETJuvUMMTTTbe8ZC2+y+
35
- q5thTAaS447fISpQVwTAYKI11SSeZjcJSc/V+GWz4OJuwg==
4
+ d3cuZGlnaWNlcnQuY29tMSAwHgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBD
5
+ QTAeFw0xMzAzMDgxMjAwMDBaFw0yMzAzMDgxMjAwMDBaME0xCzAJBgNVBAYTAlVT
6
+ MRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxJzAlBgNVBAMTHkRpZ2lDZXJ0IFNIQTIg
7
+ U2VjdXJlIFNlcnZlciBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB
8
+ ANyuWJBNwcQwFZA1W248ghX1LFy949v/cUP6ZCWA1O4Yok3wZtAKc24RmDYXZK83
9
+ nf36QYSvx6+M/hpzTc8zl5CilodTgyu5pnVILR1WN3vaMTIa16yrBvSqXUu3R0bd
10
+ KpPDkC55gIDvEwRqFDu1m5K+wgdlTvza/P96rtxcflUxDOg5B6TXvi/TC2rSsd9f
11
+ /ld0Uzs1gN2ujkSYs58O09rg1/RrKatEp0tYhG2SS4HD2nOLEpdIkARFdRrdNzGX
12
+ kujNVA075ME/OV4uuPNcfhCOhkEAjUVmR7ChZc6gqikJTvOX6+guqw9ypzAO+sf0
13
+ /RR3w6RbKFfCs/mC/bdFWJsCAwEAAaOCAVowggFWMBIGA1UdEwEB/wQIMAYBAf8C
14
+ AQAwDgYDVR0PAQH/BAQDAgGGMDQGCCsGAQUFBwEBBCgwJjAkBggrBgEFBQcwAYYY
15
+ aHR0cDovL29jc3AuZGlnaWNlcnQuY29tMHsGA1UdHwR0MHIwN6A1oDOGMWh0dHA6
16
+ Ly9jcmwzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RDQS5jcmwwN6A1
17
+ oDOGMWh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydEdsb2JhbFJvb3RD
18
+ QS5jcmwwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8v
19
+ d3d3LmRpZ2ljZXJ0LmNvbS9DUFMwHQYDVR0OBBYEFA+AYRyCMWHVLyjnjUY4tCzh
20
+ xtniMB8GA1UdIwQYMBaAFAPeUDVW0Uy7ZvCj4hsbw5eyPdFVMA0GCSqGSIb3DQEB
21
+ CwUAA4IBAQAjPt9L0jFCpbZ+QlwaRMxp0Wi0XUvgBCFsS+JtzLHgl4+mUwnNqipl
22
+ 5TlPHoOlblyYoiQm5vuh7ZPHLgLGTUq/sELfeNqzqPlt/yGFUzZgTHbO7Djc1lGA
23
+ 8MXW5dRNJ2Srm8c+cftIl7gzbckTB+6WohsYFfZcTEDts8Ls/3HB40f/1LkAtDdC
24
+ 2iDJ6m6K7hQGrn2iWZiIqBtvLfTyyRRfJs8sjX7tN8Cp1Tm5gr8ZDOo0rwAhaPit
25
+ c+LJMto4JQtV05od8GiG7S5BNO98pVAdvzr508EIDObtHopYJeS4d60tbvVS3bR0
26
+ j6tJLp07kzQoH3jOlOrHvdPJbRzeXDLz
27
+ -----END CERTIFICATE-----
28
+ -----BEGIN CERTIFICATE-----
29
+ MIIFDTCCA/WgAwIBAgIQBZ8R1sZP2Lbc8x554UUQ2DANBgkqhkiG9w0BAQsFADBN
30
+ MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMScwJQYDVQQDEx5E
31
+ aWdpQ2VydCBTSEEyIFNlY3VyZSBTZXJ2ZXIgQ0EwHhcNMTQxMTEwMDAwMDAwWhcN
32
+ MTcxMTE0MTIwMDAwWjBlMQswCQYDVQQGEwJVUzETMBEGA1UECBMKV2FzaGluZ3Rv
33
+ bjEQMA4GA1UEBxMHU2VhdHRsZTEbMBkGA1UEChMSQ2hlZiBTb2Z0d2FyZSwgSW5j
34
+ MRIwEAYDVQQDDAkqLmNoZWYuaW8wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK
35
+ AoIBAQC3xCIczkV10O5jTDpbd4YlPLC6kfnVoOkno2N/OOlcLQu3ulj/Lj1j4r6e
36
+ 2XthJLcFgTO+y+1/IKnnpLKDfkx1YngWEBXEBP+MrrpDUKKs053s45/bI9QBPISA
37
+ tXgnYxMH9Glo6FWWd13TUq++OKGw1p1wazH64XK4MAf5y/lkmWXIWumNuO35ZqtB
38
+ ME3wJISwVHzHB2CQjlDklt+Mb0APEiIFIZflgu9JNBYzLdvUtxiz15FUZQI7SsYL
39
+ TfXOD1KBNMWqN8snG2e5gRAzB2D161DFvAZt8OiYUe+3QurNlTYVzeHv1ok6UqgM
40
+ ZcLzg8m801rRip0D7FCGvMCU/ktdAgMBAAGjggHPMIIByzAfBgNVHSMEGDAWgBQP
41
+ gGEcgjFh1S8o541GOLQs4cbZ4jAdBgNVHQ4EFgQUwldjw4Pb4HV+wxGZ7MSSRh+d
42
+ pm4wHQYDVR0RBBYwFIIJKi5jaGVmLmlvggdjaGVmLmlvMA4GA1UdDwEB/wQEAwIF
43
+ oDAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwawYDVR0fBGQwYjAvoC2g
44
+ K4YpaHR0cDovL2NybDMuZGlnaWNlcnQuY29tL3NzY2Etc2hhMi1nMy5jcmwwL6At
45
+ oCuGKWh0dHA6Ly9jcmw0LmRpZ2ljZXJ0LmNvbS9zc2NhLXNoYTItZzMuY3JsMEIG
46
+ A1UdIAQ7MDkwNwYJYIZIAYb9bAEBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3
47
+ LmRpZ2ljZXJ0LmNvbS9DUFMwfAYIKwYBBQUHAQEEcDBuMCQGCCsGAQUFBzABhhho
48
+ dHRwOi8vb2NzcC5kaWdpY2VydC5jb20wRgYIKwYBBQUHMAKGOmh0dHA6Ly9jYWNl
49
+ cnRzLmRpZ2ljZXJ0LmNvbS9EaWdpQ2VydFNIQTJTZWN1cmVTZXJ2ZXJDQS5jcnQw
50
+ DAYDVR0TAQH/BAIwADANBgkqhkiG9w0BAQsFAAOCAQEAvcTWenNuvvrhX2omm8LQ
51
+ zWOuu8jqpoflACwD4lOSZ4TgOe4pQGCjXq8aRBD5k+goqQrPVf9lHnelUHFQac0Q
52
+ 5WT4YUmisUbF0S4uY5OGQymM52MvUWG4ODL4gaWhFvN+HAXrDPP/9iitsjV0QOnl
53
+ CDq7Q4/XYRYW3opu5nLLbfW6v4QvF5yzZagEACGs7Vt32p6l391UcU8f6wiB3uMD
54
+ eioCvjpv/+2YOUNlDPCM3uBubjUhHOwO817wBxXkzdk1OSRe4jzcw/uX6wL7birt
55
+ fbaSkpilvVX529pSzB2Lvi9xWOoGMM578dpQ0h3PwhmmvKhhCWP+pI05k3oSkYCP
56
+ ng==
36
57
  -----END CERTIFICATE-----
@@ -22,16 +22,8 @@ describe Chef::Resource::ChocolateyPackage, :windows_only, :choco_installed do
22
22
  include Chef::Mixin::ShellOut
23
23
 
24
24
  let(:package_name) { "test-A" }
25
+ let(:package_list) { proc { shell_out!("choco list -lo -r #{Array(package_name).join(" ")}").stdout.chomp } }
25
26
  let(:package_source) { File.join(CHEF_SPEC_ASSETS, "chocolatey_feed") }
26
- let(:package_list) do
27
- if Chef::Provider::Package::Chocolatey.query_command == "list"
28
- # using result of query_command because that indicates which "search" command to use
29
- # which coincides with the package list output
30
- proc { shell_out!("choco search -lo #{Array(package_name).join(" ")}").stdout.chomp }
31
- else
32
- proc { shell_out!("choco list #{Array(package_name).join(" ")}").stdout.chomp }
33
- end
34
- end
35
27
 
36
28
  let(:run_context) do
37
29
  Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
@@ -62,16 +54,12 @@ describe Chef::Resource::ChocolateyPackage, :windows_only, :choco_installed do
62
54
  ENV["Path"] = ENV.delete("Path")
63
55
  end
64
56
 
65
- after(:each) do
66
- described_class.instance_variable_set(:@get_choco_version, nil)
67
- end
68
-
69
57
  context "installing a package" do
70
58
  after { remove_package }
71
59
 
72
60
  it "installs the latest version" do
73
61
  subject.run_action(:install)
74
- expect(package_list.call).to match(/^#{package_name}|2.0.0$/)
62
+ expect(package_list.call).to eq("#{package_name}|2.0")
75
63
  end
76
64
 
77
65
  it "does not install if already installed" do
@@ -81,19 +69,19 @@ describe Chef::Resource::ChocolateyPackage, :windows_only, :choco_installed do
81
69
  end
82
70
 
83
71
  it "installs version given" do
84
- subject.version "1.0.0"
72
+ subject.version "1.0"
85
73
  subject.run_action(:install)
86
- expect(package_list.call).to match(/^#{package_name}|1.0.0$/)
74
+ expect(package_list.call).to eq("#{package_name}|1.0")
87
75
  end
88
76
 
89
77
  it "installs new version if one is already installed" do
90
- subject.version "1.0.0"
78
+ subject.version "1.0"
91
79
  subject.run_action(:install)
92
- expect(package_list.call).to match(/^#{package_name}|1.0.0$/)
80
+ expect(package_list.call).to eq("#{package_name}|1.0")
93
81
 
94
- subject.version "2.0.0"
82
+ subject.version "2.0"
95
83
  subject.run_action(:install)
96
- expect(package_list.call).to match(/^#{package_name}|2.0.0$/)
84
+ expect(package_list.call).to eq("#{package_name}|2.0")
97
85
  end
98
86
 
99
87
  context "installing multiple packages" do
@@ -101,7 +89,7 @@ describe Chef::Resource::ChocolateyPackage, :windows_only, :choco_installed do
101
89
 
102
90
  it "installs both packages" do
103
91
  subject.run_action(:install)
104
- expect(package_list.call).to match(/^test-A|2.0.0\r\ntest-B|1.0.0$/)
92
+ expect(package_list.call).to eq("test-A|2.0\r\ntest-B|1.0")
105
93
  end
106
94
  end
107
95
 
@@ -113,13 +101,13 @@ describe Chef::Resource::ChocolateyPackage, :windows_only, :choco_installed do
113
101
  it "installs with an option as a string" do
114
102
  subject.options "--force --confirm"
115
103
  subject.run_action(:install)
116
- expect(package_list.call).to match(/^#{package_name}|2.0.0$/)
104
+ expect(package_list.call).to eq("#{package_name}|2.0")
117
105
  end
118
106
 
119
107
  it "installs with multiple options as a string" do
120
108
  subject.options "--force --confirm"
121
109
  subject.run_action(:install)
122
- expect(package_list.call).to match(/^#{package_name}|2.0.0$/)
110
+ expect(package_list.call).to eq("#{package_name}|2.0")
123
111
  end
124
112
 
125
113
  context "when multiple options passed as string" do
@@ -149,7 +137,7 @@ describe Chef::Resource::ChocolateyPackage, :windows_only, :choco_installed do
149
137
  it "installs with multiple options as an array" do
150
138
  subject.options [ "--force", "--confirm" ]
151
139
  subject.run_action(:install)
152
- expect(package_list.call).to match(/^#{package_name}|2.0.0$/)
140
+ expect(package_list.call).to eq("#{package_name}|2.0")
153
141
  end
154
142
  end
155
143
 
@@ -157,24 +145,24 @@ describe Chef::Resource::ChocolateyPackage, :windows_only, :choco_installed do
157
145
  after { remove_package }
158
146
 
159
147
  it "upgrades to a specific version" do
160
- subject.version "1.0.0"
148
+ subject.version "1.0"
161
149
  subject.run_action(:install)
162
- expect(package_list.call).to match(/^#{package_name}|1.0.0$/)
150
+ expect(package_list.call).to eq("#{package_name}|1.0")
163
151
 
164
- subject.version "1.5.0"
152
+ subject.version "1.5"
165
153
  subject.run_action(:upgrade)
166
- expect(package_list.call).to match(/^#{package_name}|1.5.0$/)
154
+ expect(package_list.call).to eq("#{package_name}|1.5")
167
155
  end
168
156
 
169
157
  it "upgrades to the latest version if no version given" do
170
- subject.version "1.0.0"
158
+ subject.version "1.0"
171
159
  subject.run_action(:install)
172
- expect(package_list.call).to match(/^#{package_name}|1.0.0$/)
160
+ expect(package_list.call).to eq("#{package_name}|1.0")
173
161
 
174
162
  subject2 = Chef::Resource::ChocolateyPackage.new("test-A", run_context)
175
163
  subject2.source package_source
176
164
  subject2.run_action(:upgrade)
177
- expect(package_list.call).to match(/^#{package_name}|2.0.0$/)
165
+ expect(package_list.call).to eq("#{package_name}|2.0")
178
166
  end
179
167
  end
180
168
 
@@ -182,7 +170,7 @@ describe Chef::Resource::ChocolateyPackage, :windows_only, :choco_installed do
182
170
  it "removes an installed package" do
183
171
  subject.run_action(:install)
184
172
  remove_package
185
- expect(package_list.call).to match(/0 packages installed/)
173
+ expect(package_list.call).to eq("")
186
174
  end
187
175
  end
188
176
 
@@ -263,7 +263,7 @@ describe Chef::Resource::DscScript, :windows_powershell_dsc_only, :ruby64_only d
263
263
  dsc_test_resource.cwd(dsc_environment_fail_etc_directory)
264
264
  expect {
265
265
  dsc_test_resource.run_action(:run)
266
- }.to raise_error(Chef::PowerShell::CommandFailed, /#{exception_message_signature}/)
266
+ }.to raise_error(ChefPowerShell::PowerShellExceptions::PowerShellCommandFailed, /#{exception_message_signature}/)
267
267
  end
268
268
  end
269
269
  end
@@ -44,10 +44,10 @@ describe Chef::Resource::Group, :requires_root_or_running_windows do
44
44
  members.shift # Get rid of GroupMembership: string
45
45
  members.include?(user)
46
46
  else
47
- # TODO For some reason our temporary AIX 7.2 system does not correctly report group membership immediately after changes have been made.
48
- # Adding a 2 second delay for this platform is enough to get correct results.
49
- # We hope to remove this delay after we get more permanent AIX 7.2 systems in our CI pipeline. reference: https://github.com/chef/release-engineering/issues/1617
50
- sleep 2 if aix? && (ohai[:platform_version] == "7.2")
47
+ # NOTE: For some reason our temporary AIX 7.x systems do not correctly report group membership immediately after changes have been made.
48
+ # Adding a delay for this platform is enough to get correct results.
49
+ # reference: https://github.com/chef/release-engineering/issues/1617
50
+ sleep 3 if aix?
51
51
  Etc.getgrnam(group_name).mem.include?(user)
52
52
  end
53
53
  end
@@ -133,6 +133,10 @@ describe Chef::Resource::Group, :requires_root_or_running_windows do
133
133
  temp_resource.append(true)
134
134
  temp_resource.run_action(:modify)
135
135
  members.each do |member|
136
+ # NOTE For some reason our temporary AIX 7.x systems do not correctly report group membership immediately after changes have been made.
137
+ # Adding a delay for this platform is enough to get correct results.
138
+ # reference: https://github.com/chef/release-engineering/issues/1617
139
+ sleep 3 if aix?
136
140
  expect(user_exist_in_group?(member)).to eq(true)
137
141
  end
138
142
  end
@@ -425,7 +429,7 @@ describe Chef::Resource::Group, :requires_root_or_running_windows do
425
429
  end
426
430
  end
427
431
 
428
- describe "when there is a group" do
432
+ describe "when there is a group", :not_supported_on_freebsd_gte_12_3 do
429
433
  it_behaves_like "correct group management"
430
434
  end
431
435
 
@@ -463,7 +467,7 @@ describe Chef::Resource::Group, :requires_root_or_running_windows do
463
467
  end
464
468
  end
465
469
 
466
- describe "when there is a group" do
470
+ describe "when there is a group", :not_supported_on_freebsd_gte_12_3 do
467
471
  it_behaves_like "correct group management"
468
472
  end
469
473
 
@@ -345,17 +345,17 @@ describe Chef::Resource::Link do
345
345
  let(:test_user) { "test-link-user" }
346
346
  before do
347
347
  user(test_user).run_action(:create)
348
- # TODO For some reason our temporary AIX 7.2 system does not correctly report user existence immediately after changes have been made.
349
- # Adding a 2 second delay for this platform is enough to get correct results.
350
- # We hope to remove this delay after we get more permanent AIX 7.2 systems in our CI pipeline. reference: https://github.com/chef/release-engineering/issues/1617
351
- sleep 2 if aix? && (ohai[:platform_version] == "7.2")
348
+ # NOTE: For some reason our temporary AIX 7.x systems do not correctly report user existence immediately after changes have been made.
349
+ # Adding a delay for this platform is enough to get correct results.
350
+ # reference: https://github.com/chef/release-engineering/issues/1617
351
+ sleep 3 if aix?
352
352
  end
353
353
  after do
354
354
  user(test_user).run_action(:remove)
355
- # TODO For some reason our temporary AIX 7.2 system does not correctly report user existence immediately after changes have been made.
356
- # Adding a 2 second delay for this platform is enough to get correct results.
357
- # We hope to remove this delay after we get more permanent AIX 7.2 systems in our CI pipeline. reference: https://github.com/chef/release-engineering/issues/1617
358
- sleep 2 if aix? && (ohai[:platform_version] == "7.2")
355
+ # TODO For some reason our temporary AIX 7.x systems do not correctly report user existence immediately after changes have been made.
356
+ # Adding a delay for this platform is enough to get correct results.
357
+ # reference: https://github.com/chef/release-engineering/issues/1617
358
+ sleep 3 if aix?
359
359
  end
360
360
  before(:each) do
361
361
  resource.owner(test_user)
@@ -38,12 +38,12 @@ describe Chef::Resource::MacosUserDefaults, :macos_only do
38
38
  expect(resource.domain).to eq("NSGlobalDomain")
39
39
  end
40
40
 
41
- it ":all for the host property" do
42
- expect(resource.host).to eq(:all)
41
+ it "nil for the host property" do
42
+ expect(resource.host).to be_nil
43
43
  end
44
44
 
45
- it ":current for the user property" do
46
- expect(resource.user).to eq(:current)
45
+ it "nil for the user property" do
46
+ expect(resource.user).to be_nil
47
47
  end
48
48
 
49
49
  it ":write for resource action" do
@@ -0,0 +1,25 @@
1
+ require "spec_helper"
2
+ require "plist"
3
+
4
+ describe Chef::Resource::PlistResource, :macos_only, requires_root: true do
5
+ include RecipeDSLHelper
6
+
7
+ let(:global_prefs) do
8
+ File.join(Dir.mktmpdir, ".GlobalPreferences.plist")
9
+ end
10
+
11
+ before(:each) do
12
+ FileUtils.rm_f global_prefs
13
+ end
14
+
15
+ context "make Monday the first DOW" do
16
+ it "creates a new plist with a hash value" do
17
+ plist global_prefs do
18
+ entry "AppleFirstWeekday"
19
+ value(gregorian: 4)
20
+ end
21
+ expect(File.exist?(global_prefs))
22
+ expect(shell_out!("/usr/libexec/PlistBuddy -c 'Print :\"AppleFirstWeekday\":gregorian' \"#{global_prefs}\"").stdout.to_i).to eq(4)
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,127 @@
1
+ #
2
+ # Copyright:: Copyright (c) Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require "spec_helper"
19
+ require "chef/mixin/shell_out"
20
+
21
+ metadata = {
22
+ requires_root: true,
23
+ linux_only: true,
24
+ }
25
+
26
+ describe "Chef::Resource::User with Chef::Provider::User::LinuxUser provider", metadata do
27
+ include Chef::Mixin::ShellOut
28
+
29
+ def clean_user
30
+ shell_out!("/usr/sbin/userdel #{username}")
31
+ rescue Mixlib::ShellOut::ShellCommandFailed
32
+ # Raised when the user is already cleaned
33
+ end
34
+
35
+ def ensure_file_cache_path_exists
36
+ path = Chef::Config["file_cache_path"]
37
+ FileUtils.mkdir_p(path) unless File.directory?(path)
38
+ end
39
+
40
+ def user_should_exist
41
+ expect(shell_out("grep -q #{username} /etc/passwd").error?).to be(false)
42
+ end
43
+
44
+ def check_password(pass, user)
45
+ expect(shell_out("grep ^#{user}: /etc/shadow | cut -d: -f2 | grep ^#{pass}$").exitstatus).to eq(0)
46
+ end
47
+
48
+ let(:node) do
49
+ n = Chef::Node.new
50
+ n.consume_external_attrs(OHAI_SYSTEM.data.dup, {})
51
+ n
52
+ end
53
+
54
+ let(:events) do
55
+ Chef::EventDispatch::Dispatcher.new
56
+ end
57
+
58
+ let(:run_context) do
59
+ Chef::RunContext.new(node, {}, events)
60
+ end
61
+
62
+ let(:username) do
63
+ "greatchef"
64
+ end
65
+
66
+ let(:uid) { nil }
67
+ let(:gid) do
68
+ # SLES 15 doesn't have the "20" group and
69
+ # so lets just pick the last group... no,
70
+ # Etc.group.map(&:gid).last does not work
71
+ Etc.enum_for(:group).map(&:gid).last
72
+ end
73
+ let(:home) { nil }
74
+ let(:manage_home) { false }
75
+ let(:password) { "XXXYYYZZZ" }
76
+ let(:comment) { "Great Chef" }
77
+ let(:shell) { "/bin/bash" }
78
+ let(:salt) { nil }
79
+
80
+ let(:user_resource) do
81
+ r = Chef::Resource::User::LinuxUser.new("TEST USER RESOURCE", run_context)
82
+ r.username(username)
83
+ r.uid(uid)
84
+ r.gid(gid)
85
+
86
+ r.home(home)
87
+ r.shell(shell)
88
+ r.comment(comment)
89
+ r.manage_home(manage_home)
90
+ r.password(password)
91
+ r.salt(salt)
92
+ r
93
+ end
94
+
95
+ before do
96
+ clean_user
97
+ ensure_file_cache_path_exists
98
+ end
99
+
100
+ after(:each) do
101
+ clean_user
102
+ end
103
+
104
+ describe "action :create" do
105
+ it "should create the user" do
106
+ user_resource.run_action(:create)
107
+ user_should_exist
108
+ check_password(password, username)
109
+ end
110
+ end
111
+
112
+ describe "when user exists" do
113
+ before do
114
+ existing_resource = user_resource.dup
115
+ existing_resource.run_action(:create)
116
+ user_should_exist
117
+ end
118
+
119
+ describe "when password is updated" do
120
+ it "should update the password of the user" do
121
+ user_resource.password("mykitchen")
122
+ user_resource.run_action(:create)
123
+ check_password("mykitchen", username)
124
+ end
125
+ end
126
+ end
127
+ end
@@ -56,34 +56,10 @@ describe Chef::Resource::WindowsCertificate, :windows_only do
56
56
  let(:store) { "Chef-Functional-Test" }
57
57
  let(:store_name) { "MY" }
58
58
  let(:store_location) { "LocalMachine" }
59
- let(:test_cert_body) do
60
- <<~CERT
61
- -----BEGIN CERTIFICATE-----
62
- MIIDQTCCAimgAwIBAgIQX3zqNCJbsKlEvzCz3Z9aNDANBgkqhkiG9w0BAQsFADAh
63
- MR8wHQYDVQQDDBZ3d3cuZHVtbXljaGVmdGVzdHMuY29tMCAXDTIwMDMwNTEwMjcw
64
- NVoYDzIxMjAwMzA1MTAzNzA2WjAhMR8wHQYDVQQDDBZ3d3cuZHVtbXljaGVmdGVz
65
- dHMuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAtuYKDb6woWIH
66
- HPPOrcVpgJFVxbkjgk+tsYwbIiqR9jtRaKE6nM/awOgn9/dFF4k8KB8Em0sUx7Vq
67
- J3YhK2N2cAacgP2Frqqf5znpNBBOg968RoZzGx0EiXFvLsqC4y8ggApWTbMXPRk4
68
- 1a7GlpUpSqI3y5cLeEbzwGQKu8I1I+v7P2fTlnJPHarM7sBbL8bieukkFHYu78iV
69
- u1wpKOCCfs5DTmJu8WN+z1Mar9vyrWMBlt2wBBgNHPz5mcXUzJHTzaI/D9RGgBgF
70
- V0IkNqISx/IzR62jjj2g6MgTH4G/0mM6O5sxduM4yGmWZNZpVzh0yMLgH619MZlj
71
- SMQIN3U/SQIDAQABo3MwcTAOBgNVHQ8BAf8EBAMCBaAwHQYDVR0lBBYwFAYIKwYB
72
- BQUHAwIGCCsGAQUFBwMBMCEGA1UdEQQaMBiCFnd3dy5kdW1teWNoZWZ0ZXN0cy5j
73
- b20wHQYDVR0OBBYEFHwS3gs03m6RcpR+66u4OqGiZdYnMA0GCSqGSIb3DQEBCwUA
74
- A4IBAQCFHqMjHUfBZahIsKHQIcFCbC1NFh1ZHlJKZzrRBRwRzX19OttHGMyLpDd6
75
- tM9Ac6LLR8S4QIWg+HF3IrkN+vfTRDZAccj+tIwBRstmdsEz/rAJ79Vb/00mXZQx
76
- 0FPiBDR3hE7On2oo24DU8kJP3v6TrunwtIomVGqrrkwZzvxqyW+WJMB2shGNFw5J
77
- mKYBiiXsHl4Bi7V4zhXssrLp877sqpNLeXloXBmAlT39SwQTP9ImZaV5R6udqlvo
78
- Gfgm5PH/WeK6MV3n5ik0v1rS0LwR2o82WlIB6a4iSEbzY3qSLsWOwt8o5QjAVzCR
79
- tNdbdS3U8nrG73iA2clmF57ARQWC
80
- -----END CERTIFICATE-----
81
- CERT
82
- end
59
+ let(:download_cert_url) { "https://testingchef.blob.core.windows.net/files/test.cer" }
83
60
  let(:cert_output_path) { ::File.join(Chef::Config[:file_cache_path], "output.cer") }
84
61
  let(:pfx_output_path) { ::File.join(Chef::Config[:file_cache_path], "output.pfx") }
85
62
  let(:key_output_path) { ::File.join(Chef::Config[:file_cache_path], "output.key") }
86
- let(:download_cert_url) { "https://testingchef.blob.core.windows.net/files/test.cer" }
87
63
  let(:cer_path) { File.join(CHEF_SPEC_DATA, "windows_certificates", "test.cer") }
88
64
  let(:base64_path) { File.join(CHEF_SPEC_DATA, "windows_certificates", "base64_test.cer") }
89
65
  let(:pem_path) { File.join(CHEF_SPEC_DATA, "windows_certificates", "test.pem") }
@@ -152,7 +128,6 @@ tNdbdS3U8nrG73iA2clmF57ARQWC
152
128
  end
153
129
 
154
130
  it "can add a certificate from a valid url" do
155
- stub_request(:get, download_cert_url).to_return(body: test_cert_body)
156
131
  resource.source = download_cert_url
157
132
  resource.run_action(:create)
158
133
 
@@ -18,7 +18,7 @@
18
18
 
19
19
  require "spec_helper"
20
20
 
21
- describe Chef::Resource::WindowsFont, :windows_only, :broken do # these tests hang on Chef-16 and Chef-17 in the verify-pipline.
21
+ describe Chef::Resource::WindowsFont, :windows_only do
22
22
  let(:resource_name) { "Playmaker.ttf" }
23
23
  let(:resource_source) { "https://www.wfonts.com/download/data/2020/05/06/playmaker/Playmaker.ttf" }
24
24
 
@@ -37,13 +37,16 @@ describe Chef::Resource::WindowsFont, :windows_only, :broken do # these tests ha
37
37
  resource
38
38
  end
39
39
 
40
- it "installs font on first install" do
41
- subject.run_action(:install)
42
- expect(subject).to be_updated_by_last_action
43
- end
40
+ ## these were commented out because testing hangs in the verify pipeline with them enabled. WEIRD
41
+ ## that needs to be addressed
44
42
 
45
- it "does not install font when already installed" do
46
- subject.run_action(:install)
47
- expect(subject).not_to be_updated_by_last_action
48
- end
43
+ # it "installs font on first install" do
44
+ # subject.run_action(:install)
45
+ # expect(subject).to be_updated_by_last_action
46
+ # end
47
+
48
+ # it "does not install font when already installed" do
49
+ # subject.run_action(:install)
50
+ # expect(subject).not_to be_updated_by_last_action
51
+ # end
49
52
  end
@@ -20,7 +20,7 @@ require "chef/mixin/shell_out"
20
20
 
21
21
  # run this test only for following platforms.
22
22
  exclude_test = !(%w{rhel fedora amazon}.include?(OHAI_SYSTEM[:platform_family]) && !File.exist?("/usr/bin/dnf"))
23
- describe Chef::Resource::YumPackage, :requires_root, external: exclude_test, not_rhel6: true do
23
+ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
24
24
  include RecipeDSLHelper
25
25
  include Chef::Mixin::ShellOut
26
26
 
@@ -74,6 +74,18 @@ describe Chef::Resource::ZypperPackage, :requires_root, :suse_only do
74
74
  expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
75
75
  end
76
76
 
77
+ it "install package with source argument" do
78
+ zypper_package.source = "#{CHEF_SPEC_ASSETS}/zypprepo/chef_rpm-1.10-1.#{pkg_arch}.rpm"
79
+ zypper_package.run_action(:install)
80
+ expect(zypper_package.updated_by_last_action?).to be true
81
+ expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
82
+ end
83
+
84
+ it "raises an error when passed a source that does not exist" do
85
+ zypper_package.source = "#{CHEF_SPEC_ASSETS}/false/zypprepo/chef_rpm-1.10-1.#{pkg_arch}.rpm"
86
+ expect { zypper_package.run_action(:install) }.to raise_error(Mixlib::ShellOut::ShellCommandFailed)
87
+ end
88
+
77
89
  it "does not install if the package is installed" do
78
90
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
79
91
  zypper_package.run_action(:install)
@@ -78,7 +78,6 @@ describe Shell do
78
78
  def run_chef_shell_with(options)
79
79
  # Windows ruby installs don't (always?) have PTY,
80
80
  # so hide the require here
81
-
82
81
  require "pty"
83
82
 
84
83
  # FIXME this is temporary... Solaris envs have TERM set to unknown
@@ -87,7 +86,7 @@ describe Shell do
87
86
  ENV["TERM"] = "vt100" if ["", "unknown"].include?(ENV["TERM"].to_s)
88
87
 
89
88
  config = File.expand_path("shef-config.rb", CHEF_SPEC_DATA)
90
- reader, writer, pid = PTY.spawn("bundle exec chef-shell --no-multiline --no-singleline --no-colorize -c #{config} #{options}")
89
+ reader, writer, pid = PTY.spawn("bundle exec #{ChefUtils::Dist::Infra::SHELL} --no-multiline --no-singleline --no-colorize -c #{config} #{options}")
91
90
  read_until(reader, "chef (#{Chef::VERSION})>")
92
91
  yield reader, writer if block_given?
93
92
  writer.puts('"done"')
@@ -25,7 +25,7 @@ describe "Chef Versions", :executables do
25
25
  include Chef::Mixin::ShellOut
26
26
  let(:chef_dir) { File.join(__dir__, "..", "..") }
27
27
 
28
- binaries = [ ChefUtils::Dist::Infra::CLIENT, "chef-shell", "chef-apply", ChefUtils::Dist::Solo::EXEC ]
28
+ binaries = [ ChefUtils::Dist::Infra::CLIENT, ChefUtils::Dist::Infra::SHELL, "chef-apply", ChefUtils::Dist::Solo::EXEC ]
29
29
 
30
30
  binaries.each do |binary|
31
31
  it "#{binary} version should be sane" do