chef 16.11.7-universal-mingw32 → 17.2.29-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 (733) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -21
  3. data/README.md +1 -1
  4. data/Rakefile +13 -2
  5. data/chef-universal-mingw32.gemspec +1 -1
  6. data/chef.gemspec +11 -24
  7. data/distro/ruby_bin_folder/AMD64/Chef.PowerShell.Wrapper.dll +0 -0
  8. data/distro/ruby_bin_folder/AMD64/Chef.PowerShell.dll +0 -0
  9. data/distro/ruby_bin_folder/AMD64/Newtonsoft.Json.dll +0 -0
  10. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.PowerShell.Wrapper.Core.dll +0 -0
  11. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.dll +0 -0
  12. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.pdb +0 -0
  13. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.NETCore.App.deps.json +153 -149
  14. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Diagnostics.dll +0 -0
  15. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Management.dll +0 -0
  16. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Utility.dll +0 -0
  17. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.ConsoleHost.dll +0 -0
  18. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.CoreCLR.Eventing.dll +0 -0
  19. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.MarkdownRender.dll +0 -0
  20. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Security.dll +0 -0
  21. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Management.dll +0 -0
  22. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Runtime.dll +0 -0
  23. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Newtonsoft.Json.dll +0 -0
  24. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.Messages.dll +0 -0
  25. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.dll +0 -0
  26. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Drawing.Common.dll +0 -0
  27. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Management.Automation.dll +0 -0
  28. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Pkcs.dll +0 -0
  29. data/distro/ruby_bin_folder/x86/Chef.PowerShell.dll +0 -0
  30. data/distro/ruby_bin_folder/x86/Chef.Powershell.Wrapper.dll +0 -0
  31. data/distro/ruby_bin_folder/x86/Newtonsoft.Json.dll +0 -0
  32. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.PowerShell.Wrapper.Core.dll +0 -0
  33. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.dll +0 -0
  34. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.pdb +0 -0
  35. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.NETCore.App.deps.json +153 -149
  36. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Diagnostics.dll +0 -0
  37. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Management.dll +0 -0
  38. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Utility.dll +0 -0
  39. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.ConsoleHost.dll +0 -0
  40. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.CoreCLR.Eventing.dll +0 -0
  41. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.MarkdownRender.dll +0 -0
  42. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Security.dll +0 -0
  43. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Management.dll +0 -0
  44. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Runtime.dll +0 -0
  45. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Newtonsoft.Json.dll +0 -0
  46. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.Messages.dll +0 -0
  47. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.dll +0 -0
  48. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Drawing.Common.dll +0 -0
  49. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Management.Automation.dll +0 -0
  50. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Pkcs.dll +0 -0
  51. data/lib/chef/action_collection.rb +6 -26
  52. data/lib/chef/application.rb +1 -1
  53. data/lib/chef/application/base.rb +16 -1
  54. data/lib/chef/applications.rb +0 -1
  55. data/lib/chef/chef_fs/command_line.rb +5 -2
  56. data/lib/chef/chef_fs/file_pattern.rb +2 -2
  57. data/lib/chef/chef_fs/file_system.rb +9 -10
  58. data/lib/chef/client.rb +8 -2
  59. data/lib/chef/compliance/default_attributes.rb +5 -4
  60. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  61. data/lib/chef/compliance/reporter/automate.rb +17 -7
  62. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  63. data/lib/chef/compliance/reporter/cli.rb +77 -0
  64. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  65. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  66. data/lib/chef/compliance/runner.rb +65 -27
  67. data/lib/chef/cookbook/cookbook_version_loader.rb +3 -3
  68. data/lib/chef/cookbook/gem_installer.rb +5 -1
  69. data/lib/chef/cookbook/synchronizer.rb +3 -5
  70. data/lib/chef/cookbook_loader.rb +2 -4
  71. data/lib/chef/cookbook_uploader.rb +0 -1
  72. data/lib/chef/cookbook_version.rb +26 -4
  73. data/lib/chef/data_bag.rb +2 -1
  74. data/lib/chef/data_bag_item.rb +13 -3
  75. data/lib/chef/data_collector.rb +0 -1
  76. data/lib/chef/data_collector/run_end_message.rb +1 -1
  77. data/lib/chef/delayed_evaluator.rb +4 -0
  78. data/lib/chef/deprecated.rb +8 -0
  79. data/lib/chef/dsl/chef_vault.rb +6 -6
  80. data/lib/chef/dsl/declare_resource.rb +5 -10
  81. data/lib/chef/dsl/reboot_pending.rb +1 -2
  82. data/lib/chef/event_dispatch/base.rb +2 -1
  83. data/lib/chef/exceptions.rb +3 -0
  84. data/lib/chef/formatters/doc.rb +2 -1
  85. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  86. data/lib/chef/group.rb +75 -0
  87. data/lib/chef/handler.rb +46 -8
  88. data/lib/chef/handler/slow_report.rb +66 -0
  89. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  90. data/lib/chef/node.rb +21 -20
  91. data/lib/chef/node/attribute.rb +6 -4
  92. data/lib/chef/node/immutable_collections.rb +13 -0
  93. data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
  94. data/lib/chef/org.rb +3 -2
  95. data/lib/chef/property.rb +18 -0
  96. data/lib/chef/provider.rb +1 -1
  97. data/lib/chef/provider/cron.rb +1 -1
  98. data/lib/chef/provider/directory.rb +6 -6
  99. data/lib/chef/provider/execute.rb +2 -1
  100. data/lib/chef/provider/file.rb +2 -2
  101. data/lib/chef/provider/git.rb +5 -7
  102. data/lib/chef/provider/group/groupadd.rb +3 -3
  103. data/lib/chef/provider/group/groupmod.rb +3 -3
  104. data/lib/chef/provider/group/pw.rb +3 -3
  105. data/lib/chef/provider/ifconfig.rb +2 -2
  106. data/lib/chef/provider/link.rb +3 -3
  107. data/lib/chef/provider/mount.rb +12 -7
  108. data/lib/chef/provider/mount/aix.rb +3 -3
  109. data/lib/chef/provider/mount/mount.rb +5 -5
  110. data/lib/chef/provider/mount/windows.rb +1 -1
  111. data/lib/chef/provider/package.rb +17 -21
  112. data/lib/chef/provider/package/apt.rb +27 -1
  113. data/lib/chef/provider/package/deb.rb +3 -3
  114. data/lib/chef/provider/package/dnf/dnf_helper.py +12 -11
  115. data/lib/chef/provider/package/dnf/python_helper.rb +9 -8
  116. data/lib/chef/provider/package/portage.rb +2 -2
  117. data/lib/chef/provider/package/rubygems.rb +11 -17
  118. data/lib/chef/provider/package/windows.rb +2 -4
  119. data/lib/chef/provider/package/yum.rb +1 -4
  120. data/lib/chef/provider/package/yum/python_helper.rb +15 -10
  121. data/lib/chef/provider/package/yum/yum_helper.py +47 -63
  122. data/lib/chef/provider/registry_key.rb +1 -1
  123. data/lib/chef/provider/route.rb +2 -2
  124. data/lib/chef/provider/service.rb +6 -6
  125. data/lib/chef/provider/service/aixinit.rb +1 -1
  126. data/lib/chef/provider/service/debian.rb +1 -1
  127. data/lib/chef/provider/service/freebsd.rb +15 -21
  128. data/lib/chef/provider/service/macosx.rb +7 -7
  129. data/lib/chef/provider/service/systemd.rb +43 -14
  130. data/lib/chef/provider/service/upstart.rb +2 -13
  131. data/lib/chef/provider/service/windows.rb +12 -12
  132. data/lib/chef/provider/subversion.rb +10 -12
  133. data/lib/chef/provider/support/zypper_repo.erb +4 -2
  134. data/lib/chef/provider/systemd_unit.rb +36 -10
  135. data/lib/chef/provider/template/content.rb +3 -7
  136. data/lib/chef/provider/user.rb +2 -2
  137. data/lib/chef/provider/user/dscl.rb +1 -1
  138. data/lib/chef/provider/user/mac.rb +17 -20
  139. data/lib/chef/provider/user/pw.rb +1 -1
  140. data/lib/chef/provider/user/windows.rb +1 -1
  141. data/lib/chef/provider/windows_script.rb +1 -1
  142. data/lib/chef/provider/zypper_repository.rb +28 -32
  143. data/lib/chef/providers.rb +0 -1
  144. data/lib/chef/resource.rb +6 -7
  145. data/lib/chef/resource/alternatives.rb +6 -6
  146. data/lib/chef/resource/apt_package.rb +1 -1
  147. data/lib/chef/resource/apt_preference.rb +2 -2
  148. data/lib/chef/resource/apt_repository.rb +6 -6
  149. data/lib/chef/resource/apt_update.rb +5 -4
  150. data/lib/chef/resource/archive_file.rb +2 -3
  151. data/lib/chef/resource/breakpoint.rb +1 -1
  152. data/lib/chef/resource/build_essential.rb +2 -6
  153. data/lib/chef/resource/chef_client_config.rb +3 -3
  154. data/lib/chef/resource/chef_client_cron.rb +4 -4
  155. data/lib/chef/resource/chef_client_launchd.rb +6 -6
  156. data/lib/chef/resource/chef_client_scheduled_task.rb +15 -15
  157. data/lib/chef/resource/chef_client_systemd_timer.rb +4 -4
  158. data/lib/chef/resource/chef_handler.rb +3 -7
  159. data/lib/chef/resource/chef_sleep.rb +1 -1
  160. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  161. data/lib/chef/resource/chocolatey_config.rb +2 -6
  162. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  163. data/lib/chef/resource/chocolatey_source.rb +4 -10
  164. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  165. data/lib/chef/resource/cron/cron_d.rb +4 -6
  166. data/lib/chef/resource/cron_access.rb +2 -4
  167. data/lib/chef/resource/dmg_package.rb +6 -10
  168. data/lib/chef/resource/dpkg_package.rb +1 -1
  169. data/lib/chef/resource/execute.rb +8 -3
  170. data/lib/chef/resource/file.rb +1 -1
  171. data/lib/chef/resource/group.rb +6 -6
  172. data/lib/chef/resource/homebrew_cask.rb +17 -10
  173. data/lib/chef/resource/homebrew_package.rb +1 -1
  174. data/lib/chef/resource/homebrew_tap.rb +4 -7
  175. data/lib/chef/resource/homebrew_update.rb +2 -2
  176. data/lib/chef/resource/hostname.rb +68 -22
  177. data/lib/chef/resource/http_request.rb +1 -1
  178. data/lib/chef/resource/inspec_waiver_file_entry.rb +156 -0
  179. data/lib/chef/resource/kernel_module.rb +6 -17
  180. data/lib/chef/resource/locale.rb +2 -3
  181. data/lib/chef/resource/lwrp_base.rb +19 -0
  182. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  183. data/lib/chef/resource/mdadm.rb +53 -7
  184. data/lib/chef/resource/mount.rb +2 -1
  185. data/lib/chef/resource/ohai_hint.rb +2 -6
  186. data/lib/chef/resource/openbsd_package.rb +17 -0
  187. data/lib/chef/resource/openssl_dhparam.rb +1 -2
  188. data/lib/chef/resource/openssl_ec_private_key.rb +3 -5
  189. data/lib/chef/resource/openssl_ec_public_key.rb +1 -3
  190. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -4
  191. data/lib/chef/resource/openssl_rsa_public_key.rb +1 -3
  192. data/lib/chef/resource/openssl_x509_certificate.rb +3 -6
  193. data/lib/chef/resource/openssl_x509_crl.rb +1 -3
  194. data/lib/chef/resource/openssl_x509_request.rb +1 -3
  195. data/lib/chef/resource/osx_profile.rb +3 -3
  196. data/lib/chef/resource/plist.rb +8 -8
  197. data/lib/chef/resource/powershell_package_source.rb +2 -4
  198. data/lib/chef/resource/powershell_script.rb +1 -1
  199. data/lib/chef/resource/reboot.rb +38 -9
  200. data/lib/chef/resource/remote_directory.rb +2 -2
  201. data/lib/chef/resource/remote_file.rb +3 -3
  202. data/lib/chef/resource/rhsm_errata.rb +16 -3
  203. data/lib/chef/resource/rhsm_errata_level.rb +11 -6
  204. data/lib/chef/resource/rhsm_register.rb +12 -6
  205. data/lib/chef/resource/rhsm_repo.rb +17 -6
  206. data/lib/chef/resource/rhsm_subscription.rb +2 -6
  207. data/lib/chef/resource/scm/git.rb +1 -1
  208. data/lib/chef/resource/ssh_known_hosts_entry.rb +4 -7
  209. data/lib/chef/resource/sudo.rb +8 -12
  210. data/lib/chef/resource/swap_file.rb +2 -6
  211. data/lib/chef/resource/sysctl.rb +2 -6
  212. data/lib/chef/resource/systemd_unit.rb +2 -2
  213. data/lib/chef/resource/template.rb +1 -1
  214. data/lib/chef/resource/timezone.rb +1 -3
  215. data/lib/chef/resource/user/mac_user.rb +1 -1
  216. data/lib/chef/resource/user_ulimit.rb +2 -2
  217. data/lib/chef/resource/windows_ad_join.rb +2 -6
  218. data/lib/chef/resource/windows_audit_policy.rb +2 -2
  219. data/lib/chef/resource/windows_auto_run.rb +2 -5
  220. data/lib/chef/resource/windows_certificate.rb +207 -73
  221. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  222. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  223. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  224. data/lib/chef/resource/windows_dns_record.rb +2 -6
  225. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  226. data/lib/chef/resource/windows_env.rb +6 -5
  227. data/lib/chef/resource/windows_feature.rb +3 -9
  228. data/lib/chef/resource/windows_feature_dism.rb +3 -9
  229. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  230. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  231. data/lib/chef/resource/windows_firewall_rule.rb +20 -9
  232. data/lib/chef/resource/windows_font.rb +3 -5
  233. data/lib/chef/resource/windows_pagefile.rb +104 -69
  234. data/lib/chef/resource/windows_path.rb +4 -4
  235. data/lib/chef/resource/windows_printer.rb +8 -23
  236. data/lib/chef/resource/windows_printer_port.rb +49 -66
  237. data/lib/chef/resource/windows_security_policy.rb +56 -40
  238. data/lib/chef/resource/windows_share.rb +14 -21
  239. data/lib/chef/resource/windows_shortcut.rb +4 -6
  240. data/lib/chef/resource/windows_task.rb +19 -7
  241. data/lib/chef/resource/windows_uac.rb +3 -5
  242. data/lib/chef/resource/windows_user_privilege.rb +4 -4
  243. data/lib/chef/resource/windows_workgroup.rb +3 -4
  244. data/lib/chef/resource/yum_package.rb +10 -10
  245. data/lib/chef/resource/zypper_package.rb +4 -4
  246. data/lib/chef/resource/zypper_repository.rb +28 -8
  247. data/lib/chef/resource_builder.rb +8 -2
  248. data/lib/chef/resource_reporter.rb +0 -1
  249. data/lib/chef/resources.rb +1 -1
  250. data/lib/chef/run_lock.rb +1 -1
  251. data/lib/chef/runner.rb +1 -1
  252. data/lib/chef/shell/ext.rb +3 -3
  253. data/lib/chef/user.rb +0 -1
  254. data/lib/chef/user_v1.rb +3 -4
  255. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  256. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  257. data/lib/chef/version.rb +1 -1
  258. data/lib/chef/win32/api.rb +9 -2
  259. data/lib/chef/win32/registry.rb +4 -2
  260. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  261. data/spec/data/lwrp/resources/bar.rb +2 -0
  262. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  263. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  264. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  265. data/spec/data/lwrp/resources/foo.rb +2 -0
  266. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  267. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  268. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  269. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  270. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  271. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  272. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  273. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  274. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  275. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  276. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  277. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  278. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  279. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  280. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  281. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  282. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  283. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  284. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  285. data/spec/functional/resource/apt_package_spec.rb +1 -1
  286. data/spec/functional/resource/chocolatey_package_spec.rb +13 -0
  287. data/spec/functional/resource/cron_spec.rb +1 -1
  288. data/spec/functional/resource/dnf_package_spec.rb +857 -534
  289. data/spec/functional/resource/group_spec.rb +1 -1
  290. data/spec/functional/resource/link_spec.rb +1 -1
  291. data/spec/functional/resource/registry_spec.rb +8 -8
  292. data/spec/functional/resource/remote_file_spec.rb +1 -1
  293. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  294. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  295. data/spec/functional/resource/windows_env_spec.rb +2 -2
  296. data/spec/functional/resource/windows_hostname_spec.rb +91 -0
  297. data/spec/functional/resource/windows_pagefile_spec.rb +98 -0
  298. data/spec/functional/resource/yum_package_spec.rb +495 -428
  299. data/spec/functional/version_spec.rb +1 -1
  300. data/spec/functional/win32/registry_spec.rb +1 -1
  301. data/spec/integration/client/client_spec.rb +5 -22
  302. data/spec/integration/client/exit_code_spec.rb +1 -1
  303. data/spec/integration/client/ipv6_spec.rb +1 -1
  304. data/spec/integration/compliance/compliance_spec.rb +1 -1
  305. data/spec/integration/ohai/ohai_spec.rb +7 -6
  306. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  307. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  308. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  309. data/spec/integration/recipes/notifies_spec.rb +15 -1
  310. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  311. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  312. data/spec/integration/recipes/unified_mode_spec.rb +71 -1
  313. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  314. data/spec/spec_helper.rb +14 -13
  315. data/spec/support/chef_helpers.rb +1 -17
  316. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  317. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  318. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  319. data/spec/support/matchers/leak.rb +7 -9
  320. data/spec/support/platform_helpers.rb +5 -8
  321. data/spec/support/shared/functional/execute_resource.rb +1 -1
  322. data/spec/support/shared/integration/integration_helper.rb +0 -1
  323. data/spec/support/shared/unit/provider/file.rb +15 -1
  324. data/spec/support/shared/unit/script_resource.rb +2 -2
  325. data/spec/unit/application/solo_spec.rb +2 -2
  326. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  327. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
  328. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  329. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  330. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  331. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  332. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  333. data/spec/unit/compliance/runner_spec.rb +31 -5
  334. data/spec/unit/cookbook_version_spec.rb +52 -0
  335. data/spec/unit/data_bag_item_spec.rb +3 -8
  336. data/spec/unit/data_bag_spec.rb +1 -1
  337. data/spec/unit/data_collector_spec.rb +47 -1
  338. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  339. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  340. data/spec/unit/handler_spec.rb +8 -2
  341. data/spec/unit/lwrp_spec.rb +1 -1
  342. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  343. data/spec/unit/node/attribute_spec.rb +1 -1
  344. data/spec/unit/node_spec.rb +78 -0
  345. data/spec/unit/org_group_spec.rb +45 -0
  346. data/spec/unit/property_spec.rb +23 -22
  347. data/spec/unit/provider/cron_spec.rb +1 -1
  348. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  349. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  350. data/spec/unit/provider/group/pw_spec.rb +2 -2
  351. data/spec/unit/provider/group_spec.rb +1 -1
  352. data/spec/unit/provider/link_spec.rb +1 -1
  353. data/spec/unit/provider/mount/mount_spec.rb +51 -0
  354. data/spec/unit/provider/package/apt_spec.rb +84 -18
  355. data/spec/unit/provider/package/deb_spec.rb +3 -3
  356. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -0
  357. data/spec/unit/provider/package/rubygems_spec.rb +21 -33
  358. data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -0
  359. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  360. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  361. data/spec/unit/provider/service/macosx_spec.rb +5 -5
  362. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  363. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  364. data/spec/unit/provider/service/windows_spec.rb +2 -2
  365. data/spec/unit/provider/subversion_spec.rb +2 -2
  366. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  367. data/spec/unit/provider/zypper_repository_spec.rb +5 -12
  368. data/spec/unit/provider_spec.rb +0 -8
  369. data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
  370. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  371. data/spec/unit/resource/windows_firewall_rule_spec.rb +12 -7
  372. data/spec/unit/resource/windows_pagefile_spec.rb +4 -9
  373. data/spec/unit/resource/windows_task_spec.rb +1 -1
  374. data/spec/unit/resource/zypper_repository_spec.rb +1 -1
  375. data/spec/unit/user_spec.rb +1 -1
  376. data/spec/unit/user_v1_spec.rb +6 -4
  377. data/tasks/rspec.rb +9 -6
  378. metadata +26 -528
  379. data/bin/knife +0 -24
  380. data/lib/chef/application/knife.rb +0 -234
  381. data/lib/chef/application/windows_service.rb +0 -338
  382. data/lib/chef/application/windows_service_manager.rb +0 -205
  383. data/lib/chef/chef_fs/knife.rb +0 -160
  384. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  385. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  386. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  387. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  388. data/lib/chef/knife.rb +0 -665
  389. data/lib/chef/knife/acl_add.rb +0 -57
  390. data/lib/chef/knife/acl_base.rb +0 -183
  391. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  392. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  393. data/lib/chef/knife/acl_remove.rb +0 -62
  394. data/lib/chef/knife/acl_show.rb +0 -56
  395. data/lib/chef/knife/bootstrap.rb +0 -1192
  396. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  397. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  398. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  399. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  400. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  401. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  402. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  403. data/lib/chef/knife/client_create.rb +0 -101
  404. data/lib/chef/knife/client_delete.rb +0 -62
  405. data/lib/chef/knife/client_edit.rb +0 -52
  406. data/lib/chef/knife/client_key_create.rb +0 -73
  407. data/lib/chef/knife/client_key_delete.rb +0 -80
  408. data/lib/chef/knife/client_key_edit.rb +0 -83
  409. data/lib/chef/knife/client_key_list.rb +0 -73
  410. data/lib/chef/knife/client_key_show.rb +0 -80
  411. data/lib/chef/knife/client_list.rb +0 -41
  412. data/lib/chef/knife/client_reregister.rb +0 -58
  413. data/lib/chef/knife/client_show.rb +0 -48
  414. data/lib/chef/knife/config_get.rb +0 -39
  415. data/lib/chef/knife/config_get_profile.rb +0 -37
  416. data/lib/chef/knife/config_list.rb +0 -139
  417. data/lib/chef/knife/config_list_profiles.rb +0 -37
  418. data/lib/chef/knife/config_show.rb +0 -127
  419. data/lib/chef/knife/config_use.rb +0 -61
  420. data/lib/chef/knife/config_use_profile.rb +0 -47
  421. data/lib/chef/knife/configure.rb +0 -150
  422. data/lib/chef/knife/configure_client.rb +0 -48
  423. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  424. data/lib/chef/knife/cookbook_delete.rb +0 -151
  425. data/lib/chef/knife/cookbook_download.rb +0 -142
  426. data/lib/chef/knife/cookbook_list.rb +0 -47
  427. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  428. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  429. data/lib/chef/knife/cookbook_show.rb +0 -98
  430. data/lib/chef/knife/cookbook_upload.rb +0 -292
  431. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  432. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  433. data/lib/chef/knife/core/formatting_options.rb +0 -49
  434. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  435. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  436. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  437. data/lib/chef/knife/core/node_editor.rb +0 -130
  438. data/lib/chef/knife/core/node_presenter.rb +0 -133
  439. data/lib/chef/knife/core/object_loader.rb +0 -115
  440. data/lib/chef/knife/core/status_presenter.rb +0 -147
  441. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  442. data/lib/chef/knife/core/text_formatter.rb +0 -85
  443. data/lib/chef/knife/core/ui.rb +0 -338
  444. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -406
  445. data/lib/chef/knife/data_bag_create.rb +0 -81
  446. data/lib/chef/knife/data_bag_delete.rb +0 -49
  447. data/lib/chef/knife/data_bag_edit.rb +0 -74
  448. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  449. data/lib/chef/knife/data_bag_list.rb +0 -42
  450. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  451. data/lib/chef/knife/data_bag_show.rb +0 -69
  452. data/lib/chef/knife/delete.rb +0 -125
  453. data/lib/chef/knife/deps.rb +0 -156
  454. data/lib/chef/knife/diff.rb +0 -83
  455. data/lib/chef/knife/download.rb +0 -84
  456. data/lib/chef/knife/edit.rb +0 -88
  457. data/lib/chef/knife/environment_compare.rb +0 -128
  458. data/lib/chef/knife/environment_create.rb +0 -52
  459. data/lib/chef/knife/environment_delete.rb +0 -44
  460. data/lib/chef/knife/environment_edit.rb +0 -44
  461. data/lib/chef/knife/environment_from_file.rb +0 -84
  462. data/lib/chef/knife/environment_list.rb +0 -41
  463. data/lib/chef/knife/environment_show.rb +0 -47
  464. data/lib/chef/knife/exec.rb +0 -99
  465. data/lib/chef/knife/group_add.rb +0 -55
  466. data/lib/chef/knife/group_create.rb +0 -49
  467. data/lib/chef/knife/group_destroy.rb +0 -53
  468. data/lib/chef/knife/group_list.rb +0 -43
  469. data/lib/chef/knife/group_remove.rb +0 -56
  470. data/lib/chef/knife/group_show.rb +0 -49
  471. data/lib/chef/knife/key_create.rb +0 -112
  472. data/lib/chef/knife/key_create_base.rb +0 -50
  473. data/lib/chef/knife/key_delete.rb +0 -55
  474. data/lib/chef/knife/key_edit.rb +0 -118
  475. data/lib/chef/knife/key_edit_base.rb +0 -55
  476. data/lib/chef/knife/key_list.rb +0 -90
  477. data/lib/chef/knife/key_list_base.rb +0 -45
  478. data/lib/chef/knife/key_show.rb +0 -53
  479. data/lib/chef/knife/list.rb +0 -177
  480. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  481. data/lib/chef/knife/node_create.rb +0 -47
  482. data/lib/chef/knife/node_delete.rb +0 -46
  483. data/lib/chef/knife/node_edit.rb +0 -70
  484. data/lib/chef/knife/node_environment_set.rb +0 -53
  485. data/lib/chef/knife/node_from_file.rb +0 -51
  486. data/lib/chef/knife/node_list.rb +0 -44
  487. data/lib/chef/knife/node_policy_set.rb +0 -79
  488. data/lib/chef/knife/node_run_list_add.rb +0 -104
  489. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  490. data/lib/chef/knife/node_run_list_set.rb +0 -66
  491. data/lib/chef/knife/node_show.rb +0 -63
  492. data/lib/chef/knife/null.rb +0 -12
  493. data/lib/chef/knife/raw.rb +0 -123
  494. data/lib/chef/knife/recipe_list.rb +0 -32
  495. data/lib/chef/knife/rehash.rb +0 -50
  496. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  497. data/lib/chef/knife/role_create.rb +0 -53
  498. data/lib/chef/knife/role_delete.rb +0 -46
  499. data/lib/chef/knife/role_edit.rb +0 -45
  500. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  501. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  502. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  503. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  504. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  505. data/lib/chef/knife/role_from_file.rb +0 -51
  506. data/lib/chef/knife/role_list.rb +0 -42
  507. data/lib/chef/knife/role_run_list_add.rb +0 -87
  508. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  509. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  510. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  511. data/lib/chef/knife/role_run_list_set.rb +0 -69
  512. data/lib/chef/knife/role_show.rb +0 -48
  513. data/lib/chef/knife/search.rb +0 -194
  514. data/lib/chef/knife/serve.rb +0 -65
  515. data/lib/chef/knife/show.rb +0 -72
  516. data/lib/chef/knife/ssh.rb +0 -645
  517. data/lib/chef/knife/ssl_check.rb +0 -284
  518. data/lib/chef/knife/ssl_fetch.rb +0 -161
  519. data/lib/chef/knife/status.rb +0 -95
  520. data/lib/chef/knife/supermarket_download.rb +0 -121
  521. data/lib/chef/knife/supermarket_install.rb +0 -192
  522. data/lib/chef/knife/supermarket_list.rb +0 -76
  523. data/lib/chef/knife/supermarket_search.rb +0 -53
  524. data/lib/chef/knife/supermarket_share.rb +0 -166
  525. data/lib/chef/knife/supermarket_show.rb +0 -66
  526. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  527. data/lib/chef/knife/tag_create.rb +0 -52
  528. data/lib/chef/knife/tag_delete.rb +0 -60
  529. data/lib/chef/knife/tag_list.rb +0 -47
  530. data/lib/chef/knife/upload.rb +0 -86
  531. data/lib/chef/knife/user_create.rb +0 -107
  532. data/lib/chef/knife/user_delete.rb +0 -44
  533. data/lib/chef/knife/user_dissociate.rb +0 -42
  534. data/lib/chef/knife/user_edit.rb +0 -52
  535. data/lib/chef/knife/user_invite_add.rb +0 -43
  536. data/lib/chef/knife/user_invite_list.rb +0 -34
  537. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  538. data/lib/chef/knife/user_key_create.rb +0 -73
  539. data/lib/chef/knife/user_key_delete.rb +0 -80
  540. data/lib/chef/knife/user_key_edit.rb +0 -83
  541. data/lib/chef/knife/user_key_list.rb +0 -73
  542. data/lib/chef/knife/user_key_show.rb +0 -80
  543. data/lib/chef/knife/user_list.rb +0 -42
  544. data/lib/chef/knife/user_reregister.rb +0 -59
  545. data/lib/chef/knife/user_show.rb +0 -48
  546. data/lib/chef/knife/xargs.rb +0 -282
  547. data/lib/chef/knife/yaml_convert.rb +0 -91
  548. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
  549. data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
  550. data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
  551. data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
  552. data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
  553. data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
  554. data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
  555. data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
  556. data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
  557. data/lib/chef/provider/package/yum/simplejson/tool.py +0 -37
  558. data/lib/chef/resource/user/dscl_user.rb +0 -35
  559. data/spec/functional/knife/configure_spec.rb +0 -33
  560. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  561. data/spec/functional/knife/exec_spec.rb +0 -55
  562. data/spec/functional/knife/rehash_spec.rb +0 -39
  563. data/spec/functional/knife/smoke_test.rb +0 -42
  564. data/spec/functional/knife/ssh_spec.rb +0 -352
  565. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  566. data/spec/functional/resource/windows_service_spec.rb +0 -105
  567. data/spec/functional/win32/service_manager_spec.rb +0 -220
  568. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  569. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  570. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  571. data/spec/integration/knife/chefignore_spec.rb +0 -301
  572. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  573. data/spec/integration/knife/client_create_spec.rb +0 -70
  574. data/spec/integration/knife/client_delete_spec.rb +0 -64
  575. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  576. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  577. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  578. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  579. data/spec/integration/knife/client_list_spec.rb +0 -49
  580. data/spec/integration/knife/client_show_spec.rb +0 -37
  581. data/spec/integration/knife/common_options_spec.rb +0 -174
  582. data/spec/integration/knife/config_list_spec.rb +0 -220
  583. data/spec/integration/knife/config_show_spec.rb +0 -192
  584. data/spec/integration/knife/config_use_spec.rb +0 -198
  585. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  586. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  587. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  588. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  589. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  590. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  591. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  592. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  593. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  594. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  595. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  596. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  597. data/spec/integration/knife/delete_spec.rb +0 -1018
  598. data/spec/integration/knife/deps_spec.rb +0 -703
  599. data/spec/integration/knife/diff_spec.rb +0 -605
  600. data/spec/integration/knife/download_spec.rb +0 -1336
  601. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  602. data/spec/integration/knife/environment_create_spec.rb +0 -41
  603. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  604. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  605. data/spec/integration/knife/environment_list_spec.rb +0 -42
  606. data/spec/integration/knife/environment_show_spec.rb +0 -77
  607. data/spec/integration/knife/list_spec.rb +0 -1060
  608. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  609. data/spec/integration/knife/node_create_spec.rb +0 -47
  610. data/spec/integration/knife/node_delete_spec.rb +0 -48
  611. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  612. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  613. data/spec/integration/knife/node_list_spec.rb +0 -45
  614. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  615. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  616. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  617. data/spec/integration/knife/node_show_spec.rb +0 -36
  618. data/spec/integration/knife/raw_spec.rb +0 -297
  619. data/spec/integration/knife/redirection_spec.rb +0 -64
  620. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  621. data/spec/integration/knife/role_create_spec.rb +0 -41
  622. data/spec/integration/knife/role_delete_spec.rb +0 -48
  623. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  624. data/spec/integration/knife/role_list_spec.rb +0 -45
  625. data/spec/integration/knife/role_show_spec.rb +0 -51
  626. data/spec/integration/knife/search_node_spec.rb +0 -40
  627. data/spec/integration/knife/serve_spec.rb +0 -92
  628. data/spec/integration/knife/show_spec.rb +0 -197
  629. data/spec/integration/knife/upload_spec.rb +0 -1617
  630. data/spec/support/shared/functional/win32_service.rb +0 -57
  631. data/spec/unit/application/knife_spec.rb +0 -241
  632. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  633. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  634. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  635. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  636. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  637. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  638. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  639. data/spec/unit/knife/client_create_spec.rb +0 -169
  640. data/spec/unit/knife/client_delete_spec.rb +0 -99
  641. data/spec/unit/knife/client_edit_spec.rb +0 -53
  642. data/spec/unit/knife/client_list_spec.rb +0 -34
  643. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  644. data/spec/unit/knife/client_show_spec.rb +0 -52
  645. data/spec/unit/knife/configure_client_spec.rb +0 -81
  646. data/spec/unit/knife/configure_spec.rb +0 -190
  647. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  648. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  649. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  650. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  651. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  652. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  653. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  654. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  655. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  656. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  657. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  658. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  659. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  660. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  661. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  662. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  663. data/spec/unit/knife/core/ui_spec.rb +0 -656
  664. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  665. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  666. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  667. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  668. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  669. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  670. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  671. data/spec/unit/knife/environment_create_spec.rb +0 -91
  672. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  673. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  674. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  675. data/spec/unit/knife/environment_list_spec.rb +0 -54
  676. data/spec/unit/knife/environment_show_spec.rb +0 -52
  677. data/spec/unit/knife/key_create_spec.rb +0 -223
  678. data/spec/unit/knife/key_delete_spec.rb +0 -133
  679. data/spec/unit/knife/key_edit_spec.rb +0 -264
  680. data/spec/unit/knife/key_helper.rb +0 -74
  681. data/spec/unit/knife/key_list_spec.rb +0 -216
  682. data/spec/unit/knife/key_show_spec.rb +0 -126
  683. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  684. data/spec/unit/knife/node_delete_spec.rb +0 -77
  685. data/spec/unit/knife/node_edit_spec.rb +0 -116
  686. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  687. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  688. data/spec/unit/knife/node_list_spec.rb +0 -62
  689. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  690. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  691. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  692. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  693. data/spec/unit/knife/node_show_spec.rb +0 -65
  694. data/spec/unit/knife/raw_spec.rb +0 -43
  695. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  696. data/spec/unit/knife/role_create_spec.rb +0 -80
  697. data/spec/unit/knife/role_delete_spec.rb +0 -67
  698. data/spec/unit/knife/role_edit_spec.rb +0 -77
  699. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  700. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  701. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  702. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  703. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  704. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  705. data/spec/unit/knife/role_list_spec.rb +0 -54
  706. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  707. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  708. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  709. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  710. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  711. data/spec/unit/knife/role_show_spec.rb +0 -59
  712. data/spec/unit/knife/ssh_spec.rb +0 -403
  713. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  714. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  715. data/spec/unit/knife/status_spec.rb +0 -112
  716. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  717. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  718. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  719. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  720. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  721. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  722. data/spec/unit/knife/tag_create_spec.rb +0 -23
  723. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  724. data/spec/unit/knife/tag_list_spec.rb +0 -23
  725. data/spec/unit/knife/user_create_spec.rb +0 -184
  726. data/spec/unit/knife/user_delete_spec.rb +0 -46
  727. data/spec/unit/knife/user_edit_spec.rb +0 -48
  728. data/spec/unit/knife/user_list_spec.rb +0 -36
  729. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  730. data/spec/unit/knife/user_show_spec.rb +0 -46
  731. data/spec/unit/knife_spec.rb +0 -634
  732. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  733. data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,238 +0,0 @@
1
- #
2
- # Author:: Bryan McLellan <btm@loftninjas.org>
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/windows_bootstrap_context"
21
- describe Chef::Knife::Core::WindowsBootstrapContext do
22
- let(:config) { {} }
23
- let(:chef_config) { Chef::Config.save } # "dup" to a hash
24
- let(:bootstrap_context) { Chef::Knife::Core::WindowsBootstrapContext.new(config, nil, chef_config, nil) }
25
-
26
- describe "fips" do
27
- context "when fips is set" do
28
- before do
29
- chef_config[:fips] = true
30
- end
31
-
32
- it "sets fips mode in the client.rb" do
33
- expect(bootstrap_context.config_content).to match(/fips true/)
34
- end
35
- end
36
-
37
- context "when fips is not set" do
38
- before do
39
- chef_config[:fips] = false
40
- end
41
-
42
- it "sets fips mode in the client.rb" do
43
- expect(bootstrap_context.config_content).not_to match(/fips true/)
44
- end
45
- end
46
- end
47
-
48
- describe "trusted_certs_script" do
49
- let(:mock_cert_dir) { ::File.absolute_path(::File.join("spec", "assets", "fake_trusted_certs")) }
50
- let(:script_output) { bootstrap_context.trusted_certs_script }
51
- let(:crt_files) { ::Dir.glob(::File.join(mock_cert_dir, "*.crt")) }
52
- let(:pem_files) { ::Dir.glob(::File.join(mock_cert_dir, "*.pem")) }
53
- let(:other_files) { ::Dir.glob(::File.join(mock_cert_dir, "*")) - crt_files - pem_files }
54
-
55
- before do
56
- bootstrap_context.instance_variable_set(:@chef_config, Mash.new(trusted_certs_dir: mock_cert_dir))
57
- end
58
-
59
- it "should echo every .crt file in the trusted_certs directory" do
60
- crt_files.each do |f|
61
- echo_file = ::File.read(f).gsub(/^/, "echo.")
62
- expect(script_output).to include(::File.join("trusted_certs", ::File.basename(f)))
63
- expect(script_output).to include(echo_file)
64
- end
65
- end
66
-
67
- it "should echo every .pem file in the trusted_certs directory" do
68
- pem_files.each do |f|
69
- echo_file = ::File.read(f).gsub(/^/, "echo.")
70
- expect(script_output).to include(::File.join("trusted_certs", ::File.basename(f)))
71
- expect(script_output).to include(echo_file)
72
- end
73
- end
74
-
75
- it "should not echo files which aren't .crt or .pem files" do
76
- other_files.each do |f|
77
- echo_file = ::File.read(f).gsub(/^/, "echo.")
78
- expect(script_output).to_not include(::File.join("trusted_certs", ::File.basename(f)))
79
- expect(script_output).to_not include(echo_file)
80
- end
81
- end
82
- end
83
-
84
- describe "validation_key" do
85
- before do
86
- bootstrap_context.instance_variable_set(:@chef_config, Mash.new(validation_key: "C:\\chef\\key.pem"))
87
- end
88
-
89
- it "should return false if validation_key does not exist" do
90
- allow(::File).to receive(:expand_path).with("C:\\chef\\key.pem").and_call_original
91
- allow(::File).to receive(:exist?).and_return(false)
92
- expect(bootstrap_context.validation_key).to eq(false)
93
- end
94
- end
95
-
96
- describe "#get_log_location" do
97
-
98
- context "when config_log_location value is nil" do
99
- it "sets STDOUT in client.rb as default" do
100
- bootstrap_context.instance_variable_set(:@chef_config, Mash.new(config_log_location: nil))
101
- expect(bootstrap_context.get_log_location).to eq("STDOUT\n")
102
- end
103
- end
104
-
105
- context "when config_log_location value is empty" do
106
- it "sets STDOUT in client.rb as default" do
107
- bootstrap_context.instance_variable_set(:@chef_config, Mash.new(config_log_location: ""))
108
- expect(bootstrap_context.get_log_location).to eq("STDOUT\n")
109
- end
110
- end
111
-
112
- context "when config_log_location value is STDOUT" do
113
- it "sets STDOUT in client.rb" do
114
- bootstrap_context.instance_variable_set(:@chef_config, Mash.new(config_log_location: STDOUT))
115
- expect(bootstrap_context.get_log_location).to eq("STDOUT\n")
116
- end
117
- end
118
-
119
- context "when config_log_location value is STDERR" do
120
- it "sets STDERR in client.rb" do
121
- bootstrap_context.instance_variable_set(:@chef_config, Mash.new(config_log_location: STDERR))
122
- expect(bootstrap_context.get_log_location).to eq("STDERR\n")
123
- end
124
- end
125
-
126
- context "when config_log_location value is path to a file" do
127
- it "sets file path in client.rb" do
128
- bootstrap_context.instance_variable_set(:@chef_config, Mash.new(config_log_location: "C:\\chef\\chef.log"))
129
- expect(bootstrap_context.get_log_location).to eq("\"C:\\chef\\chef.log\"\n")
130
- end
131
- end
132
-
133
- context "when config_log_location value is :win_evt" do
134
- it "sets :win_evt in client.rb" do
135
- bootstrap_context.instance_variable_set(:@chef_config, Mash.new(config_log_location: :win_evt))
136
- expect(bootstrap_context.get_log_location).to eq(":win_evt\n")
137
- end
138
- end
139
-
140
- context "when config_log_location value is :syslog" do
141
- it "raise error with message and exit" do
142
- bootstrap_context.instance_variable_set(:@chef_config, Mash.new(config_log_location: :syslog))
143
- expect { bootstrap_context.get_log_location }.to raise_error("syslog is not supported for log_location on Windows OS\n")
144
- end
145
- end
146
-
147
- end
148
-
149
- describe "#config_content" do
150
- before do
151
- bootstrap_context.instance_variable_set(
152
- :@chef_config, Mash.new(
153
- config_log_level: :info,
154
- config_log_location: STDOUT,
155
- chef_server_url: "http://chef.example.com:4444",
156
- validation_client_name: "chef-validator-testing",
157
- file_cache_path: "c:/chef/cache",
158
- file_backup_path: "c:/chef/backup",
159
- cache_options: ({ path: "c:/chef/cache/checksums", skip_expires: true })
160
- )
161
- )
162
- end
163
-
164
- it "generates the config file data" do
165
- expected = <<~EXPECTED
166
- echo.chef_server_url "http://chef.example.com:4444"
167
- echo.validation_client_name "chef-validator-testing"
168
- echo.file_cache_path "C:\\\\chef\\\\cache"
169
- echo.file_backup_path "C:\\\\chef\\\\backup"
170
- echo.cache_options ^({:path =^> "C:\\\\chef\\\\cache\\\\checksums", :skip_expires =^> true}^)
171
- echo.# Using default node name ^(fqdn^)
172
- echo.log_level :auto
173
- echo.log_location STDOUT
174
- EXPECTED
175
- expect(bootstrap_context.config_content).to eq expected
176
- end
177
-
178
- describe "when chef_license is set" do
179
- before do
180
- bootstrap_context.instance_variable_set(:@chef_config, Mash.new(chef_license: "accept-no-persist"))
181
- end
182
- it "sets chef_license in the generated config file" do
183
- expect(bootstrap_context.config_content).to include("chef_license \"accept-no-persist\"")
184
- end
185
- end
186
- end
187
-
188
- describe "#start_chef" do
189
- it "returns the expected string" do
190
- expect(bootstrap_context.start_chef).to eq(
191
- <<~EOH
192
- SET "PATH=%SYSTEM32%;%SystemRoot%;%SYSTEM32%\\Wbem;%SYSTEM32%\\WindowsPowerShell\\v1.0\\;C:\\ruby\\bin;C:\\opscode\\chef\\bin;C:\\opscode\\chef\\embedded\\bin;%PATH%"
193
- chef-client -c C:\\chef\\client.rb -j C:\\chef\\first-boot.json
194
- EOH
195
- )
196
- end
197
- end
198
-
199
- describe "msi_url" do
200
- context "when msi_url config option is not set" do
201
- let(:config) { { channel: "stable" } }
202
- before do
203
- expect(bootstrap_context).to receive(:version_to_install).and_return("something")
204
- end
205
-
206
- it "returns a chef.io msi url with minimal url parameters" do
207
- reference_url = "https://www.chef.io/chef/download?p=windows&channel=stable&v=something"
208
- expect(bootstrap_context.msi_url).to eq(reference_url)
209
- end
210
-
211
- it "returns a chef.io msi url with provided url parameters substituted" do
212
- reference_url = "https://www.chef.io/chef/download?p=windows&pv=machine&m=arch&DownloadContext=ctx&channel=stable&v=something"
213
- expect(bootstrap_context.msi_url("machine", "arch", "ctx")).to eq(reference_url)
214
- end
215
-
216
- context "when a channel is provided in config" do
217
- let(:config) { { channel: "current" } }
218
- it "returns a chef.io msi url with the requested channel" do
219
- reference_url = "https://www.chef.io/chef/download?p=windows&channel=current&v=something"
220
- expect(bootstrap_context.msi_url).to eq(reference_url)
221
- end
222
- end
223
- end
224
-
225
- context "when msi_url config option is set" do
226
- let(:custom_url) { "file://something" }
227
- let(:config) { { msi_url: custom_url, install: true } }
228
-
229
- it "returns the overridden url" do
230
- expect(bootstrap_context.msi_url).to eq(custom_url)
231
- end
232
-
233
- it "doesn't introduce any unnecessary query parameters if provided by the template" do
234
- expect(bootstrap_context.msi_url("machine", "arch", "ctx")).to eq(custom_url)
235
- end
236
- end
237
- end
238
- end
@@ -1,175 +0,0 @@
1
- #
2
- # Author:: Daniel DeLeo (<dan@chef.io>)
3
- # Author:: Seth Falcon (<seth@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
- require "tempfile"
22
-
23
- describe Chef::Knife::DataBagCreate do
24
- let(:knife) do
25
- k = Chef::Knife::DataBagCreate.new
26
- allow(k).to receive(:rest).and_return(rest)
27
- allow(k.ui).to receive(:stdout).and_return(stdout)
28
- k
29
- end
30
-
31
- let(:rest) { double("Chef::ServerAPI") }
32
- let(:stdout) { StringIO.new }
33
-
34
- let(:bag_name) { "sudoing_admins" }
35
- let(:item_name) { "ME" }
36
-
37
- let(:secret) { "abc123SECRET" }
38
-
39
- let(:raw_hash) { { "login_name" => "alphaomega", "id" => item_name } }
40
-
41
- let(:config) { {} }
42
-
43
- before do
44
- Chef::Config[:node_name] = "webmonkey.example.com"
45
- knife.name_args = [bag_name, item_name]
46
- allow(knife).to receive(:config).and_return(config)
47
- end
48
-
49
- context "when data_bag already exists" do
50
- it "doesn't create a data bag" do
51
- expect(knife).to receive(:create_object).and_yield(raw_hash)
52
- expect(rest).to receive(:get).with("data/#{bag_name}")
53
- expect(rest).to_not receive(:post).with("data", { "name" => bag_name })
54
- expect(knife.ui).to receive(:info).with("Data bag #{bag_name} already exists")
55
-
56
- knife.run
57
- end
58
- end
59
-
60
- context "when data_bag doesn't exist" do
61
- before do
62
- # Data bag doesn't exist by default so we mock the GET request to return 404
63
- exception = double("404 error", code: "404")
64
- allow(rest).to receive(:get)
65
- .with("data/#{bag_name}")
66
- .and_raise(Net::HTTPClientException.new("404", exception))
67
- end
68
-
69
- it "tries to create a data bag with an invalid name when given one argument" do
70
- knife.name_args = ["invalid&char"]
71
- expect(Chef::DataBag).to receive(:validate_name!).with(knife.name_args[0]).and_raise(Chef::Exceptions::InvalidDataBagName)
72
- expect { knife.run }.to exit_with_code(1)
73
- end
74
-
75
- it "won't create a data bag with a reserved name for search" do
76
- %w{node role client environment}.each do |name|
77
- knife.name_args = [name]
78
- expect(Chef::DataBag).to receive(:validate_name!).with(knife.name_args[0]).and_raise(Chef::Exceptions::InvalidDataBagName)
79
- expect { knife.run }.to exit_with_code(1)
80
- end
81
- end
82
-
83
- context "when part of the name is a reserved name" do
84
- before do
85
- exception = double("404 error", code: "404")
86
- %w{node role client environment}.each do |name|
87
- allow(rest).to receive(:get)
88
- .with("data/sudoing_#{name}_admins")
89
- .and_raise(Net::HTTPClientException.new("404", exception))
90
- end
91
- end
92
-
93
- it "will create a data bag containing a reserved word" do
94
- %w{node role client environment}.each do |name|
95
- knife.name_args = ["sudoing_#{name}_admins"]
96
- expect(rest).to receive(:post).with("data", { "name" => knife.name_args[0] })
97
- expect(knife.ui).to receive(:info).with("Created data_bag[#{knife.name_args[0]}]")
98
-
99
- knife.run
100
- end
101
- end
102
- end
103
-
104
- context "when given one argument" do
105
- before do
106
- knife.name_args = [bag_name]
107
- end
108
-
109
- it "creates a data bag" do
110
- expect(rest).to receive(:post).with("data", { "name" => bag_name })
111
- expect(knife.ui).to receive(:info).with("Created data_bag[#{bag_name}]")
112
-
113
- knife.run
114
- end
115
- end
116
-
117
- context "when given a data bag name partially matching a reserved name for search" do
118
- %w{xnode rolex xenvironmentx xclientx}.each do |name|
119
- let(:bag_name) { name }
120
-
121
- before do
122
- knife.name_args = [bag_name]
123
- end
124
-
125
- it "creates a data bag named '#{name}'" do
126
- expect(rest).to receive(:post).with("data", { "name" => bag_name })
127
- expect(knife.ui).to receive(:info).with("Created data_bag[#{bag_name}]")
128
-
129
- knife.run
130
- end
131
- end
132
- end
133
-
134
- context "no secret is specified for encryption" do
135
- let(:item) do
136
- item = Chef::DataBagItem.from_hash(raw_hash)
137
- item.data_bag(bag_name)
138
- item
139
- end
140
-
141
- it "creates a data bag item" do
142
- expect(knife).to receive(:create_object).and_yield(raw_hash)
143
- expect(knife).to receive(:encryption_secret_provided?).and_return(false)
144
- expect(rest).to receive(:post).with("data", { "name" => bag_name }).ordered
145
- expect(rest).to receive(:post).with("data/#{bag_name}", item).ordered
146
-
147
- knife.run
148
- end
149
- end
150
-
151
- context "a secret is specified for encryption" do
152
- let(:encoded_data) { Chef::EncryptedDataBagItem.encrypt_data_bag_item(raw_hash, secret) }
153
-
154
- let(:item) do
155
- item = Chef::DataBagItem.from_hash(encoded_data)
156
- item.data_bag(bag_name)
157
- item
158
- end
159
-
160
- it "creates an encrypted data bag item" do
161
- expect(knife).to receive(:create_object).and_yield(raw_hash)
162
- expect(knife).to receive(:encryption_secret_provided?).and_return(true)
163
- expect(knife).to receive(:read_secret).and_return(secret)
164
- expect(Chef::EncryptedDataBagItem)
165
- .to receive(:encrypt_data_bag_item)
166
- .with(raw_hash, secret)
167
- .and_return(encoded_data)
168
- expect(rest).to receive(:post).with("data", { "name" => bag_name }).ordered
169
- expect(rest).to receive(:post).with("data/#{bag_name}", item).ordered
170
-
171
- knife.run
172
- end
173
- end
174
- end
175
- end
@@ -1,126 +0,0 @@
1
- #
2
- # Author:: Seth Falcon (<seth@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 "tempfile"
21
-
22
- describe Chef::Knife::DataBagEdit do
23
- before do
24
- Chef::Config[:node_name] = "webmonkey.example.com"
25
- knife.name_args = [bag_name, item_name]
26
- allow(knife).to receive(:config).and_return(config)
27
- end
28
-
29
- let(:knife) do
30
- k = Chef::Knife::DataBagEdit.new
31
- allow(k).to receive(:rest).and_return(rest)
32
- allow(k.ui).to receive(:stdout).and_return(stdout)
33
- k
34
- end
35
-
36
- let(:raw_hash) { { "login_name" => "alphaomega", "id" => "item_name" } }
37
- let(:db) { Chef::DataBagItem.from_hash(raw_hash) }
38
- let(:raw_edited_hash) { { "login_name" => "rho", "id" => "item_name", "new_key" => "new_value" } }
39
-
40
- let(:rest) { double("Chef::ServerAPI") }
41
- let(:stdout) { StringIO.new }
42
-
43
- let(:bag_name) { "sudoing_admins" }
44
- let(:item_name) { "ME" }
45
-
46
- let(:secret) { "abc123SECRET" }
47
-
48
- let(:config) { {} }
49
-
50
- let(:is_encrypted?) { false }
51
- let(:transmitted_hash) { raw_edited_hash }
52
- let(:data_to_edit) { db.raw_data }
53
- shared_examples_for "editing a data bag" do
54
- it "correctly edits then uploads the data bag" do
55
- expect(Chef::DataBagItem).to receive(:load).with(bag_name, item_name).and_return(db)
56
- expect(knife).to receive(:encrypted?).with(db.raw_data).and_return(is_encrypted?)
57
- expect(knife).to receive(:edit_hash).with(data_to_edit).and_return(raw_edited_hash)
58
- expect(rest).to receive(:put).with("data/#{bag_name}/#{item_name}", transmitted_hash).ordered
59
-
60
- knife.run
61
- end
62
- end
63
-
64
- it "requires data bag and item arguments" do
65
- knife.name_args = []
66
- expect(stdout).to receive(:puts).twice.with(anything)
67
- expect { knife.run }.to exit_with_code(1)
68
- expect(stdout.string).to eq("")
69
- end
70
-
71
- context "when no secret is provided" do
72
- include_examples "editing a data bag"
73
- end
74
-
75
- context "when config[:print_after] is set" do
76
- let(:config) { { print_after: true } }
77
- before do
78
- expect(knife.ui).to receive(:output).with(raw_edited_hash)
79
- end
80
-
81
- include_examples "editing a data bag"
82
- end
83
-
84
- context "when a secret is provided" do
85
- let!(:enc_raw_hash) { Chef::EncryptedDataBagItem.encrypt_data_bag_item(raw_hash, secret) }
86
- let!(:enc_edited_hash) { Chef::EncryptedDataBagItem.encrypt_data_bag_item(raw_edited_hash, secret) }
87
- let(:transmitted_hash) { enc_edited_hash }
88
-
89
- before(:each) do
90
- expect(knife).to receive(:read_secret).at_least(1).times.and_return(secret)
91
- expect(Chef::EncryptedDataBagItem).to receive(:encrypt_data_bag_item).with(raw_edited_hash, secret).and_return(enc_edited_hash)
92
- end
93
-
94
- context "the data bag starts encrypted" do
95
- let(:is_encrypted?) { true }
96
- let(:db) { Chef::DataBagItem.from_hash(enc_raw_hash) }
97
- # If the data bag is encrypted, it gets passed to `edit` as a hash. Otherwise, it gets passed as a DataBag
98
- let(:data_to_edit) { raw_hash }
99
-
100
- before(:each) do
101
- expect(knife).to receive(:encryption_secret_provided_ignore_encrypt_flag?).and_return(true)
102
- end
103
-
104
- include_examples "editing a data bag"
105
- end
106
-
107
- context "the data bag starts unencrypted" do
108
- before(:each) do
109
- expect(knife).to receive(:encryption_secret_provided_ignore_encrypt_flag?).exactly(0).times
110
- expect(knife).to receive(:encryption_secret_provided?).and_return(true)
111
- end
112
-
113
- include_examples "editing a data bag"
114
- end
115
- end
116
-
117
- it "fails to edit an encrypted data bag if the secret is missing" do
118
- expect(Chef::DataBagItem).to receive(:load).with(bag_name, item_name).and_return(db)
119
- expect(knife).to receive(:encrypted?).with(db.raw_data).and_return(true)
120
- expect(knife).to receive(:encryption_secret_provided_ignore_encrypt_flag?).and_return(false)
121
-
122
- expect(knife.ui).to receive(:fatal).with("You cannot edit an encrypted data bag without providing the secret.")
123
- expect { knife.run }.to exit_with_code(1)
124
- end
125
-
126
- end