chef 16.11.7-universal-mingw32 → 17.2.29-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (733) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -21
  3. data/README.md +1 -1
  4. data/Rakefile +13 -2
  5. data/chef-universal-mingw32.gemspec +1 -1
  6. data/chef.gemspec +11 -24
  7. data/distro/ruby_bin_folder/AMD64/Chef.PowerShell.Wrapper.dll +0 -0
  8. data/distro/ruby_bin_folder/AMD64/Chef.PowerShell.dll +0 -0
  9. data/distro/ruby_bin_folder/AMD64/Newtonsoft.Json.dll +0 -0
  10. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.PowerShell.Wrapper.Core.dll +0 -0
  11. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.dll +0 -0
  12. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.pdb +0 -0
  13. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.NETCore.App.deps.json +153 -149
  14. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Diagnostics.dll +0 -0
  15. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Management.dll +0 -0
  16. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Utility.dll +0 -0
  17. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.ConsoleHost.dll +0 -0
  18. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.CoreCLR.Eventing.dll +0 -0
  19. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.MarkdownRender.dll +0 -0
  20. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Security.dll +0 -0
  21. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Management.dll +0 -0
  22. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Runtime.dll +0 -0
  23. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/Newtonsoft.Json.dll +0 -0
  24. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.Messages.dll +0 -0
  25. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.dll +0 -0
  26. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Drawing.Common.dll +0 -0
  27. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Management.Automation.dll +0 -0
  28. data/distro/ruby_bin_folder/AMD64/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Pkcs.dll +0 -0
  29. data/distro/ruby_bin_folder/x86/Chef.PowerShell.dll +0 -0
  30. data/distro/ruby_bin_folder/x86/Chef.Powershell.Wrapper.dll +0 -0
  31. data/distro/ruby_bin_folder/x86/Newtonsoft.Json.dll +0 -0
  32. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.PowerShell.Wrapper.Core.dll +0 -0
  33. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.dll +0 -0
  34. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Chef.Powershell.Core.pdb +0 -0
  35. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.NETCore.App.deps.json +153 -149
  36. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Diagnostics.dll +0 -0
  37. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Management.dll +0 -0
  38. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Commands.Utility.dll +0 -0
  39. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.ConsoleHost.dll +0 -0
  40. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.CoreCLR.Eventing.dll +0 -0
  41. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.MarkdownRender.dll +0 -0
  42. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.PowerShell.Security.dll +0 -0
  43. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Management.dll +0 -0
  44. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Microsoft.WSMan.Runtime.dll +0 -0
  45. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/Newtonsoft.Json.dll +0 -0
  46. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.Messages.dll +0 -0
  47. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Diagnostics.EventLog.dll +0 -0
  48. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Drawing.Common.dll +0 -0
  49. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Management.Automation.dll +0 -0
  50. data/distro/ruby_bin_folder/x86/shared/Microsoft.NETCore.App/5.0.0/System.Security.Cryptography.Pkcs.dll +0 -0
  51. data/lib/chef/action_collection.rb +6 -26
  52. data/lib/chef/application.rb +1 -1
  53. data/lib/chef/application/base.rb +16 -1
  54. data/lib/chef/applications.rb +0 -1
  55. data/lib/chef/chef_fs/command_line.rb +5 -2
  56. data/lib/chef/chef_fs/file_pattern.rb +2 -2
  57. data/lib/chef/chef_fs/file_system.rb +9 -10
  58. data/lib/chef/client.rb +8 -2
  59. data/lib/chef/compliance/default_attributes.rb +5 -4
  60. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  61. data/lib/chef/compliance/reporter/automate.rb +17 -7
  62. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  63. data/lib/chef/compliance/reporter/cli.rb +77 -0
  64. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  65. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  66. data/lib/chef/compliance/runner.rb +65 -27
  67. data/lib/chef/cookbook/cookbook_version_loader.rb +3 -3
  68. data/lib/chef/cookbook/gem_installer.rb +5 -1
  69. data/lib/chef/cookbook/synchronizer.rb +3 -5
  70. data/lib/chef/cookbook_loader.rb +2 -4
  71. data/lib/chef/cookbook_uploader.rb +0 -1
  72. data/lib/chef/cookbook_version.rb +26 -4
  73. data/lib/chef/data_bag.rb +2 -1
  74. data/lib/chef/data_bag_item.rb +13 -3
  75. data/lib/chef/data_collector.rb +0 -1
  76. data/lib/chef/data_collector/run_end_message.rb +1 -1
  77. data/lib/chef/delayed_evaluator.rb +4 -0
  78. data/lib/chef/deprecated.rb +8 -0
  79. data/lib/chef/dsl/chef_vault.rb +6 -6
  80. data/lib/chef/dsl/declare_resource.rb +5 -10
  81. data/lib/chef/dsl/reboot_pending.rb +1 -2
  82. data/lib/chef/event_dispatch/base.rb +2 -1
  83. data/lib/chef/exceptions.rb +3 -0
  84. data/lib/chef/formatters/doc.rb +2 -1
  85. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  86. data/lib/chef/group.rb +75 -0
  87. data/lib/chef/handler.rb +46 -8
  88. data/lib/chef/handler/slow_report.rb +66 -0
  89. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  90. data/lib/chef/node.rb +21 -20
  91. data/lib/chef/node/attribute.rb +6 -4
  92. data/lib/chef/node/immutable_collections.rb +13 -0
  93. data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
  94. data/lib/chef/org.rb +3 -2
  95. data/lib/chef/property.rb +18 -0
  96. data/lib/chef/provider.rb +1 -1
  97. data/lib/chef/provider/cron.rb +1 -1
  98. data/lib/chef/provider/directory.rb +6 -6
  99. data/lib/chef/provider/execute.rb +2 -1
  100. data/lib/chef/provider/file.rb +2 -2
  101. data/lib/chef/provider/git.rb +5 -7
  102. data/lib/chef/provider/group/groupadd.rb +3 -3
  103. data/lib/chef/provider/group/groupmod.rb +3 -3
  104. data/lib/chef/provider/group/pw.rb +3 -3
  105. data/lib/chef/provider/ifconfig.rb +2 -2
  106. data/lib/chef/provider/link.rb +3 -3
  107. data/lib/chef/provider/mount.rb +12 -7
  108. data/lib/chef/provider/mount/aix.rb +3 -3
  109. data/lib/chef/provider/mount/mount.rb +5 -5
  110. data/lib/chef/provider/mount/windows.rb +1 -1
  111. data/lib/chef/provider/package.rb +17 -21
  112. data/lib/chef/provider/package/apt.rb +27 -1
  113. data/lib/chef/provider/package/deb.rb +3 -3
  114. data/lib/chef/provider/package/dnf/dnf_helper.py +12 -11
  115. data/lib/chef/provider/package/dnf/python_helper.rb +9 -8
  116. data/lib/chef/provider/package/portage.rb +2 -2
  117. data/lib/chef/provider/package/rubygems.rb +11 -17
  118. data/lib/chef/provider/package/windows.rb +2 -4
  119. data/lib/chef/provider/package/yum.rb +1 -4
  120. data/lib/chef/provider/package/yum/python_helper.rb +15 -10
  121. data/lib/chef/provider/package/yum/yum_helper.py +47 -63
  122. data/lib/chef/provider/registry_key.rb +1 -1
  123. data/lib/chef/provider/route.rb +2 -2
  124. data/lib/chef/provider/service.rb +6 -6
  125. data/lib/chef/provider/service/aixinit.rb +1 -1
  126. data/lib/chef/provider/service/debian.rb +1 -1
  127. data/lib/chef/provider/service/freebsd.rb +15 -21
  128. data/lib/chef/provider/service/macosx.rb +7 -7
  129. data/lib/chef/provider/service/systemd.rb +43 -14
  130. data/lib/chef/provider/service/upstart.rb +2 -13
  131. data/lib/chef/provider/service/windows.rb +12 -12
  132. data/lib/chef/provider/subversion.rb +10 -12
  133. data/lib/chef/provider/support/zypper_repo.erb +4 -2
  134. data/lib/chef/provider/systemd_unit.rb +36 -10
  135. data/lib/chef/provider/template/content.rb +3 -7
  136. data/lib/chef/provider/user.rb +2 -2
  137. data/lib/chef/provider/user/dscl.rb +1 -1
  138. data/lib/chef/provider/user/mac.rb +17 -20
  139. data/lib/chef/provider/user/pw.rb +1 -1
  140. data/lib/chef/provider/user/windows.rb +1 -1
  141. data/lib/chef/provider/windows_script.rb +1 -1
  142. data/lib/chef/provider/zypper_repository.rb +28 -32
  143. data/lib/chef/providers.rb +0 -1
  144. data/lib/chef/resource.rb +6 -7
  145. data/lib/chef/resource/alternatives.rb +6 -6
  146. data/lib/chef/resource/apt_package.rb +1 -1
  147. data/lib/chef/resource/apt_preference.rb +2 -2
  148. data/lib/chef/resource/apt_repository.rb +6 -6
  149. data/lib/chef/resource/apt_update.rb +5 -4
  150. data/lib/chef/resource/archive_file.rb +2 -3
  151. data/lib/chef/resource/breakpoint.rb +1 -1
  152. data/lib/chef/resource/build_essential.rb +2 -6
  153. data/lib/chef/resource/chef_client_config.rb +3 -3
  154. data/lib/chef/resource/chef_client_cron.rb +4 -4
  155. data/lib/chef/resource/chef_client_launchd.rb +6 -6
  156. data/lib/chef/resource/chef_client_scheduled_task.rb +15 -15
  157. data/lib/chef/resource/chef_client_systemd_timer.rb +4 -4
  158. data/lib/chef/resource/chef_handler.rb +3 -7
  159. data/lib/chef/resource/chef_sleep.rb +1 -1
  160. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  161. data/lib/chef/resource/chocolatey_config.rb +2 -6
  162. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  163. data/lib/chef/resource/chocolatey_source.rb +4 -10
  164. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  165. data/lib/chef/resource/cron/cron_d.rb +4 -6
  166. data/lib/chef/resource/cron_access.rb +2 -4
  167. data/lib/chef/resource/dmg_package.rb +6 -10
  168. data/lib/chef/resource/dpkg_package.rb +1 -1
  169. data/lib/chef/resource/execute.rb +8 -3
  170. data/lib/chef/resource/file.rb +1 -1
  171. data/lib/chef/resource/group.rb +6 -6
  172. data/lib/chef/resource/homebrew_cask.rb +17 -10
  173. data/lib/chef/resource/homebrew_package.rb +1 -1
  174. data/lib/chef/resource/homebrew_tap.rb +4 -7
  175. data/lib/chef/resource/homebrew_update.rb +2 -2
  176. data/lib/chef/resource/hostname.rb +68 -22
  177. data/lib/chef/resource/http_request.rb +1 -1
  178. data/lib/chef/resource/inspec_waiver_file_entry.rb +156 -0
  179. data/lib/chef/resource/kernel_module.rb +6 -17
  180. data/lib/chef/resource/locale.rb +2 -3
  181. data/lib/chef/resource/lwrp_base.rb +19 -0
  182. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  183. data/lib/chef/resource/mdadm.rb +53 -7
  184. data/lib/chef/resource/mount.rb +2 -1
  185. data/lib/chef/resource/ohai_hint.rb +2 -6
  186. data/lib/chef/resource/openbsd_package.rb +17 -0
  187. data/lib/chef/resource/openssl_dhparam.rb +1 -2
  188. data/lib/chef/resource/openssl_ec_private_key.rb +3 -5
  189. data/lib/chef/resource/openssl_ec_public_key.rb +1 -3
  190. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -4
  191. data/lib/chef/resource/openssl_rsa_public_key.rb +1 -3
  192. data/lib/chef/resource/openssl_x509_certificate.rb +3 -6
  193. data/lib/chef/resource/openssl_x509_crl.rb +1 -3
  194. data/lib/chef/resource/openssl_x509_request.rb +1 -3
  195. data/lib/chef/resource/osx_profile.rb +3 -3
  196. data/lib/chef/resource/plist.rb +8 -8
  197. data/lib/chef/resource/powershell_package_source.rb +2 -4
  198. data/lib/chef/resource/powershell_script.rb +1 -1
  199. data/lib/chef/resource/reboot.rb +38 -9
  200. data/lib/chef/resource/remote_directory.rb +2 -2
  201. data/lib/chef/resource/remote_file.rb +3 -3
  202. data/lib/chef/resource/rhsm_errata.rb +16 -3
  203. data/lib/chef/resource/rhsm_errata_level.rb +11 -6
  204. data/lib/chef/resource/rhsm_register.rb +12 -6
  205. data/lib/chef/resource/rhsm_repo.rb +17 -6
  206. data/lib/chef/resource/rhsm_subscription.rb +2 -6
  207. data/lib/chef/resource/scm/git.rb +1 -1
  208. data/lib/chef/resource/ssh_known_hosts_entry.rb +4 -7
  209. data/lib/chef/resource/sudo.rb +8 -12
  210. data/lib/chef/resource/swap_file.rb +2 -6
  211. data/lib/chef/resource/sysctl.rb +2 -6
  212. data/lib/chef/resource/systemd_unit.rb +2 -2
  213. data/lib/chef/resource/template.rb +1 -1
  214. data/lib/chef/resource/timezone.rb +1 -3
  215. data/lib/chef/resource/user/mac_user.rb +1 -1
  216. data/lib/chef/resource/user_ulimit.rb +2 -2
  217. data/lib/chef/resource/windows_ad_join.rb +2 -6
  218. data/lib/chef/resource/windows_audit_policy.rb +2 -2
  219. data/lib/chef/resource/windows_auto_run.rb +2 -5
  220. data/lib/chef/resource/windows_certificate.rb +207 -73
  221. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  222. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  223. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  224. data/lib/chef/resource/windows_dns_record.rb +2 -6
  225. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  226. data/lib/chef/resource/windows_env.rb +6 -5
  227. data/lib/chef/resource/windows_feature.rb +3 -9
  228. data/lib/chef/resource/windows_feature_dism.rb +3 -9
  229. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  230. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  231. data/lib/chef/resource/windows_firewall_rule.rb +20 -9
  232. data/lib/chef/resource/windows_font.rb +3 -5
  233. data/lib/chef/resource/windows_pagefile.rb +104 -69
  234. data/lib/chef/resource/windows_path.rb +4 -4
  235. data/lib/chef/resource/windows_printer.rb +8 -23
  236. data/lib/chef/resource/windows_printer_port.rb +49 -66
  237. data/lib/chef/resource/windows_security_policy.rb +56 -40
  238. data/lib/chef/resource/windows_share.rb +14 -21
  239. data/lib/chef/resource/windows_shortcut.rb +4 -6
  240. data/lib/chef/resource/windows_task.rb +19 -7
  241. data/lib/chef/resource/windows_uac.rb +3 -5
  242. data/lib/chef/resource/windows_user_privilege.rb +4 -4
  243. data/lib/chef/resource/windows_workgroup.rb +3 -4
  244. data/lib/chef/resource/yum_package.rb +10 -10
  245. data/lib/chef/resource/zypper_package.rb +4 -4
  246. data/lib/chef/resource/zypper_repository.rb +28 -8
  247. data/lib/chef/resource_builder.rb +8 -2
  248. data/lib/chef/resource_reporter.rb +0 -1
  249. data/lib/chef/resources.rb +1 -1
  250. data/lib/chef/run_lock.rb +1 -1
  251. data/lib/chef/runner.rb +1 -1
  252. data/lib/chef/shell/ext.rb +3 -3
  253. data/lib/chef/user.rb +0 -1
  254. data/lib/chef/user_v1.rb +3 -4
  255. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  256. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  257. data/lib/chef/version.rb +1 -1
  258. data/lib/chef/win32/api.rb +9 -2
  259. data/lib/chef/win32/registry.rb +4 -2
  260. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  261. data/spec/data/lwrp/resources/bar.rb +2 -0
  262. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  263. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  264. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  265. data/spec/data/lwrp/resources/foo.rb +2 -0
  266. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  267. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  268. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  269. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  270. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  271. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  272. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  273. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  274. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  275. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  276. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  277. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  278. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  279. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  280. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  281. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  282. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  283. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  284. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  285. data/spec/functional/resource/apt_package_spec.rb +1 -1
  286. data/spec/functional/resource/chocolatey_package_spec.rb +13 -0
  287. data/spec/functional/resource/cron_spec.rb +1 -1
  288. data/spec/functional/resource/dnf_package_spec.rb +857 -534
  289. data/spec/functional/resource/group_spec.rb +1 -1
  290. data/spec/functional/resource/link_spec.rb +1 -1
  291. data/spec/functional/resource/registry_spec.rb +8 -8
  292. data/spec/functional/resource/remote_file_spec.rb +1 -1
  293. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  294. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  295. data/spec/functional/resource/windows_env_spec.rb +2 -2
  296. data/spec/functional/resource/windows_hostname_spec.rb +91 -0
  297. data/spec/functional/resource/windows_pagefile_spec.rb +98 -0
  298. data/spec/functional/resource/yum_package_spec.rb +495 -428
  299. data/spec/functional/version_spec.rb +1 -1
  300. data/spec/functional/win32/registry_spec.rb +1 -1
  301. data/spec/integration/client/client_spec.rb +5 -22
  302. data/spec/integration/client/exit_code_spec.rb +1 -1
  303. data/spec/integration/client/ipv6_spec.rb +1 -1
  304. data/spec/integration/compliance/compliance_spec.rb +1 -1
  305. data/spec/integration/ohai/ohai_spec.rb +7 -6
  306. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  307. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  308. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  309. data/spec/integration/recipes/notifies_spec.rb +15 -1
  310. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  311. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  312. data/spec/integration/recipes/unified_mode_spec.rb +71 -1
  313. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  314. data/spec/spec_helper.rb +14 -13
  315. data/spec/support/chef_helpers.rb +1 -17
  316. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  317. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  318. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  319. data/spec/support/matchers/leak.rb +7 -9
  320. data/spec/support/platform_helpers.rb +5 -8
  321. data/spec/support/shared/functional/execute_resource.rb +1 -1
  322. data/spec/support/shared/integration/integration_helper.rb +0 -1
  323. data/spec/support/shared/unit/provider/file.rb +15 -1
  324. data/spec/support/shared/unit/script_resource.rb +2 -2
  325. data/spec/unit/application/solo_spec.rb +2 -2
  326. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  327. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
  328. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  329. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  330. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  331. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  332. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  333. data/spec/unit/compliance/runner_spec.rb +31 -5
  334. data/spec/unit/cookbook_version_spec.rb +52 -0
  335. data/spec/unit/data_bag_item_spec.rb +3 -8
  336. data/spec/unit/data_bag_spec.rb +1 -1
  337. data/spec/unit/data_collector_spec.rb +47 -1
  338. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  339. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  340. data/spec/unit/handler_spec.rb +8 -2
  341. data/spec/unit/lwrp_spec.rb +1 -1
  342. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  343. data/spec/unit/node/attribute_spec.rb +1 -1
  344. data/spec/unit/node_spec.rb +78 -0
  345. data/spec/unit/org_group_spec.rb +45 -0
  346. data/spec/unit/property_spec.rb +23 -22
  347. data/spec/unit/provider/cron_spec.rb +1 -1
  348. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  349. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  350. data/spec/unit/provider/group/pw_spec.rb +2 -2
  351. data/spec/unit/provider/group_spec.rb +1 -1
  352. data/spec/unit/provider/link_spec.rb +1 -1
  353. data/spec/unit/provider/mount/mount_spec.rb +51 -0
  354. data/spec/unit/provider/package/apt_spec.rb +84 -18
  355. data/spec/unit/provider/package/deb_spec.rb +3 -3
  356. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -0
  357. data/spec/unit/provider/package/rubygems_spec.rb +21 -33
  358. data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -0
  359. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  360. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  361. data/spec/unit/provider/service/macosx_spec.rb +5 -5
  362. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  363. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  364. data/spec/unit/provider/service/windows_spec.rb +2 -2
  365. data/spec/unit/provider/subversion_spec.rb +2 -2
  366. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  367. data/spec/unit/provider/zypper_repository_spec.rb +5 -12
  368. data/spec/unit/provider_spec.rb +0 -8
  369. data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
  370. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  371. data/spec/unit/resource/windows_firewall_rule_spec.rb +12 -7
  372. data/spec/unit/resource/windows_pagefile_spec.rb +4 -9
  373. data/spec/unit/resource/windows_task_spec.rb +1 -1
  374. data/spec/unit/resource/zypper_repository_spec.rb +1 -1
  375. data/spec/unit/user_spec.rb +1 -1
  376. data/spec/unit/user_v1_spec.rb +6 -4
  377. data/tasks/rspec.rb +9 -6
  378. metadata +26 -528
  379. data/bin/knife +0 -24
  380. data/lib/chef/application/knife.rb +0 -234
  381. data/lib/chef/application/windows_service.rb +0 -338
  382. data/lib/chef/application/windows_service_manager.rb +0 -205
  383. data/lib/chef/chef_fs/knife.rb +0 -160
  384. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  385. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  386. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  387. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  388. data/lib/chef/knife.rb +0 -665
  389. data/lib/chef/knife/acl_add.rb +0 -57
  390. data/lib/chef/knife/acl_base.rb +0 -183
  391. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  392. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  393. data/lib/chef/knife/acl_remove.rb +0 -62
  394. data/lib/chef/knife/acl_show.rb +0 -56
  395. data/lib/chef/knife/bootstrap.rb +0 -1192
  396. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  397. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  398. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  399. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  400. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  401. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  402. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  403. data/lib/chef/knife/client_create.rb +0 -101
  404. data/lib/chef/knife/client_delete.rb +0 -62
  405. data/lib/chef/knife/client_edit.rb +0 -52
  406. data/lib/chef/knife/client_key_create.rb +0 -73
  407. data/lib/chef/knife/client_key_delete.rb +0 -80
  408. data/lib/chef/knife/client_key_edit.rb +0 -83
  409. data/lib/chef/knife/client_key_list.rb +0 -73
  410. data/lib/chef/knife/client_key_show.rb +0 -80
  411. data/lib/chef/knife/client_list.rb +0 -41
  412. data/lib/chef/knife/client_reregister.rb +0 -58
  413. data/lib/chef/knife/client_show.rb +0 -48
  414. data/lib/chef/knife/config_get.rb +0 -39
  415. data/lib/chef/knife/config_get_profile.rb +0 -37
  416. data/lib/chef/knife/config_list.rb +0 -139
  417. data/lib/chef/knife/config_list_profiles.rb +0 -37
  418. data/lib/chef/knife/config_show.rb +0 -127
  419. data/lib/chef/knife/config_use.rb +0 -61
  420. data/lib/chef/knife/config_use_profile.rb +0 -47
  421. data/lib/chef/knife/configure.rb +0 -150
  422. data/lib/chef/knife/configure_client.rb +0 -48
  423. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  424. data/lib/chef/knife/cookbook_delete.rb +0 -151
  425. data/lib/chef/knife/cookbook_download.rb +0 -142
  426. data/lib/chef/knife/cookbook_list.rb +0 -47
  427. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  428. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  429. data/lib/chef/knife/cookbook_show.rb +0 -98
  430. data/lib/chef/knife/cookbook_upload.rb +0 -292
  431. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  432. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  433. data/lib/chef/knife/core/formatting_options.rb +0 -49
  434. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  435. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  436. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  437. data/lib/chef/knife/core/node_editor.rb +0 -130
  438. data/lib/chef/knife/core/node_presenter.rb +0 -133
  439. data/lib/chef/knife/core/object_loader.rb +0 -115
  440. data/lib/chef/knife/core/status_presenter.rb +0 -147
  441. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  442. data/lib/chef/knife/core/text_formatter.rb +0 -85
  443. data/lib/chef/knife/core/ui.rb +0 -338
  444. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -406
  445. data/lib/chef/knife/data_bag_create.rb +0 -81
  446. data/lib/chef/knife/data_bag_delete.rb +0 -49
  447. data/lib/chef/knife/data_bag_edit.rb +0 -74
  448. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  449. data/lib/chef/knife/data_bag_list.rb +0 -42
  450. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  451. data/lib/chef/knife/data_bag_show.rb +0 -69
  452. data/lib/chef/knife/delete.rb +0 -125
  453. data/lib/chef/knife/deps.rb +0 -156
  454. data/lib/chef/knife/diff.rb +0 -83
  455. data/lib/chef/knife/download.rb +0 -84
  456. data/lib/chef/knife/edit.rb +0 -88
  457. data/lib/chef/knife/environment_compare.rb +0 -128
  458. data/lib/chef/knife/environment_create.rb +0 -52
  459. data/lib/chef/knife/environment_delete.rb +0 -44
  460. data/lib/chef/knife/environment_edit.rb +0 -44
  461. data/lib/chef/knife/environment_from_file.rb +0 -84
  462. data/lib/chef/knife/environment_list.rb +0 -41
  463. data/lib/chef/knife/environment_show.rb +0 -47
  464. data/lib/chef/knife/exec.rb +0 -99
  465. data/lib/chef/knife/group_add.rb +0 -55
  466. data/lib/chef/knife/group_create.rb +0 -49
  467. data/lib/chef/knife/group_destroy.rb +0 -53
  468. data/lib/chef/knife/group_list.rb +0 -43
  469. data/lib/chef/knife/group_remove.rb +0 -56
  470. data/lib/chef/knife/group_show.rb +0 -49
  471. data/lib/chef/knife/key_create.rb +0 -112
  472. data/lib/chef/knife/key_create_base.rb +0 -50
  473. data/lib/chef/knife/key_delete.rb +0 -55
  474. data/lib/chef/knife/key_edit.rb +0 -118
  475. data/lib/chef/knife/key_edit_base.rb +0 -55
  476. data/lib/chef/knife/key_list.rb +0 -90
  477. data/lib/chef/knife/key_list_base.rb +0 -45
  478. data/lib/chef/knife/key_show.rb +0 -53
  479. data/lib/chef/knife/list.rb +0 -177
  480. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  481. data/lib/chef/knife/node_create.rb +0 -47
  482. data/lib/chef/knife/node_delete.rb +0 -46
  483. data/lib/chef/knife/node_edit.rb +0 -70
  484. data/lib/chef/knife/node_environment_set.rb +0 -53
  485. data/lib/chef/knife/node_from_file.rb +0 -51
  486. data/lib/chef/knife/node_list.rb +0 -44
  487. data/lib/chef/knife/node_policy_set.rb +0 -79
  488. data/lib/chef/knife/node_run_list_add.rb +0 -104
  489. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  490. data/lib/chef/knife/node_run_list_set.rb +0 -66
  491. data/lib/chef/knife/node_show.rb +0 -63
  492. data/lib/chef/knife/null.rb +0 -12
  493. data/lib/chef/knife/raw.rb +0 -123
  494. data/lib/chef/knife/recipe_list.rb +0 -32
  495. data/lib/chef/knife/rehash.rb +0 -50
  496. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  497. data/lib/chef/knife/role_create.rb +0 -53
  498. data/lib/chef/knife/role_delete.rb +0 -46
  499. data/lib/chef/knife/role_edit.rb +0 -45
  500. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  501. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  502. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  503. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  504. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  505. data/lib/chef/knife/role_from_file.rb +0 -51
  506. data/lib/chef/knife/role_list.rb +0 -42
  507. data/lib/chef/knife/role_run_list_add.rb +0 -87
  508. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  509. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  510. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  511. data/lib/chef/knife/role_run_list_set.rb +0 -69
  512. data/lib/chef/knife/role_show.rb +0 -48
  513. data/lib/chef/knife/search.rb +0 -194
  514. data/lib/chef/knife/serve.rb +0 -65
  515. data/lib/chef/knife/show.rb +0 -72
  516. data/lib/chef/knife/ssh.rb +0 -645
  517. data/lib/chef/knife/ssl_check.rb +0 -284
  518. data/lib/chef/knife/ssl_fetch.rb +0 -161
  519. data/lib/chef/knife/status.rb +0 -95
  520. data/lib/chef/knife/supermarket_download.rb +0 -121
  521. data/lib/chef/knife/supermarket_install.rb +0 -192
  522. data/lib/chef/knife/supermarket_list.rb +0 -76
  523. data/lib/chef/knife/supermarket_search.rb +0 -53
  524. data/lib/chef/knife/supermarket_share.rb +0 -166
  525. data/lib/chef/knife/supermarket_show.rb +0 -66
  526. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  527. data/lib/chef/knife/tag_create.rb +0 -52
  528. data/lib/chef/knife/tag_delete.rb +0 -60
  529. data/lib/chef/knife/tag_list.rb +0 -47
  530. data/lib/chef/knife/upload.rb +0 -86
  531. data/lib/chef/knife/user_create.rb +0 -107
  532. data/lib/chef/knife/user_delete.rb +0 -44
  533. data/lib/chef/knife/user_dissociate.rb +0 -42
  534. data/lib/chef/knife/user_edit.rb +0 -52
  535. data/lib/chef/knife/user_invite_add.rb +0 -43
  536. data/lib/chef/knife/user_invite_list.rb +0 -34
  537. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  538. data/lib/chef/knife/user_key_create.rb +0 -73
  539. data/lib/chef/knife/user_key_delete.rb +0 -80
  540. data/lib/chef/knife/user_key_edit.rb +0 -83
  541. data/lib/chef/knife/user_key_list.rb +0 -73
  542. data/lib/chef/knife/user_key_show.rb +0 -80
  543. data/lib/chef/knife/user_list.rb +0 -42
  544. data/lib/chef/knife/user_reregister.rb +0 -59
  545. data/lib/chef/knife/user_show.rb +0 -48
  546. data/lib/chef/knife/xargs.rb +0 -282
  547. data/lib/chef/knife/yaml_convert.rb +0 -91
  548. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
  549. data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
  550. data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
  551. data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
  552. data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
  553. data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
  554. data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
  555. data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
  556. data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
  557. data/lib/chef/provider/package/yum/simplejson/tool.py +0 -37
  558. data/lib/chef/resource/user/dscl_user.rb +0 -35
  559. data/spec/functional/knife/configure_spec.rb +0 -33
  560. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  561. data/spec/functional/knife/exec_spec.rb +0 -55
  562. data/spec/functional/knife/rehash_spec.rb +0 -39
  563. data/spec/functional/knife/smoke_test.rb +0 -42
  564. data/spec/functional/knife/ssh_spec.rb +0 -352
  565. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  566. data/spec/functional/resource/windows_service_spec.rb +0 -105
  567. data/spec/functional/win32/service_manager_spec.rb +0 -220
  568. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  569. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  570. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  571. data/spec/integration/knife/chefignore_spec.rb +0 -301
  572. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  573. data/spec/integration/knife/client_create_spec.rb +0 -70
  574. data/spec/integration/knife/client_delete_spec.rb +0 -64
  575. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  576. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  577. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  578. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  579. data/spec/integration/knife/client_list_spec.rb +0 -49
  580. data/spec/integration/knife/client_show_spec.rb +0 -37
  581. data/spec/integration/knife/common_options_spec.rb +0 -174
  582. data/spec/integration/knife/config_list_spec.rb +0 -220
  583. data/spec/integration/knife/config_show_spec.rb +0 -192
  584. data/spec/integration/knife/config_use_spec.rb +0 -198
  585. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  586. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  587. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  588. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  589. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  590. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  591. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  592. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  593. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  594. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  595. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  596. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  597. data/spec/integration/knife/delete_spec.rb +0 -1018
  598. data/spec/integration/knife/deps_spec.rb +0 -703
  599. data/spec/integration/knife/diff_spec.rb +0 -605
  600. data/spec/integration/knife/download_spec.rb +0 -1336
  601. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  602. data/spec/integration/knife/environment_create_spec.rb +0 -41
  603. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  604. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  605. data/spec/integration/knife/environment_list_spec.rb +0 -42
  606. data/spec/integration/knife/environment_show_spec.rb +0 -77
  607. data/spec/integration/knife/list_spec.rb +0 -1060
  608. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  609. data/spec/integration/knife/node_create_spec.rb +0 -47
  610. data/spec/integration/knife/node_delete_spec.rb +0 -48
  611. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  612. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  613. data/spec/integration/knife/node_list_spec.rb +0 -45
  614. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  615. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  616. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  617. data/spec/integration/knife/node_show_spec.rb +0 -36
  618. data/spec/integration/knife/raw_spec.rb +0 -297
  619. data/spec/integration/knife/redirection_spec.rb +0 -64
  620. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  621. data/spec/integration/knife/role_create_spec.rb +0 -41
  622. data/spec/integration/knife/role_delete_spec.rb +0 -48
  623. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  624. data/spec/integration/knife/role_list_spec.rb +0 -45
  625. data/spec/integration/knife/role_show_spec.rb +0 -51
  626. data/spec/integration/knife/search_node_spec.rb +0 -40
  627. data/spec/integration/knife/serve_spec.rb +0 -92
  628. data/spec/integration/knife/show_spec.rb +0 -197
  629. data/spec/integration/knife/upload_spec.rb +0 -1617
  630. data/spec/support/shared/functional/win32_service.rb +0 -57
  631. data/spec/unit/application/knife_spec.rb +0 -241
  632. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  633. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  634. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  635. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  636. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  637. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  638. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  639. data/spec/unit/knife/client_create_spec.rb +0 -169
  640. data/spec/unit/knife/client_delete_spec.rb +0 -99
  641. data/spec/unit/knife/client_edit_spec.rb +0 -53
  642. data/spec/unit/knife/client_list_spec.rb +0 -34
  643. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  644. data/spec/unit/knife/client_show_spec.rb +0 -52
  645. data/spec/unit/knife/configure_client_spec.rb +0 -81
  646. data/spec/unit/knife/configure_spec.rb +0 -190
  647. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  648. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  649. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  650. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  651. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  652. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  653. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  654. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  655. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  656. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  657. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  658. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  659. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  660. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  661. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  662. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  663. data/spec/unit/knife/core/ui_spec.rb +0 -656
  664. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  665. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  666. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  667. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  668. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  669. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  670. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  671. data/spec/unit/knife/environment_create_spec.rb +0 -91
  672. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  673. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  674. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  675. data/spec/unit/knife/environment_list_spec.rb +0 -54
  676. data/spec/unit/knife/environment_show_spec.rb +0 -52
  677. data/spec/unit/knife/key_create_spec.rb +0 -223
  678. data/spec/unit/knife/key_delete_spec.rb +0 -133
  679. data/spec/unit/knife/key_edit_spec.rb +0 -264
  680. data/spec/unit/knife/key_helper.rb +0 -74
  681. data/spec/unit/knife/key_list_spec.rb +0 -216
  682. data/spec/unit/knife/key_show_spec.rb +0 -126
  683. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  684. data/spec/unit/knife/node_delete_spec.rb +0 -77
  685. data/spec/unit/knife/node_edit_spec.rb +0 -116
  686. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  687. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  688. data/spec/unit/knife/node_list_spec.rb +0 -62
  689. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  690. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  691. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  692. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  693. data/spec/unit/knife/node_show_spec.rb +0 -65
  694. data/spec/unit/knife/raw_spec.rb +0 -43
  695. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  696. data/spec/unit/knife/role_create_spec.rb +0 -80
  697. data/spec/unit/knife/role_delete_spec.rb +0 -67
  698. data/spec/unit/knife/role_edit_spec.rb +0 -77
  699. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  700. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  701. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  702. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  703. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  704. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  705. data/spec/unit/knife/role_list_spec.rb +0 -54
  706. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  707. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  708. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  709. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  710. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  711. data/spec/unit/knife/role_show_spec.rb +0 -59
  712. data/spec/unit/knife/ssh_spec.rb +0 -403
  713. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  714. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  715. data/spec/unit/knife/status_spec.rb +0 -112
  716. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  717. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  718. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  719. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  720. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  721. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  722. data/spec/unit/knife/tag_create_spec.rb +0 -23
  723. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  724. data/spec/unit/knife/tag_list_spec.rb +0 -23
  725. data/spec/unit/knife/user_create_spec.rb +0 -184
  726. data/spec/unit/knife/user_delete_spec.rb +0 -46
  727. data/spec/unit/knife/user_edit_spec.rb +0 -48
  728. data/spec/unit/knife/user_list_spec.rb +0 -36
  729. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  730. data/spec/unit/knife/user_show_spec.rb +0 -46
  731. data/spec/unit/knife_spec.rb +0 -634
  732. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  733. data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,198 +0,0 @@
1
- #
2
- # Author:: Xabier de Zuazo (xabier@onddo.com)
3
- # Copyright:: Copyright 2013-2016, Onddo Labs, SL.
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
- require "chef/cookbook_site_streaming_uploader"
22
-
23
- class FakeTempfile
24
- def initialize(basename)
25
- @basename = basename
26
- end
27
-
28
- def close; end
29
-
30
- def path
31
- "#{@basename}.ZZZ"
32
- end
33
-
34
- end
35
-
36
- describe Chef::CookbookSiteStreamingUploader do
37
-
38
- describe "create_build_dir" do
39
-
40
- before(:each) do
41
- @cookbook_repo = File.expand_path(File.join(CHEF_SPEC_DATA, "cookbooks"))
42
- @loader = Chef::CookbookLoader.new(@cookbook_repo)
43
- @loader.load_cookbooks
44
- allow(File).to receive(:unlink)
45
- end
46
-
47
- it "should create the cookbook tmp dir" do
48
- cookbook = @loader[:openldap]
49
- files_count = Dir.glob(File.join(@cookbook_repo, cookbook.name.to_s, "**", "*"), File::FNM_DOTMATCH).count { |file| File.file?(file) }
50
-
51
- expect(Tempfile).to receive(:new).with("chef-#{cookbook.name}-build").and_return(FakeTempfile.new("chef-#{cookbook.name}-build"))
52
- expect(FileUtils).to receive(:mkdir_p).exactly(files_count + 1).times
53
- expect(FileUtils).to receive(:cp).exactly(files_count).times
54
- Chef::CookbookSiteStreamingUploader.create_build_dir(cookbook)
55
- end
56
-
57
- end # create_build_dir
58
-
59
- describe "make_request" do
60
-
61
- before(:each) do
62
- @uri = "http://cookbooks.dummy.com/api/v1/cookbooks"
63
- @secret_filename = File.join(CHEF_SPEC_DATA, "ssl/private_key.pem")
64
- @rsa_key = File.read(@secret_filename)
65
- response = Net::HTTPResponse.new("1.0", "200", "OK")
66
- allow_any_instance_of(Net::HTTP).to receive(:request).and_return(response)
67
- end
68
-
69
- it "should send an http request" do
70
- expect_any_instance_of(Net::HTTP).to receive(:request)
71
- Chef::CookbookSiteStreamingUploader.make_request(:post, @uri, "bill", @secret_filename)
72
- end
73
-
74
- it "should read the private key file" do
75
- expect(File).to receive(:read).with(@secret_filename).and_return(@rsa_key)
76
- Chef::CookbookSiteStreamingUploader.make_request(:post, @uri, "bill", @secret_filename)
77
- end
78
-
79
- it "should add the authentication signed header" do
80
- expect_any_instance_of(Mixlib::Authentication::SigningObject).to receive(:sign).and_return({})
81
- Chef::CookbookSiteStreamingUploader.make_request(:post, @uri, "bill", @secret_filename)
82
- end
83
-
84
- it "should be able to send post requests" do
85
- post = Net::HTTP::Post.new(@uri, {})
86
-
87
- expect(Net::HTTP::Post).to receive(:new).once.and_return(post)
88
- expect(Net::HTTP::Put).not_to receive(:new)
89
- expect(Net::HTTP::Get).not_to receive(:new)
90
- Chef::CookbookSiteStreamingUploader.make_request(:post, @uri, "bill", @secret_filename)
91
- end
92
-
93
- it "should be able to send put requests" do
94
- put = Net::HTTP::Put.new(@uri, {})
95
-
96
- expect(Net::HTTP::Post).not_to receive(:new)
97
- expect(Net::HTTP::Put).to receive(:new).once.and_return(put)
98
- expect(Net::HTTP::Get).not_to receive(:new)
99
- Chef::CookbookSiteStreamingUploader.make_request(:put, @uri, "bill", @secret_filename)
100
- end
101
-
102
- it "should be able to receive files to attach as argument" do
103
- Chef::CookbookSiteStreamingUploader.make_request(:put, @uri, "bill", @secret_filename, {
104
- myfile: File.new(File.join(CHEF_SPEC_DATA, "config.rb")), # a dummy file
105
- })
106
- end
107
-
108
- it "should be able to receive strings to attach as argument" do
109
- Chef::CookbookSiteStreamingUploader.make_request(:put, @uri, "bill", @secret_filename, {
110
- mystring: "Lorem ipsum",
111
- })
112
- end
113
-
114
- it "should be able to receive strings and files as argument at the same time" do
115
- Chef::CookbookSiteStreamingUploader.make_request(:put, @uri, "bill", @secret_filename, {
116
- myfile1: File.new(File.join(CHEF_SPEC_DATA, "config.rb")),
117
- mystring1: "Lorem ipsum",
118
- myfile2: File.new(File.join(CHEF_SPEC_DATA, "config.rb")),
119
- mystring2: "Dummy text",
120
- })
121
- end
122
-
123
- end # make_request
124
-
125
- describe "StreamPart" do
126
- before(:each) do
127
- @file = File.new(File.join(CHEF_SPEC_DATA, "config.rb"))
128
- @stream_part = Chef::CookbookSiteStreamingUploader::StreamPart.new(@file, File.size(@file))
129
- end
130
-
131
- it "should create a StreamPart" do
132
- expect(@stream_part).to be_instance_of(Chef::CookbookSiteStreamingUploader::StreamPart)
133
- end
134
-
135
- it "should expose its size" do
136
- expect(@stream_part.size).to eql(File.size(@file))
137
- end
138
-
139
- it "should read with offset and how_much" do
140
- content = @file.read(4)
141
- @file.rewind
142
- expect(@stream_part.read(0, 4)).to eql(content)
143
- end
144
-
145
- end # StreamPart
146
-
147
- describe "StringPart" do
148
- before(:each) do
149
- @str = "What a boring string"
150
- @string_part = Chef::CookbookSiteStreamingUploader::StringPart.new(@str)
151
- end
152
-
153
- it "should create a StringPart" do
154
- expect(@string_part).to be_instance_of(Chef::CookbookSiteStreamingUploader::StringPart)
155
- end
156
-
157
- it "should expose its size" do
158
- expect(@string_part.size).to eql(@str.size)
159
- end
160
-
161
- it "should read with offset and how_much" do
162
- expect(@string_part.read(2, 4)).to eql(@str[2, 4])
163
- end
164
-
165
- end # StringPart
166
-
167
- describe "MultipartStream" do
168
- before(:each) do
169
- @string1 = "stream1"
170
- @string2 = "stream2"
171
- @stream1 = Chef::CookbookSiteStreamingUploader::StringPart.new(@string1)
172
- @stream2 = Chef::CookbookSiteStreamingUploader::StringPart.new(@string2)
173
- @parts = [ @stream1, @stream2 ]
174
-
175
- @multipart_stream = Chef::CookbookSiteStreamingUploader::MultipartStream.new(@parts)
176
- end
177
-
178
- it "should create a MultipartStream" do
179
- expect(@multipart_stream).to be_instance_of(Chef::CookbookSiteStreamingUploader::MultipartStream)
180
- end
181
-
182
- it "should expose its size" do
183
- expect(@multipart_stream.size).to eql(@stream1.size + @stream2.size)
184
- end
185
-
186
- it "should read with how_much" do
187
- expect(@multipart_stream.read(10)).to eql("#{@string1}#{@string2}"[0, 10])
188
- end
189
-
190
- it "should read receiving destination buffer as second argument (CHEF-4456: Ruby 2 compat)" do
191
- dst_buf = ""
192
- @multipart_stream.read(10, dst_buf)
193
- expect(dst_buf).to eql("#{@string1}#{@string2}"[0, 10])
194
- end
195
-
196
- end # MultipartStream
197
-
198
- end
@@ -1,152 +0,0 @@
1
- #
2
- # Author:: Lamont Granquist <lamont@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::Knife::Bootstrap::ChefVaultHandler do
22
-
23
- let(:stdout) { StringIO.new }
24
- let(:stderr) { StringIO.new }
25
- let(:stdin) { StringIO.new }
26
- let(:ui) { Chef::Knife::UI.new(stdout, stderr, stdin, {}) }
27
-
28
- let(:config) { {} }
29
-
30
- let(:client) { Chef::ApiClient.new }
31
-
32
- let(:chef_vault_handler) do
33
- chef_vault_handler = Chef::Knife::Bootstrap::ChefVaultHandler.new(config: config, ui: ui)
34
- chef_vault_handler
35
- end
36
-
37
- context "when there's no vault option" do
38
- it "should report its not doing anything" do
39
- expect(chef_vault_handler.doing_chef_vault?).to be false
40
- end
41
-
42
- it "shouldn't do anything" do
43
- expect(chef_vault_handler).to_not receive(:sanity_check)
44
- expect(chef_vault_handler).to_not receive(:update_bootstrap_vault_json!)
45
- chef_vault_handler
46
- end
47
- end
48
-
49
- context "when setting chef vault items" do
50
- let(:bootstrap_vault_item) { double("ChefVault::Item") }
51
-
52
- before do
53
- expect(chef_vault_handler).to receive(:require_chef_vault!).at_least(:once)
54
- expect(bootstrap_vault_item).to receive(:clients).with(client).at_least(:once)
55
- expect(bootstrap_vault_item).to receive(:save).at_least(:once)
56
- end
57
-
58
- context "from config[:bootstrap_vault_item]" do
59
- it "sets a single item as a scalar" do
60
- config[:bootstrap_vault_item] = { "vault" => "item1" }
61
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
62
- chef_vault_handler.run(client)
63
- end
64
-
65
- it "sets a single item as an array" do
66
- config[:bootstrap_vault_item] = { "vault" => [ "item1" ] }
67
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
68
- chef_vault_handler.run(client)
69
- end
70
-
71
- it "sets two items as an array" do
72
- config[:bootstrap_vault_item] = { "vault" => %w{item1 item2} }
73
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
74
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item2").and_return(bootstrap_vault_item)
75
- chef_vault_handler.run(client)
76
- end
77
-
78
- it "sets two vaults from different hash keys" do
79
- config[:bootstrap_vault_item] = { "vault" => %w{item1 item2}, "vault2" => [ "item3" ] }
80
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
81
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item2").and_return(bootstrap_vault_item)
82
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault2", "item3").and_return(bootstrap_vault_item)
83
- chef_vault_handler.run(client)
84
- end
85
- end
86
-
87
- context "from config[:bootstrap_vault_json]" do
88
- it "sets a single item as a scalar" do
89
- config[:bootstrap_vault_json] = '{ "vault": "item1" }'
90
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
91
- chef_vault_handler.run(client)
92
- end
93
-
94
- it "sets a single item as an array" do
95
- config[:bootstrap_vault_json] = '{ "vault": [ "item1" ] }'
96
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
97
- chef_vault_handler.run(client)
98
- end
99
-
100
- it "sets two items as an array" do
101
- config[:bootstrap_vault_json] = '{ "vault": [ "item1", "item2" ] }'
102
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
103
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item2").and_return(bootstrap_vault_item)
104
- chef_vault_handler.run(client)
105
- end
106
-
107
- it "sets two vaults from different hash keys" do
108
- config[:bootstrap_vault_json] = '{ "vault": [ "item1", "item2" ], "vault2": [ "item3" ] }'
109
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
110
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item2").and_return(bootstrap_vault_item)
111
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault2", "item3").and_return(bootstrap_vault_item)
112
- chef_vault_handler.run(client)
113
- end
114
- end
115
-
116
- context "from config[:bootstrap_vault_file]" do
117
-
118
- def setup_file_contents(json)
119
- stringio = StringIO.new(json)
120
- config[:bootstrap_vault_file] = "/foo/bar/baz"
121
- expect(File).to receive(:read).with(config[:bootstrap_vault_file]).and_return(stringio)
122
- end
123
-
124
- it "sets a single item as a scalar" do
125
- setup_file_contents('{ "vault": "item1" }')
126
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
127
- chef_vault_handler.run(client)
128
- end
129
-
130
- it "sets a single item as an array" do
131
- setup_file_contents('{ "vault": [ "item1" ] }')
132
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
133
- chef_vault_handler.run(client)
134
- end
135
-
136
- it "sets two items as an array" do
137
- setup_file_contents('{ "vault": [ "item1", "item2" ] }')
138
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
139
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item2").and_return(bootstrap_vault_item)
140
- chef_vault_handler.run(client)
141
- end
142
-
143
- it "sets two vaults from different hash keys" do
144
- setup_file_contents('{ "vault": [ "item1", "item2" ], "vault2": [ "item3" ] }')
145
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
146
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item2").and_return(bootstrap_vault_item)
147
- expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault2", "item3").and_return(bootstrap_vault_item)
148
- chef_vault_handler.run(client)
149
- end
150
- end
151
- end
152
- end
@@ -1,207 +0,0 @@
1
- #
2
- # Author:: Lamont Granquist <lamont@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::Knife::Bootstrap::ClientBuilder do
22
-
23
- let(:stdout) { StringIO.new }
24
- let(:stderr) { StringIO.new }
25
- let(:stdin) { StringIO.new }
26
- let(:ui) { Chef::Knife::UI.new(stdout, stderr, stdin, {}) }
27
-
28
- let(:config) { {} }
29
-
30
- let(:chef_config) { {} }
31
-
32
- let(:node_name) { "bevell.wat" }
33
-
34
- let(:rest) { double("Chef::ServerAPI") }
35
-
36
- let(:client_builder) do
37
- client_builder = Chef::Knife::Bootstrap::ClientBuilder.new(config: config, chef_config: chef_config, ui: ui)
38
- allow(client_builder).to receive(:rest).and_return(rest)
39
- allow(client_builder).to receive(:node_name).and_return(node_name)
40
- client_builder
41
- end
42
-
43
- context "#sanity_check!" do
44
- let(:response_404) { OpenStruct.new(code: "404") }
45
- let(:exception_404) { Net::HTTPClientException.new("404 not found", response_404) }
46
-
47
- context "in cases where the prompting fails" do
48
- before do
49
- # should fail early in #run
50
- expect(client_builder).to_not receive(:create_client!)
51
- expect(client_builder).to_not receive(:create_node!)
52
- end
53
-
54
- it "exits when the node exists and the user does not want to delete" do
55
- expect(rest).to receive(:get).with("nodes/#{node_name}")
56
- expect(ui.stdin).to receive(:readline).and_return("n")
57
- expect { client_builder.run }.to raise_error(SystemExit)
58
- end
59
-
60
- it "exits when the client exists and the user does not want to delete" do
61
- expect(rest).to receive(:get).with("nodes/#{node_name}").and_raise(exception_404)
62
- expect(rest).to receive(:get).with("clients/#{node_name}")
63
- expect(ui.stdin).to receive(:readline).and_return("n")
64
- expect { client_builder.run }.to raise_error(SystemExit)
65
- end
66
- end
67
-
68
- context "in cases where the prompting succeeds" do
69
- before do
70
- # mock out the rest of #run
71
- expect(client_builder).to receive(:create_client!)
72
- expect(client_builder).to receive(:create_node!)
73
- end
74
-
75
- it "when both the client and node do not exist it succeeds" do
76
- expect(rest).to receive(:get).with("nodes/#{node_name}").and_raise(exception_404)
77
- expect(rest).to receive(:get).with("clients/#{node_name}").and_raise(exception_404)
78
- expect { client_builder.run }.not_to raise_error
79
- end
80
-
81
- it "when we are allowed to delete an old node" do
82
- expect(rest).to receive(:get).with("nodes/#{node_name}")
83
- expect(ui.stdin).to receive(:readline).and_return("y")
84
- expect(rest).to receive(:get).with("clients/#{node_name}").and_raise(exception_404)
85
- expect(rest).to receive(:delete).with("nodes/#{node_name}")
86
- expect { client_builder.run }.not_to raise_error
87
- end
88
-
89
- it "when we are allowed to delete an old client" do
90
- expect(rest).to receive(:get).with("nodes/#{node_name}").and_raise(exception_404)
91
- expect(rest).to receive(:get).with("clients/#{node_name}")
92
- expect(ui.stdin).to receive(:readline).and_return("y")
93
- expect(rest).to receive(:delete).with("clients/#{node_name}")
94
- expect { client_builder.run }.not_to raise_error
95
- end
96
-
97
- it "when we are are allowed to delete both an old client and node" do
98
- expect(rest).to receive(:get).with("nodes/#{node_name}")
99
- expect(rest).to receive(:get).with("clients/#{node_name}")
100
- expect(ui.stdin).to receive(:readline).twice.and_return("y")
101
- expect(rest).to receive(:delete).with("nodes/#{node_name}")
102
- expect(rest).to receive(:delete).with("clients/#{node_name}")
103
- expect { client_builder.run }.not_to raise_error
104
- end
105
- end
106
- end
107
-
108
- context "#create_client!" do
109
- let(:client) { Chef::ApiClient.new }
110
-
111
- before do
112
- # mock out the rest of #run
113
- expect(client_builder).to receive(:sanity_check)
114
- expect(client_builder).to receive(:create_node!)
115
- end
116
-
117
- it "delegates everything to Chef::ApiClient::Registration and sets client" do
118
- reg_double = double("Chef::ApiClient::Registration")
119
- expect(Chef::ApiClient::Registration).to receive(:new).with(node_name, client_builder.client_path, http_api: rest).and_return(reg_double)
120
- expect(reg_double).to receive(:run).and_return(client)
121
- client_builder.run
122
- expect(client_builder.client).to eq(client)
123
- end
124
-
125
- end
126
-
127
- context "#client_path" do
128
- it "has a public API for the temporary client.pem file" do
129
- expect(client_builder.client_path).to match(/#{node_name}.pem/)
130
- end
131
- end
132
-
133
- context "#create_node!" do
134
- before do
135
- # mock out the rest of #run
136
- expect(client_builder).to receive(:sanity_check)
137
- expect(client_builder).to receive(:create_client!)
138
- # mock out default node building steps
139
- expect(client_builder).to receive(:client_rest).and_return(client_rest)
140
- expect(Chef::Node).to receive(:new).with(chef_server_rest: client_rest).and_return(node)
141
- expect(node).to receive(:name).with(node_name)
142
- expect(node).to receive(:save)
143
- end
144
-
145
- let(:client_rest) { double("Chef::ServerAPI (client)") }
146
-
147
- let(:node) { double("Chef::Node") }
148
-
149
- it "builds a node with a default run_list of []" do
150
- expect(node).to receive(:run_list).with([])
151
- client_builder.run
152
- end
153
-
154
- it "does not add tags by default" do
155
- allow(node).to receive(:run_list).with([])
156
- expect(node).to_not receive(:tags)
157
- client_builder.run
158
- end
159
-
160
- it "adds tags to the node when given" do
161
- tag_receiver = []
162
-
163
- config[:tags] = %w{foo bar}
164
- allow(node).to receive(:run_list).with([])
165
- allow(node).to receive(:tags).and_return(tag_receiver)
166
- client_builder.run
167
- expect(tag_receiver).to eq %w{foo bar}
168
- end
169
-
170
- it "builds a node when the run_list is a string" do
171
- config[:run_list] = "role[base],role[app]"
172
- expect(node).to receive(:run_list).with(["role[base]", "role[app]"])
173
- client_builder.run
174
- end
175
-
176
- it "builds a node when the run_list is an Array" do
177
- config[:run_list] = ["role[base]", "role[app]"]
178
- expect(node).to receive(:run_list).with(["role[base]", "role[app]"])
179
- client_builder.run
180
- end
181
-
182
- it "builds a node with first_boot_attributes if they're given" do
183
- config[:first_boot_attributes] = { baz: :quux }
184
- expect(node).to receive(:normal_attrs=).with({ baz: :quux })
185
- expect(node).to receive(:run_list).with([])
186
- client_builder.run
187
- end
188
-
189
- it "builds a node with an environment if its given" do
190
- config[:environment] = "production"
191
- expect(node).to receive(:environment).with("production")
192
- expect(node).to receive(:run_list).with([])
193
- client_builder.run
194
- end
195
-
196
- it "builds a node with policy_name and policy_group when given" do
197
- config[:policy_name] = "my-app"
198
- config[:policy_group] = "staging"
199
-
200
- expect(node).to receive(:run_list).with([])
201
- expect(node).to receive(:policy_name=).with("my-app")
202
- expect(node).to receive(:policy_group=).with("staging")
203
-
204
- client_builder.run
205
- end
206
- end
207
- end