chef 16.10.17-universal-mingw32 → 17.1.35-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 (694) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +8 -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/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_pattern.rb +2 -2
  55. data/lib/chef/chef_fs/file_system.rb +9 -10
  56. data/lib/chef/client.rb +2 -2
  57. data/lib/chef/compliance/default_attributes.rb +11 -6
  58. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  59. data/lib/chef/compliance/reporter/automate.rb +17 -7
  60. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  61. data/lib/chef/compliance/reporter/cli.rb +77 -0
  62. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  63. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  64. data/lib/chef/compliance/runner.rb +71 -28
  65. data/lib/chef/cookbook/cookbook_version_loader.rb +3 -3
  66. data/lib/chef/cookbook/gem_installer.rb +5 -1
  67. data/lib/chef/cookbook/synchronizer.rb +3 -5
  68. data/lib/chef/cookbook_loader.rb +2 -4
  69. data/lib/chef/cookbook_uploader.rb +0 -1
  70. data/lib/chef/data_bag_item.rb +11 -2
  71. data/lib/chef/delayed_evaluator.rb +4 -0
  72. data/lib/chef/deprecated.rb +4 -0
  73. data/lib/chef/dsl/chef_vault.rb +6 -6
  74. data/lib/chef/dsl/declare_resource.rb +5 -10
  75. data/lib/chef/dsl/reboot_pending.rb +1 -2
  76. data/lib/chef/formatters/doc.rb +2 -1
  77. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  78. data/lib/chef/group.rb +75 -0
  79. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  80. data/lib/chef/node.rb +1 -1
  81. data/lib/chef/node/attribute.rb +6 -4
  82. data/lib/chef/node/immutable_collections.rb +13 -0
  83. data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
  84. data/lib/chef/org.rb +3 -2
  85. data/lib/chef/property.rb +18 -0
  86. data/lib/chef/provider.rb +1 -1
  87. data/lib/chef/provider/cron.rb +1 -1
  88. data/lib/chef/provider/directory.rb +6 -6
  89. data/lib/chef/provider/execute.rb +2 -1
  90. data/lib/chef/provider/file.rb +2 -2
  91. data/lib/chef/provider/git.rb +5 -7
  92. data/lib/chef/provider/group/groupadd.rb +3 -3
  93. data/lib/chef/provider/group/groupmod.rb +3 -3
  94. data/lib/chef/provider/group/pw.rb +3 -3
  95. data/lib/chef/provider/ifconfig.rb +2 -2
  96. data/lib/chef/provider/link.rb +3 -3
  97. data/lib/chef/provider/mount.rb +12 -7
  98. data/lib/chef/provider/mount/aix.rb +3 -3
  99. data/lib/chef/provider/mount/mount.rb +5 -5
  100. data/lib/chef/provider/mount/windows.rb +1 -1
  101. data/lib/chef/provider/package.rb +17 -21
  102. data/lib/chef/provider/package/apt.rb +27 -1
  103. data/lib/chef/provider/package/deb.rb +3 -3
  104. data/lib/chef/provider/package/dnf/dnf_helper.py +16 -11
  105. data/lib/chef/provider/package/dnf/python_helper.rb +9 -8
  106. data/lib/chef/provider/package/portage.rb +2 -2
  107. data/lib/chef/provider/package/rubygems.rb +11 -17
  108. data/lib/chef/provider/package/windows.rb +2 -4
  109. data/lib/chef/provider/package/yum.rb +1 -4
  110. data/lib/chef/provider/package/yum/python_helper.rb +15 -10
  111. data/lib/chef/provider/package/yum/yum_helper.py +51 -63
  112. data/lib/chef/provider/registry_key.rb +1 -1
  113. data/lib/chef/provider/route.rb +2 -2
  114. data/lib/chef/provider/service.rb +6 -6
  115. data/lib/chef/provider/service/aixinit.rb +1 -1
  116. data/lib/chef/provider/service/debian.rb +1 -1
  117. data/lib/chef/provider/service/freebsd.rb +15 -21
  118. data/lib/chef/provider/service/macosx.rb +7 -7
  119. data/lib/chef/provider/service/systemd.rb +43 -14
  120. data/lib/chef/provider/service/upstart.rb +2 -13
  121. data/lib/chef/provider/service/windows.rb +12 -12
  122. data/lib/chef/provider/subversion.rb +10 -12
  123. data/lib/chef/provider/systemd_unit.rb +36 -10
  124. data/lib/chef/provider/template/content.rb +3 -7
  125. data/lib/chef/provider/user.rb +2 -2
  126. data/lib/chef/provider/user/dscl.rb +1 -1
  127. data/lib/chef/provider/user/mac.rb +17 -20
  128. data/lib/chef/provider/user/pw.rb +1 -1
  129. data/lib/chef/provider/user/windows.rb +1 -1
  130. data/lib/chef/provider/windows_script.rb +1 -1
  131. data/lib/chef/provider/zypper_repository.rb +2 -2
  132. data/lib/chef/providers.rb +0 -1
  133. data/lib/chef/resource.rb +6 -7
  134. data/lib/chef/resource/alternatives.rb +6 -6
  135. data/lib/chef/resource/apt_package.rb +1 -1
  136. data/lib/chef/resource/apt_preference.rb +2 -2
  137. data/lib/chef/resource/apt_repository.rb +6 -6
  138. data/lib/chef/resource/apt_update.rb +3 -2
  139. data/lib/chef/resource/archive_file.rb +2 -3
  140. data/lib/chef/resource/breakpoint.rb +1 -1
  141. data/lib/chef/resource/build_essential.rb +2 -6
  142. data/lib/chef/resource/chef_client_config.rb +2 -2
  143. data/lib/chef/resource/chef_client_cron.rb +5 -5
  144. data/lib/chef/resource/chef_client_launchd.rb +4 -4
  145. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  146. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  147. data/lib/chef/resource/chef_handler.rb +3 -7
  148. data/lib/chef/resource/chef_sleep.rb +1 -1
  149. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  150. data/lib/chef/resource/chocolatey_config.rb +2 -6
  151. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  152. data/lib/chef/resource/chocolatey_source.rb +4 -10
  153. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  154. data/lib/chef/resource/cron_access.rb +2 -4
  155. data/lib/chef/resource/dmg_package.rb +6 -10
  156. data/lib/chef/resource/dpkg_package.rb +1 -1
  157. data/lib/chef/resource/execute.rb +8 -3
  158. data/lib/chef/resource/file.rb +1 -1
  159. data/lib/chef/resource/group.rb +2 -2
  160. data/lib/chef/resource/homebrew_cask.rb +2 -6
  161. data/lib/chef/resource/homebrew_tap.rb +2 -6
  162. data/lib/chef/resource/hostname.rb +21 -17
  163. data/lib/chef/resource/http_request.rb +1 -1
  164. data/lib/chef/resource/inspec_waiver_file_entry.rb +155 -0
  165. data/lib/chef/resource/kernel_module.rb +6 -17
  166. data/lib/chef/resource/locale.rb +2 -3
  167. data/lib/chef/resource/lwrp_base.rb +19 -0
  168. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  169. data/lib/chef/resource/mdadm.rb +53 -7
  170. data/lib/chef/resource/mount.rb +2 -1
  171. data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
  172. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  173. data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
  174. data/lib/chef/resource/plist.rb +7 -7
  175. data/lib/chef/resource/powershell_script.rb +1 -1
  176. data/lib/chef/resource/remote_file.rb +3 -3
  177. data/lib/chef/resource/rhsm_errata.rb +16 -1
  178. data/lib/chef/resource/rhsm_errata_level.rb +10 -1
  179. data/lib/chef/resource/rhsm_register.rb +12 -6
  180. data/lib/chef/resource/rhsm_repo.rb +2 -6
  181. data/lib/chef/resource/rhsm_subscription.rb +2 -6
  182. data/lib/chef/resource/scm/git.rb +1 -1
  183. data/lib/chef/resource/sudo.rb +6 -6
  184. data/lib/chef/resource/sysctl.rb +2 -6
  185. data/lib/chef/resource/systemd_unit.rb +2 -2
  186. data/lib/chef/resource/template.rb +1 -1
  187. data/lib/chef/resource/timezone.rb +1 -3
  188. data/lib/chef/resource/user/mac_user.rb +1 -1
  189. data/lib/chef/resource/user_ulimit.rb +2 -2
  190. data/lib/chef/resource/windows_ad_join.rb +2 -6
  191. data/lib/chef/resource/windows_audit_policy.rb +1 -1
  192. data/lib/chef/resource/windows_auto_run.rb +2 -5
  193. data/lib/chef/resource/windows_certificate.rb +207 -73
  194. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  195. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  196. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  197. data/lib/chef/resource/windows_dns_record.rb +2 -6
  198. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  199. data/lib/chef/resource/windows_env.rb +6 -5
  200. data/lib/chef/resource/windows_feature.rb +3 -9
  201. data/lib/chef/resource/windows_feature_dism.rb +2 -6
  202. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  203. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  204. data/lib/chef/resource/windows_firewall_rule.rb +2 -5
  205. data/lib/chef/resource/windows_font.rb +3 -5
  206. data/lib/chef/resource/windows_pagefile.rb +4 -8
  207. data/lib/chef/resource/windows_path.rb +4 -4
  208. data/lib/chef/resource/windows_printer.rb +4 -4
  209. data/lib/chef/resource/windows_printer_port.rb +6 -6
  210. data/lib/chef/resource/windows_security_policy.rb +56 -40
  211. data/lib/chef/resource/windows_share.rb +14 -21
  212. data/lib/chef/resource/windows_shortcut.rb +4 -6
  213. data/lib/chef/resource/windows_task.rb +18 -6
  214. data/lib/chef/resource/windows_uac.rb +1 -1
  215. data/lib/chef/resource/windows_user_privilege.rb +4 -4
  216. data/lib/chef/resource/windows_workgroup.rb +1 -2
  217. data/lib/chef/resource_builder.rb +8 -2
  218. data/lib/chef/resources.rb +1 -1
  219. data/lib/chef/run_lock.rb +1 -1
  220. data/lib/chef/runner.rb +1 -1
  221. data/lib/chef/shell/ext.rb +3 -3
  222. data/lib/chef/user.rb +0 -1
  223. data/lib/chef/user_v1.rb +3 -4
  224. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  225. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  226. data/lib/chef/version.rb +1 -1
  227. data/lib/chef/win32/api.rb +9 -2
  228. data/lib/chef/win32/registry.rb +4 -2
  229. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  230. data/spec/data/lwrp/resources/bar.rb +2 -0
  231. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  232. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  233. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  234. data/spec/data/lwrp/resources/foo.rb +2 -0
  235. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  236. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  237. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  238. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  239. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  240. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  241. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  242. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  243. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  244. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  245. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  246. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  247. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  248. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  249. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  250. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  251. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  252. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  253. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  254. data/spec/functional/resource/apt_package_spec.rb +1 -1
  255. data/spec/functional/resource/chocolatey_package_spec.rb +13 -0
  256. data/spec/functional/resource/cron_spec.rb +1 -1
  257. data/spec/functional/resource/dnf_package_spec.rb +857 -534
  258. data/spec/functional/resource/group_spec.rb +1 -1
  259. data/spec/functional/resource/link_spec.rb +1 -1
  260. data/spec/functional/resource/registry_spec.rb +8 -8
  261. data/spec/functional/resource/remote_file_spec.rb +1 -1
  262. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  263. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  264. data/spec/functional/resource/windows_env_spec.rb +2 -2
  265. data/spec/functional/resource/yum_package_spec.rb +495 -428
  266. data/spec/functional/version_spec.rb +1 -1
  267. data/spec/functional/win32/registry_spec.rb +1 -1
  268. data/spec/integration/client/client_spec.rb +5 -22
  269. data/spec/integration/client/exit_code_spec.rb +1 -1
  270. data/spec/integration/client/ipv6_spec.rb +1 -1
  271. data/spec/integration/compliance/compliance_spec.rb +3 -2
  272. data/spec/integration/ohai/ohai_spec.rb +7 -6
  273. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  274. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  275. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  276. data/spec/integration/recipes/notifies_spec.rb +15 -1
  277. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  278. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  279. data/spec/integration/recipes/unified_mode_spec.rb +71 -1
  280. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  281. data/spec/spec_helper.rb +14 -13
  282. data/spec/support/chef_helpers.rb +1 -17
  283. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  284. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  285. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  286. data/spec/support/matchers/leak.rb +7 -9
  287. data/spec/support/platform_helpers.rb +5 -8
  288. data/spec/support/shared/functional/execute_resource.rb +1 -1
  289. data/spec/support/shared/integration/integration_helper.rb +0 -1
  290. data/spec/support/shared/unit/provider/file.rb +15 -1
  291. data/spec/support/shared/unit/script_resource.rb +2 -2
  292. data/spec/unit/application/solo_spec.rb +2 -2
  293. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  294. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
  295. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  296. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  297. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  298. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  299. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  300. data/spec/unit/compliance/runner_spec.rb +85 -10
  301. data/spec/unit/data_bag_item_spec.rb +1 -6
  302. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  303. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  304. data/spec/unit/lwrp_spec.rb +1 -1
  305. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  306. data/spec/unit/node/attribute_spec.rb +1 -1
  307. data/spec/unit/node_spec.rb +78 -0
  308. data/spec/unit/org_group_spec.rb +45 -0
  309. data/spec/unit/property_spec.rb +23 -22
  310. data/spec/unit/provider/cron_spec.rb +1 -1
  311. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  312. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  313. data/spec/unit/provider/group/pw_spec.rb +2 -2
  314. data/spec/unit/provider/group_spec.rb +1 -1
  315. data/spec/unit/provider/link_spec.rb +1 -1
  316. data/spec/unit/provider/mount/mount_spec.rb +51 -0
  317. data/spec/unit/provider/package/apt_spec.rb +84 -18
  318. data/spec/unit/provider/package/deb_spec.rb +3 -3
  319. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -0
  320. data/spec/unit/provider/package/rubygems_spec.rb +21 -33
  321. data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -0
  322. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  323. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  324. data/spec/unit/provider/service/macosx_spec.rb +5 -5
  325. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  326. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  327. data/spec/unit/provider/service/windows_spec.rb +2 -2
  328. data/spec/unit/provider/subversion_spec.rb +2 -2
  329. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  330. data/spec/unit/provider/zypper_repository_spec.rb +2 -2
  331. data/spec/unit/provider_spec.rb +0 -8
  332. data/spec/unit/resource/chef_client_cron_spec.rb +8 -8
  333. data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
  334. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  335. data/spec/unit/resource/windows_task_spec.rb +1 -1
  336. data/spec/unit/user_spec.rb +1 -1
  337. data/spec/unit/user_v1_spec.rb +6 -4
  338. data/tasks/rspec.rb +9 -6
  339. metadata +23 -528
  340. data/bin/knife +0 -24
  341. data/lib/chef/application/knife.rb +0 -234
  342. data/lib/chef/application/windows_service.rb +0 -338
  343. data/lib/chef/application/windows_service_manager.rb +0 -205
  344. data/lib/chef/chef_fs/knife.rb +0 -160
  345. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  346. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  347. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  348. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  349. data/lib/chef/knife.rb +0 -665
  350. data/lib/chef/knife/acl_add.rb +0 -57
  351. data/lib/chef/knife/acl_base.rb +0 -183
  352. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  353. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  354. data/lib/chef/knife/acl_remove.rb +0 -62
  355. data/lib/chef/knife/acl_show.rb +0 -56
  356. data/lib/chef/knife/bootstrap.rb +0 -1192
  357. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  358. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  359. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  360. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  361. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  362. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  363. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  364. data/lib/chef/knife/client_create.rb +0 -101
  365. data/lib/chef/knife/client_delete.rb +0 -62
  366. data/lib/chef/knife/client_edit.rb +0 -52
  367. data/lib/chef/knife/client_key_create.rb +0 -73
  368. data/lib/chef/knife/client_key_delete.rb +0 -80
  369. data/lib/chef/knife/client_key_edit.rb +0 -83
  370. data/lib/chef/knife/client_key_list.rb +0 -73
  371. data/lib/chef/knife/client_key_show.rb +0 -80
  372. data/lib/chef/knife/client_list.rb +0 -41
  373. data/lib/chef/knife/client_reregister.rb +0 -58
  374. data/lib/chef/knife/client_show.rb +0 -48
  375. data/lib/chef/knife/config_get.rb +0 -39
  376. data/lib/chef/knife/config_get_profile.rb +0 -37
  377. data/lib/chef/knife/config_list.rb +0 -139
  378. data/lib/chef/knife/config_list_profiles.rb +0 -37
  379. data/lib/chef/knife/config_show.rb +0 -127
  380. data/lib/chef/knife/config_use.rb +0 -61
  381. data/lib/chef/knife/config_use_profile.rb +0 -47
  382. data/lib/chef/knife/configure.rb +0 -150
  383. data/lib/chef/knife/configure_client.rb +0 -48
  384. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  385. data/lib/chef/knife/cookbook_delete.rb +0 -151
  386. data/lib/chef/knife/cookbook_download.rb +0 -142
  387. data/lib/chef/knife/cookbook_list.rb +0 -47
  388. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  389. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  390. data/lib/chef/knife/cookbook_show.rb +0 -98
  391. data/lib/chef/knife/cookbook_upload.rb +0 -292
  392. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  393. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  394. data/lib/chef/knife/core/formatting_options.rb +0 -49
  395. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  396. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  397. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  398. data/lib/chef/knife/core/node_editor.rb +0 -130
  399. data/lib/chef/knife/core/node_presenter.rb +0 -133
  400. data/lib/chef/knife/core/object_loader.rb +0 -115
  401. data/lib/chef/knife/core/status_presenter.rb +0 -147
  402. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  403. data/lib/chef/knife/core/text_formatter.rb +0 -85
  404. data/lib/chef/knife/core/ui.rb +0 -338
  405. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -406
  406. data/lib/chef/knife/data_bag_create.rb +0 -81
  407. data/lib/chef/knife/data_bag_delete.rb +0 -49
  408. data/lib/chef/knife/data_bag_edit.rb +0 -74
  409. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  410. data/lib/chef/knife/data_bag_list.rb +0 -42
  411. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  412. data/lib/chef/knife/data_bag_show.rb +0 -69
  413. data/lib/chef/knife/delete.rb +0 -125
  414. data/lib/chef/knife/deps.rb +0 -156
  415. data/lib/chef/knife/diff.rb +0 -83
  416. data/lib/chef/knife/download.rb +0 -84
  417. data/lib/chef/knife/edit.rb +0 -88
  418. data/lib/chef/knife/environment_compare.rb +0 -128
  419. data/lib/chef/knife/environment_create.rb +0 -52
  420. data/lib/chef/knife/environment_delete.rb +0 -44
  421. data/lib/chef/knife/environment_edit.rb +0 -44
  422. data/lib/chef/knife/environment_from_file.rb +0 -84
  423. data/lib/chef/knife/environment_list.rb +0 -41
  424. data/lib/chef/knife/environment_show.rb +0 -47
  425. data/lib/chef/knife/exec.rb +0 -99
  426. data/lib/chef/knife/group_add.rb +0 -55
  427. data/lib/chef/knife/group_create.rb +0 -49
  428. data/lib/chef/knife/group_destroy.rb +0 -53
  429. data/lib/chef/knife/group_list.rb +0 -43
  430. data/lib/chef/knife/group_remove.rb +0 -56
  431. data/lib/chef/knife/group_show.rb +0 -49
  432. data/lib/chef/knife/key_create.rb +0 -112
  433. data/lib/chef/knife/key_create_base.rb +0 -50
  434. data/lib/chef/knife/key_delete.rb +0 -55
  435. data/lib/chef/knife/key_edit.rb +0 -118
  436. data/lib/chef/knife/key_edit_base.rb +0 -55
  437. data/lib/chef/knife/key_list.rb +0 -90
  438. data/lib/chef/knife/key_list_base.rb +0 -45
  439. data/lib/chef/knife/key_show.rb +0 -53
  440. data/lib/chef/knife/list.rb +0 -177
  441. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  442. data/lib/chef/knife/node_create.rb +0 -47
  443. data/lib/chef/knife/node_delete.rb +0 -46
  444. data/lib/chef/knife/node_edit.rb +0 -70
  445. data/lib/chef/knife/node_environment_set.rb +0 -53
  446. data/lib/chef/knife/node_from_file.rb +0 -51
  447. data/lib/chef/knife/node_list.rb +0 -44
  448. data/lib/chef/knife/node_policy_set.rb +0 -79
  449. data/lib/chef/knife/node_run_list_add.rb +0 -104
  450. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  451. data/lib/chef/knife/node_run_list_set.rb +0 -66
  452. data/lib/chef/knife/node_show.rb +0 -63
  453. data/lib/chef/knife/null.rb +0 -12
  454. data/lib/chef/knife/raw.rb +0 -123
  455. data/lib/chef/knife/recipe_list.rb +0 -32
  456. data/lib/chef/knife/rehash.rb +0 -50
  457. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  458. data/lib/chef/knife/role_create.rb +0 -53
  459. data/lib/chef/knife/role_delete.rb +0 -46
  460. data/lib/chef/knife/role_edit.rb +0 -45
  461. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  462. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  463. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  464. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  465. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  466. data/lib/chef/knife/role_from_file.rb +0 -51
  467. data/lib/chef/knife/role_list.rb +0 -42
  468. data/lib/chef/knife/role_run_list_add.rb +0 -87
  469. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  470. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  471. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  472. data/lib/chef/knife/role_run_list_set.rb +0 -69
  473. data/lib/chef/knife/role_show.rb +0 -48
  474. data/lib/chef/knife/search.rb +0 -194
  475. data/lib/chef/knife/serve.rb +0 -65
  476. data/lib/chef/knife/show.rb +0 -72
  477. data/lib/chef/knife/ssh.rb +0 -645
  478. data/lib/chef/knife/ssl_check.rb +0 -284
  479. data/lib/chef/knife/ssl_fetch.rb +0 -161
  480. data/lib/chef/knife/status.rb +0 -95
  481. data/lib/chef/knife/supermarket_download.rb +0 -121
  482. data/lib/chef/knife/supermarket_install.rb +0 -192
  483. data/lib/chef/knife/supermarket_list.rb +0 -76
  484. data/lib/chef/knife/supermarket_search.rb +0 -53
  485. data/lib/chef/knife/supermarket_share.rb +0 -166
  486. data/lib/chef/knife/supermarket_show.rb +0 -66
  487. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  488. data/lib/chef/knife/tag_create.rb +0 -52
  489. data/lib/chef/knife/tag_delete.rb +0 -60
  490. data/lib/chef/knife/tag_list.rb +0 -47
  491. data/lib/chef/knife/upload.rb +0 -86
  492. data/lib/chef/knife/user_create.rb +0 -107
  493. data/lib/chef/knife/user_delete.rb +0 -44
  494. data/lib/chef/knife/user_dissociate.rb +0 -42
  495. data/lib/chef/knife/user_edit.rb +0 -52
  496. data/lib/chef/knife/user_invite_add.rb +0 -43
  497. data/lib/chef/knife/user_invite_list.rb +0 -34
  498. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  499. data/lib/chef/knife/user_key_create.rb +0 -73
  500. data/lib/chef/knife/user_key_delete.rb +0 -80
  501. data/lib/chef/knife/user_key_edit.rb +0 -83
  502. data/lib/chef/knife/user_key_list.rb +0 -73
  503. data/lib/chef/knife/user_key_show.rb +0 -80
  504. data/lib/chef/knife/user_list.rb +0 -42
  505. data/lib/chef/knife/user_reregister.rb +0 -59
  506. data/lib/chef/knife/user_show.rb +0 -48
  507. data/lib/chef/knife/xargs.rb +0 -282
  508. data/lib/chef/knife/yaml_convert.rb +0 -91
  509. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
  510. data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
  511. data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
  512. data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
  513. data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
  514. data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
  515. data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
  516. data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
  517. data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
  518. data/lib/chef/provider/package/yum/simplejson/tool.py +0 -37
  519. data/lib/chef/resource/user/dscl_user.rb +0 -35
  520. data/spec/functional/knife/configure_spec.rb +0 -33
  521. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  522. data/spec/functional/knife/exec_spec.rb +0 -55
  523. data/spec/functional/knife/rehash_spec.rb +0 -39
  524. data/spec/functional/knife/smoke_test.rb +0 -42
  525. data/spec/functional/knife/ssh_spec.rb +0 -352
  526. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  527. data/spec/functional/resource/windows_service_spec.rb +0 -105
  528. data/spec/functional/win32/service_manager_spec.rb +0 -220
  529. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  530. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  531. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  532. data/spec/integration/knife/chefignore_spec.rb +0 -301
  533. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  534. data/spec/integration/knife/client_create_spec.rb +0 -70
  535. data/spec/integration/knife/client_delete_spec.rb +0 -64
  536. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  537. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  538. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  539. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  540. data/spec/integration/knife/client_list_spec.rb +0 -49
  541. data/spec/integration/knife/client_show_spec.rb +0 -37
  542. data/spec/integration/knife/common_options_spec.rb +0 -174
  543. data/spec/integration/knife/config_list_spec.rb +0 -220
  544. data/spec/integration/knife/config_show_spec.rb +0 -192
  545. data/spec/integration/knife/config_use_spec.rb +0 -198
  546. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  547. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  548. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  549. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  550. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  551. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  552. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  553. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  554. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  555. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  556. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  557. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  558. data/spec/integration/knife/delete_spec.rb +0 -1018
  559. data/spec/integration/knife/deps_spec.rb +0 -703
  560. data/spec/integration/knife/diff_spec.rb +0 -605
  561. data/spec/integration/knife/download_spec.rb +0 -1336
  562. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  563. data/spec/integration/knife/environment_create_spec.rb +0 -41
  564. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  565. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  566. data/spec/integration/knife/environment_list_spec.rb +0 -42
  567. data/spec/integration/knife/environment_show_spec.rb +0 -77
  568. data/spec/integration/knife/list_spec.rb +0 -1060
  569. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  570. data/spec/integration/knife/node_create_spec.rb +0 -47
  571. data/spec/integration/knife/node_delete_spec.rb +0 -48
  572. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  573. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  574. data/spec/integration/knife/node_list_spec.rb +0 -45
  575. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  576. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  577. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  578. data/spec/integration/knife/node_show_spec.rb +0 -36
  579. data/spec/integration/knife/raw_spec.rb +0 -297
  580. data/spec/integration/knife/redirection_spec.rb +0 -64
  581. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  582. data/spec/integration/knife/role_create_spec.rb +0 -41
  583. data/spec/integration/knife/role_delete_spec.rb +0 -48
  584. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  585. data/spec/integration/knife/role_list_spec.rb +0 -45
  586. data/spec/integration/knife/role_show_spec.rb +0 -51
  587. data/spec/integration/knife/search_node_spec.rb +0 -40
  588. data/spec/integration/knife/serve_spec.rb +0 -92
  589. data/spec/integration/knife/show_spec.rb +0 -197
  590. data/spec/integration/knife/upload_spec.rb +0 -1617
  591. data/spec/support/shared/functional/win32_service.rb +0 -57
  592. data/spec/unit/application/knife_spec.rb +0 -241
  593. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  594. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  595. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  596. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  597. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  598. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  599. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  600. data/spec/unit/knife/client_create_spec.rb +0 -169
  601. data/spec/unit/knife/client_delete_spec.rb +0 -99
  602. data/spec/unit/knife/client_edit_spec.rb +0 -53
  603. data/spec/unit/knife/client_list_spec.rb +0 -34
  604. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  605. data/spec/unit/knife/client_show_spec.rb +0 -52
  606. data/spec/unit/knife/configure_client_spec.rb +0 -81
  607. data/spec/unit/knife/configure_spec.rb +0 -190
  608. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  609. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  610. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  611. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  612. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  613. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  614. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  615. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  616. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  617. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  618. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  619. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  620. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  621. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  622. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  623. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  624. data/spec/unit/knife/core/ui_spec.rb +0 -656
  625. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  626. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  627. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  628. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  629. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  630. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  631. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  632. data/spec/unit/knife/environment_create_spec.rb +0 -91
  633. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  634. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  635. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  636. data/spec/unit/knife/environment_list_spec.rb +0 -54
  637. data/spec/unit/knife/environment_show_spec.rb +0 -52
  638. data/spec/unit/knife/key_create_spec.rb +0 -223
  639. data/spec/unit/knife/key_delete_spec.rb +0 -133
  640. data/spec/unit/knife/key_edit_spec.rb +0 -264
  641. data/spec/unit/knife/key_helper.rb +0 -74
  642. data/spec/unit/knife/key_list_spec.rb +0 -216
  643. data/spec/unit/knife/key_show_spec.rb +0 -126
  644. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  645. data/spec/unit/knife/node_delete_spec.rb +0 -77
  646. data/spec/unit/knife/node_edit_spec.rb +0 -116
  647. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  648. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  649. data/spec/unit/knife/node_list_spec.rb +0 -62
  650. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  651. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  652. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  653. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  654. data/spec/unit/knife/node_show_spec.rb +0 -65
  655. data/spec/unit/knife/raw_spec.rb +0 -43
  656. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  657. data/spec/unit/knife/role_create_spec.rb +0 -80
  658. data/spec/unit/knife/role_delete_spec.rb +0 -67
  659. data/spec/unit/knife/role_edit_spec.rb +0 -77
  660. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  661. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  662. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  663. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  664. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  665. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  666. data/spec/unit/knife/role_list_spec.rb +0 -54
  667. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  668. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  669. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  670. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  671. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  672. data/spec/unit/knife/role_show_spec.rb +0 -59
  673. data/spec/unit/knife/ssh_spec.rb +0 -403
  674. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  675. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  676. data/spec/unit/knife/status_spec.rb +0 -112
  677. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  678. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  679. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  680. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  681. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  682. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  683. data/spec/unit/knife/tag_create_spec.rb +0 -23
  684. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  685. data/spec/unit/knife/tag_list_spec.rb +0 -23
  686. data/spec/unit/knife/user_create_spec.rb +0 -184
  687. data/spec/unit/knife/user_delete_spec.rb +0 -46
  688. data/spec/unit/knife/user_edit_spec.rb +0 -48
  689. data/spec/unit/knife/user_list_spec.rb +0 -36
  690. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  691. data/spec/unit/knife/user_show_spec.rb +0 -46
  692. data/spec/unit/knife_spec.rb +0 -634
  693. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  694. data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,1336 +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/download"
21
- require "chef/knife/diff"
22
-
23
- describe "knife download", :workstation do
24
- include IntegrationSupport
25
- include KnifeSupport
26
-
27
- context "without versioned cookbooks" do
28
- when_the_chef_server "has one of each thing" do
29
-
30
- before do
31
- client "x", {}
32
- cookbook "x", "1.0.0"
33
- data_bag "x", { "y" => {} }
34
- environment "x", {}
35
- node "x", {}
36
- role "x", {}
37
- user "x", {}
38
- end
39
-
40
- when_the_repository "has only top-level directories" do
41
- before do
42
- directory "clients"
43
- directory "cookbooks"
44
- directory "data_bags"
45
- directory "environments"
46
- directory "nodes"
47
- directory "roles"
48
- directory "users"
49
- end
50
-
51
- it "knife download downloads everything" do
52
- knife("download /").should_succeed <<~EOM
53
- Created /clients/chef-validator.json
54
- Created /clients/chef-webui.json
55
- Created /clients/x.json
56
- Created /cookbooks/x
57
- Created /cookbooks/x/metadata.rb
58
- Created /data_bags/x
59
- Created /data_bags/x/y.json
60
- Created /environments/_default.json
61
- Created /environments/x.json
62
- Created /nodes/x.json
63
- Created /roles/x.json
64
- Created /users/admin.json
65
- Created /users/x.json
66
- EOM
67
- knife("diff --name-status /").should_succeed ""
68
- end
69
- end
70
-
71
- when_the_repository "has an identical copy of each thing" do
72
- before do
73
- file "clients/chef-validator.json", { "validator" => true, "public_key" => ChefZero::PUBLIC_KEY }
74
- file "clients/chef-webui.json", { "admin" => true, "public_key" => ChefZero::PUBLIC_KEY }
75
- file "clients/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
76
- file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
77
- file "data_bags/x/y.json", {}
78
- file "environments/_default.json", { "description" => "The default Chef environment" }
79
- file "environments/x.json", {}
80
- file "nodes/x.json", { "normal" => { "tags" => [] } }
81
- file "roles/x.json", {}
82
- file "users/admin.json", { "admin" => true, "public_key" => ChefZero::PUBLIC_KEY }
83
- file "users/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
84
- end
85
-
86
- it "knife download makes no changes" do
87
- knife("download /").should_succeed ""
88
- knife("diff --name-status /").should_succeed ""
89
- end
90
-
91
- it "knife download --purge makes no changes" do
92
- knife("download --purge /").should_succeed ""
93
- knife("diff --name-status /").should_succeed ""
94
- end
95
-
96
- context "except the role file" do
97
- before do
98
- file "roles/x.json", <<~EOM
99
- {
100
- "chef_type": "role",
101
- "default_attributes": {
102
- },
103
- "description": "blarghle",
104
- "env_run_lists": {
105
- },
106
- "json_class": "Chef::Role",
107
- "name": "x",
108
- "override_attributes": {
109
- },
110
- "run_list": [
111
-
112
- ]
113
- }
114
- EOM
115
- end
116
-
117
- it "knife download changes the role" do
118
- knife("download /").should_succeed "Updated /roles/x.json\n"
119
- knife("diff --name-status /").should_succeed ""
120
- end
121
-
122
- it "knife download --no-diff does not change the role" do
123
- knife("download --no-diff /").should_succeed ""
124
- knife("diff --name-status /").should_succeed "M\t/roles/x.json\n"
125
- end
126
- end
127
-
128
- context "except the role file is textually different, but not ACTUALLY different" do
129
- before do
130
- file "roles/x.json", <<~EOM
131
- {
132
- "chef_type": "role",
133
- "default_attributes": {
134
- },
135
- "env_run_lists": {
136
- },
137
- "json_class": "Chef::Role",
138
- "name": "x",
139
- "description": "",
140
- "override_attributes": {
141
- },
142
- "run_list": [
143
-
144
- ]
145
- }
146
- EOM
147
- end
148
-
149
- it "knife download / does not change anything" do
150
- knife("download /").should_succeed ""
151
- knife("diff --name-status /").should_succeed ""
152
- end
153
- end
154
-
155
- context "as well as one extra copy of each thing" do
156
- before do
157
- file "clients/y.json", { "public_key" => ChefZero::PUBLIC_KEY }
158
- file "cookbooks/x/blah.rb", ""
159
- file "cookbooks/y/metadata.rb", cb_metadata("x", "1.0.0")
160
- file "data_bags/x/z.json", {}
161
- file "data_bags/y/zz.json", {}
162
- file "environments/y.json", {}
163
- file "nodes/y.json", {}
164
- file "roles/y.json", {}
165
- file "users/y.json", { "public_key" => ChefZero::PUBLIC_KEY }
166
- end
167
-
168
- it "knife download does nothing" do
169
- knife("download /").should_succeed ""
170
- knife("diff --name-status /").should_succeed <<~EOM
171
- A\t/clients/y.json
172
- A\t/cookbooks/x/blah.rb
173
- A\t/cookbooks/y
174
- A\t/data_bags/x/z.json
175
- A\t/data_bags/y
176
- A\t/environments/y.json
177
- A\t/nodes/y.json
178
- A\t/roles/y.json
179
- A\t/users/y.json
180
- EOM
181
- end
182
-
183
- it "knife download --purge deletes the extra files" do
184
- knife("download --purge /").should_succeed <<~EOM
185
- Deleted extra entry /clients/y.json (purge is on)
186
- Deleted extra entry /cookbooks/x/blah.rb (purge is on)
187
- Deleted extra entry /cookbooks/y (purge is on)
188
- Deleted extra entry /data_bags/x/z.json (purge is on)
189
- Deleted extra entry /data_bags/y (purge is on)
190
- Deleted extra entry /environments/y.json (purge is on)
191
- Deleted extra entry /nodes/y.json (purge is on)
192
- Deleted extra entry /roles/y.json (purge is on)
193
- Deleted extra entry /users/y.json (purge is on)
194
- EOM
195
- knife("diff --name-status /").should_succeed ""
196
- end
197
- end
198
- end
199
-
200
- when_the_repository "is empty" do
201
- it "knife download creates the extra files" do
202
- knife("download /").should_succeed <<~EOM
203
- Created /clients
204
- Created /clients/chef-validator.json
205
- Created /clients/chef-webui.json
206
- Created /clients/x.json
207
- Created /cookbooks
208
- Created /cookbooks/x
209
- Created /cookbooks/x/metadata.rb
210
- Created /data_bags
211
- Created /data_bags/x
212
- Created /data_bags/x/y.json
213
- Created /environments
214
- Created /environments/_default.json
215
- Created /environments/x.json
216
- Created /nodes
217
- Created /nodes/x.json
218
- Created /roles
219
- Created /roles/x.json
220
- Created /users
221
- Created /users/admin.json
222
- Created /users/x.json
223
- EOM
224
- knife("diff --name-status /").should_succeed ""
225
- end
226
-
227
- it "knife download --no-diff creates the extra files" do
228
- knife("download --no-diff /").should_succeed <<~EOM
229
- Created /clients
230
- Created /clients/chef-validator.json
231
- Created /clients/chef-webui.json
232
- Created /clients/x.json
233
- Created /cookbooks
234
- Created /cookbooks/x
235
- Created /cookbooks/x/metadata.rb
236
- Created /data_bags
237
- Created /data_bags/x
238
- Created /data_bags/x/y.json
239
- Created /environments
240
- Created /environments/_default.json
241
- Created /environments/x.json
242
- Created /nodes
243
- Created /nodes/x.json
244
- Created /roles
245
- Created /roles/x.json
246
- Created /users
247
- Created /users/admin.json
248
- Created /users/x.json
249
- EOM
250
- knife("diff --name-status /").should_succeed ""
251
- end
252
-
253
- context "when current directory is top level" do
254
- before do
255
- cwd "."
256
- end
257
-
258
- it "knife download with no parameters reports an error" do
259
- knife("download").should_fail "FATAL: You must specify at least one argument. If you want to download everything in this directory, run \"knife download .\"\n", stdout: /USAGE/
260
- end
261
- end
262
- end
263
- end
264
-
265
- # Test download of an item when the other end doesn't even have the container
266
- when_the_repository "is empty" do
267
- when_the_chef_server "has two data bag items" do
268
- before do
269
- data_bag "x", { "y" => {}, "z" => {} }
270
- end
271
-
272
- it "knife download of one data bag item itself succeeds" do
273
- knife("download /data_bags/x/y.json").should_succeed <<~EOM
274
- Created /data_bags
275
- Created /data_bags/x
276
- Created /data_bags/x/y.json
277
- EOM
278
- knife("diff --name-status /data_bags").should_succeed <<~EOM
279
- D\t/data_bags/x/z.json
280
- EOM
281
- end
282
-
283
- it "knife download /data_bags/x /data_bags/x/y.json downloads x once" do
284
- knife("download /data_bags/x /data_bags/x/y.json").should_succeed <<~EOM
285
- Created /data_bags
286
- Created /data_bags/x
287
- Created /data_bags/x/y.json
288
- Created /data_bags/x/z.json
289
- EOM
290
- end
291
- end
292
- end
293
-
294
- when_the_repository "has three data bag items" do
295
- before do
296
- file "data_bags/x/deleted.json", <<~EOM
297
- {
298
- "id": "deleted"
299
- }
300
- EOM
301
- file "data_bags/x/modified.json", <<~EOM
302
- {
303
- "id": "modified"
304
- }
305
- EOM
306
- file "data_bags/x/unmodified.json", <<~EOM
307
- {
308
- "id": "unmodified"
309
- }
310
- EOM
311
- end
312
-
313
- when_the_chef_server "has a modified, unmodified, added and deleted data bag item" do
314
- before do
315
- data_bag "x", {
316
- "added" => {},
317
- "modified" => { "foo" => "bar" },
318
- "unmodified" => {},
319
- }
320
- end
321
-
322
- it "knife download of the modified file succeeds" do
323
- knife("download /data_bags/x/modified.json").should_succeed <<~EOM
324
- Updated /data_bags/x/modified.json
325
- EOM
326
- knife("diff --name-status /data_bags").should_succeed <<~EOM
327
- D\t/data_bags/x/added.json
328
- A\t/data_bags/x/deleted.json
329
- EOM
330
- end
331
- it "knife download of the unmodified file does nothing" do
332
- knife("download /data_bags/x/unmodified.json").should_succeed ""
333
- knife("diff --name-status /data_bags").should_succeed <<~EOM
334
- D\t/data_bags/x/added.json
335
- M\t/data_bags/x/modified.json
336
- A\t/data_bags/x/deleted.json
337
- EOM
338
- end
339
- it "knife download of the added file succeeds" do
340
- knife("download /data_bags/x/added.json").should_succeed <<~EOM
341
- Created /data_bags/x/added.json
342
- EOM
343
- knife("diff --name-status /data_bags").should_succeed <<~EOM
344
- M\t/data_bags/x/modified.json
345
- A\t/data_bags/x/deleted.json
346
- EOM
347
- end
348
- it "knife download of the deleted file does nothing" do
349
- knife("download /data_bags/x/deleted.json").should_succeed ""
350
- knife("diff --name-status /data_bags").should_succeed <<~EOM
351
- D\t/data_bags/x/added.json
352
- M\t/data_bags/x/modified.json
353
- A\t/data_bags/x/deleted.json
354
- EOM
355
- end
356
- it "knife download --purge of the deleted file deletes it" do
357
- knife("download --purge /data_bags/x/deleted.json").should_succeed <<~EOM
358
- Deleted extra entry /data_bags/x/deleted.json (purge is on)
359
- EOM
360
- knife("diff --name-status /data_bags").should_succeed <<~EOM
361
- D\t/data_bags/x/added.json
362
- M\t/data_bags/x/modified.json
363
- EOM
364
- end
365
- it "knife download of the entire data bag downloads everything" do
366
- knife("download /data_bags/x").should_succeed <<~EOM
367
- Created /data_bags/x/added.json
368
- Updated /data_bags/x/modified.json
369
- EOM
370
- knife("diff --name-status /data_bags").should_succeed <<~EOM
371
- A\t/data_bags/x/deleted.json
372
- EOM
373
- end
374
- it "knife download --purge of the entire data bag downloads everything" do
375
- knife("download --purge /data_bags/x").should_succeed <<~EOM
376
- Created /data_bags/x/added.json
377
- Updated /data_bags/x/modified.json
378
- Deleted extra entry /data_bags/x/deleted.json (purge is on)
379
- EOM
380
- knife("diff --name-status /data_bags").should_succeed ""
381
- end
382
- context "when cwd is the /data_bags directory" do
383
- before do
384
- cwd "data_bags"
385
- end
386
- it "knife download fails" do
387
- knife("download").should_fail "FATAL: You must specify at least one argument. If you want to download everything in this directory, run \"knife download .\"\n", stdout: /USAGE/
388
- end
389
- it "knife download --purge . downloads everything" do
390
- knife("download --purge .").should_succeed <<~EOM
391
- Created x/added.json
392
- Updated x/modified.json
393
- Deleted extra entry x/deleted.json (purge is on)
394
- EOM
395
- knife("diff --name-status /data_bags").should_succeed ""
396
- end
397
- it "knife download --purge * downloads everything" do
398
- knife("download --purge *").should_succeed <<~EOM
399
- Created x/added.json
400
- Updated x/modified.json
401
- Deleted extra entry x/deleted.json (purge is on)
402
- EOM
403
- knife("diff --name-status /data_bags").should_succeed ""
404
- end
405
- end
406
- end
407
- end
408
-
409
- when_the_repository "has a cookbook" do
410
- before do
411
- file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
412
- file "cookbooks/x/z.rb", ""
413
- end
414
-
415
- when_the_chef_server "has a modified, added and deleted file for the cookbook" do
416
- before do
417
- cookbook "x", "1.0.0", { "metadata.rb" => cb_metadata("x", "1.0.0", "#extra content"), "y.rb" => "hi" }
418
- end
419
-
420
- it "knife download of a modified file succeeds" do
421
- knife("download /cookbooks/x/metadata.rb").should_succeed "Updated /cookbooks/x/metadata.rb\n"
422
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
423
- D\t/cookbooks/x/y.rb
424
- A\t/cookbooks/x/z.rb
425
- EOM
426
- end
427
- it "knife download of a deleted file does nothing" do
428
- knife("download /cookbooks/x/z.rb").should_succeed ""
429
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
430
- M\t/cookbooks/x/metadata.rb
431
- D\t/cookbooks/x/y.rb
432
- A\t/cookbooks/x/z.rb
433
- EOM
434
- end
435
- it "knife download --purge of a deleted file succeeds" do
436
- knife("download --purge /cookbooks/x/z.rb").should_succeed "Deleted extra entry /cookbooks/x/z.rb (purge is on)\n"
437
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
438
- M\t/cookbooks/x/metadata.rb
439
- D\t/cookbooks/x/y.rb
440
- EOM
441
- end
442
- it "knife download of an added file succeeds" do
443
- knife("download /cookbooks/x/y.rb").should_succeed "Created /cookbooks/x/y.rb\n"
444
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
445
- M\t/cookbooks/x/metadata.rb
446
- A\t/cookbooks/x/z.rb
447
- EOM
448
- end
449
- it "knife download of the cookbook itself succeeds" do
450
- knife("download /cookbooks/x").should_succeed <<~EOM
451
- Updated /cookbooks/x/metadata.rb
452
- Created /cookbooks/x/y.rb
453
- EOM
454
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
455
- A\t/cookbooks/x/z.rb
456
- EOM
457
- end
458
- it "knife download --purge of the cookbook itself succeeds" do
459
- knife("download --purge /cookbooks/x").should_succeed <<~EOM
460
- Updated /cookbooks/x/metadata.rb
461
- Created /cookbooks/x/y.rb
462
- Deleted extra entry /cookbooks/x/z.rb (purge is on)
463
- EOM
464
- knife("diff --name-status /cookbooks").should_succeed ""
465
- end
466
- end
467
- end
468
-
469
- when_the_repository "has a cookbook" do
470
- before do
471
- file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
472
- file "cookbooks/x/onlyin1.0.0.rb", "old_text"
473
- end
474
-
475
- when_the_chef_server "has a later version for the cookbook" do
476
- before do
477
- cookbook "x", "1.0.0", { "onlyin1.0.0.rb" => "" }
478
- cookbook "x", "1.0.1", { "onlyin1.0.1.rb" => "hi" }
479
- end
480
-
481
- it "knife download /cookbooks/x downloads the latest version" do
482
- knife("download --purge /cookbooks/x").should_succeed <<~EOM
483
- Updated /cookbooks/x/metadata.rb
484
- Created /cookbooks/x/onlyin1.0.1.rb
485
- Deleted extra entry /cookbooks/x/onlyin1.0.0.rb (purge is on)
486
- EOM
487
- knife("diff --name-status /cookbooks").should_succeed ""
488
- end
489
- end
490
-
491
- when_the_chef_server "has an earlier version for the cookbook" do
492
- before do
493
- cookbook "x", "1.0.0", { "onlyin1.0.0.rb" => "" }
494
- cookbook "x", "0.9.9", { "onlyin0.9.9.rb" => "hi" }
495
- end
496
-
497
- it "knife download /cookbooks/x downloads the updated file" do
498
- knife("download --purge /cookbooks/x").should_succeed <<~EOM
499
- Updated /cookbooks/x/onlyin1.0.0.rb
500
- EOM
501
- knife("diff --name-status /cookbooks").should_succeed ""
502
- end
503
- end
504
-
505
- when_the_chef_server "has a later version for the cookbook, and no current version" do
506
- before do
507
- cookbook "x", "1.0.1", { "onlyin1.0.1.rb" => "hi" }
508
- end
509
-
510
- it "knife download /cookbooks/x downloads the latest version" do
511
- knife("download --purge /cookbooks/x").should_succeed <<~EOM
512
- Updated /cookbooks/x/metadata.rb
513
- Created /cookbooks/x/onlyin1.0.1.rb
514
- Deleted extra entry /cookbooks/x/onlyin1.0.0.rb (purge is on)
515
- EOM
516
- knife("diff --name-status /cookbooks").should_succeed ""
517
- end
518
- end
519
-
520
- when_the_chef_server "has an earlier version for the cookbook, and no current version" do
521
- before do
522
- cookbook "x", "0.9.9", { "onlyin0.9.9.rb" => "hi" }
523
- end
524
-
525
- it "knife download /cookbooks/x downloads the old version" do
526
- knife("download --purge /cookbooks/x").should_succeed <<~EOM
527
- Updated /cookbooks/x/metadata.rb
528
- Created /cookbooks/x/onlyin0.9.9.rb
529
- Deleted extra entry /cookbooks/x/onlyin1.0.0.rb (purge is on)
530
- EOM
531
- knife("diff --name-status /cookbooks").should_succeed ""
532
- end
533
- end
534
- end
535
-
536
- when_the_chef_server "has a role" do
537
- before do
538
- role "x", {}
539
- end
540
- when_the_repository "has the role in ruby" do
541
- before do
542
- file "roles/x.rb", <<~EOM
543
- name "x"
544
- description "x"
545
- EOM
546
- end
547
-
548
- it "knife download refuses to change the role" do
549
- knife("download /roles/x.json").should_succeed "", stderr: "WARNING: /roles/x.rb cannot be updated (can't safely update ruby files).\n"
550
- knife("diff --name-status /roles/x.json").should_succeed "M\t/roles/x.rb\n"
551
- end
552
- end
553
- end
554
-
555
- when_the_chef_server "has an environment" do
556
- before do
557
- environment "x", {}
558
- end
559
- when_the_repository "has an environment with bad JSON" do
560
- before do
561
- file "environments/x.json", "{"
562
- end
563
- it "knife download succeeds" do
564
- warning = <<~EOH
565
- WARN: Parse error reading #{path_to("environments/x.json")} as JSON: parse error: premature EOF
566
- {
567
- (right here) ------^
568
-
569
- EOH
570
- knife("download /environments/x.json").should_succeed "Updated /environments/x.json\n", stderr: warning
571
- knife("diff --name-status /environments/x.json").should_succeed ""
572
- end
573
- end
574
-
575
- when_the_repository "has the same environment with the wrong name in the file" do
576
- before do
577
- file "environments/x.json", { "name" => "y" }
578
- end
579
- it "knife download succeeds" do
580
- knife("download /environments/x.json").should_succeed "Updated /environments/x.json\n"
581
- knife("diff --name-status /environments/x.json").should_succeed ""
582
- end
583
- end
584
-
585
- when_the_repository "has the same environment with no name in the file" do
586
- before do
587
- file "environments/x.json", { "description" => "hi" }
588
- end
589
- it "knife download succeeds" do
590
- knife("download /environments/x.json").should_succeed "Updated /environments/x.json\n"
591
- knife("diff --name-status /environments/x.json").should_succeed ""
592
- end
593
- end
594
- end
595
- end # without versioned cookbooks
596
-
597
- context "with versioned cookbooks" do
598
- before { Chef::Config[:versioned_cookbooks] = true }
599
-
600
- when_the_chef_server "has one of each thing" do
601
- before do
602
- client "x", {}
603
- cookbook "x", "1.0.0"
604
- data_bag "x", { "y" => {} }
605
- environment "x", {}
606
- node "x", {}
607
- role "x", {}
608
- user "x", {}
609
- end
610
-
611
- when_the_repository "has only top-level directories" do
612
- before do
613
- directory "clients"
614
- directory "cookbooks"
615
- directory "data_bags"
616
- directory "environments"
617
- directory "nodes"
618
- directory "roles"
619
- directory "users"
620
- end
621
-
622
- it "knife download downloads everything" do
623
- knife("download /").should_succeed <<~EOM
624
- Created /clients/chef-validator.json
625
- Created /clients/chef-webui.json
626
- Created /clients/x.json
627
- Created /cookbooks/x-1.0.0
628
- Created /cookbooks/x-1.0.0/metadata.rb
629
- Created /data_bags/x
630
- Created /data_bags/x/y.json
631
- Created /environments/_default.json
632
- Created /environments/x.json
633
- Created /nodes/x.json
634
- Created /roles/x.json
635
- Created /users/admin.json
636
- Created /users/x.json
637
- EOM
638
- knife("diff --name-status /").should_succeed ""
639
- end
640
- end
641
-
642
- when_the_repository "has an identical copy of each thing" do
643
- before do
644
- file "clients/chef-validator.json", { "validator" => true, "public_key" => ChefZero::PUBLIC_KEY }
645
- file "clients/chef-webui.json", { "admin" => true, "public_key" => ChefZero::PUBLIC_KEY }
646
- file "clients/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
647
- file "cookbooks/x-1.0.0/metadata.rb", cb_metadata("x", "1.0.0")
648
- file "data_bags/x/y.json", {}
649
- file "environments/_default.json", { "description" => "The default Chef environment" }
650
- file "environments/x.json", {}
651
- file "nodes/x.json", { "normal" => { "tags" => [] } }
652
- file "roles/x.json", {}
653
- file "users/admin.json", { "admin" => true, "public_key" => ChefZero::PUBLIC_KEY }
654
- file "users/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
655
- end
656
-
657
- it "knife download makes no changes" do
658
- knife("download /").should_succeed ""
659
- knife("diff --name-status /").should_succeed ""
660
- end
661
-
662
- it "knife download --purge makes no changes" do
663
- knife("download --purge /").should_succeed ""
664
- knife("diff --name-status /").should_succeed ""
665
- end
666
-
667
- context "except the role file" do
668
- before do
669
- file "roles/x.json", { "description" => "blarghle" }
670
- end
671
-
672
- it "knife download changes the role" do
673
- knife("download /").should_succeed "Updated /roles/x.json\n"
674
- knife("diff --name-status /").should_succeed ""
675
- end
676
- end
677
-
678
- context "except the role file is textually different, but not ACTUALLY different" do
679
- before do
680
- file "roles/x.json", <<~EOM
681
- {
682
- "chef_type": "role" ,
683
- "default_attributes": {
684
- },
685
- "env_run_lists": {
686
- },
687
- "json_class": "Chef::Role",
688
- "name": "x",
689
- "description": "",
690
- "override_attributes": {
691
- },
692
- "run_list": [
693
-
694
- ]
695
- }
696
- EOM
697
- end
698
-
699
- it "knife download / does not change anything" do
700
- knife("download /").should_succeed ""
701
- knife("diff --name-status /").should_succeed ""
702
- end
703
- end
704
-
705
- context "as well as one extra copy of each thing" do
706
- before do
707
- file "clients/y.json", { "public_key" => ChefZero::PUBLIC_KEY }
708
- file "cookbooks/x-1.0.0/blah.rb", ""
709
- file "cookbooks/x-2.0.0/metadata.rb", 'version "2.0.0"'
710
- file "cookbooks/y-1.0.0/metadata.rb", 'version "1.0.0"'
711
- file "data_bags/x/z.json", {}
712
- file "data_bags/y/zz.json", {}
713
- file "environments/y.json", {}
714
- file "nodes/y.json", {}
715
- file "roles/y.json", {}
716
- file "users/y.json", { "public_key" => ChefZero::PUBLIC_KEY }
717
- end
718
-
719
- it "knife download does nothing" do
720
- knife("download /").should_succeed ""
721
- knife("diff --name-status /").should_succeed <<~EOM
722
- A\t/clients/y.json
723
- A\t/cookbooks/x-1.0.0/blah.rb
724
- A\t/cookbooks/x-2.0.0
725
- A\t/cookbooks/y-1.0.0
726
- A\t/data_bags/x/z.json
727
- A\t/data_bags/y
728
- A\t/environments/y.json
729
- A\t/nodes/y.json
730
- A\t/roles/y.json
731
- A\t/users/y.json
732
- EOM
733
- end
734
-
735
- it "knife download --purge deletes the extra files" do
736
- knife("download --purge /").should_succeed <<~EOM
737
- Deleted extra entry /clients/y.json (purge is on)
738
- Deleted extra entry /cookbooks/x-1.0.0/blah.rb (purge is on)
739
- Deleted extra entry /cookbooks/x-2.0.0 (purge is on)
740
- Deleted extra entry /cookbooks/y-1.0.0 (purge is on)
741
- Deleted extra entry /data_bags/x/z.json (purge is on)
742
- Deleted extra entry /data_bags/y (purge is on)
743
- Deleted extra entry /environments/y.json (purge is on)
744
- Deleted extra entry /nodes/y.json (purge is on)
745
- Deleted extra entry /roles/y.json (purge is on)
746
- Deleted extra entry /users/y.json (purge is on)
747
- EOM
748
- knife("diff --name-status /").should_succeed ""
749
- end
750
- end
751
- end
752
-
753
- when_the_repository "is empty" do
754
- it "knife download creates the extra files" do
755
- knife("download /").should_succeed <<~EOM
756
- Created /clients
757
- Created /clients/chef-validator.json
758
- Created /clients/chef-webui.json
759
- Created /clients/x.json
760
- Created /cookbooks
761
- Created /cookbooks/x-1.0.0
762
- Created /cookbooks/x-1.0.0/metadata.rb
763
- Created /data_bags
764
- Created /data_bags/x
765
- Created /data_bags/x/y.json
766
- Created /environments
767
- Created /environments/_default.json
768
- Created /environments/x.json
769
- Created /nodes
770
- Created /nodes/x.json
771
- Created /roles
772
- Created /roles/x.json
773
- Created /users
774
- Created /users/admin.json
775
- Created /users/x.json
776
- EOM
777
- knife("diff --name-status /").should_succeed ""
778
- end
779
-
780
- context "when current directory is top level" do
781
- before do
782
- cwd "."
783
- end
784
- it "knife download with no parameters reports an error" do
785
- knife("download").should_fail "FATAL: You must specify at least one argument. If you want to download everything in this directory, run \"knife download .\"\n", stdout: /USAGE/
786
- end
787
- end
788
- end
789
- end
790
-
791
- # Test download of an item when the other end doesn't even have the container
792
- when_the_repository "is empty" do
793
- when_the_chef_server "has two data bag items" do
794
- before do
795
- data_bag "x", { "y" => {}, "z" => {} }
796
- end
797
-
798
- it "knife download of one data bag item itself succeeds" do
799
- knife("download /data_bags/x/y.json").should_succeed <<~EOM
800
- Created /data_bags
801
- Created /data_bags/x
802
- Created /data_bags/x/y.json
803
- EOM
804
- knife("diff --name-status /data_bags").should_succeed <<~EOM
805
- D\t/data_bags/x/z.json
806
- EOM
807
- end
808
- end
809
- end
810
-
811
- when_the_repository "has three data bag items" do
812
- before do
813
- file "data_bags/x/deleted.json", <<~EOM
814
- {
815
- "id": "deleted"
816
- }
817
- EOM
818
- file "data_bags/x/modified.json", <<~EOM
819
- {
820
- "id": "modified"
821
- }
822
- EOM
823
- file "data_bags/x/unmodified.json", <<~EOM
824
- {
825
- "id": "unmodified"
826
- }
827
- EOM
828
- end
829
-
830
- when_the_chef_server "has a modified, unmodified, added and deleted data bag item" do
831
- before do
832
- data_bag "x", {
833
- "added" => {},
834
- "modified" => { "foo" => "bar" },
835
- "unmodified" => {},
836
- }
837
- end
838
-
839
- it "knife download of the modified file succeeds" do
840
- knife("download /data_bags/x/modified.json").should_succeed <<~EOM
841
- Updated /data_bags/x/modified.json
842
- EOM
843
- knife("diff --name-status /data_bags").should_succeed <<~EOM
844
- D\t/data_bags/x/added.json
845
- A\t/data_bags/x/deleted.json
846
- EOM
847
- end
848
- it "knife download of the unmodified file does nothing" do
849
- knife("download /data_bags/x/unmodified.json").should_succeed ""
850
- knife("diff --name-status /data_bags").should_succeed <<~EOM
851
- D\t/data_bags/x/added.json
852
- M\t/data_bags/x/modified.json
853
- A\t/data_bags/x/deleted.json
854
- EOM
855
- end
856
- it "knife download of the added file succeeds" do
857
- knife("download /data_bags/x/added.json").should_succeed <<~EOM
858
- Created /data_bags/x/added.json
859
- EOM
860
- knife("diff --name-status /data_bags").should_succeed <<~EOM
861
- M\t/data_bags/x/modified.json
862
- A\t/data_bags/x/deleted.json
863
- EOM
864
- end
865
- it "knife download of the deleted file does nothing" do
866
- knife("download /data_bags/x/deleted.json").should_succeed ""
867
- knife("diff --name-status /data_bags").should_succeed <<~EOM
868
- D\t/data_bags/x/added.json
869
- M\t/data_bags/x/modified.json
870
- A\t/data_bags/x/deleted.json
871
- EOM
872
- end
873
- it "knife download --purge of the deleted file deletes it" do
874
- knife("download --purge /data_bags/x/deleted.json").should_succeed <<~EOM
875
- Deleted extra entry /data_bags/x/deleted.json (purge is on)
876
- EOM
877
- knife("diff --name-status /data_bags").should_succeed <<~EOM
878
- D\t/data_bags/x/added.json
879
- M\t/data_bags/x/modified.json
880
- EOM
881
- end
882
- it "knife download of the entire data bag downloads everything" do
883
- knife("download /data_bags/x").should_succeed <<~EOM
884
- Created /data_bags/x/added.json
885
- Updated /data_bags/x/modified.json
886
- EOM
887
- knife("diff --name-status /data_bags").should_succeed <<~EOM
888
- A\t/data_bags/x/deleted.json
889
- EOM
890
- end
891
- it "knife download --purge of the entire data bag downloads everything" do
892
- knife("download --purge /data_bags/x").should_succeed <<~EOM
893
- Created /data_bags/x/added.json
894
- Updated /data_bags/x/modified.json
895
- Deleted extra entry /data_bags/x/deleted.json (purge is on)
896
- EOM
897
- knife("diff --name-status /data_bags").should_succeed ""
898
- end
899
- context "when cwd is the /data_bags directory" do
900
- before do
901
- cwd "data_bags"
902
- end
903
- it "knife download fails" do
904
- knife("download").should_fail "FATAL: You must specify at least one argument. If you want to download everything in this directory, run \"knife download .\"\n", stdout: /USAGE/
905
- end
906
- it "knife download --purge . downloads everything" do
907
- knife("download --purge .").should_succeed <<~EOM
908
- Created x/added.json
909
- Updated x/modified.json
910
- Deleted extra entry x/deleted.json (purge is on)
911
- EOM
912
- knife("diff --name-status /data_bags").should_succeed ""
913
- end
914
- it "knife download --purge * downloads everything" do
915
- knife("download --purge *").should_succeed <<~EOM
916
- Created x/added.json
917
- Updated x/modified.json
918
- Deleted extra entry x/deleted.json (purge is on)
919
- EOM
920
- knife("diff --name-status /data_bags").should_succeed ""
921
- end
922
- end
923
- end
924
- end
925
-
926
- when_the_repository "has a cookbook" do
927
- before do
928
- file "cookbooks/x-1.0.0/metadata.rb", 'name "x"; version "1.0.0"#unmodified'
929
- file "cookbooks/x-1.0.0/z.rb", ""
930
- end
931
-
932
- when_the_chef_server "has a modified, added and deleted file for the cookbook" do
933
- before do
934
- cookbook "x", "1.0.0", { "y.rb" => "hi" }
935
- end
936
-
937
- it "knife download of a modified file succeeds" do
938
- knife("download /cookbooks/x-1.0.0/metadata.rb").should_succeed "Updated /cookbooks/x-1.0.0/metadata.rb\n"
939
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
940
- D\t/cookbooks/x-1.0.0/y.rb
941
- A\t/cookbooks/x-1.0.0/z.rb
942
- EOM
943
- end
944
- it "knife download of a deleted file does nothing" do
945
- knife("download /cookbooks/x-1.0.0/z.rb").should_succeed ""
946
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
947
- M\t/cookbooks/x-1.0.0/metadata.rb
948
- D\t/cookbooks/x-1.0.0/y.rb
949
- A\t/cookbooks/x-1.0.0/z.rb
950
- EOM
951
- end
952
- it "knife download --purge of a deleted file succeeds" do
953
- knife("download --purge /cookbooks/x-1.0.0/z.rb").should_succeed "Deleted extra entry /cookbooks/x-1.0.0/z.rb (purge is on)\n"
954
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
955
- M\t/cookbooks/x-1.0.0/metadata.rb
956
- D\t/cookbooks/x-1.0.0/y.rb
957
- EOM
958
- end
959
- it "knife download of an added file succeeds" do
960
- knife("download /cookbooks/x-1.0.0/y.rb").should_succeed "Created /cookbooks/x-1.0.0/y.rb\n"
961
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
962
- M\t/cookbooks/x-1.0.0/metadata.rb
963
- A\t/cookbooks/x-1.0.0/z.rb
964
- EOM
965
- end
966
- it "knife download of the cookbook itself succeeds" do
967
- knife("download /cookbooks/x-1.0.0").should_succeed <<~EOM
968
- Updated /cookbooks/x-1.0.0/metadata.rb
969
- Created /cookbooks/x-1.0.0/y.rb
970
- EOM
971
- knife("diff --name-status /cookbooks").should_succeed <<~EOM
972
- A\t/cookbooks/x-1.0.0/z.rb
973
- EOM
974
- end
975
- it "knife download --purge of the cookbook itself succeeds" do
976
- knife("download --purge /cookbooks/x-1.0.0").should_succeed <<~EOM
977
- Updated /cookbooks/x-1.0.0/metadata.rb
978
- Created /cookbooks/x-1.0.0/y.rb
979
- Deleted extra entry /cookbooks/x-1.0.0/z.rb (purge is on)
980
- EOM
981
- knife("diff --name-status /cookbooks").should_succeed ""
982
- end
983
- end
984
- end
985
-
986
- when_the_repository "has a cookbook" do
987
- before do
988
- file "cookbooks/x-1.0.0/metadata.rb", cb_metadata("x", "1.0.0")
989
- file "cookbooks/x-1.0.0/onlyin1.0.0.rb", "old_text"
990
- end
991
-
992
- when_the_chef_server "has a later version for the cookbook" do
993
- before do
994
- cookbook "x", "1.0.0", { "onlyin1.0.0.rb" => "" }
995
- cookbook "x", "1.0.1", { "onlyin1.0.1.rb" => "hi" }
996
- end
997
-
998
- it "knife download /cookbooks/x downloads the latest version" do
999
- knife("download --purge /cookbooks").should_succeed <<~EOM
1000
- Updated /cookbooks/x-1.0.0/onlyin1.0.0.rb
1001
- Created /cookbooks/x-1.0.1
1002
- Created /cookbooks/x-1.0.1/metadata.rb
1003
- Created /cookbooks/x-1.0.1/onlyin1.0.1.rb
1004
- EOM
1005
- knife("diff --name-status /cookbooks").should_succeed ""
1006
- end
1007
- end
1008
-
1009
- when_the_chef_server "has an earlier version for the cookbook" do
1010
- before do
1011
- cookbook "x", "1.0.0", { "onlyin1.0.0.rb" => "" }
1012
- cookbook "x", "0.9.9", { "onlyin0.9.9.rb" => "hi" }
1013
- end
1014
-
1015
- it "knife download /cookbooks downloads the updated file" do
1016
- knife("download --purge /cookbooks").should_succeed <<~EOM
1017
- Created /cookbooks/x-0.9.9
1018
- Created /cookbooks/x-0.9.9/metadata.rb
1019
- Created /cookbooks/x-0.9.9/onlyin0.9.9.rb
1020
- Updated /cookbooks/x-1.0.0/onlyin1.0.0.rb
1021
- EOM
1022
- knife("diff --name-status /cookbooks").should_succeed ""
1023
- end
1024
- end
1025
-
1026
- when_the_chef_server "has a later version for the cookbook, and no current version" do
1027
- before do
1028
- cookbook "x", "1.0.1", { "onlyin1.0.1.rb" => "hi" }
1029
- end
1030
-
1031
- it "knife download /cookbooks/x downloads the latest version" do
1032
- knife("download --purge /cookbooks").should_succeed <<~EOM
1033
- Created /cookbooks/x-1.0.1
1034
- Created /cookbooks/x-1.0.1/metadata.rb
1035
- Created /cookbooks/x-1.0.1/onlyin1.0.1.rb
1036
- Deleted extra entry /cookbooks/x-1.0.0 (purge is on)
1037
- EOM
1038
- knife("diff --name-status /cookbooks").should_succeed ""
1039
- end
1040
- end
1041
-
1042
- when_the_chef_server "has an earlier version for the cookbook, and no current version" do
1043
- before do
1044
- cookbook "x", "0.9.9", { "onlyin0.9.9.rb" => "hi" }
1045
- end
1046
-
1047
- it "knife download --purge /cookbooks downloads the old version and deletes the new version" do
1048
- knife("download --purge /cookbooks").should_succeed <<~EOM
1049
- Created /cookbooks/x-0.9.9
1050
- Created /cookbooks/x-0.9.9/metadata.rb
1051
- Created /cookbooks/x-0.9.9/onlyin0.9.9.rb
1052
- Deleted extra entry /cookbooks/x-1.0.0 (purge is on)
1053
- EOM
1054
- knife("diff --name-status /cookbooks").should_succeed ""
1055
- end
1056
- end
1057
- end
1058
-
1059
- when_the_chef_server "has an environment" do
1060
- before do
1061
- environment "x", {}
1062
- end
1063
-
1064
- when_the_repository "has the same environment with the wrong name in the file" do
1065
- before do
1066
- file "environments/x.json", { "name" => "y" }
1067
- end
1068
-
1069
- it "knife download succeeds" do
1070
- knife("download /environments/x.json").should_succeed "Updated /environments/x.json\n"
1071
- knife("diff --name-status /environments/x.json").should_succeed ""
1072
- end
1073
- end
1074
-
1075
- when_the_repository "has the same environment with no name in the file" do
1076
- before do
1077
- file "environments/x.json", { "description" => "hi" }
1078
- end
1079
-
1080
- it "knife download succeeds" do
1081
- knife("download /environments/x.json").should_succeed "Updated /environments/x.json\n"
1082
- knife("diff --name-status /environments/x.json").should_succeed ""
1083
- end
1084
- end
1085
- end
1086
- end # with versioned cookbooks
1087
-
1088
- when_the_chef_server "has a cookbook" do
1089
- before do
1090
- cookbook "x", "1.0.0"
1091
- end
1092
-
1093
- when_the_repository "is empty" do
1094
- it "knife download /cookbooks/x signs all requests" do
1095
-
1096
- # Check that BasicClient.request() always gets called with X-OPS-USERID
1097
- original_new = Chef::HTTP::BasicClient.method(:new)
1098
- expect(Chef::HTTP::BasicClient).to receive(:new) { |args|
1099
- new_result = original_new.call(*args)
1100
- original_request = new_result.method(:request)
1101
- expect(new_result).to receive(:request) { |method, url, body, headers, &response_handler|
1102
- expect(headers["X-OPS-USERID"]).not_to be_nil
1103
- original_request.call(method, url, body, headers, &response_handler)
1104
- }.at_least(:once)
1105
- new_result
1106
- }.at_least(:once)
1107
-
1108
- knife("download /cookbooks/x").should_succeed <<~EOM
1109
- Created /cookbooks
1110
- Created /cookbooks/x
1111
- Created /cookbooks/x/metadata.rb
1112
- EOM
1113
- end
1114
- end
1115
- end
1116
-
1117
- when_the_chef_server "is in Enterprise mode", osc_compat: false, single_org: false do
1118
- before do
1119
- user "foo", {}
1120
- user "bar", {}
1121
- user "foobar", {}
1122
- organization "foo", { "full_name" => "Something" }
1123
- end
1124
-
1125
- before :each do
1126
- Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url, "/organizations/foo")
1127
- end
1128
-
1129
- when_the_repository "has all the default stuff" do
1130
- before do
1131
- knife("download /").should_succeed <<~EOM
1132
- Created /acls
1133
- Created /acls/clients
1134
- Created /acls/clients/foo-validator.json
1135
- Created /acls/containers
1136
- Created /acls/containers/clients.json
1137
- Created /acls/containers/containers.json
1138
- Created /acls/containers/cookbook_artifacts.json
1139
- Created /acls/containers/cookbooks.json
1140
- Created /acls/containers/data.json
1141
- Created /acls/containers/environments.json
1142
- Created /acls/containers/groups.json
1143
- Created /acls/containers/nodes.json
1144
- Created /acls/containers/policies.json
1145
- Created /acls/containers/policy_groups.json
1146
- Created /acls/containers/roles.json
1147
- Created /acls/containers/sandboxes.json
1148
- Created /acls/cookbook_artifacts
1149
- Created /acls/cookbooks
1150
- Created /acls/data_bags
1151
- Created /acls/environments
1152
- Created /acls/environments/_default.json
1153
- Created /acls/groups
1154
- Created /acls/groups/admins.json
1155
- Created /acls/groups/billing-admins.json
1156
- Created /acls/groups/clients.json
1157
- Created /acls/groups/users.json
1158
- Created /acls/nodes
1159
- Created /acls/policies
1160
- Created /acls/policy_groups
1161
- Created /acls/roles
1162
- Created /acls/organization.json
1163
- Created /clients
1164
- Created /clients/foo-validator.json
1165
- Created /containers
1166
- Created /containers/clients.json
1167
- Created /containers/containers.json
1168
- Created /containers/cookbook_artifacts.json
1169
- Created /containers/cookbooks.json
1170
- Created /containers/data.json
1171
- Created /containers/environments.json
1172
- Created /containers/groups.json
1173
- Created /containers/nodes.json
1174
- Created /containers/policies.json
1175
- Created /containers/policy_groups.json
1176
- Created /containers/roles.json
1177
- Created /containers/sandboxes.json
1178
- Created /cookbook_artifacts
1179
- Created /cookbooks
1180
- Created /data_bags
1181
- Created /environments
1182
- Created /environments/_default.json
1183
- Created /groups
1184
- Created /groups/admins.json
1185
- Created /groups/billing-admins.json
1186
- Created /groups/clients.json
1187
- Created /groups/users.json
1188
- Created /invitations.json
1189
- Created /members.json
1190
- Created /nodes
1191
- Created /org.json
1192
- Created /policies
1193
- Created /policy_groups
1194
- Created /roles
1195
- EOM
1196
- end
1197
-
1198
- context "and the server has one of each thing" do
1199
- before do
1200
- # acl_for %w(organizations foo groups blah)
1201
- client "x", {}
1202
- cookbook "x", "1.0.0"
1203
- cookbook_artifact "x", "1x1", { "metadata.rb" => cb_metadata("x", "1.0.0") }
1204
- container "x", {}
1205
- data_bag "x", { "y" => {} }
1206
- environment "x", {}
1207
- group "x", {}
1208
- org_invite "foo"
1209
- org_member "bar"
1210
- node "x", {}
1211
- policy "x", "1.0.0", {}
1212
- policy "blah", "1.0.0", {}
1213
- policy_group "x", {
1214
- "policies" => {
1215
- "x" => { "revision_id" => "1.0.0" },
1216
- "blah" => { "revision_id" => "1.0.0" },
1217
- },
1218
- }
1219
- role "x", {}
1220
- end
1221
-
1222
- before do
1223
- knife("download /acls /groups/clients.json /groups/users.json").should_succeed <<~EOM
1224
- Created /acls/clients/x.json
1225
- Created /acls/containers/x.json
1226
- Created /acls/cookbook_artifacts/x.json
1227
- Created /acls/cookbooks/x.json
1228
- Created /acls/data_bags/x.json
1229
- Created /acls/environments/x.json
1230
- Created /acls/groups/x.json
1231
- Created /acls/nodes/x.json
1232
- Created /acls/policies/blah.json
1233
- Created /acls/policies/x.json
1234
- Created /acls/policy_groups/x.json
1235
- Created /acls/roles/x.json
1236
- Updated /groups/clients.json
1237
- Updated /groups/users.json
1238
- EOM
1239
- end
1240
-
1241
- it "knife download / downloads everything" do
1242
- knife("download /").should_succeed <<~EOM
1243
- Created /clients/x.json
1244
- Created /containers/x.json
1245
- Created /cookbook_artifacts/x-1x1
1246
- Created /cookbook_artifacts/x-1x1/metadata.rb
1247
- Created /cookbooks/x
1248
- Created /cookbooks/x/metadata.rb
1249
- Created /data_bags/x
1250
- Created /data_bags/x/y.json
1251
- Created /environments/x.json
1252
- Created /groups/x.json
1253
- Updated /invitations.json
1254
- Updated /members.json
1255
- Created /nodes/x.json
1256
- Created /policies/blah-1.0.0.json
1257
- Created /policies/x-1.0.0.json
1258
- Created /policy_groups/x.json
1259
- Created /roles/x.json
1260
- EOM
1261
- knife("diff --name-status /").should_succeed ""
1262
- end
1263
-
1264
- context "and the repository has an identical copy of each thing" do
1265
- before do
1266
- # TODO We have to upload acls for an existing group due to a lack of
1267
- # dependency detection during upload. Fix that!
1268
- file "clients/x.json", { "public_key" => ChefZero::PUBLIC_KEY }
1269
- file "containers/x.json", {}
1270
- file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
1271
- file "cookbook_artifacts/x-1x1/metadata.rb", cb_metadata("x", "1.0.0")
1272
- file "data_bags/x/y.json", {}
1273
- file "environments/x.json", {}
1274
- file "groups/x.json", {}
1275
- file "invitations.json", [ "foo" ]
1276
- file "members.json", [ "bar" ]
1277
- file "nodes/x.json", { "normal" => { "tags" => [] } }
1278
- file "org.json", { "full_name" => "Something" }
1279
- file "policies/x-1.0.0.json", {}
1280
- file "policies/blah-1.0.0.json", {}
1281
- file "policy_groups/x.json", { "policies" => { "x" => { "revision_id" => "1.0.0" }, "blah" => { "revision_id" => "1.0.0" } } }
1282
- file "roles/x.json", {}
1283
- end
1284
-
1285
- it "knife download makes no changes" do
1286
- knife("download /").should_succeed ""
1287
- end
1288
- end
1289
-
1290
- context "and the repository has a slightly different copy of each thing" do
1291
- before do
1292
- # acl_for %w(organizations foo groups blah)
1293
- file "clients/x.json", { "validator" => true }
1294
- file "containers/x.json", {}
1295
- file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.1")
1296
- file "cookbook_artifacts/x-1x1/metadata.rb", cb_metadata("x", "1.0.1")
1297
- file "data_bags/x/y.json", { "a" => "b" }
1298
- file "environments/x.json", { "description" => "foo" }
1299
- file "groups/x.json", { "description" => "foo" }
1300
- file "groups/x.json", { "groups" => [ "admin" ] }
1301
- file "nodes/x.json", { "normal" => { "tags" => [] }, "run_list" => [ "blah" ] }
1302
- file "org.json", { "full_name" => "Something Else " }
1303
- file "policies/x-1.0.0.json", { "run_list" => [ "blah" ] }
1304
- file "policy_groups/x.json", {
1305
- "policies" => {
1306
- "x" => { "revision_id" => "1.0.1" },
1307
- "y" => { "revision_id" => "1.0.0" },
1308
- },
1309
- }
1310
- file "roles/x.json", { "run_list" => [ "blah" ] }
1311
- end
1312
-
1313
- it "knife download updates everything" do
1314
- knife("download /").should_succeed <<~EOM
1315
- Updated /clients/x.json
1316
- Updated /cookbook_artifacts/x-1x1/metadata.rb
1317
- Updated /cookbooks/x/metadata.rb
1318
- Updated /data_bags/x/y.json
1319
- Updated /environments/x.json
1320
- Updated /groups/x.json
1321
- Updated /invitations.json
1322
- Updated /members.json
1323
- Updated /nodes/x.json
1324
- Updated /org.json
1325
- Created /policies/blah-1.0.0.json
1326
- Updated /policies/x-1.0.0.json
1327
- Updated /policy_groups/x.json
1328
- Updated /roles/x.json
1329
- EOM
1330
- knife("diff --name-status /").should_succeed ""
1331
- end
1332
- end
1333
- end
1334
- end
1335
- end
1336
- end