chef 16.13.16-universal-mingw32 → 17.3.48-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (730) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +11 -22
  3. data/README.md +1 -1
  4. data/Rakefile +2 -2
  5. data/chef-universal-mingw32.gemspec +1 -1
  6. data/chef.gemspec +12 -24
  7. data/lib/chef/action_collection.rb +6 -26
  8. data/lib/chef/application.rb +1 -1
  9. data/lib/chef/application/base.rb +16 -1
  10. data/lib/chef/applications.rb +0 -1
  11. data/lib/chef/chef_fs/command_line.rb +5 -2
  12. data/lib/chef/chef_fs/file_pattern.rb +2 -2
  13. data/lib/chef/chef_fs/file_system.rb +9 -10
  14. data/lib/chef/client.rb +9 -3
  15. data/lib/chef/compliance/default_attributes.rb +5 -4
  16. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  17. data/lib/chef/compliance/reporter/automate.rb +17 -7
  18. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  19. data/lib/chef/compliance/reporter/cli.rb +77 -0
  20. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  21. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  22. data/lib/chef/compliance/runner.rb +65 -27
  23. data/lib/chef/cookbook/cookbook_version_loader.rb +3 -3
  24. data/lib/chef/cookbook/gem_installer.rb +5 -1
  25. data/lib/chef/cookbook/synchronizer.rb +3 -5
  26. data/lib/chef/cookbook_loader.rb +2 -4
  27. data/lib/chef/cookbook_uploader.rb +0 -1
  28. data/lib/chef/cookbook_version.rb +26 -4
  29. data/lib/chef/data_bag_item.rb +11 -2
  30. data/lib/chef/data_collector.rb +0 -1
  31. data/lib/chef/data_collector/run_end_message.rb +1 -1
  32. data/lib/chef/delayed_evaluator.rb +4 -0
  33. data/lib/chef/deprecated.rb +18 -4
  34. data/lib/chef/dsl.rb +1 -0
  35. data/lib/chef/dsl/chef_vault.rb +6 -6
  36. data/lib/chef/dsl/declare_resource.rb +5 -10
  37. data/lib/chef/dsl/reboot_pending.rb +1 -2
  38. data/lib/chef/{knife/group_list.rb → dsl/render_helpers.rb} +18 -17
  39. data/lib/chef/dsl/secret.rb +64 -0
  40. data/lib/chef/dsl/toml.rb +116 -0
  41. data/lib/chef/dsl/universal.rb +5 -0
  42. data/lib/chef/event_dispatch/base.rb +2 -1
  43. data/lib/chef/exceptions.rb +25 -0
  44. data/lib/chef/formatters/doc.rb +2 -1
  45. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  46. data/lib/chef/group.rb +75 -0
  47. data/lib/chef/handler.rb +46 -8
  48. data/lib/chef/handler/slow_report.rb +66 -0
  49. data/lib/chef/json_compat.rb +1 -1
  50. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  51. data/lib/chef/node.rb +21 -20
  52. data/lib/chef/node/attribute.rb +6 -4
  53. data/lib/chef/node/immutable_collections.rb +13 -0
  54. data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
  55. data/lib/chef/org.rb +3 -2
  56. data/lib/chef/policy_builder/policyfile.rb +88 -45
  57. data/lib/chef/property.rb +18 -0
  58. data/lib/chef/provider.rb +1 -1
  59. data/lib/chef/provider/cron.rb +1 -1
  60. data/lib/chef/provider/directory.rb +6 -6
  61. data/lib/chef/provider/execute.rb +2 -1
  62. data/lib/chef/provider/file.rb +3 -3
  63. data/lib/chef/provider/git.rb +5 -7
  64. data/lib/chef/provider/group/groupadd.rb +3 -3
  65. data/lib/chef/provider/group/groupmod.rb +3 -3
  66. data/lib/chef/provider/group/pw.rb +3 -3
  67. data/lib/chef/provider/ifconfig.rb +2 -2
  68. data/lib/chef/provider/link.rb +3 -3
  69. data/lib/chef/provider/lwrp_base.rb +1 -1
  70. data/lib/chef/provider/mount.rb +5 -5
  71. data/lib/chef/provider/mount/aix.rb +3 -3
  72. data/lib/chef/provider/mount/mount.rb +5 -5
  73. data/lib/chef/provider/mount/windows.rb +1 -1
  74. data/lib/chef/provider/package.rb +17 -21
  75. data/lib/chef/provider/package/apt.rb +27 -1
  76. data/lib/chef/provider/package/deb.rb +3 -3
  77. data/lib/chef/provider/package/dnf/dnf_helper.py +12 -11
  78. data/lib/chef/provider/package/dnf/python_helper.rb +9 -8
  79. data/lib/chef/provider/package/habitat.rb +168 -0
  80. data/lib/chef/provider/package/portage.rb +2 -2
  81. data/lib/chef/provider/package/powershell.rb +5 -0
  82. data/lib/chef/provider/package/rubygems.rb +11 -17
  83. data/lib/chef/provider/package/windows.rb +2 -4
  84. data/lib/chef/provider/package/yum.rb +1 -4
  85. data/lib/chef/provider/package/yum/python_helper.rb +15 -10
  86. data/lib/chef/provider/package/yum/yum_helper.py +47 -63
  87. data/lib/chef/provider/registry_key.rb +1 -1
  88. data/lib/chef/provider/route.rb +2 -2
  89. data/lib/chef/provider/service.rb +6 -6
  90. data/lib/chef/provider/service/aixinit.rb +1 -1
  91. data/lib/chef/provider/service/debian.rb +1 -1
  92. data/lib/chef/provider/service/freebsd.rb +15 -21
  93. data/lib/chef/provider/service/macosx.rb +4 -4
  94. data/lib/chef/provider/service/systemd.rb +43 -14
  95. data/lib/chef/provider/service/upstart.rb +2 -13
  96. data/lib/chef/provider/service/windows.rb +12 -12
  97. data/lib/chef/provider/subversion.rb +10 -12
  98. data/lib/chef/provider/support/zypper_repo.erb +4 -2
  99. data/lib/chef/provider/systemd_unit.rb +36 -10
  100. data/lib/chef/provider/template/content.rb +3 -7
  101. data/lib/chef/provider/user.rb +2 -2
  102. data/lib/chef/provider/user/dscl.rb +1 -1
  103. data/lib/chef/provider/user/mac.rb +17 -20
  104. data/lib/chef/provider/user/pw.rb +1 -1
  105. data/lib/chef/provider/user/windows.rb +1 -1
  106. data/lib/chef/provider/windows_script.rb +1 -1
  107. data/lib/chef/provider/zypper_repository.rb +28 -32
  108. data/lib/chef/providers.rb +1 -1
  109. data/lib/chef/resource.rb +6 -7
  110. data/lib/chef/resource/alternatives.rb +6 -6
  111. data/lib/chef/resource/apt_package.rb +1 -1
  112. data/lib/chef/resource/apt_preference.rb +2 -2
  113. data/lib/chef/resource/apt_repository.rb +6 -6
  114. data/lib/chef/resource/apt_update.rb +5 -4
  115. data/lib/chef/resource/archive_file.rb +2 -3
  116. data/lib/chef/resource/breakpoint.rb +1 -1
  117. data/lib/chef/resource/build_essential.rb +2 -6
  118. data/lib/chef/resource/chef_client_config.rb +10 -5
  119. data/lib/chef/resource/chef_client_cron.rb +5 -5
  120. data/lib/chef/resource/chef_client_launchd.rb +6 -6
  121. data/lib/chef/resource/chef_client_scheduled_task.rb +16 -16
  122. data/lib/chef/resource/chef_client_systemd_timer.rb +5 -5
  123. data/lib/chef/resource/chef_client_trusted_certificate.rb +2 -2
  124. data/lib/chef/resource/chef_handler.rb +3 -7
  125. data/lib/chef/resource/chef_sleep.rb +1 -1
  126. data/lib/chef/resource/chef_vault_secret.rb +5 -10
  127. data/lib/chef/resource/chocolatey_config.rb +2 -6
  128. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  129. data/lib/chef/resource/chocolatey_source.rb +4 -10
  130. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  131. data/lib/chef/resource/cron/cron_d.rb +4 -6
  132. data/lib/chef/resource/cron_access.rb +2 -4
  133. data/lib/chef/resource/dmg_package.rb +6 -10
  134. data/lib/chef/resource/dpkg_package.rb +1 -1
  135. data/lib/chef/resource/dsc_resource.rb +1 -1
  136. data/lib/chef/resource/execute.rb +11 -6
  137. data/lib/chef/resource/file.rb +1 -1
  138. data/lib/chef/resource/gem_package.rb +2 -1
  139. data/lib/chef/resource/group.rb +6 -6
  140. data/lib/chef/{knife/recipe_list.rb → resource/habitat/_habitat_shared.rb} +13 -17
  141. data/lib/chef/resource/habitat/habitat_package.rb +129 -0
  142. data/lib/chef/resource/habitat/habitat_sup.rb +329 -0
  143. data/lib/chef/resource/habitat/habitat_sup_systemd.rb +67 -0
  144. data/lib/chef/resource/habitat/habitat_sup_windows.rb +90 -0
  145. data/lib/chef/resource/habitat_config.rb +107 -0
  146. data/lib/chef/resource/habitat_install.rb +247 -0
  147. data/lib/chef/resource/habitat_service.rb +451 -0
  148. data/lib/chef/resource/habitat_user_toml.rb +92 -0
  149. data/lib/chef/resource/homebrew_cask.rb +17 -10
  150. data/lib/chef/resource/homebrew_package.rb +1 -1
  151. data/lib/chef/resource/homebrew_tap.rb +4 -7
  152. data/lib/chef/resource/homebrew_update.rb +2 -2
  153. data/lib/chef/resource/hostname.rb +68 -22
  154. data/lib/chef/resource/http_request.rb +1 -1
  155. data/lib/chef/resource/inspec_waiver_file_entry.rb +156 -0
  156. data/lib/chef/resource/kernel_module.rb +6 -17
  157. data/lib/chef/resource/locale.rb +2 -3
  158. data/lib/chef/resource/lwrp_base.rb +20 -1
  159. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  160. data/lib/chef/resource/mdadm.rb +53 -7
  161. data/lib/chef/resource/mount.rb +2 -1
  162. data/lib/chef/resource/ohai_hint.rb +2 -6
  163. data/lib/chef/resource/openbsd_package.rb +17 -0
  164. data/lib/chef/resource/openssl_dhparam.rb +1 -2
  165. data/lib/chef/resource/openssl_ec_private_key.rb +3 -5
  166. data/lib/chef/resource/openssl_ec_public_key.rb +1 -3
  167. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -4
  168. data/lib/chef/resource/openssl_rsa_public_key.rb +1 -3
  169. data/lib/chef/resource/openssl_x509_certificate.rb +3 -6
  170. data/lib/chef/resource/openssl_x509_crl.rb +1 -3
  171. data/lib/chef/resource/openssl_x509_request.rb +1 -3
  172. data/lib/chef/resource/osx_profile.rb +3 -3
  173. data/lib/chef/resource/plist.rb +8 -8
  174. data/lib/chef/resource/powershell_package_source.rb +2 -4
  175. data/lib/chef/resource/powershell_script.rb +1 -1
  176. data/lib/chef/resource/reboot.rb +38 -9
  177. data/lib/chef/resource/remote_directory.rb +2 -2
  178. data/lib/chef/resource/remote_file.rb +3 -3
  179. data/lib/chef/resource/rhsm_errata.rb +16 -3
  180. data/lib/chef/resource/rhsm_errata_level.rb +11 -6
  181. data/lib/chef/resource/rhsm_register.rb +12 -6
  182. data/lib/chef/resource/rhsm_repo.rb +17 -6
  183. data/lib/chef/resource/rhsm_subscription.rb +2 -6
  184. data/lib/chef/resource/scm/git.rb +1 -1
  185. data/lib/chef/resource/ssh_known_hosts_entry.rb +4 -7
  186. data/lib/chef/resource/sudo.rb +8 -12
  187. data/lib/chef/resource/support/HabService.dll.config.erb +19 -0
  188. data/lib/chef/resource/support/client.erb +8 -1
  189. data/lib/chef/resource/support/sup.toml.erb +179 -0
  190. data/lib/chef/resource/swap_file.rb +2 -6
  191. data/lib/chef/resource/sysctl.rb +2 -6
  192. data/lib/chef/resource/systemd_unit.rb +2 -2
  193. data/lib/chef/resource/template.rb +1 -1
  194. data/lib/chef/resource/timezone.rb +1 -3
  195. data/lib/chef/resource/user/mac_user.rb +1 -1
  196. data/lib/chef/resource/user_ulimit.rb +2 -2
  197. data/lib/chef/resource/windows_ad_join.rb +2 -6
  198. data/lib/chef/resource/windows_audit_policy.rb +2 -2
  199. data/lib/chef/resource/windows_auto_run.rb +2 -5
  200. data/lib/chef/resource/windows_certificate.rb +207 -73
  201. data/lib/chef/resource/windows_defender.rb +163 -0
  202. data/lib/chef/resource/windows_defender_exclusion.rb +125 -0
  203. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  204. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  205. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  206. data/lib/chef/resource/windows_dns_record.rb +2 -6
  207. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  208. data/lib/chef/resource/windows_env.rb +6 -5
  209. data/lib/chef/resource/windows_feature.rb +3 -9
  210. data/lib/chef/resource/windows_feature_dism.rb +3 -9
  211. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  212. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  213. data/lib/chef/resource/windows_firewall_rule.rb +20 -9
  214. data/lib/chef/resource/windows_font.rb +3 -5
  215. data/lib/chef/resource/windows_pagefile.rb +104 -69
  216. data/lib/chef/resource/windows_path.rb +4 -4
  217. data/lib/chef/resource/windows_printer.rb +80 -61
  218. data/lib/chef/resource/windows_printer_port.rb +49 -66
  219. data/lib/chef/resource/windows_security_policy.rb +56 -40
  220. data/lib/chef/resource/windows_share.rb +14 -21
  221. data/lib/chef/resource/windows_shortcut.rb +4 -6
  222. data/lib/chef/resource/windows_task.rb +19 -7
  223. data/lib/chef/resource/windows_uac.rb +3 -5
  224. data/lib/chef/resource/windows_update_settings.rb +259 -0
  225. data/lib/chef/resource/windows_user_privilege.rb +4 -4
  226. data/lib/chef/resource/windows_workgroup.rb +3 -4
  227. data/lib/chef/resource/yum_package.rb +10 -10
  228. data/lib/chef/resource/zypper_package.rb +4 -4
  229. data/lib/chef/resource/zypper_repository.rb +28 -8
  230. data/lib/chef/resource_builder.rb +8 -2
  231. data/lib/chef/resource_reporter.rb +0 -1
  232. data/lib/chef/resources.rb +13 -2
  233. data/lib/chef/run_lock.rb +1 -1
  234. data/lib/chef/runner.rb +1 -1
  235. data/lib/chef/secret_fetcher.rb +54 -0
  236. data/lib/chef/secret_fetcher/aws_secrets_manager.rb +53 -0
  237. data/lib/chef/secret_fetcher/azure_key_vault.rb +56 -0
  238. data/lib/chef/secret_fetcher/base.rb +72 -0
  239. data/lib/chef/secret_fetcher/example.rb +46 -0
  240. data/lib/chef/shell/ext.rb +3 -3
  241. data/lib/chef/user.rb +0 -1
  242. data/lib/chef/user_v1.rb +3 -4
  243. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  244. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  245. data/lib/chef/version.rb +1 -1
  246. data/lib/chef/win32/api.rb +9 -2
  247. data/lib/chef/win32/registry.rb +4 -2
  248. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  249. data/spec/data/lwrp/resources/bar.rb +2 -0
  250. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  251. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  252. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  253. data/spec/data/lwrp/resources/foo.rb +2 -0
  254. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  255. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  256. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  257. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  258. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  259. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  260. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  261. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  262. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  263. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  264. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  265. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  266. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  267. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  268. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  269. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  270. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  271. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  272. data/spec/functional/mixin/from_file_spec.rb +1 -1
  273. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  274. data/spec/functional/resource/apt_package_spec.rb +1 -1
  275. data/spec/functional/resource/chocolatey_package_spec.rb +13 -0
  276. data/spec/functional/resource/dnf_package_spec.rb +857 -534
  277. data/spec/functional/resource/group_spec.rb +1 -1
  278. data/spec/functional/resource/link_spec.rb +1 -1
  279. data/spec/functional/resource/registry_spec.rb +8 -8
  280. data/spec/functional/resource/remote_file_spec.rb +1 -1
  281. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  282. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  283. data/spec/functional/resource/windows_env_spec.rb +2 -2
  284. data/spec/functional/resource/windows_hostname_spec.rb +91 -0
  285. data/spec/functional/resource/windows_pagefile_spec.rb +98 -0
  286. data/spec/functional/resource/yum_package_spec.rb +495 -428
  287. data/spec/functional/version_spec.rb +1 -1
  288. data/spec/functional/win32/registry_spec.rb +1 -1
  289. data/spec/integration/client/client_spec.rb +5 -22
  290. data/spec/integration/client/exit_code_spec.rb +1 -1
  291. data/spec/integration/client/ipv6_spec.rb +1 -1
  292. data/spec/integration/compliance/compliance_spec.rb +1 -1
  293. data/spec/integration/ohai/ohai_spec.rb +7 -6
  294. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  295. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  296. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  297. data/spec/integration/recipes/notifies_spec.rb +15 -1
  298. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  299. data/spec/integration/recipes/recipe_dsl_spec.rb +10 -10
  300. data/spec/integration/recipes/resource_action_spec.rb +4 -4
  301. data/spec/integration/recipes/unified_mode_spec.rb +71 -1
  302. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  303. data/spec/spec_helper.rb +13 -13
  304. data/spec/support/chef_helpers.rb +1 -17
  305. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  306. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  307. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  308. data/spec/support/matchers/leak.rb +7 -9
  309. data/spec/support/platform_helpers.rb +1 -8
  310. data/spec/support/shared/functional/execute_resource.rb +1 -1
  311. data/spec/support/shared/integration/integration_helper.rb +0 -1
  312. data/spec/support/shared/unit/provider/file.rb +3 -9
  313. data/spec/support/shared/unit/script_resource.rb +2 -2
  314. data/spec/unit/application/solo_spec.rb +2 -2
  315. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  316. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
  317. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  318. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  319. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  320. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  321. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  322. data/spec/unit/compliance/runner_spec.rb +31 -5
  323. data/spec/unit/cookbook_version_spec.rb +52 -0
  324. data/spec/unit/data_bag_item_spec.rb +1 -6
  325. data/spec/unit/data_collector_spec.rb +47 -1
  326. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  327. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  328. data/spec/unit/dsl/render_helpers_spec.rb +102 -0
  329. data/spec/unit/dsl/secret_spec.rb +65 -0
  330. data/spec/unit/handler_spec.rb +8 -2
  331. data/spec/unit/lwrp_spec.rb +1 -1
  332. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  333. data/spec/unit/node/attribute_spec.rb +1 -1
  334. data/spec/unit/node_spec.rb +78 -0
  335. data/spec/unit/org_group_spec.rb +45 -0
  336. data/spec/unit/policy_builder/dynamic_spec.rb +0 -5
  337. data/spec/unit/policy_builder/policyfile_spec.rb +144 -56
  338. data/spec/unit/property_spec.rb +23 -22
  339. data/spec/unit/provider/apt_update_spec.rb +3 -1
  340. data/spec/unit/provider/cron_spec.rb +1 -1
  341. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  342. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  343. data/spec/unit/provider/group/pw_spec.rb +2 -2
  344. data/spec/unit/provider/group_spec.rb +1 -1
  345. data/spec/unit/provider/link_spec.rb +1 -1
  346. data/spec/unit/provider/mount/aix_spec.rb +1 -1
  347. data/spec/unit/provider/package/apt_spec.rb +84 -18
  348. data/spec/unit/provider/package/deb_spec.rb +3 -3
  349. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -0
  350. data/spec/unit/provider/package/powershell_spec.rb +74 -12
  351. data/spec/unit/provider/package/rubygems_spec.rb +21 -33
  352. data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -0
  353. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  354. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  355. data/spec/unit/provider/service/macosx_spec.rb +2 -2
  356. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  357. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  358. data/spec/unit/provider/service/windows_spec.rb +2 -2
  359. data/spec/unit/provider/subversion_spec.rb +2 -2
  360. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  361. data/spec/unit/provider/zypper_repository_spec.rb +5 -12
  362. data/spec/unit/provider_spec.rb +0 -8
  363. data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
  364. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  365. data/spec/unit/resource/windows_defender_exclusion_spec.rb +62 -0
  366. data/spec/unit/resource/windows_defender_spec.rb +71 -0
  367. data/spec/unit/resource/windows_firewall_rule_spec.rb +12 -7
  368. data/spec/unit/resource/windows_pagefile_spec.rb +4 -9
  369. data/spec/unit/resource/windows_task_spec.rb +1 -1
  370. data/spec/unit/resource/windows_update_settings_spec.rb +64 -0
  371. data/spec/unit/resource/zypper_repository_spec.rb +1 -1
  372. data/spec/unit/secret_fetcher/azure_key_vault_spec.rb +63 -0
  373. data/spec/unit/secret_fetcher_spec.rb +82 -0
  374. data/spec/unit/user_spec.rb +1 -1
  375. data/spec/unit/user_v1_spec.rb +6 -4
  376. data/tasks/rspec.rb +9 -6
  377. metadata +59 -519
  378. data/bin/knife +0 -24
  379. data/lib/chef/application/knife.rb +0 -234
  380. data/lib/chef/application/windows_service.rb +0 -338
  381. data/lib/chef/application/windows_service_manager.rb +0 -205
  382. data/lib/chef/chef_fs/knife.rb +0 -160
  383. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  384. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  385. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  386. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  387. data/lib/chef/knife.rb +0 -665
  388. data/lib/chef/knife/acl_add.rb +0 -57
  389. data/lib/chef/knife/acl_base.rb +0 -183
  390. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  391. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  392. data/lib/chef/knife/acl_remove.rb +0 -62
  393. data/lib/chef/knife/acl_show.rb +0 -56
  394. data/lib/chef/knife/bootstrap.rb +0 -1192
  395. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  396. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  397. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  398. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  399. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  400. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  401. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  402. data/lib/chef/knife/client_create.rb +0 -101
  403. data/lib/chef/knife/client_delete.rb +0 -62
  404. data/lib/chef/knife/client_edit.rb +0 -52
  405. data/lib/chef/knife/client_key_create.rb +0 -73
  406. data/lib/chef/knife/client_key_delete.rb +0 -80
  407. data/lib/chef/knife/client_key_edit.rb +0 -83
  408. data/lib/chef/knife/client_key_list.rb +0 -73
  409. data/lib/chef/knife/client_key_show.rb +0 -80
  410. data/lib/chef/knife/client_list.rb +0 -41
  411. data/lib/chef/knife/client_reregister.rb +0 -58
  412. data/lib/chef/knife/client_show.rb +0 -48
  413. data/lib/chef/knife/config_get.rb +0 -39
  414. data/lib/chef/knife/config_get_profile.rb +0 -37
  415. data/lib/chef/knife/config_list.rb +0 -139
  416. data/lib/chef/knife/config_list_profiles.rb +0 -37
  417. data/lib/chef/knife/config_show.rb +0 -127
  418. data/lib/chef/knife/config_use.rb +0 -61
  419. data/lib/chef/knife/config_use_profile.rb +0 -47
  420. data/lib/chef/knife/configure.rb +0 -150
  421. data/lib/chef/knife/configure_client.rb +0 -48
  422. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  423. data/lib/chef/knife/cookbook_delete.rb +0 -151
  424. data/lib/chef/knife/cookbook_download.rb +0 -142
  425. data/lib/chef/knife/cookbook_list.rb +0 -47
  426. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  427. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  428. data/lib/chef/knife/cookbook_show.rb +0 -98
  429. data/lib/chef/knife/cookbook_upload.rb +0 -292
  430. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  431. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  432. data/lib/chef/knife/core/formatting_options.rb +0 -49
  433. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  434. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  435. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  436. data/lib/chef/knife/core/node_editor.rb +0 -130
  437. data/lib/chef/knife/core/node_presenter.rb +0 -133
  438. data/lib/chef/knife/core/object_loader.rb +0 -115
  439. data/lib/chef/knife/core/status_presenter.rb +0 -147
  440. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  441. data/lib/chef/knife/core/text_formatter.rb +0 -85
  442. data/lib/chef/knife/core/ui.rb +0 -338
  443. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -406
  444. data/lib/chef/knife/data_bag_create.rb +0 -81
  445. data/lib/chef/knife/data_bag_delete.rb +0 -49
  446. data/lib/chef/knife/data_bag_edit.rb +0 -74
  447. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  448. data/lib/chef/knife/data_bag_list.rb +0 -42
  449. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  450. data/lib/chef/knife/data_bag_show.rb +0 -69
  451. data/lib/chef/knife/delete.rb +0 -125
  452. data/lib/chef/knife/deps.rb +0 -156
  453. data/lib/chef/knife/diff.rb +0 -83
  454. data/lib/chef/knife/download.rb +0 -84
  455. data/lib/chef/knife/edit.rb +0 -88
  456. data/lib/chef/knife/environment_compare.rb +0 -128
  457. data/lib/chef/knife/environment_create.rb +0 -52
  458. data/lib/chef/knife/environment_delete.rb +0 -44
  459. data/lib/chef/knife/environment_edit.rb +0 -44
  460. data/lib/chef/knife/environment_from_file.rb +0 -84
  461. data/lib/chef/knife/environment_list.rb +0 -41
  462. data/lib/chef/knife/environment_show.rb +0 -47
  463. data/lib/chef/knife/exec.rb +0 -99
  464. data/lib/chef/knife/group_add.rb +0 -55
  465. data/lib/chef/knife/group_create.rb +0 -49
  466. data/lib/chef/knife/group_destroy.rb +0 -53
  467. data/lib/chef/knife/group_remove.rb +0 -56
  468. data/lib/chef/knife/group_show.rb +0 -49
  469. data/lib/chef/knife/key_create.rb +0 -112
  470. data/lib/chef/knife/key_create_base.rb +0 -50
  471. data/lib/chef/knife/key_delete.rb +0 -55
  472. data/lib/chef/knife/key_edit.rb +0 -118
  473. data/lib/chef/knife/key_edit_base.rb +0 -55
  474. data/lib/chef/knife/key_list.rb +0 -90
  475. data/lib/chef/knife/key_list_base.rb +0 -45
  476. data/lib/chef/knife/key_show.rb +0 -53
  477. data/lib/chef/knife/list.rb +0 -177
  478. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  479. data/lib/chef/knife/node_create.rb +0 -47
  480. data/lib/chef/knife/node_delete.rb +0 -46
  481. data/lib/chef/knife/node_edit.rb +0 -70
  482. data/lib/chef/knife/node_environment_set.rb +0 -53
  483. data/lib/chef/knife/node_from_file.rb +0 -51
  484. data/lib/chef/knife/node_list.rb +0 -44
  485. data/lib/chef/knife/node_policy_set.rb +0 -79
  486. data/lib/chef/knife/node_run_list_add.rb +0 -104
  487. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  488. data/lib/chef/knife/node_run_list_set.rb +0 -66
  489. data/lib/chef/knife/node_show.rb +0 -63
  490. data/lib/chef/knife/null.rb +0 -12
  491. data/lib/chef/knife/raw.rb +0 -123
  492. data/lib/chef/knife/rehash.rb +0 -50
  493. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  494. data/lib/chef/knife/role_create.rb +0 -53
  495. data/lib/chef/knife/role_delete.rb +0 -46
  496. data/lib/chef/knife/role_edit.rb +0 -45
  497. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  498. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  499. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  500. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  501. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  502. data/lib/chef/knife/role_from_file.rb +0 -51
  503. data/lib/chef/knife/role_list.rb +0 -42
  504. data/lib/chef/knife/role_run_list_add.rb +0 -87
  505. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  506. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  507. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  508. data/lib/chef/knife/role_run_list_set.rb +0 -69
  509. data/lib/chef/knife/role_show.rb +0 -48
  510. data/lib/chef/knife/search.rb +0 -194
  511. data/lib/chef/knife/serve.rb +0 -65
  512. data/lib/chef/knife/show.rb +0 -72
  513. data/lib/chef/knife/ssh.rb +0 -645
  514. data/lib/chef/knife/ssl_check.rb +0 -284
  515. data/lib/chef/knife/ssl_fetch.rb +0 -161
  516. data/lib/chef/knife/status.rb +0 -95
  517. data/lib/chef/knife/supermarket_download.rb +0 -121
  518. data/lib/chef/knife/supermarket_install.rb +0 -192
  519. data/lib/chef/knife/supermarket_list.rb +0 -76
  520. data/lib/chef/knife/supermarket_search.rb +0 -53
  521. data/lib/chef/knife/supermarket_share.rb +0 -166
  522. data/lib/chef/knife/supermarket_show.rb +0 -66
  523. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  524. data/lib/chef/knife/tag_create.rb +0 -52
  525. data/lib/chef/knife/tag_delete.rb +0 -60
  526. data/lib/chef/knife/tag_list.rb +0 -47
  527. data/lib/chef/knife/upload.rb +0 -86
  528. data/lib/chef/knife/user_create.rb +0 -107
  529. data/lib/chef/knife/user_delete.rb +0 -44
  530. data/lib/chef/knife/user_dissociate.rb +0 -42
  531. data/lib/chef/knife/user_edit.rb +0 -52
  532. data/lib/chef/knife/user_invite_add.rb +0 -43
  533. data/lib/chef/knife/user_invite_list.rb +0 -34
  534. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  535. data/lib/chef/knife/user_key_create.rb +0 -73
  536. data/lib/chef/knife/user_key_delete.rb +0 -80
  537. data/lib/chef/knife/user_key_edit.rb +0 -83
  538. data/lib/chef/knife/user_key_list.rb +0 -73
  539. data/lib/chef/knife/user_key_show.rb +0 -80
  540. data/lib/chef/knife/user_list.rb +0 -42
  541. data/lib/chef/knife/user_reregister.rb +0 -59
  542. data/lib/chef/knife/user_show.rb +0 -48
  543. data/lib/chef/knife/xargs.rb +0 -282
  544. data/lib/chef/knife/yaml_convert.rb +0 -91
  545. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
  546. data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
  547. data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
  548. data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
  549. data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
  550. data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
  551. data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
  552. data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
  553. data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
  554. data/lib/chef/provider/package/yum/simplejson/tool.py +0 -37
  555. data/lib/chef/resource/user/dscl_user.rb +0 -35
  556. data/spec/functional/knife/configure_spec.rb +0 -33
  557. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  558. data/spec/functional/knife/exec_spec.rb +0 -55
  559. data/spec/functional/knife/rehash_spec.rb +0 -39
  560. data/spec/functional/knife/smoke_test.rb +0 -42
  561. data/spec/functional/knife/ssh_spec.rb +0 -352
  562. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  563. data/spec/functional/resource/windows_service_spec.rb +0 -105
  564. data/spec/functional/win32/service_manager_spec.rb +0 -220
  565. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  566. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  567. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  568. data/spec/integration/knife/chefignore_spec.rb +0 -301
  569. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  570. data/spec/integration/knife/client_create_spec.rb +0 -70
  571. data/spec/integration/knife/client_delete_spec.rb +0 -64
  572. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  573. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  574. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  575. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  576. data/spec/integration/knife/client_list_spec.rb +0 -49
  577. data/spec/integration/knife/client_show_spec.rb +0 -37
  578. data/spec/integration/knife/common_options_spec.rb +0 -174
  579. data/spec/integration/knife/config_list_spec.rb +0 -220
  580. data/spec/integration/knife/config_show_spec.rb +0 -192
  581. data/spec/integration/knife/config_use_spec.rb +0 -198
  582. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  583. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  584. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  585. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  586. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  587. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  588. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  589. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  590. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  591. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  592. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  593. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  594. data/spec/integration/knife/delete_spec.rb +0 -1018
  595. data/spec/integration/knife/deps_spec.rb +0 -703
  596. data/spec/integration/knife/diff_spec.rb +0 -605
  597. data/spec/integration/knife/download_spec.rb +0 -1336
  598. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  599. data/spec/integration/knife/environment_create_spec.rb +0 -41
  600. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  601. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  602. data/spec/integration/knife/environment_list_spec.rb +0 -42
  603. data/spec/integration/knife/environment_show_spec.rb +0 -77
  604. data/spec/integration/knife/list_spec.rb +0 -1060
  605. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  606. data/spec/integration/knife/node_create_spec.rb +0 -47
  607. data/spec/integration/knife/node_delete_spec.rb +0 -48
  608. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  609. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  610. data/spec/integration/knife/node_list_spec.rb +0 -45
  611. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  612. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  613. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  614. data/spec/integration/knife/node_show_spec.rb +0 -36
  615. data/spec/integration/knife/raw_spec.rb +0 -297
  616. data/spec/integration/knife/redirection_spec.rb +0 -64
  617. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  618. data/spec/integration/knife/role_create_spec.rb +0 -41
  619. data/spec/integration/knife/role_delete_spec.rb +0 -48
  620. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  621. data/spec/integration/knife/role_list_spec.rb +0 -45
  622. data/spec/integration/knife/role_show_spec.rb +0 -51
  623. data/spec/integration/knife/search_node_spec.rb +0 -40
  624. data/spec/integration/knife/serve_spec.rb +0 -92
  625. data/spec/integration/knife/show_spec.rb +0 -197
  626. data/spec/integration/knife/upload_spec.rb +0 -1617
  627. data/spec/support/shared/functional/win32_service.rb +0 -57
  628. data/spec/unit/application/knife_spec.rb +0 -241
  629. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  630. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  631. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  632. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  633. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  634. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  635. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  636. data/spec/unit/knife/client_create_spec.rb +0 -169
  637. data/spec/unit/knife/client_delete_spec.rb +0 -99
  638. data/spec/unit/knife/client_edit_spec.rb +0 -53
  639. data/spec/unit/knife/client_list_spec.rb +0 -34
  640. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  641. data/spec/unit/knife/client_show_spec.rb +0 -52
  642. data/spec/unit/knife/configure_client_spec.rb +0 -81
  643. data/spec/unit/knife/configure_spec.rb +0 -190
  644. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  645. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  646. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  647. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  648. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  649. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  650. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  651. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  652. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  653. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  654. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  655. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  656. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  657. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  658. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  659. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  660. data/spec/unit/knife/core/ui_spec.rb +0 -656
  661. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  662. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  663. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  664. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  665. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  666. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  667. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  668. data/spec/unit/knife/environment_create_spec.rb +0 -91
  669. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  670. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  671. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  672. data/spec/unit/knife/environment_list_spec.rb +0 -54
  673. data/spec/unit/knife/environment_show_spec.rb +0 -52
  674. data/spec/unit/knife/key_create_spec.rb +0 -223
  675. data/spec/unit/knife/key_delete_spec.rb +0 -133
  676. data/spec/unit/knife/key_edit_spec.rb +0 -264
  677. data/spec/unit/knife/key_helper.rb +0 -74
  678. data/spec/unit/knife/key_list_spec.rb +0 -216
  679. data/spec/unit/knife/key_show_spec.rb +0 -126
  680. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  681. data/spec/unit/knife/node_delete_spec.rb +0 -77
  682. data/spec/unit/knife/node_edit_spec.rb +0 -116
  683. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  684. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  685. data/spec/unit/knife/node_list_spec.rb +0 -62
  686. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  687. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  688. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  689. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  690. data/spec/unit/knife/node_show_spec.rb +0 -65
  691. data/spec/unit/knife/raw_spec.rb +0 -43
  692. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  693. data/spec/unit/knife/role_create_spec.rb +0 -80
  694. data/spec/unit/knife/role_delete_spec.rb +0 -67
  695. data/spec/unit/knife/role_edit_spec.rb +0 -77
  696. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  697. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  698. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  699. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  700. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  701. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  702. data/spec/unit/knife/role_list_spec.rb +0 -54
  703. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  704. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  705. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  706. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  707. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  708. data/spec/unit/knife/role_show_spec.rb +0 -59
  709. data/spec/unit/knife/ssh_spec.rb +0 -403
  710. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  711. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  712. data/spec/unit/knife/status_spec.rb +0 -112
  713. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  714. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  715. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  716. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  717. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  718. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  719. data/spec/unit/knife/tag_create_spec.rb +0 -23
  720. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  721. data/spec/unit/knife/tag_list_spec.rb +0 -23
  722. data/spec/unit/knife/user_create_spec.rb +0 -184
  723. data/spec/unit/knife/user_delete_spec.rb +0 -46
  724. data/spec/unit/knife/user_edit_spec.rb +0 -48
  725. data/spec/unit/knife/user_list_spec.rb +0 -36
  726. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  727. data/spec/unit/knife/user_show_spec.rb +0 -46
  728. data/spec/unit/knife_spec.rb +0 -634
  729. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  730. data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,364 +0,0 @@
1
- #
2
- # Author:: Matthew Kent (<mkent@magoazul.com>)
3
- # Author:: Steven Danna (<steve@chef.io>)
4
- # Copyright:: Copyright (c) Chef Software Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- require "spec_helper"
21
-
22
- require "chef/cookbook_uploader"
23
- require "timeout"
24
-
25
- describe Chef::Knife::CookbookUpload do
26
- let(:cookbook) do
27
- cookbook = Chef::CookbookVersion.new("test_cookbook", "/tmp/blah")
28
- allow(cookbook).to receive(:has_metadata_file?).and_return(true)
29
- allow(cookbook.metadata).to receive(:name).and_return(cookbook.name)
30
- cookbook
31
- end
32
-
33
- let(:cookbooks_by_name) do
34
- { cookbook.name => cookbook }
35
- end
36
-
37
- let(:cookbook_loader) do
38
- cookbook_loader = cookbooks_by_name.dup
39
- allow(cookbook_loader).to receive(:merged_cookbooks).and_return([])
40
- allow(cookbook_loader).to receive(:load_cookbooks).and_return(cookbook_loader)
41
- allow(cookbook_loader).to receive(:compile_metadata).and_return(nil)
42
- allow(cookbook_loader).to receive(:freeze_versions).and_return(nil)
43
- cookbook_loader
44
- end
45
-
46
- let(:cookbook_uploader) { double(upload_cookbooks: nil) }
47
-
48
- let(:output) { StringIO.new }
49
-
50
- let(:name_args) { ["test_cookbook"] }
51
-
52
- let(:knife) do
53
- k = Chef::Knife::CookbookUpload.new
54
- k.name_args = name_args
55
- allow(k.ui).to receive(:stdout).and_return(output)
56
- allow(k.ui).to receive(:stderr).and_return(output)
57
- k
58
- end
59
-
60
- before(:each) do
61
- allow(Chef::CookbookLoader).to receive(:new).and_return(cookbook_loader)
62
- allow(Chef::CookbookLoader).to receive(:copy_to_tmp_dir_from_array).and_yield(cookbook_loader)
63
- end
64
-
65
- describe "with --concurrency" do
66
- it "should upload cookbooks with predefined concurrency" do
67
- allow(Chef::CookbookVersion).to receive(:list_all_versions).and_return({})
68
- knife.config[:concurrency] = 3
69
- test_cookbook = Chef::CookbookVersion.new("test_cookbook", "/tmp/blah")
70
- allow(cookbook_loader).to receive(:each).and_yield("test_cookbook", test_cookbook)
71
- allow(cookbook_loader).to receive(:cookbook_names).and_return(["test_cookbook"])
72
- expect(Chef::CookbookUploader).to receive(:new)
73
- .with( kind_of(Array), { force: nil, concurrency: 3 })
74
- .and_return(double("Chef::CookbookUploader", upload_cookbooks: true))
75
- knife.run
76
- end
77
- end
78
-
79
- describe "run" do
80
- before(:each) do
81
- allow(Chef::CookbookUploader).to receive_messages(new: cookbook_uploader)
82
- allow(Chef::CookbookVersion).to receive(:list_all_versions).and_return({})
83
- end
84
-
85
- it "should print usage and exit when a cookbook name is not provided" do
86
- knife.name_args = []
87
- expect(knife).to receive(:show_usage)
88
- expect(knife.ui).to receive(:fatal)
89
- expect { knife.run }.to raise_error(SystemExit)
90
- end
91
-
92
- describe "when specifying cookbook without metadata.rb or metadata.json" do
93
- let(:name_args) { ["test_cookbook1"] }
94
- let(:cookbook) do
95
- cookbook = Chef::CookbookVersion.new("test_cookbook1", "/tmp/blah")
96
- allow(cookbook).to receive(:has_metadata_file?).and_return(false)
97
- cookbook
98
- end
99
-
100
- it "should upload the cookbook" do
101
- expect { knife.run }.to raise_error(Chef::Exceptions::MetadataNotFound)
102
- end
103
- end
104
-
105
- describe "when name attribute in metadata not set" do
106
- let(:name_args) { ["test_cookbook1"] }
107
-
108
- let(:cookbook) do
109
- cookbook = Chef::CookbookVersion.new("test_cookbook1", "/tmp/blah")
110
- allow(cookbook).to receive(:has_metadata_file?).and_return(true)
111
- allow(cookbook.metadata).to receive(:name).and_return(nil)
112
- cookbook
113
- end
114
-
115
- it "should upload the cookbook" do
116
- expect { knife.run }.to raise_error(Chef::Exceptions::MetadataNotValid)
117
- end
118
- end
119
-
120
- describe "when specifying a cookbook name" do
121
- it "should upload the cookbook" do
122
- expect(knife).to receive(:upload).once
123
- knife.run
124
- end
125
-
126
- it "should report on success" do
127
- expect(knife).to receive(:upload).once
128
- expect(knife.ui).to receive(:info).with(/Uploaded 1 cookbook/)
129
- knife.run
130
- end
131
- end
132
-
133
- describe "when specifying the same cookbook name twice" do
134
- it "should upload the cookbook only once" do
135
- knife.name_args = %w{test_cookbook test_cookbook}
136
- expect(knife).to receive(:upload).once
137
- knife.run
138
- end
139
- end
140
-
141
- describe "when specifying a cookbook name among many" do
142
- let(:name_args) { ["test_cookbook1"] }
143
-
144
- let(:cookbook) do
145
- cookbook = Chef::CookbookVersion.new("test_cookbook1", "/tmp/blah")
146
- allow(cookbook).to receive(:has_metadata_file?).and_return(true)
147
- allow(cookbook.metadata).to receive(:name).and_return(cookbook.name)
148
- cookbook
149
- end
150
-
151
- let(:cookbooks_by_name) do
152
- { cookbook.name => cookbook }
153
- end
154
-
155
- it "should read only one cookbook" do
156
- expect(cookbook_loader).to receive(:[]).once.with("test_cookbook1").and_call_original
157
- knife.run
158
- end
159
-
160
- it "should not read all cookbooks" do
161
- expect(cookbook_loader).to receive(:load_cookbooks)
162
- knife.run
163
- end
164
-
165
- it "should upload only one cookbook" do
166
- expect(knife).to receive(:upload).exactly(1).times
167
- knife.run
168
- end
169
- end
170
-
171
- # This is testing too much. We should break it up.
172
- describe "when specifying a cookbook name with dependencies" do
173
- let(:name_args) { ["test_cookbook2"] }
174
-
175
- let(:test_cookbook1) do
176
- cookbook = Chef::CookbookVersion.new("test_cookbook1", "/tmp/blah")
177
- allow(cookbook).to receive(:has_metadata_file?).and_return(true)
178
- allow(cookbook.metadata).to receive(:name).and_return(cookbook.name)
179
- cookbook
180
- end
181
-
182
- let(:test_cookbook2) do
183
- c = Chef::CookbookVersion.new("test_cookbook2")
184
- c.metadata.depends("test_cookbook3")
185
- allow(c).to receive(:has_metadata_file?).and_return(true)
186
- allow(c.metadata).to receive(:name).and_return(c.name)
187
- c
188
- end
189
-
190
- let(:test_cookbook3) do
191
- c = Chef::CookbookVersion.new("test_cookbook3")
192
- c.metadata.depends("test_cookbook1")
193
- c.metadata.depends("test_cookbook2")
194
- allow(c).to receive(:has_metadata_file?).and_return(true)
195
- allow(c.metadata).to receive(:name).and_return(c.name)
196
- c
197
- end
198
-
199
- let(:cookbooks_by_name) do
200
- { "test_cookbook1" => test_cookbook1,
201
- "test_cookbook2" => test_cookbook2,
202
- "test_cookbook3" => test_cookbook3 }
203
- end
204
-
205
- it "should upload all dependencies once" do
206
- knife.config[:depends] = true
207
- allow(knife).to receive(:cookbook_names).and_return(%w{test_cookbook1 test_cookbook2 test_cookbook3})
208
- expect(knife).to receive(:upload).exactly(3).times
209
- expect do
210
- Timeout.timeout(5) do
211
- knife.run
212
- end
213
- end.not_to raise_error
214
- end
215
- end
216
-
217
- describe "when specifying a cookbook name with missing dependencies" do
218
- let(:cookbook_dependency) { Chef::CookbookVersion.new("dependency", "/tmp/blah") }
219
-
220
- before(:each) do
221
- cookbook.metadata.depends("dependency")
222
- allow(cookbook_loader).to receive(:[]) do |ckbk|
223
- { "test_cookbook" => cookbook,
224
- "dependency" => cookbook_dependency }[ckbk]
225
- end
226
- allow(knife).to receive(:cookbook_names).and_return(%w{cookbook_dependency test_cookbook})
227
- @stdout, @stderr, @stdin = StringIO.new, StringIO.new, StringIO.new
228
- knife.ui = Chef::Knife::UI.new(@stdout, @stderr, @stdin, {})
229
- end
230
-
231
- it "should exit and not upload the cookbook" do
232
- expect(cookbook_loader).to receive(:[]).once.with("test_cookbook")
233
- expect(cookbook_uploader).not_to receive(:upload_cookbooks)
234
- expect { knife.run }.to raise_error(SystemExit)
235
- end
236
-
237
- it "should output a message for a single missing dependency" do
238
- expect { knife.run }.to raise_error(SystemExit)
239
- expect(@stderr.string).to include("Cookbook test_cookbook depends on cookbooks which are not currently")
240
- expect(@stderr.string).to include("being uploaded and cannot be found on the server.")
241
- expect(@stderr.string).to include("The missing cookbook(s) are: 'dependency' version '>= 0.0.0'")
242
- end
243
-
244
- it "should output a message for a multiple missing dependencies which are concatenated" do
245
- cookbook_dependency2 = Chef::CookbookVersion.new("dependency2")
246
- cookbook.metadata.depends("dependency2")
247
- allow(cookbook_loader).to receive(:[]) do |ckbk|
248
- { "test_cookbook" => cookbook,
249
- "dependency" => cookbook_dependency,
250
- "dependency2" => cookbook_dependency2 }[ckbk]
251
- end
252
- allow(knife).to receive(:cookbook_names).and_return(%w{dependency dependency2 test_cookbook})
253
- expect { knife.run }.to raise_error(SystemExit)
254
- expect(@stderr.string).to include("Cookbook test_cookbook depends on cookbooks which are not currently")
255
- expect(@stderr.string).to include("being uploaded and cannot be found on the server.")
256
- expect(@stderr.string).to include("The missing cookbook(s) are:")
257
- expect(@stderr.string).to include("'dependency' version '>= 0.0.0'")
258
- expect(@stderr.string).to include("'dependency2' version '>= 0.0.0'")
259
- end
260
- end
261
-
262
- it "should freeze the version of the cookbooks if --freeze is specified" do
263
- knife.config[:freeze] = true
264
- expect(cookbook_loader).to receive(:freeze_versions).once
265
- knife.run
266
- end
267
-
268
- describe "with -a or --all" do
269
- before(:each) do
270
- knife.config[:all] = true
271
- end
272
-
273
- context "when cookbooks exist in the cookbook path" do
274
- let(:test_cookbook1) do
275
- cookbook = Chef::CookbookVersion.new("test_cookbook1", "/tmp/blah")
276
- allow(cookbook).to receive(:has_metadata_file?).and_return(true)
277
- allow(cookbook.metadata).to receive(:name).and_return(cookbook.name)
278
- cookbook
279
- end
280
-
281
- let(:test_cookbook2) do
282
- cookbook = Chef::CookbookVersion.new("test_cookbook2", "/tmp/blah")
283
- allow(cookbook).to receive(:has_metadata_file?).and_return(true)
284
- allow(cookbook.metadata).to receive(:name).and_return(cookbook.name)
285
- cookbook
286
- end
287
-
288
- before(:each) do
289
- allow(cookbook_loader).to receive(:each).and_yield("test_cookbook1", test_cookbook1).and_yield("test_cookbook2", test_cookbook2)
290
- allow(cookbook_loader).to receive(:cookbook_names).and_return(%w{test_cookbook1 test_cookbook2})
291
- end
292
-
293
- it "should upload all cookbooks" do
294
- expect(knife).to receive(:upload).once
295
- knife.run
296
- end
297
-
298
- it "should report on success" do
299
- expect(knife).to receive(:upload).once
300
- expect(knife.ui).to receive(:info).with(/Uploaded all cookbooks/)
301
- knife.run
302
- end
303
-
304
- it "should update the version constraints for an environment" do
305
- allow(knife).to receive(:assert_environment_valid!).and_return(true)
306
- knife.config[:environment] = "production"
307
- expect(knife).to receive(:update_version_constraints).once
308
- knife.run
309
- end
310
- end
311
-
312
- context "when no cookbooks exist in the cookbook path" do
313
- before(:each) do
314
- allow(cookbook_loader).to receive(:each)
315
- end
316
-
317
- it "should not upload any cookbooks" do
318
- expect(knife).to_not receive(:upload)
319
- knife.run
320
- end
321
-
322
- context "when cookbook path is an array" do
323
- it "should warn users that no cookbooks exist" do
324
- cookbook_path = windows? ? "C:/chef-repo/cookbooks" : "/chef-repo/cookbooks"
325
- knife.config[:cookbook_path] = [cookbook_path, "/home/user/cookbooks"]
326
- expect(knife.ui).to receive(:warn).with("Could not find any cookbooks in your cookbook path: '#{knife.config[:cookbook_path].join(", ")}'. Use --cookbook-path to specify the desired path.")
327
- knife.run
328
- end
329
- end
330
-
331
- context "when cookbook path is a string" do
332
- it "should warn users that no cookbooks exist" do
333
- knife.config[:cookbook_path] = windows? ? "C:/chef-repo/cookbooks" : "/chef-repo/cookbooks"
334
- expect(knife.ui).to receive(:warn).with(
335
- "Could not find any cookbooks in your cookbook path: '#{knife.config[:cookbook_path]}'. Use --cookbook-path to specify the desired path."
336
- )
337
- knife.run
338
- end
339
- end
340
- end
341
- end
342
-
343
- describe "when a frozen cookbook exists on the server" do
344
- it "should fail to replace it" do
345
- exception = Chef::Exceptions::CookbookFrozen.new
346
- expect(cookbook_uploader).to receive(:upload_cookbooks)
347
- .and_raise(exception)
348
- allow(knife.ui).to receive(:error)
349
- expect(knife.ui).to receive(:error).with(exception)
350
- expect { knife.run }.to raise_error(SystemExit)
351
- end
352
-
353
- it "should not update the version constraints for an environment" do
354
- allow(knife).to receive(:assert_environment_valid!).and_return(true)
355
- knife.config[:environment] = "production"
356
- allow(knife).to receive(:upload).and_raise(Chef::Exceptions::CookbookFrozen)
357
- expect(knife.ui).to receive(:error).with(/Failed to upload 1 cookbook/)
358
- expect(knife.ui).to receive(:warn).with(/Not updating version constraints/)
359
- expect(knife).not_to receive(:update_version_constraints)
360
- expect { knife.run }.to raise_error(SystemExit)
361
- end
362
- end
363
- end # run
364
- end
@@ -1,287 +0,0 @@
1
- #
2
- # Author:: Daniel DeLeo (<dan@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/knife/core/bootstrap_context"
21
-
22
- describe Chef::Knife::Core::BootstrapContext do
23
- let(:config) { { foo: :bar, color: true } }
24
- let(:run_list) { Chef::RunList.new("recipe[tmux]", "role[base]") }
25
- let(:chef_config) do
26
- {
27
- config_log_level: "info",
28
- config_log_location: "/tmp/log",
29
- validation_key: File.join(CHEF_SPEC_DATA, "ssl", "private_key.pem"),
30
- chef_server_url: "http://chef.example.com:4444",
31
- validation_client_name: "chef-validator-testing",
32
- }
33
- end
34
-
35
- let(:secret) { nil }
36
-
37
- subject(:bootstrap_context) { described_class.new(config, run_list, chef_config, secret) }
38
-
39
- it "initializes with Chef 11 parameters" do
40
- expect { described_class.new(config, run_list, chef_config) }.not_to raise_error
41
- end
42
-
43
- it "runs chef with the first-boot.json with no environment" do
44
- expect(bootstrap_context.start_chef).to eq "chef-client -j /etc/chef/first-boot.json"
45
- end
46
-
47
- describe "when in verbosity mode" do
48
- let(:config) { { verbosity: 2, color: true } }
49
- it "adds '-l debug' when verbosity is >= 2" do
50
- expect(bootstrap_context.start_chef).to eq "chef-client -j /etc/chef/first-boot.json -l debug"
51
- end
52
- end
53
-
54
- describe "when no color value has been set in config" do
55
- let(:config) { { color: false } }
56
- it "adds '--no-color' when color is false" do
57
- expect(bootstrap_context.start_chef).to eq "chef-client -j /etc/chef/first-boot.json --no-color"
58
- end
59
- end
60
-
61
- it "reads the validation key" do
62
- expect(bootstrap_context.validation_key).to eq IO.read(File.join(CHEF_SPEC_DATA, "ssl", "private_key.pem"))
63
- end
64
-
65
- it "generates the config file data" do
66
- expected = <<~EXPECTED
67
- chef_server_url "http://chef.example.com:4444"
68
- validation_client_name "chef-validator-testing"
69
- log_level :info
70
- log_location "/tmp/log"
71
- # Using default node name (fqdn)
72
- EXPECTED
73
- expect(bootstrap_context.config_content).to eq expected
74
- end
75
-
76
- describe "when chef_license is set" do
77
- let(:chef_config) { { chef_license: "accept-no-persist" } }
78
- it "sets chef_license in the generated config file" do
79
- expect(bootstrap_context.config_content).to include("chef_license \"accept-no-persist\"")
80
- end
81
- end
82
-
83
- describe "when file_cache_path is set" do
84
- let(:chef_config) { { file_cache_path: "/home/opscode/cache" } }
85
- it "sets file_cache_path in the generated config file" do
86
- expect(bootstrap_context.config_content).to include("file_cache_path \"/home/opscode/cache\"")
87
- end
88
- end
89
-
90
- describe "when file_backup_path is set" do
91
- let(:chef_config) { { file_backup_path: "/home/opscode/backup" } }
92
- it "sets file_backup_path in the generated config file" do
93
- expect(bootstrap_context.config_content).to include("file_backup_path \"/home/opscode/backup\"")
94
- end
95
- end
96
-
97
- describe "alternate chef-client path" do
98
- let(:chef_config) { { chef_client_path: "/usr/local/bin/chef-client" } }
99
- it "runs chef-client from another path when specified" do
100
- expect(bootstrap_context.start_chef).to eq "/usr/local/bin/chef-client -j /etc/chef/first-boot.json"
101
- end
102
- end
103
-
104
- describe "validation key path that contains a ~" do
105
- let(:chef_config) { { validation_key: "~/my.key" } }
106
- it "reads the validation key when it contains a ~" do
107
- expect(File).to receive(:exist?).with(File.expand_path("my.key", ENV["HOME"])).and_return(true)
108
- expect(IO).to receive(:read).with(File.expand_path("my.key", ENV["HOME"]))
109
- bootstrap_context.validation_key
110
- end
111
- end
112
-
113
- describe "when an explicit node name is given" do
114
- let(:config) { { chef_node_name: "foobar.example.com" } }
115
- it "sets the node name in the client.rb" do
116
- expect(bootstrap_context.config_content).to match(/node_name "foobar\.example\.com"/)
117
- end
118
- end
119
-
120
- describe "when bootstrapping into a specific environment" do
121
- let(:config) { { environment: "prodtastic", color: true } }
122
- it "starts chef in the configured environment" do
123
- expect(bootstrap_context.start_chef).to eq("chef-client -j /etc/chef/first-boot.json -E prodtastic")
124
- end
125
- end
126
-
127
- describe "when tags are given" do
128
- let(:config) { { tags: [ "unicorn" ] } }
129
- it "adds the attributes to first_boot" do
130
- expect(Chef::JSONCompat.to_json(bootstrap_context.first_boot)).to eq(Chef::JSONCompat.to_json({ run_list: run_list, tags: ["unicorn"] }))
131
- end
132
- end
133
-
134
- describe "when JSON attributes are given" do
135
- let(:config) { { first_boot_attributes: { baz: :quux } } }
136
- it "adds the attributes to first_boot" do
137
- expect(Chef::JSONCompat.to_json(bootstrap_context.first_boot)).to eq(Chef::JSONCompat.to_json({ baz: :quux, run_list: run_list }))
138
- end
139
- end
140
-
141
- describe "when JSON attributes are NOT given" do
142
- it "sets first_boot equal to run_list" do
143
- expect(Chef::JSONCompat.to_json(bootstrap_context.first_boot)).to eq(Chef::JSONCompat.to_json({ run_list: run_list }))
144
- end
145
- end
146
-
147
- describe "when policy_name and policy_group are present in config" do
148
-
149
- let(:config) { { policy_name: "my_app_server", policy_group: "staging" } }
150
-
151
- it "includes them in the first_boot data and excludes run_list" do
152
- expect(Chef::JSONCompat.to_json(bootstrap_context.first_boot)).to eq(Chef::JSONCompat.to_json({ policy_name: "my_app_server", policy_group: "staging" }))
153
- end
154
-
155
- end
156
-
157
- describe "when an encrypted_data_bag_secret is provided" do
158
- let(:secret) { "supersekret" }
159
- it "reads the encrypted_data_bag_secret" do
160
- expect(bootstrap_context.encrypted_data_bag_secret).to eq "supersekret"
161
- end
162
- end
163
-
164
- describe "to support compatibility with existing templates" do
165
- it "sets the @config instance variable" do
166
- expect(bootstrap_context.instance_variable_get(:@config)).to eq config
167
- end
168
-
169
- it "sets the @run_list instance variable" do
170
- expect(bootstrap_context.instance_variable_get(:@run_list)).to eq run_list
171
- end
172
- end
173
-
174
- describe "ssl_verify_mode" do
175
- it "isn't set in the config_content by default" do
176
- expect(bootstrap_context.config_content).not_to include("ssl_verify_mode")
177
- end
178
-
179
- describe "when configured via the config hash" do
180
- let(:config) { { node_ssl_verify_mode: "none" } }
181
-
182
- it "uses the config value" do
183
- expect(bootstrap_context.config_content).to include("ssl_verify_mode :verify_none")
184
- end
185
- end
186
- end
187
-
188
- describe "fips mode" do
189
- before do
190
- chef_config[:fips] = true
191
- end
192
-
193
- it "sets fips mode in the client.rb" do
194
- expect(bootstrap_context.config_content).to match(/fips true/)
195
- end
196
- end
197
-
198
- describe "verify_api_cert" do
199
- it "isn't set in the config_content by default" do
200
- expect(bootstrap_context.config_content).not_to include("verify_api_cert")
201
- end
202
-
203
- describe "when configured via the config hash" do
204
- let(:config) { { node_verify_api_cert: true } }
205
-
206
- it "uses config value" do
207
- expect(bootstrap_context.config_content).to include("verify_api_cert true")
208
- end
209
- end
210
- end
211
-
212
- describe "#config_log_location" do
213
- context "when config_log_location is nil" do
214
- let(:chef_config) { { config_log_location: nil } }
215
- it "sets the default config_log_location in the client.rb" do
216
- expect(bootstrap_context.get_log_location).to eq "STDOUT"
217
- end
218
- end
219
-
220
- context "when config_log_location is empty" do
221
- let(:chef_config) { { config_log_location: "" } }
222
- it "sets the default config_log_location in the client.rb" do
223
- expect(bootstrap_context.get_log_location).to eq "STDOUT"
224
- end
225
- end
226
-
227
- context "when config_log_location is :win_evt" do
228
- let(:chef_config) { { config_log_location: :win_evt } }
229
- it "raise error when config_log_location is :win_evt " do
230
- expect { bootstrap_context.get_log_location }.to raise_error("The value :win_evt is not supported for config_log_location on Linux Platforms \n")
231
- end
232
- end
233
-
234
- context "when config_log_location is :syslog" do
235
- let(:chef_config) { { config_log_location: :syslog } }
236
- it "sets the config_log_location value as :syslog in the client.rb" do
237
- expect(bootstrap_context.get_log_location).to eq ":syslog"
238
- end
239
- end
240
-
241
- context "When config_log_location is STDOUT" do
242
- let(:chef_config) { { config_log_location: STDOUT } }
243
- it "Sets the config_log_location value as STDOUT in the client.rb" do
244
- expect(bootstrap_context.get_log_location).to eq "STDOUT"
245
- end
246
- end
247
-
248
- context "when config_log_location is STDERR" do
249
- let(:chef_config) { { config_log_location: STDERR } }
250
- it "sets the config_log_location value as STDERR in the client.rb" do
251
- expect(bootstrap_context.get_log_location).to eq "STDERR"
252
- end
253
- end
254
-
255
- context "when config_log_location is a path" do
256
- let(:chef_config) { { config_log_location: "/tmp/ChefLogFile" } }
257
- it "sets the config_log_location path in the client.rb" do
258
- expect(bootstrap_context.get_log_location).to eq "\"/tmp/ChefLogFile\""
259
- end
260
- end
261
-
262
- end
263
-
264
- describe "#version_to_install" do
265
- context "when bootstrap_version is provided" do
266
- let(:config) { { bootstrap_version: "awesome" } }
267
-
268
- it "returns bootstrap_version" do
269
- expect(bootstrap_context.version_to_install).to eq "awesome"
270
- end
271
- end
272
-
273
- context "when bootstrap_version is not provided" do
274
- let(:config) { { channel: "stable" } }
275
- it "returns the currently running major version out of Chef::VERSION" do
276
- expect(bootstrap_context.version_to_install).to eq Chef::VERSION.split(".").first
277
- end
278
- end
279
-
280
- context "and channel is other than stable" do
281
- let(:config) { { channel: "unstable" } }
282
- it "returns the version string 'latest'" do
283
- expect(bootstrap_context.version_to_install).to eq "latest"
284
- end
285
- end
286
- end
287
- end