chef 16.18.30 → 17.10.163

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 (881) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +24 -33
  3. data/README.md +1 -1
  4. data/Rakefile +4 -4
  5. data/chef-universal-mingw32.gemspec +3 -3
  6. data/chef.gemspec +25 -30
  7. data/lib/chef/action_collection.rb +6 -26
  8. data/lib/chef/api_client.rb +1 -1
  9. data/lib/chef/application/base.rb +28 -3
  10. data/lib/chef/application/exit_code.rb +7 -21
  11. data/lib/chef/application.rb +3 -1
  12. data/lib/chef/applications.rb +0 -1
  13. data/lib/chef/chef_fs/command_line.rb +5 -2
  14. data/lib/chef/chef_fs/file_pattern.rb +3 -3
  15. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  16. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -1
  17. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  18. data/lib/chef/chef_fs/file_system.rb +9 -10
  19. data/lib/chef/chef_fs/path_utils.rb +1 -1
  20. data/lib/chef/client.rb +10 -20
  21. data/lib/chef/compliance/default_attributes.rb +20 -7
  22. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  23. data/lib/chef/compliance/input.rb +115 -0
  24. data/lib/chef/compliance/input_collection.rb +139 -0
  25. data/lib/chef/compliance/profile.rb +122 -0
  26. data/lib/chef/compliance/profile_collection.rb +109 -0
  27. data/lib/chef/compliance/reporter/automate.rb +18 -8
  28. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  29. data/lib/chef/compliance/reporter/cli.rb +77 -0
  30. data/lib/chef/compliance/reporter/compliance_enforcer.rb +5 -1
  31. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  32. data/lib/chef/compliance/runner.rb +177 -37
  33. data/lib/chef/compliance/waiver.rb +115 -0
  34. data/lib/chef/compliance/waiver_collection.rb +143 -0
  35. data/lib/chef/cookbook/cookbook_version_loader.rb +3 -3
  36. data/lib/chef/cookbook/synchronizer.rb +3 -5
  37. data/lib/chef/cookbook/syntax_check.rb +1 -1
  38. data/lib/chef/cookbook_loader.rb +2 -4
  39. data/lib/chef/cookbook_uploader.rb +1 -2
  40. data/lib/chef/cookbook_version.rb +1 -1
  41. data/lib/chef/data_bag_item.rb +11 -2
  42. data/lib/chef/data_collector.rb +0 -1
  43. data/lib/chef/delayed_evaluator.rb +4 -0
  44. data/lib/chef/deprecated.rb +6 -2
  45. data/lib/chef/dsl/chef_vault.rb +6 -6
  46. data/lib/chef/{knife/group_list.rb → dsl/compliance.rb} +11 -16
  47. data/lib/chef/dsl/declare_resource.rb +5 -10
  48. data/lib/chef/{knife/client_show.rb → dsl/reader_helpers.rb} +24 -21
  49. data/lib/chef/dsl/reboot_pending.rb +2 -3
  50. data/lib/chef/dsl/recipe.rb +4 -2
  51. data/lib/chef/{knife/data_bag_list.rb → dsl/render_helpers.rb} +19 -17
  52. data/lib/chef/dsl/secret.rb +170 -0
  53. data/lib/chef/dsl/toml.rb +116 -0
  54. data/lib/chef/dsl/universal.rb +7 -0
  55. data/lib/chef/dsl.rb +1 -0
  56. data/lib/chef/event_dispatch/base.rb +46 -3
  57. data/lib/chef/exceptions.rb +30 -0
  58. data/lib/chef/formatters/doc.rb +62 -14
  59. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  60. data/lib/chef/formatters/minimal.rb +6 -5
  61. data/lib/chef/group.rb +75 -0
  62. data/lib/chef/handler/slow_report.rb +66 -0
  63. data/lib/chef/handler.rb +46 -8
  64. data/lib/chef/http/basic_client.rb +15 -7
  65. data/lib/chef/http/ssl_policies.rb +3 -3
  66. data/lib/chef/http.rb +7 -3
  67. data/lib/chef/json_compat.rb +1 -1
  68. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  69. data/lib/chef/mixin/homebrew_user.rb +15 -5
  70. data/lib/chef/mixin/openssl_helper.rb +17 -13
  71. data/lib/chef/mixin/powershell_exec.rb +27 -7
  72. data/lib/chef/mixin/properties.rb +6 -0
  73. data/lib/chef/mixin/why_run.rb +8 -2
  74. data/lib/chef/node/attribute.rb +6 -4
  75. data/lib/chef/node/immutable_collections.rb +13 -0
  76. data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
  77. data/lib/chef/node.rb +1 -1
  78. data/lib/chef/org.rb +3 -2
  79. data/lib/chef/platform/query_helpers.rb +2 -2
  80. data/lib/chef/policy_builder/expand_node_object.rb +1 -2
  81. data/lib/chef/policy_builder/policyfile.rb +84 -46
  82. data/lib/chef/powershell.rb +8 -6
  83. data/lib/chef/property.rb +18 -0
  84. data/lib/chef/provider/cron.rb +7 -4
  85. data/lib/chef/provider/directory.rb +8 -8
  86. data/lib/chef/provider/execute.rb +3 -2
  87. data/lib/chef/provider/file.rb +5 -3
  88. data/lib/chef/provider/git.rb +6 -8
  89. data/lib/chef/provider/group/groupadd.rb +3 -3
  90. data/lib/chef/provider/group/groupmod.rb +3 -3
  91. data/lib/chef/provider/group/pw.rb +3 -3
  92. data/lib/chef/provider/ifconfig/debian.rb +1 -1
  93. data/lib/chef/provider/ifconfig.rb +7 -7
  94. data/lib/chef/provider/launchd.rb +6 -6
  95. data/lib/chef/provider/link.rb +5 -5
  96. data/lib/chef/provider/lwrp_base.rb +1 -1
  97. data/lib/chef/provider/mount/aix.rb +3 -3
  98. data/lib/chef/provider/mount/linux.rb +16 -2
  99. data/lib/chef/provider/mount/mount.rb +6 -6
  100. data/lib/chef/provider/mount/windows.rb +1 -1
  101. data/lib/chef/provider/mount.rb +5 -5
  102. data/lib/chef/provider/package/apt.rb +27 -1
  103. data/lib/chef/provider/package/chocolatey.rb +14 -1
  104. data/lib/chef/provider/package/deb.rb +3 -3
  105. data/lib/chef/provider/package/dnf/dnf_helper.py +12 -11
  106. data/lib/chef/provider/package/dnf/python_helper.rb +9 -8
  107. data/lib/chef/provider/package/dnf.rb +1 -1
  108. data/lib/chef/provider/package/habitat.rb +168 -0
  109. data/lib/chef/provider/package/portage.rb +2 -2
  110. data/lib/chef/provider/package/powershell.rb +13 -10
  111. data/lib/chef/provider/package/rubygems.rb +15 -21
  112. data/lib/chef/provider/package/windows.rb +2 -4
  113. data/lib/chef/provider/package/yum/python_helper.rb +109 -35
  114. data/lib/chef/provider/package/yum/yum_helper.py +42 -60
  115. data/lib/chef/provider/package/yum.rb +40 -16
  116. data/lib/chef/provider/package/zypper.rb +7 -0
  117. data/lib/chef/provider/package.rb +80 -49
  118. data/lib/chef/provider/registry_key.rb +4 -3
  119. data/lib/chef/provider/remote_file/http.rb +1 -1
  120. data/lib/chef/provider/route.rb +2 -2
  121. data/lib/chef/provider/service/aixinit.rb +1 -1
  122. data/lib/chef/provider/service/debian.rb +1 -1
  123. data/lib/chef/provider/service/freebsd.rb +15 -21
  124. data/lib/chef/provider/service/macosx.rb +4 -4
  125. data/lib/chef/provider/service/systemd.rb +43 -14
  126. data/lib/chef/provider/service/upstart.rb +2 -13
  127. data/lib/chef/provider/service/windows.rb +16 -16
  128. data/lib/chef/provider/service.rb +6 -6
  129. data/lib/chef/provider/subversion.rb +18 -20
  130. data/lib/chef/provider/support/yum_repo.erb +1 -1
  131. data/lib/chef/provider/support/zypper_repo.erb +4 -2
  132. data/lib/chef/provider/systemd_unit.rb +53 -26
  133. data/lib/chef/provider/template/content.rb +2 -6
  134. data/lib/chef/provider/template.rb +1 -1
  135. data/lib/chef/provider/user/dscl.rb +1 -1
  136. data/lib/chef/provider/user/mac.rb +23 -26
  137. data/lib/chef/provider/user/pw.rb +1 -1
  138. data/lib/chef/provider/user/windows.rb +3 -3
  139. data/lib/chef/provider/user.rb +7 -3
  140. data/lib/chef/provider/windows_script.rb +1 -1
  141. data/lib/chef/provider/yum_repository.rb +27 -43
  142. data/lib/chef/provider/zypper_repository.rb +31 -35
  143. data/lib/chef/provider.rb +32 -4
  144. data/lib/chef/provider_resolver.rb +8 -2
  145. data/lib/chef/providers.rb +1 -2
  146. data/lib/chef/pwsh.rb +3 -2
  147. data/lib/chef/resource/alternatives.rb +6 -6
  148. data/lib/chef/resource/apt_package.rb +3 -3
  149. data/lib/chef/resource/apt_preference.rb +2 -2
  150. data/lib/chef/resource/apt_repository.rb +6 -6
  151. data/lib/chef/resource/apt_update.rb +5 -4
  152. data/lib/chef/resource/archive_file.rb +19 -17
  153. data/lib/chef/resource/breakpoint.rb +1 -1
  154. data/lib/chef/resource/build_essential.rb +2 -6
  155. data/lib/chef/resource/chef_client_config.rb +38 -6
  156. data/lib/chef/resource/chef_client_cron.rb +5 -5
  157. data/lib/chef/resource/chef_client_launchd.rb +7 -7
  158. data/lib/chef/resource/chef_client_scheduled_task.rb +61 -18
  159. data/lib/chef/resource/chef_client_systemd_timer.rb +6 -6
  160. data/lib/chef/resource/chef_client_trusted_certificate.rb +2 -2
  161. data/lib/chef/resource/chef_handler.rb +3 -7
  162. data/lib/chef/resource/chef_sleep.rb +1 -1
  163. data/lib/chef/resource/chef_vault_secret.rb +5 -10
  164. data/lib/chef/resource/chocolatey_config.rb +16 -20
  165. data/lib/chef/resource/chocolatey_feature.rb +3 -7
  166. data/lib/chef/resource/chocolatey_package.rb +3 -3
  167. data/lib/chef/resource/chocolatey_source.rb +28 -12
  168. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  169. data/lib/chef/resource/cron/cron.rb +75 -1
  170. data/lib/chef/resource/cron/cron_d.rb +5 -6
  171. data/lib/chef/resource/cron_access.rb +2 -4
  172. data/lib/chef/resource/directory.rb +1 -1
  173. data/lib/chef/resource/dmg_package.rb +6 -10
  174. data/lib/chef/resource/dnf_package.rb +4 -6
  175. data/lib/chef/resource/dpkg_package.rb +6 -1
  176. data/lib/chef/resource/dsc_resource.rb +1 -1
  177. data/lib/chef/resource/execute.rb +14 -12
  178. data/lib/chef/resource/file/verification/json.rb +50 -0
  179. data/lib/chef/resource/{user/dscl_user.rb → file/verification/yaml.rb} +26 -9
  180. data/lib/chef/resource/file.rb +1 -1
  181. data/lib/chef/resource/gem_package.rb +2 -1
  182. data/lib/chef/resource/group.rb +6 -6
  183. data/lib/chef/{knife/recipe_list.rb → resource/habitat/_habitat_shared.rb} +13 -17
  184. data/lib/chef/resource/habitat/habitat_package.rb +129 -0
  185. data/lib/chef/resource/habitat/habitat_sup.rb +329 -0
  186. data/lib/chef/resource/habitat/habitat_sup_systemd.rb +67 -0
  187. data/lib/chef/resource/habitat/habitat_sup_windows.rb +90 -0
  188. data/lib/chef/resource/habitat_config.rb +107 -0
  189. data/lib/chef/resource/habitat_install.rb +247 -0
  190. data/lib/chef/resource/habitat_service.rb +451 -0
  191. data/lib/chef/resource/habitat_user_toml.rb +92 -0
  192. data/lib/chef/resource/homebrew_cask.rb +10 -10
  193. data/lib/chef/resource/homebrew_package.rb +1 -1
  194. data/lib/chef/resource/homebrew_tap.rb +9 -16
  195. data/lib/chef/resource/homebrew_update.rb +2 -2
  196. data/lib/chef/resource/hostname.rb +68 -22
  197. data/lib/chef/resource/http_request.rb +1 -1
  198. data/lib/chef/resource/inspec_input.rb +127 -0
  199. data/lib/chef/resource/inspec_waiver.rb +184 -0
  200. data/lib/chef/resource/inspec_waiver_file_entry.rb +156 -0
  201. data/lib/chef/resource/kernel_module.rb +32 -18
  202. data/lib/chef/resource/launchd.rb +5 -8
  203. data/lib/chef/resource/locale.rb +7 -5
  204. data/lib/chef/resource/lwrp_base.rb +20 -1
  205. data/lib/chef/resource/macos_userdefaults.rb +54 -144
  206. data/lib/chef/resource/mdadm.rb +53 -7
  207. data/lib/chef/resource/mount.rb +2 -1
  208. data/lib/chef/resource/ohai_hint.rb +2 -6
  209. data/lib/chef/resource/openbsd_package.rb +17 -0
  210. data/lib/chef/resource/openssl_dhparam.rb +1 -2
  211. data/lib/chef/resource/openssl_ec_private_key.rb +3 -5
  212. data/lib/chef/resource/openssl_ec_public_key.rb +1 -3
  213. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -4
  214. data/lib/chef/resource/openssl_rsa_public_key.rb +1 -3
  215. data/lib/chef/resource/openssl_x509_certificate.rb +4 -7
  216. data/lib/chef/resource/openssl_x509_crl.rb +1 -3
  217. data/lib/chef/resource/openssl_x509_request.rb +1 -3
  218. data/lib/chef/resource/osx_profile.rb +3 -3
  219. data/lib/chef/resource/plist.rb +8 -8
  220. data/lib/chef/resource/powershell_package_source.rb +235 -73
  221. data/lib/chef/resource/powershell_script.rb +1 -1
  222. data/lib/chef/resource/reboot.rb +38 -9
  223. data/lib/chef/resource/registry_key.rb +36 -48
  224. data/lib/chef/resource/remote_directory.rb +2 -2
  225. data/lib/chef/resource/remote_file.rb +103 -7
  226. data/lib/chef/resource/rhsm_errata.rb +16 -3
  227. data/lib/chef/resource/rhsm_errata_level.rb +11 -6
  228. data/lib/chef/resource/rhsm_register.rb +42 -3
  229. data/lib/chef/resource/rhsm_repo.rb +17 -6
  230. data/lib/chef/resource/rhsm_subscription.rb +2 -6
  231. data/lib/chef/resource/ruby_block.rb +100 -0
  232. data/lib/chef/resource/scm/git.rb +1 -1
  233. data/lib/chef/resource/scm/subversion.rb +1 -1
  234. data/lib/chef/resource/ssh_known_hosts_entry.rb +4 -7
  235. data/lib/chef/resource/sudo.rb +8 -12
  236. data/lib/chef/resource/support/HabService.dll.config.erb +19 -0
  237. data/lib/chef/resource/support/client.erb +11 -1
  238. data/lib/chef/resource/support/sup.toml.erb +179 -0
  239. data/lib/chef/resource/swap_file.rb +2 -6
  240. data/lib/chef/resource/sysctl.rb +2 -6
  241. data/lib/chef/resource/systemd_unit.rb +2 -2
  242. data/lib/chef/resource/template.rb +1 -1
  243. data/lib/chef/resource/timezone.rb +3 -5
  244. data/lib/chef/resource/user/mac_user.rb +1 -1
  245. data/lib/chef/resource/user_ulimit.rb +2 -2
  246. data/lib/chef/resource/windows_ad_join.rb +2 -6
  247. data/lib/chef/resource/windows_audit_policy.rb +2 -2
  248. data/lib/chef/resource/windows_auto_run.rb +3 -6
  249. data/lib/chef/resource/windows_certificate.rb +235 -90
  250. data/lib/chef/resource/windows_defender.rb +163 -0
  251. data/lib/chef/resource/windows_defender_exclusion.rb +125 -0
  252. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  253. data/lib/chef/resource/windows_dfs_namespace.rb +4 -8
  254. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  255. data/lib/chef/resource/windows_dns_record.rb +2 -6
  256. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  257. data/lib/chef/resource/windows_env.rb +6 -5
  258. data/lib/chef/resource/windows_feature.rb +3 -9
  259. data/lib/chef/resource/windows_feature_dism.rb +3 -9
  260. data/lib/chef/resource/windows_feature_powershell.rb +11 -12
  261. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  262. data/lib/chef/resource/windows_firewall_rule.rb +20 -9
  263. data/lib/chef/resource/windows_font.rb +3 -5
  264. data/lib/chef/resource/windows_pagefile.rb +111 -69
  265. data/lib/chef/resource/windows_path.rb +4 -4
  266. data/lib/chef/resource/windows_printer.rb +80 -61
  267. data/lib/chef/resource/windows_printer_port.rb +49 -66
  268. data/lib/chef/resource/windows_security_policy.rb +10 -10
  269. data/lib/chef/resource/windows_share.rb +14 -21
  270. data/lib/chef/resource/windows_shortcut.rb +4 -6
  271. data/lib/chef/resource/windows_task.rb +44 -17
  272. data/lib/chef/resource/windows_uac.rb +3 -5
  273. data/lib/chef/resource/windows_update_settings.rb +259 -0
  274. data/lib/chef/resource/windows_workgroup.rb +3 -4
  275. data/lib/chef/resource/yum_package.rb +11 -15
  276. data/lib/chef/resource/zypper_package.rb +4 -4
  277. data/lib/chef/resource/zypper_repository.rb +28 -8
  278. data/lib/chef/resource.rb +24 -27
  279. data/lib/chef/resource_builder.rb +8 -2
  280. data/lib/chef/resource_inspector.rb +6 -2
  281. data/lib/chef/resource_reporter.rb +1 -2
  282. data/lib/chef/resources.rb +15 -2
  283. data/lib/chef/run_context/cookbook_compiler.rb +112 -28
  284. data/lib/chef/run_context.rb +47 -1
  285. data/lib/chef/run_lock.rb +2 -2
  286. data/lib/chef/runner.rb +1 -1
  287. data/lib/chef/secret_fetcher/akeyless_vault.rb +57 -0
  288. data/lib/chef/secret_fetcher/aws_secrets_manager.rb +65 -0
  289. data/lib/chef/secret_fetcher/azure_key_vault.rb +134 -0
  290. data/lib/chef/secret_fetcher/base.rb +76 -0
  291. data/lib/chef/secret_fetcher/example.rb +46 -0
  292. data/lib/chef/secret_fetcher/hashi_vault.rb +134 -0
  293. data/lib/chef/secret_fetcher.rb +60 -0
  294. data/lib/chef/user.rb +0 -1
  295. data/lib/chef/user_v1.rb +3 -4
  296. data/lib/chef/util/dsc/configuration_generator.rb +2 -1
  297. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  298. data/lib/chef/version.rb +1 -1
  299. data/lib/chef/win32/api.rb +1 -1
  300. data/lib/chef/win32/registry.rb +4 -2
  301. data/spec/data/archive_file/test_archive.tar.gz +0 -0
  302. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  303. data/spec/data/lwrp/resources/bar.rb +2 -0
  304. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  305. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  306. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  307. data/spec/data/lwrp/resources/foo.rb +2 -0
  308. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  309. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  310. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  311. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  312. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  313. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  314. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  315. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  316. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  317. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  318. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  319. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  320. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  321. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  322. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  323. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  324. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  325. data/spec/data/trusted_certs/example.crt +29 -20
  326. data/spec/data/trusted_certs/example_no_cn.crt +30 -34
  327. data/spec/data/trusted_certs/opscode.pem +33 -54
  328. data/spec/functional/assets/yumrepo/repodata/01a3b-filelists.sqlite.bz2 +0 -0
  329. data/spec/functional/assets/yumrepo/repodata/401dc-filelists.xml.gz +0 -0
  330. data/spec/functional/assets/yumrepo/repodata/5dc1e-primary.sqlite.bz2 +0 -0
  331. data/spec/functional/assets/yumrepo/repodata/6bf96-other.xml.gz +0 -0
  332. data/spec/functional/assets/yumrepo/repodata/7c365-other.sqlite.bz2 +0 -0
  333. data/spec/functional/assets/yumrepo/repodata/dabe2-primary.xml.gz +0 -0
  334. data/spec/functional/dsl/reboot_pending_spec.rb +3 -3
  335. data/spec/functional/dsl/registry_helper_spec.rb +2 -2
  336. data/spec/functional/mixin/from_file_spec.rb +1 -1
  337. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  338. data/spec/functional/resource/apt_package_spec.rb +1 -1
  339. data/spec/functional/resource/archive_file_spec.rb +88 -0
  340. data/spec/functional/resource/chocolatey_package_spec.rb +41 -20
  341. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  342. data/spec/functional/resource/dnf_package_spec.rb +997 -645
  343. data/spec/functional/resource/dpkg_package_spec.rb +16 -0
  344. data/spec/functional/resource/dsc_script_spec.rb +5 -5
  345. data/spec/functional/resource/group_spec.rb +39 -19
  346. data/spec/functional/resource/link_spec.rb +1 -1
  347. data/spec/functional/resource/macos_userdefaults_spec.rb +139 -0
  348. data/spec/functional/resource/powershell_package_source_spec.rb +5 -6
  349. data/spec/functional/resource/registry_spec.rb +89 -89
  350. data/spec/functional/resource/remote_file_spec.rb +1 -1
  351. data/spec/functional/resource/template_spec.rb +1 -1
  352. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  353. data/spec/functional/resource/windows_certificate_spec.rb +122 -37
  354. data/spec/functional/resource/windows_env_spec.rb +2 -2
  355. data/spec/functional/resource/windows_font_spec.rb +1 -2
  356. data/spec/functional/resource/windows_hostname_spec.rb +91 -0
  357. data/spec/functional/resource/windows_pagefile_spec.rb +125 -0
  358. data/spec/functional/resource/yum_package_spec.rb +1197 -451
  359. data/spec/functional/resource/zypper_package_spec.rb +17 -0
  360. data/spec/functional/shell_spec.rb +1 -0
  361. data/spec/functional/version_spec.rb +1 -1
  362. data/spec/functional/win32/registry_spec.rb +12 -9
  363. data/spec/integration/client/client_spec.rb +37 -23
  364. data/spec/integration/client/exit_code_spec.rb +1 -1
  365. data/spec/integration/client/fips_spec.rb +9 -1
  366. data/spec/integration/client/ipv6_spec.rb +1 -1
  367. data/spec/integration/client/open_ssl_spec.rb +20 -0
  368. data/spec/integration/compliance/compliance_spec.rb +62 -1
  369. data/spec/integration/ohai/ohai_spec.rb +7 -6
  370. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  371. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  372. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  373. data/spec/integration/recipes/notifies_spec.rb +15 -1
  374. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  375. data/spec/integration/recipes/recipe_dsl_spec.rb +10 -10
  376. data/spec/integration/recipes/resource_action_spec.rb +6 -6
  377. data/spec/integration/recipes/unified_mode_spec.rb +71 -1
  378. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  379. data/spec/spec_helper.rb +20 -18
  380. data/spec/support/chef_helpers.rb +1 -17
  381. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  382. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  383. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  384. data/spec/support/matchers/leak.rb +7 -9
  385. data/spec/support/platform_helpers.rb +14 -13
  386. data/spec/support/ruby_installer.rb +51 -0
  387. data/spec/support/shared/functional/execute_resource.rb +1 -1
  388. data/spec/support/shared/functional/file_resource.rb +2 -2
  389. data/spec/support/shared/functional/http.rb +9 -9
  390. data/spec/support/shared/integration/integration_helper.rb +0 -1
  391. data/spec/support/shared/unit/provider/file.rb +3 -9
  392. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +1 -1
  393. data/spec/support/shared/unit/script_resource.rb +2 -2
  394. data/spec/unit/application/base_spec.rb +40 -0
  395. data/spec/unit/application/solo_spec.rb +2 -2
  396. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  397. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
  398. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  399. data/spec/unit/client_spec.rb +0 -16
  400. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  401. data/spec/unit/compliance/input_spec.rb +104 -0
  402. data/spec/unit/compliance/profile_spec.rb +120 -0
  403. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  404. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +21 -1
  405. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +4 -3
  406. data/spec/unit/compliance/runner_spec.rb +137 -6
  407. data/spec/unit/compliance/waiver_spec.rb +104 -0
  408. data/spec/unit/data_bag_item_spec.rb +1 -6
  409. data/spec/unit/dsl/reboot_pending_spec.rb +3 -3
  410. data/spec/unit/dsl/registry_helper_spec.rb +7 -7
  411. data/spec/unit/dsl/render_helpers_spec.rb +102 -0
  412. data/spec/unit/dsl/secret_spec.rb +175 -0
  413. data/spec/unit/file_access_control_spec.rb +1 -1
  414. data/spec/unit/formatters/doc_spec.rb +1 -1
  415. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +1 -1
  416. data/spec/unit/handler_spec.rb +8 -2
  417. data/spec/unit/http/basic_client_spec.rb +30 -0
  418. data/spec/unit/http_spec.rb +8 -2
  419. data/spec/unit/lwrp_spec.rb +3 -3
  420. data/spec/unit/mixin/default_paths_spec.rb +1 -1
  421. data/spec/unit/mixin/homebrew_user_spec.rb +30 -7
  422. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  423. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  424. data/spec/unit/mixin/powershell_exec_spec.rb +9 -9
  425. data/spec/unit/mixin/powershell_out_spec.rb +2 -2
  426. data/spec/unit/mixin/securable_spec.rb +3 -3
  427. data/spec/unit/mixin/why_run_spec.rb +53 -0
  428. data/spec/unit/node/attribute_spec.rb +1 -1
  429. data/spec/unit/node_spec.rb +78 -0
  430. data/spec/unit/org_group_spec.rb +45 -0
  431. data/spec/unit/platform/query_helpers_spec.rb +5 -5
  432. data/spec/unit/policy_builder/dynamic_spec.rb +0 -5
  433. data/spec/unit/policy_builder/policyfile_spec.rb +133 -55
  434. data/spec/unit/property_spec.rb +23 -22
  435. data/spec/unit/provider/apt_update_spec.rb +3 -1
  436. data/spec/unit/provider/cron_spec.rb +46 -1
  437. data/spec/unit/provider/dsc_script_spec.rb +8 -8
  438. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  439. data/spec/unit/provider/group/groupadd_spec.rb +1 -0
  440. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  441. data/spec/unit/provider/group/pw_spec.rb +2 -2
  442. data/spec/unit/provider/group/usermod_spec.rb +4 -4
  443. data/spec/unit/provider/group_spec.rb +1 -1
  444. data/spec/unit/provider/ifconfig/aix_spec.rb +14 -14
  445. data/spec/unit/provider/ifconfig/debian_spec.rb +1 -1
  446. data/spec/unit/provider/ifconfig/redhat_spec.rb +1 -1
  447. data/spec/unit/provider/ifconfig_spec.rb +5 -3
  448. data/spec/unit/provider/link_spec.rb +14 -8
  449. data/spec/unit/provider/mount/aix_spec.rb +1 -1
  450. data/spec/unit/provider/mount/linux_spec.rb +16 -3
  451. data/spec/unit/provider/package/apt_spec.rb +84 -18
  452. data/spec/unit/provider/package/bff_spec.rb +1 -0
  453. data/spec/unit/provider/package/chocolatey_spec.rb +20 -3
  454. data/spec/unit/provider/package/deb_spec.rb +3 -3
  455. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -0
  456. data/spec/unit/provider/package/powershell_spec.rb +114 -114
  457. data/spec/unit/provider/package/rubygems_spec.rb +27 -36
  458. data/spec/unit/provider/package/solaris_spec.rb +1 -0
  459. data/spec/unit/provider/package/windows_spec.rb +1 -1
  460. data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -0
  461. data/spec/unit/provider/registry_key_spec.rb +4 -4
  462. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +3 -3
  463. data/spec/unit/provider/remote_file/http_spec.rb +10 -0
  464. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  465. data/spec/unit/provider/service/debian_service_spec.rb +2 -0
  466. data/spec/unit/provider/service/gentoo_service_spec.rb +3 -2
  467. data/spec/unit/provider/service/macosx_spec.rb +3 -2
  468. data/spec/unit/provider/service/redhat_spec.rb +4 -1
  469. data/spec/unit/provider/service/simple_service_spec.rb +6 -4
  470. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  471. data/spec/unit/provider/service/upstart_service_spec.rb +3 -32
  472. data/spec/unit/provider/service/windows_spec.rb +7 -7
  473. data/spec/unit/provider/subversion_spec.rb +6 -6
  474. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  475. data/spec/unit/provider/template_spec.rb +2 -2
  476. data/spec/unit/provider/user/linux_spec.rb +55 -0
  477. data/spec/unit/provider/user/solaris_spec.rb +1 -1
  478. data/spec/unit/provider/user_spec.rb +2 -0
  479. data/spec/unit/provider/windows_env_spec.rb +1 -1
  480. data/spec/unit/provider/zypper_repository_spec.rb +6 -13
  481. data/spec/unit/provider_spec.rb +23 -8
  482. data/spec/unit/resource/archive_file_spec.rb +400 -2
  483. data/spec/unit/resource/chef_client_config_spec.rb +8 -0
  484. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +69 -0
  485. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +1 -1
  486. data/spec/unit/resource/chocolatey_config_spec.rb +1 -1
  487. data/spec/unit/resource/chocolatey_feature_spec.rb +1 -1
  488. data/spec/unit/resource/chocolatey_source_spec.rb +1 -1
  489. data/spec/unit/resource/conditional_spec.rb +4 -4
  490. data/spec/unit/resource/dpkg_package_spec.rb +12 -0
  491. data/spec/unit/resource/file/verification/json_spec.rb +72 -0
  492. data/spec/unit/resource/file/verification/yaml_spec.rb +67 -0
  493. data/spec/unit/resource/inspec_input_spec.rb +300 -0
  494. data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
  495. data/spec/unit/resource/inspec_waiver_spec.rb +312 -0
  496. data/spec/unit/resource/kernel_module_spec.rb +2 -1
  497. data/spec/unit/resource/macos_user_defaults_spec.rb +36 -96
  498. data/spec/unit/resource/powershell_package_source_spec.rb +63 -62
  499. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  500. data/spec/unit/resource/registry_key_spec.rb +10 -10
  501. data/spec/unit/resource/rhsm_register_spec.rb +42 -0
  502. data/spec/unit/resource/windows_auto_run_spec.rb +1 -1
  503. data/spec/unit/resource/windows_defender_exclusion_spec.rb +62 -0
  504. data/spec/unit/resource/windows_defender_spec.rb +71 -0
  505. data/spec/unit/resource/windows_feature_powershell_spec.rb +1 -1
  506. data/spec/unit/resource/windows_firewall_rule_spec.rb +14 -9
  507. data/spec/unit/resource/windows_pagefile_spec.rb +4 -9
  508. data/spec/unit/resource/windows_task_spec.rb +4 -4
  509. data/spec/unit/resource/windows_update_settings_spec.rb +64 -0
  510. data/spec/unit/resource/zypper_repository_spec.rb +1 -1
  511. data/spec/unit/resource_reporter_spec.rb +2 -2
  512. data/spec/unit/resource_spec.rb +56 -23
  513. data/spec/unit/run_context_spec.rb +16 -0
  514. data/spec/unit/secret_fetcher/akeyless_vault_spec.rb +37 -0
  515. data/spec/unit/secret_fetcher/aws_secrets_manager_spec.rb +70 -0
  516. data/spec/unit/secret_fetcher/azure_key_vault_spec.rb +149 -0
  517. data/spec/unit/secret_fetcher/hashi_vault_spec.rb +126 -0
  518. data/spec/unit/secret_fetcher_spec.rb +82 -0
  519. data/spec/unit/user_spec.rb +1 -1
  520. data/spec/unit/user_v1_spec.rb +6 -4
  521. data/spec/unit/util/backup_spec.rb +1 -1
  522. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +2 -2
  523. data/spec/unit/win32/registry_spec.rb +3 -3
  524. data/tasks/rspec.rb +10 -6
  525. metadata +181 -532
  526. data/bin/knife +0 -24
  527. data/lib/chef/application/knife.rb +0 -234
  528. data/lib/chef/application/windows_service.rb +0 -338
  529. data/lib/chef/application/windows_service_manager.rb +0 -205
  530. data/lib/chef/chef_fs/knife.rb +0 -160
  531. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  532. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  533. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  534. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  535. data/lib/chef/knife/acl_add.rb +0 -57
  536. data/lib/chef/knife/acl_base.rb +0 -183
  537. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  538. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  539. data/lib/chef/knife/acl_remove.rb +0 -62
  540. data/lib/chef/knife/acl_show.rb +0 -56
  541. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  542. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  543. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  544. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  545. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  546. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  547. data/lib/chef/knife/bootstrap.rb +0 -1192
  548. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  549. data/lib/chef/knife/client_create.rb +0 -101
  550. data/lib/chef/knife/client_delete.rb +0 -62
  551. data/lib/chef/knife/client_edit.rb +0 -52
  552. data/lib/chef/knife/client_key_create.rb +0 -73
  553. data/lib/chef/knife/client_key_delete.rb +0 -80
  554. data/lib/chef/knife/client_key_edit.rb +0 -83
  555. data/lib/chef/knife/client_key_list.rb +0 -73
  556. data/lib/chef/knife/client_key_show.rb +0 -80
  557. data/lib/chef/knife/client_list.rb +0 -41
  558. data/lib/chef/knife/client_reregister.rb +0 -58
  559. data/lib/chef/knife/config_get.rb +0 -39
  560. data/lib/chef/knife/config_get_profile.rb +0 -37
  561. data/lib/chef/knife/config_list.rb +0 -139
  562. data/lib/chef/knife/config_list_profiles.rb +0 -37
  563. data/lib/chef/knife/config_show.rb +0 -127
  564. data/lib/chef/knife/config_use.rb +0 -61
  565. data/lib/chef/knife/config_use_profile.rb +0 -47
  566. data/lib/chef/knife/configure.rb +0 -150
  567. data/lib/chef/knife/configure_client.rb +0 -48
  568. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  569. data/lib/chef/knife/cookbook_delete.rb +0 -151
  570. data/lib/chef/knife/cookbook_download.rb +0 -142
  571. data/lib/chef/knife/cookbook_list.rb +0 -47
  572. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  573. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  574. data/lib/chef/knife/cookbook_show.rb +0 -98
  575. data/lib/chef/knife/cookbook_upload.rb +0 -292
  576. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  577. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  578. data/lib/chef/knife/core/formatting_options.rb +0 -49
  579. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  580. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  581. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  582. data/lib/chef/knife/core/node_editor.rb +0 -130
  583. data/lib/chef/knife/core/node_presenter.rb +0 -133
  584. data/lib/chef/knife/core/object_loader.rb +0 -115
  585. data/lib/chef/knife/core/status_presenter.rb +0 -147
  586. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  587. data/lib/chef/knife/core/text_formatter.rb +0 -85
  588. data/lib/chef/knife/core/ui.rb +0 -338
  589. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
  590. data/lib/chef/knife/data_bag_create.rb +0 -81
  591. data/lib/chef/knife/data_bag_delete.rb +0 -49
  592. data/lib/chef/knife/data_bag_edit.rb +0 -74
  593. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  594. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  595. data/lib/chef/knife/data_bag_show.rb +0 -69
  596. data/lib/chef/knife/delete.rb +0 -125
  597. data/lib/chef/knife/deps.rb +0 -156
  598. data/lib/chef/knife/diff.rb +0 -83
  599. data/lib/chef/knife/download.rb +0 -84
  600. data/lib/chef/knife/edit.rb +0 -88
  601. data/lib/chef/knife/environment_compare.rb +0 -128
  602. data/lib/chef/knife/environment_create.rb +0 -52
  603. data/lib/chef/knife/environment_delete.rb +0 -44
  604. data/lib/chef/knife/environment_edit.rb +0 -44
  605. data/lib/chef/knife/environment_from_file.rb +0 -84
  606. data/lib/chef/knife/environment_list.rb +0 -41
  607. data/lib/chef/knife/environment_show.rb +0 -47
  608. data/lib/chef/knife/exec.rb +0 -99
  609. data/lib/chef/knife/group_add.rb +0 -55
  610. data/lib/chef/knife/group_create.rb +0 -49
  611. data/lib/chef/knife/group_destroy.rb +0 -53
  612. data/lib/chef/knife/group_remove.rb +0 -56
  613. data/lib/chef/knife/group_show.rb +0 -49
  614. data/lib/chef/knife/key_create.rb +0 -112
  615. data/lib/chef/knife/key_create_base.rb +0 -50
  616. data/lib/chef/knife/key_delete.rb +0 -55
  617. data/lib/chef/knife/key_edit.rb +0 -118
  618. data/lib/chef/knife/key_edit_base.rb +0 -55
  619. data/lib/chef/knife/key_list.rb +0 -90
  620. data/lib/chef/knife/key_list_base.rb +0 -45
  621. data/lib/chef/knife/key_show.rb +0 -53
  622. data/lib/chef/knife/list.rb +0 -177
  623. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  624. data/lib/chef/knife/node_create.rb +0 -47
  625. data/lib/chef/knife/node_delete.rb +0 -46
  626. data/lib/chef/knife/node_edit.rb +0 -70
  627. data/lib/chef/knife/node_environment_set.rb +0 -53
  628. data/lib/chef/knife/node_from_file.rb +0 -51
  629. data/lib/chef/knife/node_list.rb +0 -44
  630. data/lib/chef/knife/node_policy_set.rb +0 -79
  631. data/lib/chef/knife/node_run_list_add.rb +0 -104
  632. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  633. data/lib/chef/knife/node_run_list_set.rb +0 -66
  634. data/lib/chef/knife/node_show.rb +0 -63
  635. data/lib/chef/knife/null.rb +0 -12
  636. data/lib/chef/knife/raw.rb +0 -123
  637. data/lib/chef/knife/rehash.rb +0 -50
  638. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  639. data/lib/chef/knife/role_create.rb +0 -53
  640. data/lib/chef/knife/role_delete.rb +0 -46
  641. data/lib/chef/knife/role_edit.rb +0 -45
  642. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  643. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  644. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  645. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  646. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  647. data/lib/chef/knife/role_from_file.rb +0 -51
  648. data/lib/chef/knife/role_list.rb +0 -42
  649. data/lib/chef/knife/role_run_list_add.rb +0 -87
  650. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  651. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  652. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  653. data/lib/chef/knife/role_run_list_set.rb +0 -69
  654. data/lib/chef/knife/role_show.rb +0 -48
  655. data/lib/chef/knife/search.rb +0 -194
  656. data/lib/chef/knife/serve.rb +0 -65
  657. data/lib/chef/knife/show.rb +0 -72
  658. data/lib/chef/knife/ssh.rb +0 -645
  659. data/lib/chef/knife/ssl_check.rb +0 -284
  660. data/lib/chef/knife/ssl_fetch.rb +0 -161
  661. data/lib/chef/knife/status.rb +0 -95
  662. data/lib/chef/knife/supermarket_download.rb +0 -121
  663. data/lib/chef/knife/supermarket_install.rb +0 -192
  664. data/lib/chef/knife/supermarket_list.rb +0 -76
  665. data/lib/chef/knife/supermarket_search.rb +0 -53
  666. data/lib/chef/knife/supermarket_share.rb +0 -166
  667. data/lib/chef/knife/supermarket_show.rb +0 -66
  668. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  669. data/lib/chef/knife/tag_create.rb +0 -52
  670. data/lib/chef/knife/tag_delete.rb +0 -60
  671. data/lib/chef/knife/tag_list.rb +0 -47
  672. data/lib/chef/knife/upload.rb +0 -86
  673. data/lib/chef/knife/user_create.rb +0 -107
  674. data/lib/chef/knife/user_delete.rb +0 -44
  675. data/lib/chef/knife/user_dissociate.rb +0 -42
  676. data/lib/chef/knife/user_edit.rb +0 -52
  677. data/lib/chef/knife/user_invite_add.rb +0 -43
  678. data/lib/chef/knife/user_invite_list.rb +0 -34
  679. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  680. data/lib/chef/knife/user_key_create.rb +0 -73
  681. data/lib/chef/knife/user_key_delete.rb +0 -80
  682. data/lib/chef/knife/user_key_edit.rb +0 -83
  683. data/lib/chef/knife/user_key_list.rb +0 -73
  684. data/lib/chef/knife/user_key_show.rb +0 -80
  685. data/lib/chef/knife/user_list.rb +0 -42
  686. data/lib/chef/knife/user_reregister.rb +0 -59
  687. data/lib/chef/knife/user_show.rb +0 -48
  688. data/lib/chef/knife/xargs.rb +0 -282
  689. data/lib/chef/knife/yaml_convert.rb +0 -91
  690. data/lib/chef/knife.rb +0 -665
  691. data/lib/chef/provider/group/suse.rb +0 -82
  692. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
  693. data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
  694. data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
  695. data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
  696. data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
  697. data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
  698. data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
  699. data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
  700. data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
  701. data/lib/chef/provider/package/yum/simplejson/tool.py +0 -37
  702. data/spec/functional/knife/configure_spec.rb +0 -33
  703. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  704. data/spec/functional/knife/exec_spec.rb +0 -55
  705. data/spec/functional/knife/rehash_spec.rb +0 -39
  706. data/spec/functional/knife/smoke_test.rb +0 -42
  707. data/spec/functional/knife/ssh_spec.rb +0 -352
  708. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  709. data/spec/functional/resource/windows_service_spec.rb +0 -105
  710. data/spec/functional/win32/service_manager_spec.rb +0 -220
  711. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  712. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  713. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  714. data/spec/integration/knife/chefignore_spec.rb +0 -301
  715. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  716. data/spec/integration/knife/client_create_spec.rb +0 -70
  717. data/spec/integration/knife/client_delete_spec.rb +0 -64
  718. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  719. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  720. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  721. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  722. data/spec/integration/knife/client_list_spec.rb +0 -49
  723. data/spec/integration/knife/client_show_spec.rb +0 -37
  724. data/spec/integration/knife/common_options_spec.rb +0 -174
  725. data/spec/integration/knife/config_list_spec.rb +0 -220
  726. data/spec/integration/knife/config_show_spec.rb +0 -192
  727. data/spec/integration/knife/config_use_spec.rb +0 -198
  728. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  729. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  730. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  731. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  732. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  733. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  734. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  735. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  736. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  737. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  738. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  739. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  740. data/spec/integration/knife/delete_spec.rb +0 -1018
  741. data/spec/integration/knife/deps_spec.rb +0 -703
  742. data/spec/integration/knife/diff_spec.rb +0 -605
  743. data/spec/integration/knife/download_spec.rb +0 -1336
  744. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  745. data/spec/integration/knife/environment_create_spec.rb +0 -41
  746. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  747. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  748. data/spec/integration/knife/environment_list_spec.rb +0 -42
  749. data/spec/integration/knife/environment_show_spec.rb +0 -77
  750. data/spec/integration/knife/list_spec.rb +0 -1060
  751. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  752. data/spec/integration/knife/node_create_spec.rb +0 -47
  753. data/spec/integration/knife/node_delete_spec.rb +0 -48
  754. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  755. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  756. data/spec/integration/knife/node_list_spec.rb +0 -45
  757. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  758. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  759. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  760. data/spec/integration/knife/node_show_spec.rb +0 -36
  761. data/spec/integration/knife/raw_spec.rb +0 -297
  762. data/spec/integration/knife/redirection_spec.rb +0 -64
  763. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  764. data/spec/integration/knife/role_create_spec.rb +0 -41
  765. data/spec/integration/knife/role_delete_spec.rb +0 -48
  766. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  767. data/spec/integration/knife/role_list_spec.rb +0 -45
  768. data/spec/integration/knife/role_show_spec.rb +0 -51
  769. data/spec/integration/knife/search_node_spec.rb +0 -40
  770. data/spec/integration/knife/serve_spec.rb +0 -92
  771. data/spec/integration/knife/show_spec.rb +0 -197
  772. data/spec/integration/knife/upload_spec.rb +0 -1616
  773. data/spec/support/shared/functional/win32_service.rb +0 -57
  774. data/spec/unit/application/knife_spec.rb +0 -241
  775. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  776. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  777. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  778. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  779. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  780. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  781. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  782. data/spec/unit/knife/client_create_spec.rb +0 -169
  783. data/spec/unit/knife/client_delete_spec.rb +0 -99
  784. data/spec/unit/knife/client_edit_spec.rb +0 -53
  785. data/spec/unit/knife/client_list_spec.rb +0 -34
  786. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  787. data/spec/unit/knife/client_show_spec.rb +0 -52
  788. data/spec/unit/knife/configure_client_spec.rb +0 -81
  789. data/spec/unit/knife/configure_spec.rb +0 -190
  790. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  791. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  792. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  793. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  794. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  795. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  796. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  797. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  798. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  799. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  800. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  801. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  802. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  803. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  804. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  805. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  806. data/spec/unit/knife/core/ui_spec.rb +0 -656
  807. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  808. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  809. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  810. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  811. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  812. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  813. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  814. data/spec/unit/knife/environment_create_spec.rb +0 -91
  815. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  816. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  817. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  818. data/spec/unit/knife/environment_list_spec.rb +0 -54
  819. data/spec/unit/knife/environment_show_spec.rb +0 -52
  820. data/spec/unit/knife/key_create_spec.rb +0 -223
  821. data/spec/unit/knife/key_delete_spec.rb +0 -133
  822. data/spec/unit/knife/key_edit_spec.rb +0 -264
  823. data/spec/unit/knife/key_helper.rb +0 -74
  824. data/spec/unit/knife/key_list_spec.rb +0 -216
  825. data/spec/unit/knife/key_show_spec.rb +0 -126
  826. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  827. data/spec/unit/knife/node_delete_spec.rb +0 -77
  828. data/spec/unit/knife/node_edit_spec.rb +0 -116
  829. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  830. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  831. data/spec/unit/knife/node_list_spec.rb +0 -62
  832. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  833. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  834. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  835. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  836. data/spec/unit/knife/node_show_spec.rb +0 -65
  837. data/spec/unit/knife/raw_spec.rb +0 -43
  838. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  839. data/spec/unit/knife/role_create_spec.rb +0 -80
  840. data/spec/unit/knife/role_delete_spec.rb +0 -67
  841. data/spec/unit/knife/role_edit_spec.rb +0 -77
  842. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  843. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  844. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  845. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  846. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  847. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  848. data/spec/unit/knife/role_list_spec.rb +0 -54
  849. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  850. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  851. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  852. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  853. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  854. data/spec/unit/knife/role_show_spec.rb +0 -59
  855. data/spec/unit/knife/ssh_spec.rb +0 -403
  856. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  857. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  858. data/spec/unit/knife/status_spec.rb +0 -112
  859. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  860. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  861. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  862. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  863. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  864. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  865. data/spec/unit/knife/tag_create_spec.rb +0 -23
  866. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  867. data/spec/unit/knife/tag_list_spec.rb +0 -23
  868. data/spec/unit/knife/user_create_spec.rb +0 -184
  869. data/spec/unit/knife/user_delete_spec.rb +0 -46
  870. data/spec/unit/knife/user_edit_spec.rb +0 -48
  871. data/spec/unit/knife/user_list_spec.rb +0 -36
  872. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  873. data/spec/unit/knife/user_show_spec.rb +0 -46
  874. data/spec/unit/knife_spec.rb +0 -634
  875. data/spec/unit/provider/group/suse_spec.rb +0 -90
  876. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  877. data/spec/unit/windows_service_spec.rb +0 -118
  878. /data/spec/functional/assets/chocolatey_feed/{test-A.1.0.nupkg → test-A.1.0.0.nupkg} +0 -0
  879. /data/spec/functional/assets/chocolatey_feed/{test-A.1.5.nupkg → test-A.1.5.0.nupkg} +0 -0
  880. /data/spec/functional/assets/chocolatey_feed/{test-A.2.0.nupkg → test-A.2.0.0.nupkg} +0 -0
  881. /data/spec/functional/assets/chocolatey_feed/{test-B.1.0.nupkg → test-B.1.0.0.nupkg} +0 -0
@@ -0,0 +1,104 @@
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 "tempfile"
20
+
21
+ describe Chef::Compliance::Waiver do
22
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
23
+ let(:data) { { "ssh-01" => { "expiration_date" => Date.jd(2463810), "justification" => "waived, yo", "run" => false } } }
24
+ let(:path) { "/var/chef/cache/cookbooks/acme_compliance/compliance/waivers/default.yml" }
25
+ let(:cookbook_name) { "acme_compliance" }
26
+ let(:waiver) { Chef::Compliance::Waiver.new(events, data, path, cookbook_name) }
27
+
28
+ it "has a cookbook_name" do
29
+ expect(waiver.cookbook_name).to eql(cookbook_name)
30
+ end
31
+
32
+ it "has a path" do
33
+ expect(waiver.path).to eql(path)
34
+ end
35
+
36
+ it "has a pathname based on the path" do
37
+ expect(waiver.pathname).to eql("default")
38
+ end
39
+
40
+ it "is disabled" do
41
+ expect(waiver.enabled).to eql(false)
42
+ expect(waiver.enabled?).to eql(false)
43
+ end
44
+
45
+ it "has an event handler" do
46
+ expect(waiver.events).to eql(events)
47
+ end
48
+
49
+ it "can be enabled by enable!" do
50
+ waiver.enable!
51
+ expect(waiver.enabled).to eql(true)
52
+ expect(waiver.enabled?).to eql(true)
53
+ end
54
+
55
+ it "enabling sends an event" do
56
+ expect(events).to receive(:compliance_waiver_enabled).with(waiver)
57
+ waiver.enable!
58
+ end
59
+
60
+ it "can be disabled by disable!" do
61
+ waiver.enable!
62
+ waiver.disable!
63
+ expect(waiver.enabled).to eql(false)
64
+ expect(waiver.enabled?).to eql(false)
65
+ end
66
+
67
+ it "has a #inspec_data method that renders the data" do
68
+ expect(waiver.inspec_data).to eql(data)
69
+ end
70
+
71
+ it "doesn't render the events in the inspect output" do
72
+ expect(waiver.inspect).not_to include("events")
73
+ end
74
+
75
+ it "inflates objects from YAML" do
76
+ string = <<~EOH
77
+ ssh-01:
78
+ expiration_date: 2033-07-31
79
+ run: false
80
+ justification: "waived, yo"
81
+ EOH
82
+ newwaiver = Chef::Compliance::Waiver.from_yaml(events, string, path, cookbook_name)
83
+ expect(newwaiver.data).to eql(data)
84
+ end
85
+
86
+ it "inflates objects from files" do
87
+ string = <<~EOH
88
+ ssh-01:
89
+ expiration_date: 2033-07-31
90
+ run: false
91
+ justification: "waived, yo"
92
+ EOH
93
+ tempfile = Tempfile.new("chef-compliance-test")
94
+ tempfile.write string
95
+ tempfile.close
96
+ newwaiver = Chef::Compliance::Waiver.from_file(events, tempfile.path, cookbook_name)
97
+ expect(newwaiver.data).to eql(data)
98
+ end
99
+
100
+ it "inflates objects from hashes" do
101
+ newwaiver = Chef::Compliance::Waiver.from_hash(events, data, path, cookbook_name)
102
+ expect(newwaiver.data).to eql(data)
103
+ end
104
+ end
@@ -148,12 +148,7 @@ describe Chef::DataBagItem do
148
148
  end
149
149
 
150
150
  it "implements all the methods of Hash" do
151
- methods = %i{rehash to_hash [] fetch []= store default
152
- default= default_proc index size length
153
- empty? each_value each_key each_pair each keys values
154
- values_at delete delete_if reject! clear
155
- invert update replace merge! merge has_key? has_value?
156
- key? value?}
151
+ methods = Hash.public_instance_methods
157
152
  methods.each do |m|
158
153
  expect(data_bag_item).to respond_to(m)
159
154
  end
@@ -36,7 +36,7 @@ describe Chef::DSL::RebootPending do
36
36
  end
37
37
 
38
38
  it 'should return true if "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\PendingFileRenameOperations" exists' do
39
- allow(recipe).to receive(:registry_value_exists?).with('HKLM\SYSTEM\CurrentControlSet\Control\Session Manager', { name: "PendingFileRenameOperations" }).and_return(true)
39
+ allow(recipe).to receive(:registry_value_exists?).with("HKLM\\SYSTEM\\CurrentControlSet\\Control\\Session Manager", { name: "PendingFileRenameOperations" }).and_return(true)
40
40
  expect(recipe.reboot_pending?).to be_truthy
41
41
  end
42
42
 
@@ -51,9 +51,9 @@ describe Chef::DSL::RebootPending do
51
51
  end
52
52
  end
53
53
 
54
- context "platform is ubuntu" do
54
+ context "platform_family is debian" do
55
55
  before do
56
- allow(recipe).to receive(:platform?).with("ubuntu").and_return(true)
56
+ allow(recipe).to receive(:platform_family?).with("debian").and_return(true)
57
57
  end
58
58
 
59
59
  it "should return true if /var/run/reboot-required exists" do
@@ -21,7 +21,7 @@ require "spec_helper"
21
21
 
22
22
  describe Chef::Resource::RegistryKey do
23
23
 
24
- before (:all) do
24
+ before(:all) do
25
25
  events = Chef::EventDispatch::Dispatcher.new
26
26
  node = Chef::Node.new
27
27
  node.consume_external_attrs(OHAI_SYSTEM.data, {})
@@ -31,22 +31,22 @@ describe Chef::Resource::RegistryKey do
31
31
 
32
32
  context "tests registry dsl" do
33
33
  it "resource can access registry_helper method registry_key_exists" do
34
- expect(@resource.respond_to?("registry_key_exists?")).to eq(true)
34
+ expect(@resource.respond_to?(:registry_key_exists?)).to eq(true)
35
35
  end
36
36
  it "resource can access registry_helper method registry_get_values" do
37
- expect(@resource.respond_to?("registry_get_values")).to eq(true)
37
+ expect(@resource.respond_to?(:registry_get_values)).to eq(true)
38
38
  end
39
39
  it "resource can access registry_helper method registry_has_subkey" do
40
- expect(@resource.respond_to?("registry_has_subkeys?")).to eq(true)
40
+ expect(@resource.respond_to?(:registry_has_subkeys?)).to eq(true)
41
41
  end
42
42
  it "resource can access registry_helper method registry_get_subkeys" do
43
- expect(@resource.respond_to?("registry_get_subkeys")).to eq(true)
43
+ expect(@resource.respond_to?(:registry_get_subkeys)).to eq(true)
44
44
  end
45
45
  it "resource can access registry_helper method registry_value_exists" do
46
- expect(@resource.respond_to?("registry_value_exists?")).to eq(true)
46
+ expect(@resource.respond_to?(:registry_value_exists?)).to eq(true)
47
47
  end
48
48
  it "resource can access registry_helper method data_value_exists" do
49
- expect(@resource.respond_to?("registry_data_exists?")).to eq(true)
49
+ expect(@resource.respond_to?(:registry_data_exists?)).to eq(true)
50
50
  end
51
51
  end
52
52
  end
@@ -0,0 +1,102 @@
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/dsl/render_helpers"
20
+
21
+ describe Chef::DSL::RenderHelpers do
22
+
23
+ hash = {
24
+ "golf": "hotel",
25
+ "kilo": %w{lima mike},
26
+ "india": {
27
+ "juliett": "blue",
28
+ },
29
+ "alpha": {
30
+ "charlie": true,
31
+ "bravo": 10,
32
+ },
33
+ "echo": "foxtrot",
34
+ }
35
+
36
+ context "render_json" do
37
+ json = Chef::DSL::RenderHelpers.render_json(hash)
38
+ describe "JSON content" do
39
+ it "expected JSON output" do
40
+ expected = <<-EXPECTED
41
+ {
42
+ "golf": "hotel",
43
+ "kilo": [
44
+ "lima",
45
+ "mike"
46
+ ],
47
+ "india": {
48
+ "juliett": "blue"
49
+ },
50
+ "alpha": {
51
+ "charlie": true,
52
+ "bravo": 10
53
+ },
54
+ "echo": "foxtrot"
55
+ }
56
+ EXPECTED
57
+ expect(json).to eq(expected)
58
+ end
59
+ end
60
+ end
61
+
62
+ context "render_toml" do
63
+ toml = Chef::DSL::RenderHelpers.render_toml(hash)
64
+ describe "TOML content" do
65
+ it "expected TOML output" do
66
+ expected = <<-EXPECTED
67
+ echo = "foxtrot"
68
+ golf = "hotel"
69
+ kilo = ["lima", "mike"]
70
+ [alpha]
71
+ bravo = 10
72
+ charlie = true
73
+ [india]
74
+ juliett = "blue"
75
+ EXPECTED
76
+ expect(toml).to eq(expected)
77
+ end
78
+ end
79
+ end
80
+
81
+ context "render_yaml" do
82
+ yaml = Chef::DSL::RenderHelpers.render_yaml(hash)
83
+ describe "YAML content" do
84
+ it "expected YAML output" do
85
+ expected = <<-EXPECTED
86
+ ---
87
+ golf: hotel
88
+ kilo:
89
+ - lima
90
+ - mike
91
+ india:
92
+ juliett: blue
93
+ alpha:
94
+ charlie: true
95
+ bravo: 10
96
+ echo: foxtrot
97
+ EXPECTED
98
+ expect(yaml).to eq(expected)
99
+ end
100
+ end
101
+ end
102
+ end
@@ -0,0 +1,175 @@
1
+ #
2
+ # Author:: Marc Paradise <marc@chef.io>
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require "spec_helper"
20
+ require "chef/exceptions"
21
+ require "chef/dsl/secret"
22
+ require "chef/secret_fetcher/base"
23
+
24
+ class SecretDSLTester
25
+ include Chef::DSL::Secret
26
+
27
+ # Because DSL is invoked in the context of a recipe or attribute file
28
+ # we expect run_context to always be available when SecretFetcher::Base
29
+ # requests it - making it safe to mock here
30
+ def run_context
31
+ nil
32
+ end
33
+ end
34
+
35
+ class SecretFetcherImpl < Chef::SecretFetcher::Base
36
+ def do_fetch(name, version)
37
+ name
38
+ end
39
+ end
40
+
41
+ describe Chef::DSL::Secret do
42
+ let(:dsl) { SecretDSLTester.new }
43
+ let(:run_context) { Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new) }
44
+
45
+ before do
46
+ allow(dsl).to receive(:run_context).and_return(run_context)
47
+ end
48
+
49
+ %w{
50
+ secret
51
+ default_secret_service
52
+ default_secret_config
53
+ with_secret_service
54
+ with_secret_config
55
+ }.each do |m|
56
+ it "responds to ##{m}" do
57
+ expect(dsl.respond_to?(m)).to eq true
58
+ end
59
+ end
60
+
61
+ describe "#default_secret_service" do
62
+ let(:service) { :hashi_vault }
63
+
64
+ it "persists the service passed in as an argument" do
65
+ expect(dsl.default_secret_service).to eq(nil)
66
+ dsl.default_secret_service(service)
67
+ expect(dsl.default_secret_service).to eq(service)
68
+ end
69
+
70
+ it "returns run_context.default_secret_service value when no argument is given" do
71
+ run_context.default_secret_service = :my_thing
72
+ expect(dsl.default_secret_service).to eq(:my_thing)
73
+ end
74
+
75
+ it "raises exception when service given is not valid" do
76
+ stub_const("Chef::SecretFetcher::SECRET_FETCHERS", %i{service_a service_b})
77
+ expect { dsl.default_secret_service(:unknown_service) }.to raise_error(Chef::Exceptions::Secret::InvalidFetcherService)
78
+ end
79
+ end
80
+
81
+ describe "#with_secret_config" do
82
+ let(:service) { :hashi_vault }
83
+
84
+ it "sets the service for the scope of the block only" do
85
+ expect(dsl.default_secret_service).to eq(nil)
86
+ dsl.with_secret_service(service) do
87
+ expect(dsl.default_secret_service).to eq(service)
88
+ end
89
+ expect(dsl.default_secret_service).to eq(nil)
90
+ end
91
+
92
+ it "raises exception when block is not given" do
93
+ expect { dsl.with_secret_service(service) }.to raise_error(ArgumentError)
94
+ end
95
+ end
96
+
97
+ describe "#default_secret_config" do
98
+ let(:config) { { my_key: "value" } }
99
+
100
+ it "persists the config passed in as argument" do
101
+ expect(dsl.default_secret_config).to eq({})
102
+ dsl.default_secret_config(**config)
103
+ expect(dsl.default_secret_config).to eq(config)
104
+ end
105
+
106
+ it "returns run_context.default_secret_config value when no argument is given" do
107
+ run_context.default_secret_config = { my_thing: "that" }
108
+ expect(dsl.default_secret_config).to eq({ my_thing: "that" })
109
+ end
110
+ end
111
+
112
+ describe "#with_secret_config" do
113
+ let(:config) { { my_key: "value" } }
114
+
115
+ it "sets the config for the scope of the block only" do
116
+ expect(dsl.default_secret_config).to eq({})
117
+ dsl.with_secret_config(**config) do
118
+ expect(dsl.default_secret_config).to eq(config)
119
+ end
120
+ expect(dsl.default_secret_config).to eq({})
121
+ end
122
+
123
+ it "raises exception when block is not given" do
124
+ expect { dsl.with_secret_config(**config) }.to raise_error(ArgumentError)
125
+ end
126
+ end
127
+
128
+ describe "#secret" do
129
+ it "uses SecretFetcher.for_service to find the fetcher" do
130
+ substitute_fetcher = SecretFetcherImpl.new({}, nil)
131
+ expect(Chef::SecretFetcher).to receive(:for_service).with(:example, {}, run_context).and_return(substitute_fetcher)
132
+ expect(substitute_fetcher).to receive(:fetch).with("key1", nil)
133
+ dsl.secret(name: "key1", service: :example, config: {})
134
+ end
135
+
136
+ it "resolves a secret when using the example fetcher" do
137
+ secret_value = dsl.secret(name: "test1", service: :example, config: { "test1" => "secret value" })
138
+ expect(secret_value).to eq "secret value"
139
+ end
140
+
141
+ context "when used within a resource" do
142
+ let(:run_context) {
143
+ Chef::RunContext.new(Chef::Node.new,
144
+ Chef::CookbookCollection.new(Chef::CookbookLoader.new(File.join(CHEF_SPEC_DATA, "cookbooks"))),
145
+ Chef::EventDispatch::Dispatcher.new)
146
+ }
147
+
148
+ it "marks that resource as 'sensitive'" do
149
+ recipe = Chef::Recipe.new("secrets", "test", run_context)
150
+ recipe.zen_master "secret_test" do
151
+ peace secret(name: "test1", service: :example, config: { "test1" => true })
152
+ end
153
+ expect(run_context.resource_collection.lookup("zen_master[secret_test]").sensitive).to eql(true)
154
+ end
155
+ end
156
+
157
+ it "passes default service to SecretFetcher.for_service" do
158
+ service = :example
159
+ dsl.default_secret_service(service)
160
+ substitute_fetcher = SecretFetcherImpl.new({}, nil)
161
+ expect(Chef::SecretFetcher).to receive(:for_service).with(service, {}, run_context).and_return(substitute_fetcher)
162
+ allow(substitute_fetcher).to receive(:fetch).with("key1", nil)
163
+ dsl.secret(name: "key1")
164
+ end
165
+
166
+ it "passes default config to SecretFetcher.for_service" do
167
+ config = { my_config: "value" }
168
+ dsl.default_secret_config(**config)
169
+ substitute_fetcher = SecretFetcherImpl.new({}, nil)
170
+ expect(Chef::SecretFetcher).to receive(:for_service).with(:example, config, run_context).and_return(substitute_fetcher)
171
+ allow(substitute_fetcher).to receive(:fetch).with("key1", nil)
172
+ dsl.secret(name: "key1", service: :example)
173
+ end
174
+ end
175
+ end
@@ -35,7 +35,7 @@ describe Chef::FileAccessControl do
35
35
  @events = Chef::EventDispatch::Dispatcher.new
36
36
  @run_context = Chef::RunContext.new(@node, {}, @events)
37
37
  @current_resource = Chef::Resource::File.new("/tmp/different_file.txt")
38
- @provider_requirements = Chef::Provider::ResourceRequirements.new(@resource, @run_context)
38
+ @provider_requirements = Chef::Provider::ResourceRequirements.new(@resource, @run_context, :create)
39
39
  @provider = double("File provider", requirements: @provider_requirements, manage_symlink_access?: false)
40
40
 
41
41
  @fac = Chef::FileAccessControl.new(@current_resource, @resource, @provider)
@@ -40,7 +40,7 @@ describe Chef::Formatters::Base do
40
40
  }
41
41
 
42
42
  formatter.policyfile_loaded(minimal_policyfile)
43
- expect(out.string).to include("Using policy 'jenkins' at revision '613f803bdd035d574df7fa6da525b38df45a74ca82b38b79655efed8a189e073'")
43
+ expect(out.string).to include("Using Policyfile 'jenkins' at revision '613f803bdd035d574df7fa6da525b38df45a74ca82b38b79655efed8a189e073'")
44
44
  end
45
45
 
46
46
  it "prints cookbook name and version" do
@@ -94,7 +94,7 @@ describe Chef::GuardInterpreter::ResourceGuardInterpreter do
94
94
 
95
95
  describe "script command opts switch" do
96
96
  let(:guard_interpreter) { Chef::GuardInterpreter::ResourceGuardInterpreter.new(parent_resource, "exit 0", {}) }
97
- let(:resource) { guard_interpreter.instance_variable_get("@resource") }
97
+ let(:resource) { guard_interpreter.instance_variable_get(:@resource) }
98
98
 
99
99
  context "resource is a Script" do
100
100
  context "and guard_interpreter is a :script" do
@@ -38,6 +38,8 @@ describe Chef::Handler do
38
38
  @run_context = Chef::RunContext.new(@node, {}, @events)
39
39
  @all_resources = [Chef::Resource::Cat.new("lolz"), Chef::Resource::ZenMaster.new("tzu")]
40
40
  @all_resources.first.updated_by_last_action true
41
+ @handler.instance_variable_set(:@all_resources, @all_resources)
42
+ @handler.instance_variable_set(:@updated_resources, [@all_resources.first])
41
43
  @run_context.resource_collection.all_resources.replace(@all_resources)
42
44
  @run_status.run_context = @run_context
43
45
  @start_time = Time.now
@@ -119,6 +121,8 @@ describe Chef::Handler do
119
121
  @run_context = Chef::RunContext.new(@node, {}, @events)
120
122
  @all_resources = [Chef::Resource::Cat.new("foo"), Chef::Resource::ZenMaster.new("moo")]
121
123
  @all_resources.first.updated_by_last_action true
124
+ @handler.instance_variable_set(:@all_resources, @all_resources)
125
+ @handler.instance_variable_set(:@updated_resources, [@all_resources.first])
122
126
  @run_context.resource_collection.all_resources.replace(@all_resources)
123
127
  @run_status.run_context = @run_context
124
128
  @start_time = Time.now
@@ -169,17 +173,19 @@ describe Chef::Handler do
169
173
  # and this would test the start handler
170
174
  describe "when running a start handler" do
171
175
  before do
176
+ @handler.instance_variable_set(:@all_resources, [])
177
+ @handler.instance_variable_set(:@updated_resources, [])
172
178
  @start_time = Time.now
173
179
  allow(Time).to receive(:now).and_return(@start_time)
174
180
  @run_status.start_clock
175
181
  end
176
182
 
177
183
  it "should not have all resources" do
178
- expect(@handler.all_resources).to be_falsey
184
+ expect(@handler.all_resources).to be_empty
179
185
  end
180
186
 
181
187
  it "should not have updated resources" do
182
- expect(@handler.updated_resources).to be_falsey
188
+ expect(@handler.updated_resources).to be_empty
183
189
  end
184
190
 
185
191
  it "has a shortcut for the start time" do
@@ -47,6 +47,36 @@ describe "HTTP Connection" do
47
47
  expect(Net::HTTP).to receive(:new).and_return(net_http_mock)
48
48
  expect(basic_client.http_client).to eql(net_http_mock)
49
49
  end
50
+
51
+ it "allows setting net-http accessor options" do
52
+ basic_client = Chef::HTTP::BasicClient.new(uri, nethttp_opts: {
53
+ "continue_timeout" => 5,
54
+ "max_retries" => 5,
55
+ "read_timeout" => 5,
56
+ "write_timeout" => 5,
57
+ "ssl_timeout" => 5,
58
+ })
59
+ expect(basic_client.http_client.continue_timeout).to eql(5)
60
+ expect(basic_client.http_client.max_retries).to eql(5)
61
+ expect(basic_client.http_client.read_timeout).to eql(5)
62
+ expect(basic_client.http_client.write_timeout).to eql(5)
63
+ expect(basic_client.http_client.ssl_timeout).to eql(5)
64
+ end
65
+
66
+ it "allows setting net-http accssor options as symbols" do
67
+ basic_client = Chef::HTTP::BasicClient.new(uri, nethttp_opts: {
68
+ continue_timeout: 5,
69
+ max_retries: 5,
70
+ read_timeout: 5,
71
+ write_timeout: 5,
72
+ ssl_timeout: 5,
73
+ })
74
+ expect(basic_client.http_client.continue_timeout).to eql(5)
75
+ expect(basic_client.http_client.max_retries).to eql(5)
76
+ expect(basic_client.http_client.read_timeout).to eql(5)
77
+ expect(basic_client.http_client.write_timeout).to eql(5)
78
+ expect(basic_client.http_client.ssl_timeout).to eql(5)
79
+ end
50
80
  end
51
81
 
52
82
  describe "#build_http_client" do
@@ -46,13 +46,19 @@ describe Chef::HTTP do
46
46
  describe "#initialize" do
47
47
  it "accepts a keepalive option and passes it to the http_client" do
48
48
  http = Chef::HTTP.new(uri, keepalives: true)
49
- expect(Chef::HTTP::BasicClient).to receive(:new).with(uri, ssl_policy: Chef::HTTP::APISSLPolicy, keepalives: true).and_call_original
49
+ expect(Chef::HTTP::BasicClient).to receive(:new).with(uri, ssl_policy: Chef::HTTP::APISSLPolicy, nethttp_opts: {}, keepalives: true).and_call_original
50
50
  expect(http.http_client).to be_a_kind_of(Chef::HTTP::BasicClient)
51
51
  end
52
52
 
53
53
  it "the default is not to use keepalives" do
54
54
  http = Chef::HTTP.new(uri)
55
- expect(Chef::HTTP::BasicClient).to receive(:new).with(uri, ssl_policy: Chef::HTTP::APISSLPolicy, keepalives: false).and_call_original
55
+ expect(Chef::HTTP::BasicClient).to receive(:new).with(uri, ssl_policy: Chef::HTTP::APISSLPolicy, nethttp_opts: {}, keepalives: false).and_call_original
56
+ expect(http.http_client).to be_a_kind_of(Chef::HTTP::BasicClient)
57
+ end
58
+
59
+ it "allows setting the nethttp options hash" do
60
+ http = Chef::HTTP.new(uri, { nethttp: { "continue_timeout" => 5 } })
61
+ expect(Chef::HTTP::BasicClient).to receive(:new).with(uri, ssl_policy: Chef::HTTP::APISSLPolicy, nethttp_opts: { "continue_timeout" => 5 }, keepalives: false).and_call_original
56
62
  expect(http.http_client).to be_a_kind_of(Chef::HTTP::BasicClient)
57
63
  end
58
64
  end
@@ -54,7 +54,7 @@ describe "LWRP" do
54
54
  end
55
55
 
56
56
  it "should not skip loading a resource when there's a top level symbol of the same name" do
57
- Object.const_set("LwrpFoo", Class.new)
57
+ Object.const_set(:LwrpFoo, Class.new)
58
58
  file = File.expand_path( "lwrp/resources/foo.rb", CHEF_SPEC_DATA)
59
59
  expect(Chef::Log).not_to receive(:info).with(/Skipping/)
60
60
  expect(Chef::Log).not_to receive(:trace).with(/anymore/)
@@ -63,7 +63,7 @@ describe "LWRP" do
63
63
  end
64
64
 
65
65
  it "should not skip loading a provider when there's a top level symbol of the same name" do
66
- Object.const_set("LwrpBuckPasser", Class.new)
66
+ Object.const_set(:LwrpBuckPasser, Class.new)
67
67
  file = File.expand_path( "lwrp/providers/buck_passer.rb", CHEF_SPEC_DATA)
68
68
  expect(Chef::Log).not_to receive(:info).with(/Skipping/)
69
69
  expect(Chef::Log).not_to receive(:trace).with(/anymore/)
@@ -576,7 +576,7 @@ describe "LWRP" do
576
576
  @tmpdir = File.join(@tmpparent, "lwrp")
577
577
  Dir.mkdir(@tmpdir)
578
578
  resource_path = File.join(@tmpdir, "once.rb")
579
- IO.write(resource_path, "default_action :create")
579
+ IO.write(resource_path, "unified_mode true\ndefault_action :create")
580
580
  @test_lwrp_class = Chef::Resource::LWRPBase.build_from_file("lwrp", resource_path, nil)
581
581
  end
582
582
 
@@ -84,7 +84,7 @@ describe Chef::Mixin::DefaultPaths do
84
84
  allow(Gem).to receive(:bindir).and_return(gem_bindir)
85
85
  allow(RbConfig::CONFIG).to receive(:[]).with("bindir").and_return(ruby_bindir)
86
86
  allow(ChefUtils).to receive(:windows?).and_return(true)
87
- env = { "PATH" => 'C:\Windows\system32;C:\mr\softie' }
87
+ env = { "PATH" => "C:\\Windows\\system32;C:\\mr\\softie" }
88
88
  @default_paths.enforce_default_paths(env)
89
89
  expect(env["PATH"]).to eq("#{gem_bindir};#{ruby_bindir};C:\\Windows\\system32;C:\\mr\\softie")
90
90
  end