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,312 @@
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
+
20
+ describe Chef::Resource::InspecWaiver do
21
+ def load_waiver(filename)
22
+ path = "/var/chef/cache/cookbooks/acme_compliance/compliance/waivers/#{filename}"
23
+ run_context.waiver_collection << Chef::Compliance::Waiver.from_yaml(events, waiver_yaml, path, "acme_compliance")
24
+ end
25
+
26
+ let(:node) { Chef::Node.new }
27
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
28
+ let(:run_context) do
29
+ Chef::RunContext.new(node, {}, events).tap do |rc|
30
+ end
31
+ end
32
+ let(:collection) { double("resource collection") }
33
+ let(:waiver_yaml) do
34
+ <<~EOH
35
+ ssh-01:
36
+ expiration_date: 2033-07-31
37
+ run: false
38
+ justification: "waived, yo"
39
+ EOH
40
+ end
41
+ let(:waiver_json) do
42
+ <<~EOH
43
+ { "ssh-01": {
44
+ "expiration_date": "2033-07-31",
45
+ "run": false,
46
+ "justification": "waived, yo"
47
+ } }
48
+ EOH
49
+ end
50
+ let(:waiver_toml) do
51
+ <<~EOH
52
+ [ssh-01]
53
+ expiration_date = 2033-07-31T00:00:00.000Z
54
+ run = false
55
+ justification = "waived, yo"
56
+ EOH
57
+ end
58
+ let(:waiver_hash) do
59
+ { "ssh-01" => {
60
+ "expiration_date" => "2033-07-31",
61
+ "run" => false,
62
+ "justification" => "waived, yo",
63
+ } }
64
+ end
65
+ let(:resource) do
66
+ Chef::Resource::InspecWaiver.new("ssh-01", run_context)
67
+ end
68
+ let(:provider) { resource.provider_for_action(:add) }
69
+
70
+ before do
71
+ allow(run_context).to receive(:resource_collection).and_return(collection)
72
+ end
73
+
74
+ it "sets the default action as :add" do
75
+ expect(resource.action).to eql([:add])
76
+ end
77
+
78
+ context "with a waiver in a cookbook" do
79
+ it "enables the waiver by the name of the cookbook" do
80
+ load_waiver("default.yml")
81
+ resource.name "acme_compliance"
82
+ resource.run_action(:add)
83
+ expect(run_context.waiver_collection.first).to be_enabled
84
+ expect(resource).not_to be_updated_by_last_action
85
+ end
86
+
87
+ it "enables the waiver with a regular expression for the cookbook" do
88
+ load_waiver("default.yml")
89
+ resource.name "acme_comp.*"
90
+ resource.run_action(:add)
91
+ expect(run_context.waiver_collection.first).to be_enabled
92
+ expect(resource).not_to be_updated_by_last_action
93
+ end
94
+
95
+ it "enables the waiver with an explicit name" do
96
+ load_waiver("default.yml")
97
+ resource.name "acme_compliance::default"
98
+ resource.run_action(:add)
99
+ expect(run_context.waiver_collection.first).to be_enabled
100
+ expect(resource).not_to be_updated_by_last_action
101
+ end
102
+
103
+ it "fails when the cookbook name is wrong" do
104
+ load_waiver("default.yml")
105
+ resource.name "evil_compliance"
106
+ expect { resource.run_action(:add) }.to raise_error(StandardError)
107
+ end
108
+
109
+ it "enables the waiver when its not named default" do
110
+ load_waiver("ssh01.yml")
111
+ resource.name "acme_compliance::ssh01"
112
+ resource.run_action(:add)
113
+ expect(run_context.waiver_collection.first).to be_enabled
114
+ expect(resource).not_to be_updated_by_last_action
115
+ end
116
+
117
+ it "fails when it is not named default and you attempt to enable the default" do
118
+ load_waiver("ssh01.yml")
119
+ resource.name "acme_compliance"
120
+ expect { resource.run_action(:add) }.to raise_error(StandardError)
121
+ end
122
+
123
+ it "succeeds with a regexp that matches the cookbook name" do
124
+ load_waiver("ssh01.yml")
125
+ resource.name "acme_comp.*::ssh01"
126
+ resource.run_action(:add)
127
+ expect(run_context.waiver_collection.first).to be_enabled
128
+ expect(resource).not_to be_updated_by_last_action
129
+ end
130
+
131
+ it "succeeds with a regexp that matches the file name" do
132
+ load_waiver("ssh01.yml")
133
+ resource.name "acme_compliance::ssh.*"
134
+ resource.run_action(:add)
135
+ expect(run_context.waiver_collection.first).to be_enabled
136
+ expect(resource).not_to be_updated_by_last_action
137
+ end
138
+
139
+ it "succeeds with a regexps for both the file name and cookbook name" do
140
+ load_waiver("ssh01.yml")
141
+ resource.name "acme_comp.*::ssh.*"
142
+ resource.run_action(:add)
143
+ expect(run_context.waiver_collection.first).to be_enabled
144
+ expect(resource).not_to be_updated_by_last_action
145
+ end
146
+
147
+ it "fails with regexps that do not match" do
148
+ load_waiver("ssh01.yml")
149
+ resource.name "evil_comp.*::etcd.*"
150
+ expect { resource.run_action(:add) }.to raise_error(StandardError)
151
+ end
152
+
153
+ it "substring matches without regexps should fail when they are at the end" do
154
+ load_waiver("ssh01.yml")
155
+ resource.name "acme_complianc::ssh0"
156
+ expect { resource.run_action(:add) }.to raise_error(StandardError)
157
+ end
158
+
159
+ it "substring matches without regexps should fail when they are at the start" do
160
+ load_waiver("ssh01.yml")
161
+ resource.name "cme_compliance::sh01"
162
+ expect { resource.run_action(:add) }.to raise_error(StandardError)
163
+ end
164
+ end
165
+
166
+ context "with a waiver in a file" do
167
+ it "loads a YAML file" do
168
+ tempfile = Tempfile.new(["spec-compliance-test", ".yaml"])
169
+ tempfile.write waiver_yaml
170
+ tempfile.close
171
+ resource.name tempfile.path
172
+
173
+ resource.run_action(:add)
174
+
175
+ expect(run_context.waiver_collection.first).to be_enabled
176
+ expect(run_context.waiver_collection.size).to be 1
177
+ expect(run_context.waiver_collection.first.cookbook_name).to be nil
178
+ expect(run_context.waiver_collection.first.path).to be nil
179
+ expect(run_context.waiver_collection.first.pathname).to be nil
180
+ expect(resource).not_to be_updated_by_last_action
181
+ end
182
+
183
+ it "loads a YAML file in a source attribute" do
184
+ tempfile = Tempfile.new(["spec-compliance-test", ".yaml"])
185
+ tempfile.write waiver_yaml
186
+ tempfile.close
187
+ resource.name "my-resource-name"
188
+ resource.source tempfile.path
189
+
190
+ resource.run_action(:add)
191
+
192
+ expect(run_context.waiver_collection.first).to be_enabled
193
+ expect(run_context.waiver_collection.size).to be 1
194
+ expect(run_context.waiver_collection.first.cookbook_name).to be nil
195
+ expect(run_context.waiver_collection.first.path).to be nil
196
+ expect(run_context.waiver_collection.first.pathname).to be nil
197
+ expect(resource).not_to be_updated_by_last_action
198
+ end
199
+
200
+ it "loads a YML file" do
201
+ tempfile = Tempfile.new(["spec-compliance-test", ".yml"])
202
+ tempfile.write waiver_yaml
203
+ tempfile.close
204
+ resource.name tempfile.path
205
+
206
+ resource.run_action(:add)
207
+
208
+ expect(run_context.waiver_collection.first).to be_enabled
209
+ expect(run_context.waiver_collection.size).to be 1
210
+ expect(run_context.waiver_collection.first.cookbook_name).to be nil
211
+ expect(run_context.waiver_collection.first.path).to be nil
212
+ expect(run_context.waiver_collection.first.pathname).to be nil
213
+ expect(resource).not_to be_updated_by_last_action
214
+ end
215
+
216
+ it "loads a YML file using the source attribute" do
217
+ tempfile = Tempfile.new(["spec-compliance-test", ".yml"])
218
+ tempfile.write waiver_yaml
219
+ tempfile.close
220
+ resource.name "my-resource-name"
221
+ resource.source tempfile.path
222
+
223
+ resource.run_action(:add)
224
+
225
+ expect(run_context.waiver_collection.first).to be_enabled
226
+ expect(run_context.waiver_collection.size).to be 1
227
+ expect(run_context.waiver_collection.first.cookbook_name).to be nil
228
+ expect(run_context.waiver_collection.first.path).to be nil
229
+ expect(run_context.waiver_collection.first.pathname).to be nil
230
+ expect(resource).not_to be_updated_by_last_action
231
+ end
232
+
233
+ it "loads a JSON file" do
234
+ tempfile = Tempfile.new(["spec-compliance-test", ".json"])
235
+ tempfile.write waiver_json
236
+ tempfile.close
237
+ resource.name tempfile.path
238
+
239
+ resource.run_action(:add)
240
+
241
+ expect(run_context.waiver_collection.first).to be_enabled
242
+ expect(run_context.waiver_collection.size).to be 1
243
+ expect(run_context.waiver_collection.first.cookbook_name).to be nil
244
+ expect(run_context.waiver_collection.first.path).to be nil
245
+ expect(run_context.waiver_collection.first.pathname).to be nil
246
+ expect(resource).not_to be_updated_by_last_action
247
+ end
248
+
249
+ it "loads a JSON file using the source attribute" do
250
+ tempfile = Tempfile.new(["spec-compliance-test", ".json"])
251
+ tempfile.write waiver_json
252
+ tempfile.close
253
+ resource.name "my-resource-name"
254
+ resource.source tempfile.path
255
+
256
+ resource.run_action(:add)
257
+
258
+ expect(run_context.waiver_collection.first).to be_enabled
259
+ expect(run_context.waiver_collection.size).to be 1
260
+ expect(run_context.waiver_collection.first.cookbook_name).to be nil
261
+ expect(run_context.waiver_collection.first.path).to be nil
262
+ expect(run_context.waiver_collection.first.pathname).to be nil
263
+ expect(resource).not_to be_updated_by_last_action
264
+ end
265
+
266
+ it "loads a TOML file" do
267
+ tempfile = Tempfile.new(["spec-compliance-test", ".toml"])
268
+ tempfile.write waiver_toml
269
+ tempfile.close
270
+ resource.name tempfile.path
271
+
272
+ resource.run_action(:add)
273
+
274
+ expect(run_context.waiver_collection.first).to be_enabled
275
+ expect(run_context.waiver_collection.size).to be 1
276
+ expect(run_context.waiver_collection.first.cookbook_name).to be nil
277
+ expect(run_context.waiver_collection.first.path).to be nil
278
+ expect(run_context.waiver_collection.first.pathname).to be nil
279
+ expect(resource).not_to be_updated_by_last_action
280
+ end
281
+
282
+ it "loads a TOML file using the source attribute" do
283
+ tempfile = Tempfile.new(["spec-compliance-test", ".toml"])
284
+ tempfile.write waiver_toml
285
+ tempfile.close
286
+ resource.name "my-resource-name"
287
+ resource.source tempfile.path
288
+
289
+ resource.run_action(:add)
290
+
291
+ expect(run_context.waiver_collection.first).to be_enabled
292
+ expect(run_context.waiver_collection.size).to be 1
293
+ expect(run_context.waiver_collection.first.cookbook_name).to be nil
294
+ expect(run_context.waiver_collection.first.path).to be nil
295
+ expect(run_context.waiver_collection.first.pathname).to be nil
296
+ expect(resource).not_to be_updated_by_last_action
297
+ end
298
+
299
+ it "loads a Hash" do
300
+ resource.source waiver_hash
301
+
302
+ resource.run_action(:add)
303
+
304
+ expect(run_context.waiver_collection.first).to be_enabled
305
+ expect(run_context.waiver_collection.size).to be 1
306
+ expect(run_context.waiver_collection.first.cookbook_name).to be nil
307
+ expect(run_context.waiver_collection.first.path).to be nil
308
+ expect(run_context.waiver_collection.first.pathname).to be nil
309
+ expect(resource).not_to be_updated_by_last_action
310
+ end
311
+ end
312
+ end
@@ -32,10 +32,11 @@ describe Chef::Resource::KernelModule do
32
32
  expect(resource.modname).to eql("foo")
33
33
  end
34
34
 
35
- it "supports :create and :flush actions" do
35
+ it "supports various actions" do
36
36
  expect { resource.action :install }.not_to raise_error
37
37
  expect { resource.action :uninstall }.not_to raise_error
38
38
  expect { resource.action :blacklist }.not_to raise_error
39
+ expect { resource.action :enable }.not_to raise_error
39
40
  expect { resource.action :disable }.not_to raise_error
40
41
  expect { resource.action :load }.not_to raise_error
41
42
  expect { resource.action :unload }.not_to raise_error
@@ -17,120 +17,60 @@
17
17
 
18
18
  require "spec_helper"
19
19
 
20
- describe Chef::Resource::MacosUserDefaults do
21
-
22
- let(:resource) { Chef::Resource::MacosUserDefaults.new("foo") }
23
- let(:provider) { resource.provider_for_action(:write) }
24
-
25
- it "has a resource name of :macos_userdefaults" do
26
- expect(resource.resource_name).to eq(:macos_userdefaults)
27
- end
28
-
29
- it "the domain property defaults to NSGlobalDomain" do
30
- expect(resource.domain).to eq("NSGlobalDomain")
31
- end
32
-
33
- it "the value property coerces keys in hashes to strings so we can compare them with plist data" do
34
- resource.value "User": "/Library/Managed Installs/way_fake.log"
35
- expect(resource.value).to eq({ "User" => "/Library/Managed Installs/way_fake.log" })
36
- end
37
-
38
- it "the host property defaults to nil" do
39
- expect(resource.host).to be_nil
40
- end
41
-
42
- it "the sudo property defaults to false" do
43
- expect(resource.sudo).to be false
44
- end
45
-
46
- it "sets the default action as :write" do
47
- expect(resource.action).to eq([:write])
48
- end
49
-
50
- it "supports :write action" do
51
- expect { resource.action :write }.not_to raise_error
52
- end
53
-
54
- describe "#defaults_export_cmd" do
55
- it "exports NSGlobalDomain if no domain is set" do
56
- expect(provider.defaults_export_cmd(resource)).to eq(["/usr/bin/defaults", "export", "NSGlobalDomain", "-"])
20
+ describe Chef::Resource::MacosUserDefaults, :macos_only do
21
+ let(:test_value) { "fakest_key_value" }
22
+ let(:test_key) { "fakest_key" }
23
+ let(:node) { Chef::Node.new }
24
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
25
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
26
+ let(:resource) {
27
+ Chef::Resource::MacosUserDefaults.new("foo", run_context).tap do |r|
28
+ r.value test_value
29
+ r.key test_key
57
30
  end
31
+ }
58
32
 
59
- it "exports a provided domain" do
60
- resource.domain "com.tim"
61
- expect(provider.defaults_export_cmd(resource)).to eq(["/usr/bin/defaults", "export", "com.tim", "-"])
33
+ context "has a default value" do
34
+ it ":macos_userdefaults for resource name" do
35
+ expect(resource.resource_name).to eq(:macos_userdefaults)
62
36
  end
63
37
 
64
- it "sets -currentHost if host is 'current'" do
65
- resource.host "current"
66
- expect(provider.defaults_export_cmd(resource)).to eq(["/usr/bin/defaults", "-currentHost", "export", "NSGlobalDomain", "-"])
38
+ it "NSGlobalDomain for the domain property" do
39
+ expect(resource.domain).to eq("NSGlobalDomain")
67
40
  end
68
41
 
69
- it "sets -host 'tim-laptop if host is 'tim-laptop'" do
70
- resource.host "tim-laptop"
71
- expect(provider.defaults_export_cmd(resource)).to eq(["/usr/bin/defaults", "-host", "tim-laptop", "export", "NSGlobalDomain", "-"])
72
- end
73
- end
74
-
75
- describe "#defaults_modify_cmd" do
76
- # avoid needing to set these required values over and over. We'll overwrite them where necessary
77
- before do
78
- resource.key = "foo"
79
- resource.value = "bar"
80
- end
81
-
82
- it "writes to NSGlobalDomain if domain isn't specified" do
83
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-string", "bar"])
84
- end
85
-
86
- it "uses the domain property if set" do
87
- resource.domain = "MyCustomDomain"
88
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "MyCustomDomain", "foo", "-string", "bar"])
42
+ it ":all for the host property" do
43
+ expect(resource.host).to eq(:all)
89
44
  end
90
45
 
91
- it "sets host specific values using host property" do
92
- resource.host = "tims_laptop"
93
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "-host", "tims_laptop", "write", "NSGlobalDomain", "foo", "-string", "bar"])
46
+ it ":current for the user property" do
47
+ expect(resource.user).to eq(:current)
94
48
  end
95
49
 
96
- it "if host is set to :current it passes CurrentHost" do
97
- resource.host = :current
98
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "-currentHost", "write", "NSGlobalDomain", "foo", "-string", "bar"])
99
- end
100
-
101
- it "raises ArgumentError if bool is specified, but the value can't be made into a bool" do
102
- resource.type "bool"
103
- expect { provider.defaults_modify_cmd }.to raise_error(ArgumentError)
104
- end
105
-
106
- it "autodetects array type and passes individual values" do
107
- resource.value = %w{one two three}
108
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-array", "one", "two", "three"])
109
- end
110
-
111
- it "autodetects string type and passes a single value" do
112
- resource.value = "one"
113
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-string", "one"])
50
+ it ":write for resource action" do
51
+ expect(resource.action).to eq([:write])
114
52
  end
53
+ end
115
54
 
116
- it "autodetects integer type and passes a single value" do
117
- resource.value = 1
118
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-int", 1])
55
+ context ":write" do
56
+ it "is a supported action" do
57
+ expect { resource.action :write }.not_to raise_error
119
58
  end
120
59
 
121
- it "autodetects boolean type from TrueClass value and passes a 'TRUE' string" do
122
- resource.value = true
123
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-bool", "TRUE"])
60
+ it "successfully updates the preference" do
61
+ resource.run_action(:write)
62
+ expect(resource.get_preference resource).eql? test_value
124
63
  end
64
+ end
125
65
 
126
- it "autodetects boolean type from FalseClass value and passes a 'FALSE' string" do
127
- resource.value = false
128
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-bool", "FALSE"])
66
+ context ":delete" do
67
+ it "is a supported action" do
68
+ expect { resource.action :delete }.not_to raise_error
129
69
  end
130
70
 
131
- it "autodetects dict type from Hash value and flattens keys & values" do
132
- resource.value = { "foo" => "bar" }
133
- expect(provider.defaults_modify_cmd).to eq(["/usr/bin/defaults", "write", "NSGlobalDomain", "foo", "-dict", "foo", "bar"])
71
+ it "successfully deletes the preference" do
72
+ resource.run_action(:delete)
73
+ expect(resource.get_preference resource).to be_nil
134
74
  end
135
75
  end
136
76
  end