chef 16.10.8-universal-mingw32 → 17.0.242-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 (662) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -10
  3. data/README.md +1 -1
  4. data/Rakefile +13 -2
  5. data/chef-universal-mingw32.gemspec +1 -1
  6. data/chef.gemspec +7 -9
  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/application/base.rb +1 -1
  52. data/lib/chef/applications.rb +0 -1
  53. data/lib/chef/chef_fs/command_line.rb +5 -2
  54. data/lib/chef/chef_fs/file_system.rb +9 -10
  55. data/lib/chef/client.rb +2 -2
  56. data/lib/chef/compliance/default_attributes.rb +10 -5
  57. data/lib/chef/compliance/fetcher/automate.rb +15 -11
  58. data/lib/chef/compliance/reporter/automate.rb +17 -7
  59. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  60. data/lib/chef/compliance/reporter/cli.rb +77 -0
  61. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  62. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  63. data/lib/chef/compliance/runner.rb +71 -28
  64. data/lib/chef/cookbook/synchronizer.rb +3 -5
  65. data/lib/chef/cookbook_loader.rb +2 -4
  66. data/lib/chef/cookbook_uploader.rb +0 -1
  67. data/lib/chef/data_bag_item.rb +11 -2
  68. data/lib/chef/delayed_evaluator.rb +4 -0
  69. data/lib/chef/deprecated.rb +4 -0
  70. data/lib/chef/dsl/chef_vault.rb +6 -6
  71. data/lib/chef/dsl/reboot_pending.rb +1 -2
  72. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  73. data/lib/chef/group.rb +75 -0
  74. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  75. data/lib/chef/node/attribute.rb +6 -4
  76. data/lib/chef/node/immutable_collections.rb +13 -0
  77. data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
  78. data/lib/chef/org.rb +3 -2
  79. data/lib/chef/property.rb +18 -0
  80. data/lib/chef/provider.rb +1 -1
  81. data/lib/chef/provider/cron.rb +1 -1
  82. data/lib/chef/provider/execute.rb +2 -1
  83. data/lib/chef/provider/file.rb +2 -2
  84. data/lib/chef/provider/git.rb +5 -7
  85. data/lib/chef/provider/group/groupadd.rb +3 -3
  86. data/lib/chef/provider/group/groupmod.rb +3 -3
  87. data/lib/chef/provider/group/pw.rb +3 -3
  88. data/lib/chef/provider/ifconfig.rb +2 -2
  89. data/lib/chef/provider/link.rb +2 -2
  90. data/lib/chef/provider/mount.rb +12 -7
  91. data/lib/chef/provider/mount/aix.rb +3 -3
  92. data/lib/chef/provider/mount/mount.rb +6 -6
  93. data/lib/chef/provider/mount/windows.rb +1 -1
  94. data/lib/chef/provider/package.rb +17 -21
  95. data/lib/chef/provider/package/apt.rb +27 -1
  96. data/lib/chef/provider/package/deb.rb +3 -3
  97. data/lib/chef/provider/package/dnf/dnf_helper.py +5 -1
  98. data/lib/chef/provider/package/portage.rb +2 -2
  99. data/lib/chef/provider/package/rubygems.rb +11 -17
  100. data/lib/chef/provider/package/windows.rb +2 -4
  101. data/lib/chef/provider/package/yum/yum_helper.py +5 -1
  102. data/lib/chef/provider/route.rb +2 -2
  103. data/lib/chef/provider/service.rb +6 -6
  104. data/lib/chef/provider/service/aixinit.rb +1 -1
  105. data/lib/chef/provider/service/debian.rb +1 -1
  106. data/lib/chef/provider/service/freebsd.rb +15 -21
  107. data/lib/chef/provider/service/macosx.rb +7 -7
  108. data/lib/chef/provider/service/systemd.rb +43 -14
  109. data/lib/chef/provider/service/upstart.rb +2 -13
  110. data/lib/chef/provider/service/windows.rb +12 -12
  111. data/lib/chef/provider/subversion.rb +10 -12
  112. data/lib/chef/provider/systemd_unit.rb +36 -10
  113. data/lib/chef/provider/template/content.rb +2 -6
  114. data/lib/chef/provider/user.rb +2 -2
  115. data/lib/chef/provider/user/dscl.rb +1 -1
  116. data/lib/chef/provider/user/mac.rb +17 -20
  117. data/lib/chef/provider/user/pw.rb +1 -1
  118. data/lib/chef/provider/user/windows.rb +1 -1
  119. data/lib/chef/provider/zypper_repository.rb +2 -2
  120. data/lib/chef/providers.rb +0 -1
  121. data/lib/chef/resource/alternatives.rb +6 -6
  122. data/lib/chef/resource/apt_package.rb +1 -1
  123. data/lib/chef/resource/apt_preference.rb +2 -2
  124. data/lib/chef/resource/apt_repository.rb +6 -6
  125. data/lib/chef/resource/apt_update.rb +3 -2
  126. data/lib/chef/resource/archive_file.rb +2 -3
  127. data/lib/chef/resource/breakpoint.rb +1 -1
  128. data/lib/chef/resource/build_essential.rb +2 -6
  129. data/lib/chef/resource/chef_client_config.rb +2 -2
  130. data/lib/chef/resource/chef_client_cron.rb +5 -5
  131. data/lib/chef/resource/chef_client_launchd.rb +4 -4
  132. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  133. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  134. data/lib/chef/resource/chef_handler.rb +3 -7
  135. data/lib/chef/resource/chef_sleep.rb +1 -1
  136. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  137. data/lib/chef/resource/chocolatey_config.rb +2 -6
  138. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  139. data/lib/chef/resource/chocolatey_source.rb +4 -10
  140. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  141. data/lib/chef/resource/cron_access.rb +2 -4
  142. data/lib/chef/resource/dmg_package.rb +6 -10
  143. data/lib/chef/resource/dpkg_package.rb +1 -1
  144. data/lib/chef/resource/execute.rb +6 -1
  145. data/lib/chef/resource/file.rb +1 -1
  146. data/lib/chef/resource/group.rb +2 -2
  147. data/lib/chef/resource/homebrew_cask.rb +2 -6
  148. data/lib/chef/resource/homebrew_tap.rb +2 -6
  149. data/lib/chef/resource/hostname.rb +21 -17
  150. data/lib/chef/resource/http_request.rb +1 -1
  151. data/lib/chef/resource/kernel_module.rb +6 -17
  152. data/lib/chef/resource/locale.rb +2 -3
  153. data/lib/chef/resource/lwrp_base.rb +4 -0
  154. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  155. data/lib/chef/resource/mdadm.rb +53 -7
  156. data/lib/chef/resource/mount.rb +2 -1
  157. data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
  158. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  159. data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
  160. data/lib/chef/resource/plist.rb +7 -7
  161. data/lib/chef/resource/powershell_script.rb +1 -1
  162. data/lib/chef/resource/remote_file.rb +1 -1
  163. data/lib/chef/resource/rhsm_errata.rb +16 -1
  164. data/lib/chef/resource/rhsm_errata_level.rb +10 -1
  165. data/lib/chef/resource/rhsm_register.rb +12 -6
  166. data/lib/chef/resource/rhsm_repo.rb +2 -6
  167. data/lib/chef/resource/rhsm_subscription.rb +2 -6
  168. data/lib/chef/resource/scm/git.rb +1 -1
  169. data/lib/chef/resource/sudo.rb +6 -6
  170. data/lib/chef/resource/sysctl.rb +2 -6
  171. data/lib/chef/resource/systemd_unit.rb +2 -2
  172. data/lib/chef/resource/template.rb +1 -1
  173. data/lib/chef/resource/timezone.rb +1 -3
  174. data/lib/chef/resource/user/mac_user.rb +1 -1
  175. data/lib/chef/resource/user_ulimit.rb +2 -2
  176. data/lib/chef/resource/windows_ad_join.rb +2 -6
  177. data/lib/chef/resource/windows_audit_policy.rb +1 -1
  178. data/lib/chef/resource/windows_auto_run.rb +2 -5
  179. data/lib/chef/resource/windows_certificate.rb +207 -73
  180. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  181. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  182. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  183. data/lib/chef/resource/windows_dns_record.rb +2 -6
  184. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  185. data/lib/chef/resource/windows_env.rb +5 -4
  186. data/lib/chef/resource/windows_feature.rb +3 -9
  187. data/lib/chef/resource/windows_feature_dism.rb +2 -6
  188. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  189. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  190. data/lib/chef/resource/windows_firewall_rule.rb +2 -5
  191. data/lib/chef/resource/windows_font.rb +2 -4
  192. data/lib/chef/resource/windows_pagefile.rb +2 -6
  193. data/lib/chef/resource/windows_path.rb +2 -2
  194. data/lib/chef/resource/windows_printer.rb +4 -4
  195. data/lib/chef/resource/windows_printer_port.rb +6 -6
  196. data/lib/chef/resource/windows_security_policy.rb +53 -40
  197. data/lib/chef/resource/windows_share.rb +14 -21
  198. data/lib/chef/resource/windows_shortcut.rb +4 -6
  199. data/lib/chef/resource/windows_task.rb +17 -5
  200. data/lib/chef/resource/windows_uac.rb +1 -1
  201. data/lib/chef/resource/windows_user_privilege.rb +4 -4
  202. data/lib/chef/resource/windows_workgroup.rb +1 -2
  203. data/lib/chef/resources.rb +0 -1
  204. data/lib/chef/user.rb +0 -1
  205. data/lib/chef/user_v1.rb +3 -4
  206. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  207. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  208. data/lib/chef/version.rb +1 -1
  209. data/lib/chef/win32/registry.rb +4 -2
  210. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  211. data/spec/data/lwrp/resources/bar.rb +2 -0
  212. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  213. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  214. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  215. data/spec/data/lwrp/resources/foo.rb +2 -0
  216. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  217. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  218. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  219. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  220. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  221. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  222. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  223. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  224. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  225. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  226. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  227. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  228. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  229. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  230. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  231. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  232. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  233. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  234. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  235. data/spec/functional/resource/apt_package_spec.rb +1 -1
  236. data/spec/functional/resource/chocolatey_package_spec.rb +13 -0
  237. data/spec/functional/resource/cron_spec.rb +1 -1
  238. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  239. data/spec/functional/resource/registry_spec.rb +8 -8
  240. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  241. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  242. data/spec/functional/version_spec.rb +1 -1
  243. data/spec/functional/win32/registry_spec.rb +1 -1
  244. data/spec/integration/client/client_spec.rb +5 -2
  245. data/spec/integration/client/exit_code_spec.rb +1 -1
  246. data/spec/integration/client/ipv6_spec.rb +1 -1
  247. data/spec/integration/compliance/compliance_spec.rb +3 -2
  248. data/spec/integration/ohai/ohai_spec.rb +7 -6
  249. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  250. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  251. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  252. data/spec/integration/recipes/notifies_spec.rb +15 -1
  253. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  254. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  255. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  256. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  257. data/spec/spec_helper.rb +11 -13
  258. data/spec/support/chef_helpers.rb +0 -16
  259. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  260. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  261. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  262. data/spec/support/matchers/leak.rb +7 -9
  263. data/spec/support/platform_helpers.rb +5 -8
  264. data/spec/support/shared/integration/integration_helper.rb +0 -1
  265. data/spec/support/shared/unit/provider/file.rb +14 -0
  266. data/spec/support/shared/unit/script_resource.rb +2 -2
  267. data/spec/unit/application/solo_spec.rb +2 -2
  268. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  269. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  270. data/spec/unit/compliance/fetcher/automate_spec.rb +5 -13
  271. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  272. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  273. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  274. data/spec/unit/compliance/runner_spec.rb +84 -9
  275. data/spec/unit/data_bag_item_spec.rb +1 -6
  276. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  277. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  278. data/spec/unit/lwrp_spec.rb +1 -1
  279. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  280. data/spec/unit/node/attribute_spec.rb +1 -1
  281. data/spec/unit/node_spec.rb +78 -0
  282. data/spec/unit/org_group_spec.rb +45 -0
  283. data/spec/unit/property_spec.rb +23 -22
  284. data/spec/unit/provider/cron_spec.rb +1 -1
  285. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  286. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  287. data/spec/unit/provider/group/pw_spec.rb +2 -2
  288. data/spec/unit/provider/group_spec.rb +1 -1
  289. data/spec/unit/provider/mount/mount_spec.rb +52 -0
  290. data/spec/unit/provider/package/apt_spec.rb +84 -18
  291. data/spec/unit/provider/package/deb_spec.rb +3 -3
  292. data/spec/unit/provider/package/rubygems_spec.rb +21 -33
  293. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  294. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  295. data/spec/unit/provider/service/macosx_spec.rb +5 -5
  296. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  297. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  298. data/spec/unit/provider/service/windows_spec.rb +2 -2
  299. data/spec/unit/provider/subversion_spec.rb +2 -2
  300. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  301. data/spec/unit/provider/zypper_repository_spec.rb +2 -2
  302. data/spec/unit/provider_spec.rb +0 -8
  303. data/spec/unit/resource/chef_client_cron_spec.rb +8 -8
  304. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  305. data/spec/unit/resource/windows_task_spec.rb +1 -1
  306. data/spec/unit/user_spec.rb +1 -1
  307. data/spec/unit/user_v1_spec.rb +6 -4
  308. data/tasks/rspec.rb +16 -8
  309. metadata +25 -386
  310. data/bin/knife +0 -24
  311. data/lib/chef/application/knife.rb +0 -234
  312. data/lib/chef/application/windows_service.rb +0 -338
  313. data/lib/chef/application/windows_service_manager.rb +0 -205
  314. data/lib/chef/chef_fs/knife.rb +0 -160
  315. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  316. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  317. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  318. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  319. data/lib/chef/knife.rb +0 -665
  320. data/lib/chef/knife/acl_add.rb +0 -57
  321. data/lib/chef/knife/acl_base.rb +0 -183
  322. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  323. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  324. data/lib/chef/knife/acl_remove.rb +0 -62
  325. data/lib/chef/knife/acl_show.rb +0 -56
  326. data/lib/chef/knife/bootstrap.rb +0 -1192
  327. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  328. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  329. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  330. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  331. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  332. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  333. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  334. data/lib/chef/knife/client_create.rb +0 -101
  335. data/lib/chef/knife/client_delete.rb +0 -62
  336. data/lib/chef/knife/client_edit.rb +0 -52
  337. data/lib/chef/knife/client_key_create.rb +0 -73
  338. data/lib/chef/knife/client_key_delete.rb +0 -80
  339. data/lib/chef/knife/client_key_edit.rb +0 -83
  340. data/lib/chef/knife/client_key_list.rb +0 -73
  341. data/lib/chef/knife/client_key_show.rb +0 -80
  342. data/lib/chef/knife/client_list.rb +0 -41
  343. data/lib/chef/knife/client_reregister.rb +0 -58
  344. data/lib/chef/knife/client_show.rb +0 -48
  345. data/lib/chef/knife/config_get.rb +0 -39
  346. data/lib/chef/knife/config_get_profile.rb +0 -37
  347. data/lib/chef/knife/config_list.rb +0 -139
  348. data/lib/chef/knife/config_list_profiles.rb +0 -37
  349. data/lib/chef/knife/config_show.rb +0 -127
  350. data/lib/chef/knife/config_use.rb +0 -61
  351. data/lib/chef/knife/config_use_profile.rb +0 -47
  352. data/lib/chef/knife/configure.rb +0 -150
  353. data/lib/chef/knife/configure_client.rb +0 -48
  354. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  355. data/lib/chef/knife/cookbook_delete.rb +0 -151
  356. data/lib/chef/knife/cookbook_download.rb +0 -142
  357. data/lib/chef/knife/cookbook_list.rb +0 -47
  358. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  359. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  360. data/lib/chef/knife/cookbook_show.rb +0 -98
  361. data/lib/chef/knife/cookbook_upload.rb +0 -292
  362. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  363. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  364. data/lib/chef/knife/core/formatting_options.rb +0 -49
  365. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  366. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  367. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  368. data/lib/chef/knife/core/node_editor.rb +0 -130
  369. data/lib/chef/knife/core/node_presenter.rb +0 -133
  370. data/lib/chef/knife/core/object_loader.rb +0 -115
  371. data/lib/chef/knife/core/status_presenter.rb +0 -147
  372. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  373. data/lib/chef/knife/core/text_formatter.rb +0 -85
  374. data/lib/chef/knife/core/ui.rb +0 -338
  375. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -406
  376. data/lib/chef/knife/data_bag_create.rb +0 -81
  377. data/lib/chef/knife/data_bag_delete.rb +0 -49
  378. data/lib/chef/knife/data_bag_edit.rb +0 -74
  379. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  380. data/lib/chef/knife/data_bag_list.rb +0 -42
  381. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  382. data/lib/chef/knife/data_bag_show.rb +0 -69
  383. data/lib/chef/knife/delete.rb +0 -125
  384. data/lib/chef/knife/deps.rb +0 -156
  385. data/lib/chef/knife/diff.rb +0 -83
  386. data/lib/chef/knife/download.rb +0 -84
  387. data/lib/chef/knife/edit.rb +0 -88
  388. data/lib/chef/knife/environment_compare.rb +0 -128
  389. data/lib/chef/knife/environment_create.rb +0 -52
  390. data/lib/chef/knife/environment_delete.rb +0 -44
  391. data/lib/chef/knife/environment_edit.rb +0 -44
  392. data/lib/chef/knife/environment_from_file.rb +0 -84
  393. data/lib/chef/knife/environment_list.rb +0 -41
  394. data/lib/chef/knife/environment_show.rb +0 -47
  395. data/lib/chef/knife/exec.rb +0 -99
  396. data/lib/chef/knife/group_add.rb +0 -55
  397. data/lib/chef/knife/group_create.rb +0 -49
  398. data/lib/chef/knife/group_destroy.rb +0 -53
  399. data/lib/chef/knife/group_list.rb +0 -43
  400. data/lib/chef/knife/group_remove.rb +0 -56
  401. data/lib/chef/knife/group_show.rb +0 -49
  402. data/lib/chef/knife/key_create.rb +0 -112
  403. data/lib/chef/knife/key_create_base.rb +0 -50
  404. data/lib/chef/knife/key_delete.rb +0 -55
  405. data/lib/chef/knife/key_edit.rb +0 -118
  406. data/lib/chef/knife/key_edit_base.rb +0 -55
  407. data/lib/chef/knife/key_list.rb +0 -90
  408. data/lib/chef/knife/key_list_base.rb +0 -45
  409. data/lib/chef/knife/key_show.rb +0 -53
  410. data/lib/chef/knife/list.rb +0 -177
  411. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  412. data/lib/chef/knife/node_create.rb +0 -47
  413. data/lib/chef/knife/node_delete.rb +0 -46
  414. data/lib/chef/knife/node_edit.rb +0 -70
  415. data/lib/chef/knife/node_environment_set.rb +0 -53
  416. data/lib/chef/knife/node_from_file.rb +0 -51
  417. data/lib/chef/knife/node_list.rb +0 -44
  418. data/lib/chef/knife/node_policy_set.rb +0 -79
  419. data/lib/chef/knife/node_run_list_add.rb +0 -104
  420. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  421. data/lib/chef/knife/node_run_list_set.rb +0 -66
  422. data/lib/chef/knife/node_show.rb +0 -63
  423. data/lib/chef/knife/null.rb +0 -12
  424. data/lib/chef/knife/raw.rb +0 -123
  425. data/lib/chef/knife/recipe_list.rb +0 -32
  426. data/lib/chef/knife/rehash.rb +0 -50
  427. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  428. data/lib/chef/knife/role_create.rb +0 -53
  429. data/lib/chef/knife/role_delete.rb +0 -46
  430. data/lib/chef/knife/role_edit.rb +0 -45
  431. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  432. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  433. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  434. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  435. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  436. data/lib/chef/knife/role_from_file.rb +0 -51
  437. data/lib/chef/knife/role_list.rb +0 -42
  438. data/lib/chef/knife/role_run_list_add.rb +0 -87
  439. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  440. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  441. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  442. data/lib/chef/knife/role_run_list_set.rb +0 -69
  443. data/lib/chef/knife/role_show.rb +0 -48
  444. data/lib/chef/knife/search.rb +0 -194
  445. data/lib/chef/knife/serve.rb +0 -65
  446. data/lib/chef/knife/show.rb +0 -72
  447. data/lib/chef/knife/ssh.rb +0 -645
  448. data/lib/chef/knife/ssl_check.rb +0 -284
  449. data/lib/chef/knife/ssl_fetch.rb +0 -161
  450. data/lib/chef/knife/status.rb +0 -95
  451. data/lib/chef/knife/supermarket_download.rb +0 -121
  452. data/lib/chef/knife/supermarket_install.rb +0 -192
  453. data/lib/chef/knife/supermarket_list.rb +0 -76
  454. data/lib/chef/knife/supermarket_search.rb +0 -53
  455. data/lib/chef/knife/supermarket_share.rb +0 -166
  456. data/lib/chef/knife/supermarket_show.rb +0 -66
  457. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  458. data/lib/chef/knife/tag_create.rb +0 -52
  459. data/lib/chef/knife/tag_delete.rb +0 -60
  460. data/lib/chef/knife/tag_list.rb +0 -47
  461. data/lib/chef/knife/upload.rb +0 -86
  462. data/lib/chef/knife/user_create.rb +0 -107
  463. data/lib/chef/knife/user_delete.rb +0 -44
  464. data/lib/chef/knife/user_dissociate.rb +0 -42
  465. data/lib/chef/knife/user_edit.rb +0 -52
  466. data/lib/chef/knife/user_invite_add.rb +0 -43
  467. data/lib/chef/knife/user_invite_list.rb +0 -34
  468. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  469. data/lib/chef/knife/user_key_create.rb +0 -73
  470. data/lib/chef/knife/user_key_delete.rb +0 -80
  471. data/lib/chef/knife/user_key_edit.rb +0 -83
  472. data/lib/chef/knife/user_key_list.rb +0 -73
  473. data/lib/chef/knife/user_key_show.rb +0 -80
  474. data/lib/chef/knife/user_list.rb +0 -42
  475. data/lib/chef/knife/user_reregister.rb +0 -59
  476. data/lib/chef/knife/user_show.rb +0 -48
  477. data/lib/chef/knife/xargs.rb +0 -282
  478. data/lib/chef/knife/yaml_convert.rb +0 -91
  479. data/lib/chef/resource/user/dscl_user.rb +0 -35
  480. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  481. data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
  482. data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
  483. data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
  484. data/spec/data/knife_subcommand/test_yourself.rb +0 -21
  485. data/spec/functional/knife/configure_spec.rb +0 -33
  486. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  487. data/spec/functional/knife/exec_spec.rb +0 -55
  488. data/spec/functional/knife/rehash_spec.rb +0 -39
  489. data/spec/functional/knife/smoke_test.rb +0 -42
  490. data/spec/functional/knife/ssh_spec.rb +0 -352
  491. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  492. data/spec/functional/resource/windows_service_spec.rb +0 -105
  493. data/spec/functional/win32/service_manager_spec.rb +0 -220
  494. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  495. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  496. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  497. data/spec/integration/knife/chefignore_spec.rb +0 -301
  498. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  499. data/spec/integration/knife/client_create_spec.rb +0 -70
  500. data/spec/integration/knife/client_delete_spec.rb +0 -64
  501. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  502. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  503. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  504. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  505. data/spec/integration/knife/client_list_spec.rb +0 -49
  506. data/spec/integration/knife/client_show_spec.rb +0 -37
  507. data/spec/integration/knife/common_options_spec.rb +0 -174
  508. data/spec/integration/knife/config_list_spec.rb +0 -220
  509. data/spec/integration/knife/config_show_spec.rb +0 -192
  510. data/spec/integration/knife/config_use_spec.rb +0 -198
  511. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  512. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  513. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  514. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  515. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  516. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  517. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  518. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  519. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  520. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  521. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  522. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  523. data/spec/integration/knife/delete_spec.rb +0 -1018
  524. data/spec/integration/knife/deps_spec.rb +0 -703
  525. data/spec/integration/knife/diff_spec.rb +0 -605
  526. data/spec/integration/knife/download_spec.rb +0 -1336
  527. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  528. data/spec/integration/knife/environment_create_spec.rb +0 -41
  529. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  530. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  531. data/spec/integration/knife/environment_list_spec.rb +0 -42
  532. data/spec/integration/knife/environment_show_spec.rb +0 -77
  533. data/spec/integration/knife/list_spec.rb +0 -1060
  534. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  535. data/spec/integration/knife/node_create_spec.rb +0 -47
  536. data/spec/integration/knife/node_delete_spec.rb +0 -48
  537. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  538. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  539. data/spec/integration/knife/node_list_spec.rb +0 -45
  540. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  541. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  542. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  543. data/spec/integration/knife/node_show_spec.rb +0 -36
  544. data/spec/integration/knife/raw_spec.rb +0 -297
  545. data/spec/integration/knife/redirection_spec.rb +0 -64
  546. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  547. data/spec/integration/knife/role_create_spec.rb +0 -41
  548. data/spec/integration/knife/role_delete_spec.rb +0 -48
  549. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  550. data/spec/integration/knife/role_list_spec.rb +0 -45
  551. data/spec/integration/knife/role_show_spec.rb +0 -51
  552. data/spec/integration/knife/search_node_spec.rb +0 -40
  553. data/spec/integration/knife/serve_spec.rb +0 -92
  554. data/spec/integration/knife/show_spec.rb +0 -197
  555. data/spec/integration/knife/upload_spec.rb +0 -1617
  556. data/spec/support/shared/functional/knife.rb +0 -37
  557. data/spec/support/shared/functional/win32_service.rb +0 -57
  558. data/spec/support/shared/integration/knife_support.rb +0 -192
  559. data/spec/support/shared/unit/knife_shared.rb +0 -39
  560. data/spec/unit/application/knife_spec.rb +0 -241
  561. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  562. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  563. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  564. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  565. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  566. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  567. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  568. data/spec/unit/knife/client_create_spec.rb +0 -169
  569. data/spec/unit/knife/client_delete_spec.rb +0 -99
  570. data/spec/unit/knife/client_edit_spec.rb +0 -53
  571. data/spec/unit/knife/client_list_spec.rb +0 -34
  572. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  573. data/spec/unit/knife/client_show_spec.rb +0 -52
  574. data/spec/unit/knife/configure_client_spec.rb +0 -81
  575. data/spec/unit/knife/configure_spec.rb +0 -190
  576. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  577. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  578. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  579. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  580. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  581. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  582. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  583. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  584. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  585. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  586. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  587. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  588. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  589. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  590. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  591. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  592. data/spec/unit/knife/core/ui_spec.rb +0 -656
  593. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  594. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  595. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  596. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  597. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  598. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  599. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  600. data/spec/unit/knife/environment_create_spec.rb +0 -91
  601. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  602. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  603. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  604. data/spec/unit/knife/environment_list_spec.rb +0 -54
  605. data/spec/unit/knife/environment_show_spec.rb +0 -52
  606. data/spec/unit/knife/key_create_spec.rb +0 -223
  607. data/spec/unit/knife/key_delete_spec.rb +0 -133
  608. data/spec/unit/knife/key_edit_spec.rb +0 -264
  609. data/spec/unit/knife/key_helper.rb +0 -74
  610. data/spec/unit/knife/key_list_spec.rb +0 -216
  611. data/spec/unit/knife/key_show_spec.rb +0 -126
  612. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  613. data/spec/unit/knife/node_delete_spec.rb +0 -77
  614. data/spec/unit/knife/node_edit_spec.rb +0 -116
  615. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  616. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  617. data/spec/unit/knife/node_list_spec.rb +0 -62
  618. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  619. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  620. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  621. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  622. data/spec/unit/knife/node_show_spec.rb +0 -65
  623. data/spec/unit/knife/raw_spec.rb +0 -43
  624. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  625. data/spec/unit/knife/role_create_spec.rb +0 -80
  626. data/spec/unit/knife/role_delete_spec.rb +0 -67
  627. data/spec/unit/knife/role_edit_spec.rb +0 -77
  628. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  629. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  630. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  631. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  632. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  633. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  634. data/spec/unit/knife/role_list_spec.rb +0 -54
  635. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  636. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  637. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  638. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  639. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  640. data/spec/unit/knife/role_show_spec.rb +0 -59
  641. data/spec/unit/knife/ssh_spec.rb +0 -403
  642. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  643. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  644. data/spec/unit/knife/status_spec.rb +0 -112
  645. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  646. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  647. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  648. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  649. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  650. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  651. data/spec/unit/knife/tag_create_spec.rb +0 -23
  652. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  653. data/spec/unit/knife/tag_list_spec.rb +0 -23
  654. data/spec/unit/knife/user_create_spec.rb +0 -184
  655. data/spec/unit/knife/user_delete_spec.rb +0 -46
  656. data/spec/unit/knife/user_edit_spec.rb +0 -48
  657. data/spec/unit/knife/user_list_spec.rb +0 -36
  658. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  659. data/spec/unit/knife/user_show_spec.rb +0 -46
  660. data/spec/unit/knife_spec.rb +0 -634
  661. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  662. data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,105 +0,0 @@
1
- #
2
- # Author:: Chris Doherty (<cdoherty@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
-
21
- describe Chef::Resource::WindowsService, :windows_only, :system_windows_service_gem_only do
22
-
23
- include_context "using Win32::Service"
24
-
25
- let(:username) { "service_spec_user" }
26
- let(:qualified_username) { "#{ENV["COMPUTERNAME"]}\\#{username}" }
27
- let(:password) { "1a2b3c4X!&narf" }
28
-
29
- let(:user_resource) do
30
- r = Chef::Resource::User::WindowsUser.new(username, run_context)
31
- r.username(username)
32
- r.password(password)
33
- r.comment("temp spec user")
34
- r
35
- end
36
-
37
- let(:global_service_file_path) do
38
- "#{ENV["WINDIR"]}\\temp\\#{File.basename(test_service[:service_file_path])}"
39
- end
40
-
41
- let(:service_params) do
42
-
43
- id = "#{$$}_#{rand(1000)}"
44
-
45
- test_service.merge( {
46
- run_as_user: qualified_username,
47
- run_as_password: password,
48
- service_name: "spec_service_#{id}",
49
- service_display_name: "windows_service spec #{id}}",
50
- service_description: "Test service for running the windows_service functional spec.",
51
- service_file_path: global_service_file_path,
52
- } )
53
- end
54
-
55
- let(:manager) do
56
- Chef::Application::WindowsServiceManager.new(service_params)
57
- end
58
-
59
- let(:service_resource) do
60
- r = Chef::Resource::WindowsService.new(service_params[:service_name], run_context)
61
- %i{run_as_user run_as_password}.each { |prop| r.send(prop, service_params[prop]) }
62
- r
63
- end
64
-
65
- let(:run_context) do
66
- Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
67
- end
68
-
69
- before do
70
- user_resource.run_action(:create)
71
-
72
- # the service executable has to be outside the current user's home
73
- # directory in order for the logon user to execute it.
74
- FileUtils.copy_file(test_service[:service_file_path], global_service_file_path)
75
-
76
- # if you don't make the file executable by the service user, you'll get
77
- # the not-very-helpful "service did not respond fast enough" error.
78
-
79
- # #mode may break in a post-Windows 8.1 release, and have to be replaced
80
- # with the rights stuff in the file resource.
81
- file = Chef::Resource::File.new(global_service_file_path, run_context)
82
- file.mode("0777")
83
-
84
- file.run_action(:create)
85
-
86
- manager.run(%w{--action install})
87
- end
88
-
89
- after do
90
- user_resource.run_action(:remove)
91
- manager.run(%w{--action uninstall})
92
- File.delete(global_service_file_path)
93
- end
94
-
95
- describe "logon as a service" do
96
- it "successfully runs a service as another user" do
97
- service_resource.run_action(:start)
98
- end
99
-
100
- it "grants the user the log on as service right" do
101
- service_resource.run_action(:start)
102
- expect(Chef::ReservedNames::Win32::Security.get_account_right(qualified_username)).to include("SeServiceLogonRight")
103
- end
104
- end
105
- end
@@ -1,220 +0,0 @@
1
- #
2
- # Author:: Serdar Sutay (<serdar@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
- if ChefUtils.windows?
21
- require "chef/application/windows_service_manager"
22
- end
23
-
24
- #
25
- # ATTENTION:
26
- # This test creates a windows service for testing purposes and runs it
27
- # as Local System (or an otherwise specified user) on windows boxes.
28
- # This test will fail if you run the tests inside a Windows VM by
29
- # sharing the code from your host since Local System account by
30
- # default can't see the mounted partitions.
31
- # Run this test by copying the code to a local VM directory or setup
32
- # Local System account to see the maunted partitions for the shared
33
- # directories.
34
- #
35
-
36
- describe "Chef::Application::WindowsServiceManager", :windows_only, :system_windows_service_gem_only do
37
-
38
- include_context "using Win32::Service"
39
-
40
- context "with invalid service definition" do
41
- it "throws an error when initialized with no service definition" do
42
- expect { Chef::Application::WindowsServiceManager.new(nil) }.to raise_error(ArgumentError)
43
- end
44
-
45
- it "throws an error with required missing options" do
46
- %i{service_name service_display_name service_description service_file_path}.each do |key|
47
- service_def = test_service.dup
48
- service_def.delete(key)
49
-
50
- expect { Chef::Application::WindowsServiceManager.new(service_def) }.to raise_error(ArgumentError)
51
- end
52
- end
53
- end
54
-
55
- context "with valid definition" do
56
- before(:each) do
57
- @service_manager_output = [ ]
58
- # Uncomment below lines to debug this test
59
- # original_puts = $stdout.method(:puts)
60
- allow($stdout).to receive(:puts) do |message|
61
- @service_manager_output << message
62
- # original_puts.call(message)
63
- end
64
- end
65
-
66
- after(:each) do
67
- cleanup
68
- end
69
-
70
- context "when service doesn't exist" do
71
- it "default => should say service don't exist" do
72
- service_manager.run
73
-
74
- expect(@service_manager_output.grep(/doesn't exist on the system/).length).to be > 0
75
- end
76
-
77
- it "install => should install the service" do
78
- service_manager.run(["-a", "install"])
79
-
80
- expect(test_service_exists?).to be_truthy
81
- end
82
-
83
- it "other actions => should say service doesn't exist" do
84
- %w{delete start stop pause resume uninstall}.each do |action|
85
- service_manager.run(["-a", action])
86
- expect(@service_manager_output.grep(/doesn't exist on the system/).length).to be > 0
87
- @service_manager_output = [ ]
88
- end
89
- end
90
- end
91
-
92
- context "when service exists" do
93
- before(:each) do
94
- service_manager.run(["-a", "install"])
95
- end
96
-
97
- it "should have an own-process, non-interactive type" do
98
- status = ::Win32::Service.status("spec-service")
99
- expect(status[:service_type]).to eq("own process")
100
- expect(status[:interactive]).to be_falsey
101
- end
102
-
103
- it "install => should say service already exists" do
104
- service_manager.run(["-a", "install"])
105
- expect(@service_manager_output.grep(/already exists/).length).to be > 0
106
- end
107
-
108
- context "and service is stopped" do
109
- %w{delete uninstall}.each do |action|
110
- it "#{action} => should remove the service", :volatile do
111
- service_manager.run(["-a", action])
112
- expect(test_service_exists?).to be_falsey
113
- end
114
- end
115
-
116
- it "default, status => should say service is stopped" do
117
- service_manager.run([ ])
118
- expect(@service_manager_output.grep(/stopped/).length).to be > 0
119
- @service_manager_output = [ ]
120
-
121
- service_manager.run(["-a", "status"])
122
- expect(@service_manager_output.grep(/stopped/).length).to be > 0
123
- end
124
-
125
- it "start should start the service", :volatile do
126
- service_manager.run(["-a", "start"])
127
- expect(test_service_state).to eq("running")
128
- expect(File.exist?(test_service_file)).to be_truthy
129
- end
130
-
131
- it "stop should not affect the service" do
132
- service_manager.run(["-a", "stop"])
133
- expect(test_service_state).to eq("stopped")
134
- end
135
-
136
- %w{pause resume}.each do |action|
137
- it "#{action} => should raise error" do
138
- expect { service_manager.run(["-a", action]) }.to raise_error(SystemCallError)
139
- end
140
- end
141
-
142
- context "and service is started", :volatile do
143
- before(:each) do
144
- service_manager.run(["-a", "start"])
145
- end
146
-
147
- %w{delete uninstall}.each do |action|
148
- it "#{action} => should remove the service", :volatile do
149
- service_manager.run(["-a", action])
150
- expect(test_service_exists?).to be_falsey
151
- end
152
- end
153
-
154
- it "default, status => should say service is running" do
155
- service_manager.run([ ])
156
- expect(@service_manager_output.grep(/running/).length).to be > 0
157
- @service_manager_output = [ ]
158
-
159
- service_manager.run(["-a", "status"])
160
- expect(@service_manager_output.grep(/running/).length).to be > 0
161
- end
162
-
163
- it "stop should stop the service" do
164
- service_manager.run(["-a", "stop"])
165
- expect(test_service_state).to eq("stopped")
166
- end
167
-
168
- it "pause should pause the service" do
169
- service_manager.run(["-a", "pause"])
170
- expect(test_service_state).to eq("paused")
171
- end
172
-
173
- it "resume should have no affect" do
174
- service_manager.run(["-a", "resume"])
175
- expect(test_service_state).to eq("running")
176
- end
177
- end
178
-
179
- context "and service is paused", :volatile do
180
- before(:each) do
181
- service_manager.run(["-a", "start"])
182
- service_manager.run(["-a", "pause"])
183
- end
184
-
185
- actions = %w{delete uninstall}
186
- actions.each do |action|
187
- it "#{action} => should remove the service" do
188
- service_manager.run(["-a", action])
189
- expect(test_service_exists?).to be_falsey
190
- end
191
- end
192
-
193
- it "default, status => should say service is paused" do
194
- service_manager.run([ ])
195
- expect(@service_manager_output.grep(/paused/).length).to be > 0
196
- @service_manager_output = [ ]
197
-
198
- service_manager.run(["-a", "status"])
199
- expect(@service_manager_output.grep(/paused/).length).to be > 0
200
- end
201
-
202
- it "stop should stop the service" do
203
- service_manager.run(["-a", "stop"])
204
- expect(test_service_state).to eq("stopped")
205
- end
206
-
207
- it "pause should not affect the service" do
208
- service_manager.run(["-a", "pause"])
209
- expect(test_service_state).to eq("paused")
210
- end
211
-
212
- it "start should raise an error" do
213
- expect { service_manager.run(["-a", "start"]) }.to raise_error(::Win32::Service::Error)
214
- end
215
-
216
- end
217
- end
218
- end
219
- end
220
- end
@@ -1,557 +0,0 @@
1
- #
2
- # Author:: John Keiser (<jkeiser@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
- require "spec_helper"
19
- require "support/shared/integration/integration_helper"
20
- require "chef/knife/list"
21
- require "chef/knife/delete"
22
- require "chef/knife/show"
23
- require "chef/knife/raw"
24
- require "chef/knife/cookbook_upload"
25
-
26
- describe "ChefFSDataStore tests", :workstation do
27
- include IntegrationSupport
28
- include KnifeSupport
29
-
30
- let(:cookbook_x_100_metadata_rb) { cb_metadata("x", "1.0.0") }
31
- let(:cookbook_z_100_metadata_rb) { cb_metadata("z", "1.0.0") }
32
-
33
- describe "with repo mode 'hosted_everything' (default)" do
34
- before do
35
- Chef::Config.chef_zero.osc_compat = false
36
- end
37
-
38
- when_the_repository "has one of each thing" do
39
- before do
40
- file "clients/x.json", {}
41
- file "cookbook_artifacts/x-111/metadata.rb", cookbook_x_100_metadata_rb
42
- file "cookbooks/x/metadata.rb", cookbook_x_100_metadata_rb
43
- file "data_bags/x/y.json", {}
44
- file "environments/x.json", {}
45
- file "nodes/x.json", {}
46
- file "roles/x.json", {}
47
- # file "users/x.json", {}
48
- file "containers/x.json", {}
49
- file "groups/x.json", {}
50
- file "containers/x.json", {}
51
- file "groups/x.json", {}
52
- file "policies/x-111.json", {}
53
- file "policy_groups/x.json", {}
54
- end
55
-
56
- context "GET /TYPE" do
57
- it "knife list -z -R returns everything" do
58
- knife("list -z -Rfp /").should_succeed <<~EOM
59
- /acls/
60
- /acls/clients/
61
- /acls/clients/x.json
62
- /acls/containers/
63
- /acls/containers/x.json
64
- /acls/cookbook_artifacts/
65
- /acls/cookbook_artifacts/x.json
66
- /acls/cookbooks/
67
- /acls/cookbooks/x.json
68
- /acls/data_bags/
69
- /acls/data_bags/x.json
70
- /acls/environments/
71
- /acls/environments/x.json
72
- /acls/groups/
73
- /acls/groups/x.json
74
- /acls/nodes/
75
- /acls/nodes/x.json
76
- /acls/organization.json
77
- /acls/policies/
78
- /acls/policies/x.json
79
- /acls/policy_groups/
80
- /acls/policy_groups/x.json
81
- /acls/roles/
82
- /acls/roles/x.json
83
- /clients/
84
- /clients/x.json
85
- /containers/
86
- /containers/x.json
87
- /cookbook_artifacts/
88
- /cookbook_artifacts/x-111/
89
- /cookbook_artifacts/x-111/metadata.rb
90
- /cookbooks/
91
- /cookbooks/x/
92
- /cookbooks/x/metadata.rb
93
- /data_bags/
94
- /data_bags/x/
95
- /data_bags/x/y.json
96
- /environments/
97
- /environments/x.json
98
- /groups/
99
- /groups/x.json
100
- /invitations.json
101
- /members.json
102
- /nodes/
103
- /nodes/x.json
104
- /org.json
105
- /policies/
106
- /policies/x-111.json
107
- /policy_groups/
108
- /policy_groups/x.json
109
- /roles/
110
- /roles/x.json
111
- EOM
112
- end
113
- end
114
-
115
- context "DELETE /TYPE/NAME" do
116
- it "knife delete -z /clients/x.json works" do
117
- knife("delete -z /clients/x.json").should_succeed "Deleted /clients/x.json\n"
118
- knife("list -z -Rfp /clients").should_succeed ""
119
- end
120
-
121
- it "knife delete -z -r /cookbooks/x works" do
122
- knife("delete -z -r /cookbooks/x").should_succeed "Deleted /cookbooks/x\n"
123
- knife("list -z -Rfp /cookbooks").should_succeed ""
124
- end
125
-
126
- it "knife delete -z -r /data_bags/x works" do
127
- knife("delete -z -r /data_bags/x").should_succeed "Deleted /data_bags/x\n"
128
- knife("list -z -Rfp /data_bags").should_succeed ""
129
- end
130
-
131
- it "knife delete -z /data_bags/x/y.json works" do
132
- knife("delete -z /data_bags/x/y.json").should_succeed "Deleted /data_bags/x/y.json\n"
133
- knife("list -z -Rfp /data_bags").should_succeed "/data_bags/x/\n"
134
- end
135
-
136
- it "knife delete -z /environments/x.json works" do
137
- knife("delete -z /environments/x.json").should_succeed "Deleted /environments/x.json\n"
138
- knife("list -z -Rfp /environments").should_succeed ""
139
- end
140
-
141
- it "knife delete -z /nodes/x.json works" do
142
- knife("delete -z /nodes/x.json").should_succeed "Deleted /nodes/x.json\n"
143
- knife("list -z -Rfp /nodes").should_succeed ""
144
- end
145
-
146
- it "knife delete -z /roles/x.json works" do
147
- knife("delete -z /roles/x.json").should_succeed "Deleted /roles/x.json\n"
148
- knife("list -z -Rfp /roles").should_succeed ""
149
- end
150
-
151
- end
152
-
153
- context "GET /TYPE/NAME" do
154
- it "knife show -z /clients/x.json works" do
155
- knife("show -z /clients/x.json").should_succeed( /"x"/ )
156
- end
157
-
158
- it "knife show -z /cookbooks/x/metadata.rb works" do
159
- knife("show -z /cookbooks/x/metadata.rb").should_succeed "/cookbooks/x/metadata.rb:\n#{cookbook_x_100_metadata_rb}\n"
160
- end
161
-
162
- it "knife show -z /data_bags/x/y.json works" do
163
- knife("show -z /data_bags/x/y.json").should_succeed( /"y"/ )
164
- end
165
-
166
- it "knife show -z /environments/x.json works" do
167
- knife("show -z /environments/x.json").should_succeed( /"x"/ )
168
- end
169
-
170
- it "knife show -z /nodes/x.json works" do
171
- knife("show -z /nodes/x.json").should_succeed( /"x"/ )
172
- end
173
-
174
- it "knife show -z /roles/x.json works" do
175
- knife("show -z /roles/x.json").should_succeed( /"x"/ )
176
- end
177
-
178
- end
179
-
180
- context "PUT /TYPE/NAME" do
181
- before do
182
- file "empty.json", {}
183
- file "dummynode.json", { "name" => "x", "chef_environment" => "rspec" , "json_class" => "Chef::Node", "normal" => { "foo" => "bar" } }
184
- file "rolestuff.json", '{"description":"hi there","name":"x"}'
185
- file "cookbooks_to_upload/x/metadata.rb", cookbook_x_100_metadata_rb
186
- end
187
-
188
- it "knife raw -z -i empty.json -m PUT /clients/x" do
189
- knife("raw -z -i #{path_to("empty.json")} -m PUT /clients/x").should_succeed( /"x"/ )
190
- knife("list --local /clients").should_succeed "/clients/x.json\n"
191
- end
192
-
193
- it "knife cookbook upload works" do
194
- knife("cookbook upload -z --cookbook-path #{path_to("cookbooks_to_upload")} x").should_succeed stderr: <<~EOM
195
- Uploading x [1.0.0]
196
- Uploaded 1 cookbook.
197
- EOM
198
- knife("list --local -Rfp /cookbooks").should_succeed "/cookbooks/x/\n/cookbooks/x/metadata.json\n/cookbooks/x/metadata.rb\n"
199
- end
200
-
201
- it "knife raw -z -i empty.json -m PUT /data/x/y" do
202
- knife("raw -z -i #{path_to("empty.json")} -m PUT /data/x/y").should_succeed( /"y"/ )
203
- knife("list --local -Rfp /data_bags").should_succeed "/data_bags/x/\n/data_bags/x/y.json\n"
204
- end
205
-
206
- it "knife raw -z -i empty.json -m PUT /environments/x" do
207
- knife("raw -z -i #{path_to("empty.json")} -m PUT /environments/x").should_succeed( /"x"/ )
208
- knife("list --local /environments").should_succeed "/environments/x.json\n"
209
- end
210
-
211
- it "knife raw -z -i dummynode.json -m PUT /nodes/x" do
212
- knife("raw -z -i #{path_to("dummynode.json")} -m PUT /nodes/x").should_succeed( /"x"/ )
213
- knife("list --local /nodes").should_succeed "/nodes/x.json\n"
214
- knife("show -z /nodes/x.json --verbose").should_succeed(/"bar"/)
215
- end
216
-
217
- it "knife raw -z -i empty.json -m PUT /roles/x" do
218
- knife("raw -z -i #{path_to("empty.json")} -m PUT /roles/x").should_succeed( /"x"/ )
219
- knife("list --local /roles").should_succeed "/roles/x.json\n"
220
- end
221
-
222
- it "After knife raw -z -i rolestuff.json -m PUT /roles/x, the output is pretty" do
223
- knife("raw -z -i #{path_to("rolestuff.json")} -m PUT /roles/x").should_succeed( /"x"/ )
224
- expect(IO.read(path_to("roles/x.json"))).to eq <<~EOM.strip
225
- {
226
- "name": "x",
227
- "description": "hi there"
228
- }
229
- EOM
230
- end
231
- end
232
- end
233
-
234
- when_the_repository "is empty" do
235
- context "POST /TYPE/NAME" do
236
- before do
237
- file "empty.json", { "name" => "z" }
238
- file "dummynode.json", { "name" => "z", "chef_environment" => "rspec" , "json_class" => "Chef::Node", "normal" => { "foo" => "bar" } }
239
- file "empty_x.json", { "name" => "x" }
240
- file "empty_id.json", { "id" => "z" }
241
- file "rolestuff.json", '{"description":"hi there","name":"x"}'
242
- file "cookbooks_to_upload/z/metadata.rb", cookbook_z_100_metadata_rb
243
- end
244
-
245
- it "knife raw -z -i empty.json -m POST /clients" do
246
- knife("raw -z -i #{path_to("empty.json")} -m POST /clients").should_succeed( /uri/ )
247
- knife("list --local /clients").should_succeed "/clients/z.json\n"
248
- end
249
-
250
- it "knife cookbook upload works" do
251
- knife("cookbook upload -z --cookbook-path #{path_to("cookbooks_to_upload")} z").should_succeed stderr: <<~EOM
252
- Uploading z [1.0.0]
253
- Uploaded 1 cookbook.
254
- EOM
255
- knife("list --local -Rfp /cookbooks").should_succeed "/cookbooks/z/\n/cookbooks/z/metadata.json\n/cookbooks/z/metadata.rb\n"
256
- end
257
-
258
- it "knife raw -z -i empty.json -m POST /data" do
259
- knife("raw -z -i #{path_to("empty.json")} -m POST /data").should_succeed( /uri/ )
260
- knife("list --local -Rfp /data_bags").should_succeed "/data_bags/z/\n"
261
- end
262
-
263
- it "knife raw -z -i empty.json -m POST /data/x" do
264
- knife("raw -z -i #{path_to("empty_x.json")} -m POST /data").should_succeed( /uri/ )
265
- knife("raw -z -i #{path_to("empty_id.json")} -m POST /data/x").should_succeed( /"z"/ )
266
- knife("list --local -Rfp /data_bags").should_succeed "/data_bags/x/\n/data_bags/x/z.json\n"
267
- end
268
-
269
- it "knife raw -z -i empty.json -m POST /environments" do
270
- knife("raw -z -i #{path_to("empty.json")} -m POST /environments").should_succeed( /uri/ )
271
- knife("list --local /environments").should_succeed "/environments/z.json\n"
272
- end
273
-
274
- it "knife raw -z -i dummynode.json -m POST /nodes" do
275
- knife("raw -z -i #{path_to("dummynode.json")} -m POST /nodes").should_succeed( /uri/ )
276
- knife("list --local /nodes").should_succeed "/nodes/z.json\n"
277
- knife("show -z /nodes/z.json").should_succeed(/"bar"/)
278
- end
279
-
280
- it "knife raw -z -i empty.json -m POST /roles" do
281
- knife("raw -z -i #{path_to("empty.json")} -m POST /roles").should_succeed( /uri/ )
282
- knife("list --local /roles").should_succeed "/roles/z.json\n"
283
- end
284
-
285
- it "After knife raw -z -i rolestuff.json -m POST /roles, the output is pretty" do
286
- knife("raw -z -i #{path_to("rolestuff.json")} -m POST /roles").should_succeed( /uri/ )
287
- expect(IO.read(path_to("roles/x.json"))).to eq <<~EOM.strip
288
- {
289
- "name": "x",
290
- "description": "hi there"
291
- }
292
- EOM
293
- end
294
- end
295
-
296
- it "knife list -z -R returns nothing" do
297
- knife("list -z -Rfp /").should_succeed <<~EOM
298
- /acls/
299
- /acls/clients/
300
- /acls/containers/
301
- /acls/cookbook_artifacts/
302
- /acls/cookbooks/
303
- /acls/data_bags/
304
- /acls/environments/
305
- /acls/groups/
306
- /acls/nodes/
307
- /acls/organization.json
308
- /acls/policies/
309
- /acls/policy_groups/
310
- /acls/roles/
311
- /clients/
312
- /containers/
313
- /cookbook_artifacts/
314
- /cookbooks/
315
- /data_bags/
316
- /environments/
317
- /groups/
318
- /invitations.json
319
- /members.json
320
- /nodes/
321
- /org.json
322
- /policies/
323
- /policy_groups/
324
- /roles/
325
- EOM
326
- end
327
-
328
- context "DELETE /TYPE/NAME" do
329
- it "knife delete -z /clients/x.json fails with an error" do
330
- knife("delete -z /clients/x.json").should_fail "ERROR: /clients/x.json: No such file or directory\n"
331
- end
332
-
333
- it "knife delete -z -r /cookbooks/x fails with an error" do
334
- knife("delete -z -r /cookbooks/x").should_fail "ERROR: /cookbooks/x: No such file or directory\n"
335
- end
336
-
337
- it "knife delete -z -r /data_bags/x fails with an error" do
338
- knife("delete -z -r /data_bags/x").should_fail "ERROR: /data_bags/x: No such file or directory\n"
339
- end
340
-
341
- it "knife delete -z /data_bags/x/y.json fails with an error" do
342
- knife("delete -z /data_bags/x/y.json").should_fail "ERROR: /data_bags/x/y.json: No such file or directory\n"
343
- end
344
-
345
- it "knife delete -z /environments/x.json fails with an error" do
346
- knife("delete -z /environments/x.json").should_fail "ERROR: /environments/x.json: No such file or directory\n"
347
- end
348
-
349
- it "knife delete -z /nodes/x.json fails with an error" do
350
- knife("delete -z /nodes/x.json").should_fail "ERROR: /nodes/x.json: No such file or directory\n"
351
- end
352
-
353
- it "knife delete -z /roles/x.json fails with an error" do
354
- knife("delete -z /roles/x.json").should_fail "ERROR: /roles/x.json: No such file or directory\n"
355
- end
356
-
357
- end
358
-
359
- context "GET /TYPE/NAME" do
360
- it "knife show -z /clients/x.json fails with an error" do
361
- knife("show -z /clients/x.json").should_fail "ERROR: /clients/x.json: No such file or directory\n"
362
- end
363
-
364
- it "knife show -z /cookbooks/x/metadata.rb fails with an error" do
365
- knife("show -z /cookbooks/x/metadata.rb").should_fail "ERROR: /cookbooks/x/metadata.rb: No such file or directory\n"
366
- end
367
-
368
- it "knife show -z /data_bags/x/y.json fails with an error" do
369
- knife("show -z /data_bags/x/y.json").should_fail "ERROR: /data_bags/x/y.json: No such file or directory\n"
370
- end
371
-
372
- it "knife show -z /environments/x.json fails with an error" do
373
- knife("show -z /environments/x.json").should_fail "ERROR: /environments/x.json: No such file or directory\n"
374
- end
375
-
376
- it "knife show -z /nodes/x.json fails with an error" do
377
- knife("show -z /nodes/x.json").should_fail "ERROR: /nodes/x.json: No such file or directory\n"
378
- end
379
-
380
- it "knife show -z /roles/x.json fails with an error" do
381
- knife("show -z /roles/x.json").should_fail "ERROR: /roles/x.json: No such file or directory\n"
382
- end
383
-
384
- end
385
-
386
- context "PUT /TYPE/NAME" do
387
- before do
388
- file "empty.json", {}
389
- end
390
-
391
- it "knife raw -z -i empty.json -m PUT /clients/x fails with 404" do
392
- knife("raw -z -i #{path_to("empty.json")} -m PUT /clients/x").should_fail( /404/ )
393
- end
394
-
395
- it "knife raw -z -i empty.json -m PUT /data/x/y fails with 404" do
396
- knife("raw -z -i #{path_to("empty.json")} -m PUT /data/x/y").should_fail( /404/ )
397
- end
398
-
399
- it "knife raw -z -i empty.json -m PUT /environments/x fails with 404" do
400
- knife("raw -z -i #{path_to("empty.json")} -m PUT /environments/x").should_fail( /404/ )
401
- end
402
-
403
- it "knife raw -z -i empty.json -m PUT /nodes/x fails with 404" do
404
- knife("raw -z -i #{path_to("empty.json")} -m PUT /nodes/x").should_fail( /404/ )
405
- end
406
-
407
- it "knife raw -z -i empty.json -m PUT /roles/x fails with 404" do
408
- knife("raw -z -i #{path_to("empty.json")} -m PUT /roles/x").should_fail( /404/ )
409
- end
410
-
411
- end
412
- end
413
- end
414
-
415
- # We have to configure Zero for Chef 11 mode in order to test users because:
416
- # 1. local mode overrides your `chef_server_url` to something like "http://localhost:PORT"
417
- # 2. single org mode maps requests like "https://localhost:PORT/users" so
418
- # they're functionally equivalent to "https://localhost:PORT/organizations/DEFAULT/users"
419
- # 3. Users are global objects in Chef 12, and should be accessed at URLs like
420
- # "https://localhost:PORT/users" (there is an org-specific users endpoint,
421
- # but it's for listing users in an org, not for managing users).
422
- # 4. Therefore you can't hit the _real_ users endpoint in local mode when
423
- # configured for Chef Server 12 mode.
424
- #
425
- # Because of this, we have to configure Zero for Chef 11 OSC mode in order to
426
- # test the users part of the data store with local mode.
427
- describe "with repo mode 'everything'" do
428
- before do
429
- Chef::Config.repo_mode = "everything"
430
- Chef::Config.chef_zero.osc_compat = true
431
- end
432
-
433
- when_the_repository "has one of each thing" do
434
- before do
435
- file "clients/x.json", {}
436
- file "cookbooks/x/metadata.rb", cookbook_x_100_metadata_rb
437
- file "data_bags/x/y.json", {}
438
- file "environments/x.json", {}
439
- file "nodes/x.json", {}
440
- file "roles/x.json", {}
441
- file "users/x.json", {}
442
- end
443
-
444
- context "GET /TYPE" do
445
- it "knife list -z -R returns everything" do
446
- knife("list -z -Rfp /").should_succeed <<~EOM
447
- /clients/
448
- /clients/x.json
449
- /cookbooks/
450
- /cookbooks/x/
451
- /cookbooks/x/metadata.rb
452
- /data_bags/
453
- /data_bags/x/
454
- /data_bags/x/y.json
455
- /environments/
456
- /environments/x.json
457
- /nodes/
458
- /nodes/x.json
459
- /roles/
460
- /roles/x.json
461
- /users/
462
- /users/x.json
463
- EOM
464
- end
465
- end
466
-
467
- context "DELETE /TYPE/NAME" do
468
- it "knife delete -z /users/x.json works" do
469
- knife("delete -z /users/x.json").should_succeed "Deleted /users/x.json\n"
470
- knife("list -z -Rfp /users").should_succeed ""
471
- end
472
- end
473
-
474
- context "GET /TYPE/NAME" do
475
- it "knife show -z /users/x.json works" do
476
- knife("show -z /users/x.json").should_succeed( /"x"/ )
477
- end
478
- end
479
-
480
- context "PUT /TYPE/NAME" do
481
- before do
482
- file "empty.json", {}
483
- file "dummynode.json", { "name" => "x", "chef_environment" => "rspec" , "json_class" => "Chef::Node", "normal" => { "foo" => "bar" } }
484
- file "rolestuff.json", '{"description":"hi there","name":"x"}'
485
- file "cookbooks_to_upload/x/metadata.rb", cookbook_x_100_metadata_rb
486
- end
487
-
488
- it "knife raw -z -i empty.json -m PUT /users/x" do
489
- knife("raw -z -i #{path_to("empty.json")} -m PUT /users/x").should_succeed( /"x"/ )
490
- knife("list --local /users").should_succeed "/users/x.json\n"
491
- end
492
-
493
- it "After knife raw -z -i rolestuff.json -m PUT /roles/x, the output is pretty" do
494
- knife("raw -z -i #{path_to("rolestuff.json")} -m PUT /roles/x").should_succeed( /"x"/ )
495
- expect(IO.read(path_to("roles/x.json"))).to eq <<~EOM.strip
496
- {
497
- "name": "x",
498
- "description": "hi there"
499
- }
500
- EOM
501
- end
502
- end
503
- end
504
-
505
- when_the_repository "is empty" do
506
- context "POST /TYPE/NAME" do
507
- before do
508
- file "empty.json", { "name" => "z" }
509
- file "dummynode.json", { "name" => "z", "chef_environment" => "rspec" , "json_class" => "Chef::Node", "normal" => { "foo" => "bar" } }
510
- file "empty_x.json", { "name" => "x" }
511
- file "empty_id.json", { "id" => "z" }
512
- file "rolestuff.json", '{"description":"hi there","name":"x"}'
513
- file "cookbooks_to_upload/z/metadata.rb", cookbook_z_100_metadata_rb
514
- end
515
-
516
- it "knife raw -z -i empty.json -m POST /users" do
517
- knife("raw -z -i #{path_to("empty.json")} -m POST /users").should_succeed( /uri/ )
518
- knife("list --local /users").should_succeed "/users/z.json\n"
519
- end
520
- end
521
-
522
- it "knife list -z -R returns nothing" do
523
- knife("list -z -Rfp /").should_succeed <<~EOM
524
- /clients/
525
- /cookbooks/
526
- /data_bags/
527
- /environments/
528
- /nodes/
529
- /roles/
530
- /users/
531
- EOM
532
- end
533
-
534
- context "DELETE /TYPE/NAME" do
535
- it "knife delete -z /users/x.json fails with an error" do
536
- knife("delete -z /users/x.json").should_fail "ERROR: /users/x.json: No such file or directory\n"
537
- end
538
- end
539
-
540
- context "GET /TYPE/NAME" do
541
- it "knife show -z /users/x.json fails with an error" do
542
- knife("show -z /users/x.json").should_fail "ERROR: /users/x.json: No such file or directory\n"
543
- end
544
- end
545
-
546
- context "PUT /TYPE/NAME" do
547
- before do
548
- file "empty.json", {}
549
- end
550
-
551
- it "knife raw -z -i empty.json -m PUT /users/x fails with 404" do
552
- knife("raw -z -i #{path_to("empty.json")} -m PUT /users/x").should_fail( /404/ )
553
- end
554
- end
555
- end
556
- end
557
- end