chef 16.16.13 → 17.0.242

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 (638) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +9 -13
  3. data/README.md +1 -1
  4. data/Rakefile +2 -2
  5. data/chef-universal-mingw32.gemspec +1 -1
  6. data/chef.gemspec +6 -8
  7. data/lib/chef/application/base.rb +1 -1
  8. data/lib/chef/applications.rb +0 -1
  9. data/lib/chef/chef_fs/command_line.rb +5 -2
  10. data/lib/chef/chef_fs/file_system.rb +9 -10
  11. data/lib/chef/client.rb +2 -2
  12. data/lib/chef/compliance/default_attributes.rb +4 -3
  13. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  14. data/lib/chef/compliance/reporter/automate.rb +17 -7
  15. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  16. data/lib/chef/compliance/reporter/cli.rb +77 -0
  17. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  18. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  19. data/lib/chef/compliance/runner.rb +65 -27
  20. data/lib/chef/cookbook/gem_installer.rb +1 -5
  21. data/lib/chef/cookbook/synchronizer.rb +3 -5
  22. data/lib/chef/cookbook_loader.rb +2 -4
  23. data/lib/chef/cookbook_uploader.rb +0 -1
  24. data/lib/chef/cookbook_version.rb +4 -26
  25. data/lib/chef/data_bag_item.rb +11 -2
  26. data/lib/chef/data_collector/run_end_message.rb +1 -1
  27. data/lib/chef/delayed_evaluator.rb +4 -0
  28. data/lib/chef/deprecated.rb +6 -12
  29. data/lib/chef/dsl/chef_vault.rb +6 -6
  30. data/lib/chef/dsl/reboot_pending.rb +1 -2
  31. data/lib/chef/exceptions.rb +0 -3
  32. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  33. data/lib/chef/formatters/error_mapper.rb +2 -2
  34. data/lib/chef/group.rb +75 -0
  35. data/lib/chef/http.rb +5 -5
  36. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  37. data/lib/chef/node/attribute.rb +6 -4
  38. data/lib/chef/node/immutable_collections.rb +13 -0
  39. data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
  40. data/lib/chef/node.rb +19 -20
  41. data/lib/chef/org.rb +3 -2
  42. data/lib/chef/policy_builder/policyfile.rb +0 -5
  43. data/lib/chef/property.rb +18 -0
  44. data/lib/chef/provider/cron.rb +1 -1
  45. data/lib/chef/provider/execute.rb +2 -1
  46. data/lib/chef/provider/file.rb +1 -1
  47. data/lib/chef/provider/git.rb +5 -7
  48. data/lib/chef/provider/group/dscl.rb +1 -1
  49. data/lib/chef/provider/group/groupadd.rb +3 -3
  50. data/lib/chef/provider/group/groupmod.rb +3 -3
  51. data/lib/chef/provider/group/pw.rb +3 -3
  52. data/lib/chef/provider/ifconfig.rb +2 -2
  53. data/lib/chef/provider/link.rb +2 -2
  54. data/lib/chef/provider/mount/aix.rb +3 -3
  55. data/lib/chef/provider/mount/mount.rb +5 -5
  56. data/lib/chef/provider/mount/windows.rb +1 -1
  57. data/lib/chef/provider/mount.rb +5 -5
  58. data/lib/chef/provider/package/apt.rb +27 -1
  59. data/lib/chef/provider/package/deb.rb +3 -3
  60. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  61. data/lib/chef/provider/package/portage.rb +2 -2
  62. data/lib/chef/provider/package/powershell.rb +0 -5
  63. data/lib/chef/provider/package/rubygems.rb +9 -15
  64. data/lib/chef/provider/package/windows.rb +2 -4
  65. data/lib/chef/provider/package/yum/yum_helper.py +1 -1
  66. data/lib/chef/provider/package.rb +17 -21
  67. data/lib/chef/provider/route.rb +2 -2
  68. data/lib/chef/provider/service/aixinit.rb +1 -1
  69. data/lib/chef/provider/service/debian.rb +1 -1
  70. data/lib/chef/provider/service/freebsd.rb +15 -21
  71. data/lib/chef/provider/service/macosx.rb +4 -4
  72. data/lib/chef/provider/service/systemd.rb +43 -14
  73. data/lib/chef/provider/service/upstart.rb +2 -13
  74. data/lib/chef/provider/service/windows.rb +12 -12
  75. data/lib/chef/provider/service.rb +6 -6
  76. data/lib/chef/provider/subversion.rb +10 -12
  77. data/lib/chef/provider/systemd_unit.rb +36 -10
  78. data/lib/chef/provider/template/content.rb +3 -7
  79. data/lib/chef/provider/user/dscl.rb +1 -1
  80. data/lib/chef/provider/user/mac.rb +17 -20
  81. data/lib/chef/provider/user/pw.rb +1 -1
  82. data/lib/chef/provider/user/windows.rb +1 -1
  83. data/lib/chef/provider/user.rb +2 -2
  84. data/lib/chef/provider/zypper_repository.rb +2 -2
  85. data/lib/chef/provider.rb +1 -1
  86. data/lib/chef/providers.rb +0 -1
  87. data/lib/chef/resource/alternatives.rb +6 -6
  88. data/lib/chef/resource/apt_package.rb +1 -1
  89. data/lib/chef/resource/apt_preference.rb +2 -2
  90. data/lib/chef/resource/apt_repository.rb +6 -6
  91. data/lib/chef/resource/apt_update.rb +3 -2
  92. data/lib/chef/resource/archive_file.rb +2 -3
  93. data/lib/chef/resource/breakpoint.rb +1 -1
  94. data/lib/chef/resource/build_essential.rb +2 -6
  95. data/lib/chef/resource/chef_client_config.rb +2 -2
  96. data/lib/chef/resource/chef_client_cron.rb +4 -4
  97. data/lib/chef/resource/chef_client_launchd.rb +3 -3
  98. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  99. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  100. data/lib/chef/resource/chef_handler.rb +3 -7
  101. data/lib/chef/resource/chef_sleep.rb +1 -1
  102. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  103. data/lib/chef/resource/chocolatey_config.rb +2 -6
  104. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  105. data/lib/chef/resource/chocolatey_source.rb +4 -10
  106. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  107. data/lib/chef/resource/cron_access.rb +2 -4
  108. data/lib/chef/resource/dmg_package.rb +6 -10
  109. data/lib/chef/resource/dpkg_package.rb +1 -1
  110. data/lib/chef/resource/execute.rb +6 -1
  111. data/lib/chef/resource/file.rb +1 -1
  112. data/lib/chef/resource/group.rb +2 -2
  113. data/lib/chef/resource/homebrew_cask.rb +5 -15
  114. data/lib/chef/resource/homebrew_tap.rb +2 -6
  115. data/lib/chef/resource/hostname.rb +21 -17
  116. data/lib/chef/resource/http_request.rb +1 -1
  117. data/lib/chef/resource/kernel_module.rb +6 -17
  118. data/lib/chef/resource/locale.rb +2 -3
  119. data/lib/chef/resource/lwrp_base.rb +4 -0
  120. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  121. data/lib/chef/resource/mdadm.rb +53 -7
  122. data/lib/chef/resource/mount.rb +3 -2
  123. data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
  124. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  125. data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
  126. data/lib/chef/resource/plist.rb +7 -7
  127. data/lib/chef/resource/powershell_script.rb +1 -1
  128. data/lib/chef/resource/remote_file.rb +1 -1
  129. data/lib/chef/resource/rhsm_errata.rb +16 -1
  130. data/lib/chef/resource/rhsm_errata_level.rb +10 -1
  131. data/lib/chef/resource/rhsm_register.rb +12 -6
  132. data/lib/chef/resource/rhsm_repo.rb +2 -6
  133. data/lib/chef/resource/rhsm_subscription.rb +7 -11
  134. data/lib/chef/resource/scm/git.rb +1 -1
  135. data/lib/chef/resource/sudo.rb +6 -6
  136. data/lib/chef/resource/support/client.erb +0 -6
  137. data/lib/chef/resource/sysctl.rb +2 -6
  138. data/lib/chef/resource/systemd_unit.rb +3 -3
  139. data/lib/chef/resource/template.rb +1 -1
  140. data/lib/chef/resource/timezone.rb +1 -3
  141. data/lib/chef/resource/user/mac_user.rb +1 -1
  142. data/lib/chef/resource/user_ulimit.rb +2 -3
  143. data/lib/chef/resource/windows_ad_join.rb +2 -6
  144. data/lib/chef/resource/windows_audit_policy.rb +1 -1
  145. data/lib/chef/resource/windows_auto_run.rb +2 -5
  146. data/lib/chef/resource/windows_certificate.rb +207 -73
  147. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  148. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  149. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  150. data/lib/chef/resource/windows_dns_record.rb +2 -6
  151. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  152. data/lib/chef/resource/windows_env.rb +5 -4
  153. data/lib/chef/resource/windows_feature.rb +3 -9
  154. data/lib/chef/resource/windows_feature_dism.rb +2 -6
  155. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  156. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  157. data/lib/chef/resource/windows_firewall_rule.rb +2 -5
  158. data/lib/chef/resource/windows_font.rb +2 -4
  159. data/lib/chef/resource/windows_pagefile.rb +2 -6
  160. data/lib/chef/resource/windows_path.rb +2 -2
  161. data/lib/chef/resource/windows_printer.rb +4 -4
  162. data/lib/chef/resource/windows_printer_port.rb +6 -6
  163. data/lib/chef/resource/windows_security_policy.rb +9 -12
  164. data/lib/chef/resource/windows_share.rb +14 -21
  165. data/lib/chef/resource/windows_shortcut.rb +4 -6
  166. data/lib/chef/resource/windows_task.rb +17 -5
  167. data/lib/chef/resource/windows_uac.rb +2 -4
  168. data/lib/chef/resource/windows_user_privilege.rb +5 -5
  169. data/lib/chef/resource/windows_workgroup.rb +1 -2
  170. data/lib/chef/resources.rb +0 -1
  171. data/lib/chef/user.rb +0 -1
  172. data/lib/chef/user_v1.rb +3 -4
  173. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  174. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  175. data/lib/chef/version.rb +1 -1
  176. data/lib/chef/win32/api.rb +2 -9
  177. data/lib/chef/win32/registry.rb +4 -2
  178. data/lib/chef/win32/version.rb +1 -2
  179. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  180. data/spec/data/lwrp/resources/bar.rb +2 -0
  181. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  182. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  183. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  184. data/spec/data/lwrp/resources/foo.rb +2 -0
  185. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  186. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  187. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  188. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  189. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  190. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  191. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  192. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  193. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  194. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  195. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  196. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  197. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  198. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  199. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  200. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  201. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  202. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  203. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  204. data/spec/functional/resource/apt_package_spec.rb +1 -1
  205. data/spec/functional/resource/chocolatey_package_spec.rb +13 -0
  206. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  207. data/spec/functional/resource/group_spec.rb +1 -5
  208. data/spec/functional/resource/link_spec.rb +0 -8
  209. data/spec/functional/resource/registry_spec.rb +8 -8
  210. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  211. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  212. data/spec/functional/version_spec.rb +1 -1
  213. data/spec/functional/win32/registry_spec.rb +1 -1
  214. data/spec/integration/client/client_spec.rb +5 -2
  215. data/spec/integration/client/exit_code_spec.rb +1 -1
  216. data/spec/integration/client/ipv6_spec.rb +1 -1
  217. data/spec/integration/compliance/compliance_spec.rb +1 -1
  218. data/spec/integration/ohai/ohai_spec.rb +7 -6
  219. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  220. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  221. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  222. data/spec/integration/recipes/notifies_spec.rb +15 -1
  223. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  224. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  225. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  226. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  227. data/spec/spec_helper.rb +10 -13
  228. data/spec/support/chef_helpers.rb +0 -16
  229. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  230. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  231. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  232. data/spec/support/matchers/leak.rb +7 -9
  233. data/spec/support/platform_helpers.rb +1 -8
  234. data/spec/support/shared/integration/integration_helper.rb +0 -1
  235. data/spec/support/shared/unit/script_resource.rb +2 -2
  236. data/spec/unit/application/solo_spec.rb +2 -2
  237. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  238. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  239. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  240. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  241. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  242. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  243. data/spec/unit/compliance/runner_spec.rb +30 -4
  244. data/spec/unit/cookbook_version_spec.rb +0 -52
  245. data/spec/unit/data_bag_item_spec.rb +1 -6
  246. data/spec/unit/data_collector_spec.rb +1 -47
  247. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  248. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  249. data/spec/unit/lwrp_spec.rb +1 -1
  250. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  251. data/spec/unit/node/attribute_spec.rb +1 -1
  252. data/spec/unit/node_spec.rb +78 -0
  253. data/spec/unit/org_group_spec.rb +45 -0
  254. data/spec/unit/policy_builder/policyfile_spec.rb +1 -11
  255. data/spec/unit/property_spec.rb +23 -22
  256. data/spec/unit/provider/cron_spec.rb +1 -1
  257. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  258. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  259. data/spec/unit/provider/group/pw_spec.rb +2 -2
  260. data/spec/unit/provider/group_spec.rb +1 -1
  261. data/spec/unit/provider/package/apt_spec.rb +84 -18
  262. data/spec/unit/provider/package/deb_spec.rb +3 -3
  263. data/spec/unit/provider/package/powershell_spec.rb +12 -74
  264. data/spec/unit/provider/package/rubygems_spec.rb +18 -30
  265. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  266. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  267. data/spec/unit/provider/service/macosx_spec.rb +2 -2
  268. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  269. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  270. data/spec/unit/provider/service/windows_spec.rb +2 -2
  271. data/spec/unit/provider/subversion_spec.rb +2 -2
  272. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  273. data/spec/unit/provider/zypper_repository_spec.rb +2 -2
  274. data/spec/unit/provider_spec.rb +0 -8
  275. data/spec/unit/resource/homebrew_cask_spec.rb +11 -29
  276. data/spec/unit/resource/mount_spec.rb +0 -10
  277. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  278. data/spec/unit/resource/rhsm_subscription_spec.rb +3 -50
  279. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  280. data/spec/unit/resource/user_ulimit_spec.rb +1 -14
  281. data/spec/unit/resource/windows_task_spec.rb +1 -1
  282. data/spec/unit/user_spec.rb +1 -1
  283. data/spec/unit/user_v1_spec.rb +6 -4
  284. data/tasks/rspec.rb +15 -7
  285. metadata +17 -380
  286. data/bin/knife +0 -24
  287. data/lib/chef/application/knife.rb +0 -234
  288. data/lib/chef/application/windows_service.rb +0 -338
  289. data/lib/chef/application/windows_service_manager.rb +0 -205
  290. data/lib/chef/chef_fs/knife.rb +0 -160
  291. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  292. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  293. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  294. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  295. data/lib/chef/knife/acl_add.rb +0 -57
  296. data/lib/chef/knife/acl_base.rb +0 -183
  297. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  298. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  299. data/lib/chef/knife/acl_remove.rb +0 -62
  300. data/lib/chef/knife/acl_show.rb +0 -56
  301. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  302. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  303. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  304. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  305. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  306. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  307. data/lib/chef/knife/bootstrap.rb +0 -1192
  308. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  309. data/lib/chef/knife/client_create.rb +0 -101
  310. data/lib/chef/knife/client_delete.rb +0 -62
  311. data/lib/chef/knife/client_edit.rb +0 -52
  312. data/lib/chef/knife/client_key_create.rb +0 -73
  313. data/lib/chef/knife/client_key_delete.rb +0 -80
  314. data/lib/chef/knife/client_key_edit.rb +0 -83
  315. data/lib/chef/knife/client_key_list.rb +0 -73
  316. data/lib/chef/knife/client_key_show.rb +0 -80
  317. data/lib/chef/knife/client_list.rb +0 -41
  318. data/lib/chef/knife/client_reregister.rb +0 -58
  319. data/lib/chef/knife/client_show.rb +0 -48
  320. data/lib/chef/knife/config_get.rb +0 -39
  321. data/lib/chef/knife/config_get_profile.rb +0 -37
  322. data/lib/chef/knife/config_list.rb +0 -139
  323. data/lib/chef/knife/config_list_profiles.rb +0 -37
  324. data/lib/chef/knife/config_show.rb +0 -127
  325. data/lib/chef/knife/config_use.rb +0 -61
  326. data/lib/chef/knife/config_use_profile.rb +0 -47
  327. data/lib/chef/knife/configure.rb +0 -150
  328. data/lib/chef/knife/configure_client.rb +0 -48
  329. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  330. data/lib/chef/knife/cookbook_delete.rb +0 -151
  331. data/lib/chef/knife/cookbook_download.rb +0 -142
  332. data/lib/chef/knife/cookbook_list.rb +0 -47
  333. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  334. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  335. data/lib/chef/knife/cookbook_show.rb +0 -98
  336. data/lib/chef/knife/cookbook_upload.rb +0 -292
  337. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  338. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  339. data/lib/chef/knife/core/formatting_options.rb +0 -49
  340. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  341. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  342. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  343. data/lib/chef/knife/core/node_editor.rb +0 -130
  344. data/lib/chef/knife/core/node_presenter.rb +0 -133
  345. data/lib/chef/knife/core/object_loader.rb +0 -115
  346. data/lib/chef/knife/core/status_presenter.rb +0 -147
  347. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  348. data/lib/chef/knife/core/text_formatter.rb +0 -85
  349. data/lib/chef/knife/core/ui.rb +0 -338
  350. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
  351. data/lib/chef/knife/data_bag_create.rb +0 -81
  352. data/lib/chef/knife/data_bag_delete.rb +0 -49
  353. data/lib/chef/knife/data_bag_edit.rb +0 -74
  354. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  355. data/lib/chef/knife/data_bag_list.rb +0 -42
  356. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  357. data/lib/chef/knife/data_bag_show.rb +0 -69
  358. data/lib/chef/knife/delete.rb +0 -125
  359. data/lib/chef/knife/deps.rb +0 -156
  360. data/lib/chef/knife/diff.rb +0 -83
  361. data/lib/chef/knife/download.rb +0 -84
  362. data/lib/chef/knife/edit.rb +0 -88
  363. data/lib/chef/knife/environment_compare.rb +0 -128
  364. data/lib/chef/knife/environment_create.rb +0 -52
  365. data/lib/chef/knife/environment_delete.rb +0 -44
  366. data/lib/chef/knife/environment_edit.rb +0 -44
  367. data/lib/chef/knife/environment_from_file.rb +0 -84
  368. data/lib/chef/knife/environment_list.rb +0 -41
  369. data/lib/chef/knife/environment_show.rb +0 -47
  370. data/lib/chef/knife/exec.rb +0 -99
  371. data/lib/chef/knife/group_add.rb +0 -55
  372. data/lib/chef/knife/group_create.rb +0 -49
  373. data/lib/chef/knife/group_destroy.rb +0 -53
  374. data/lib/chef/knife/group_list.rb +0 -43
  375. data/lib/chef/knife/group_remove.rb +0 -56
  376. data/lib/chef/knife/group_show.rb +0 -49
  377. data/lib/chef/knife/key_create.rb +0 -112
  378. data/lib/chef/knife/key_create_base.rb +0 -50
  379. data/lib/chef/knife/key_delete.rb +0 -55
  380. data/lib/chef/knife/key_edit.rb +0 -118
  381. data/lib/chef/knife/key_edit_base.rb +0 -55
  382. data/lib/chef/knife/key_list.rb +0 -90
  383. data/lib/chef/knife/key_list_base.rb +0 -45
  384. data/lib/chef/knife/key_show.rb +0 -53
  385. data/lib/chef/knife/list.rb +0 -177
  386. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  387. data/lib/chef/knife/node_create.rb +0 -47
  388. data/lib/chef/knife/node_delete.rb +0 -46
  389. data/lib/chef/knife/node_edit.rb +0 -70
  390. data/lib/chef/knife/node_environment_set.rb +0 -53
  391. data/lib/chef/knife/node_from_file.rb +0 -51
  392. data/lib/chef/knife/node_list.rb +0 -44
  393. data/lib/chef/knife/node_policy_set.rb +0 -79
  394. data/lib/chef/knife/node_run_list_add.rb +0 -104
  395. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  396. data/lib/chef/knife/node_run_list_set.rb +0 -66
  397. data/lib/chef/knife/node_show.rb +0 -63
  398. data/lib/chef/knife/null.rb +0 -12
  399. data/lib/chef/knife/raw.rb +0 -123
  400. data/lib/chef/knife/recipe_list.rb +0 -32
  401. data/lib/chef/knife/rehash.rb +0 -50
  402. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  403. data/lib/chef/knife/role_create.rb +0 -53
  404. data/lib/chef/knife/role_delete.rb +0 -46
  405. data/lib/chef/knife/role_edit.rb +0 -45
  406. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  407. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  408. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  409. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  410. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  411. data/lib/chef/knife/role_from_file.rb +0 -51
  412. data/lib/chef/knife/role_list.rb +0 -42
  413. data/lib/chef/knife/role_run_list_add.rb +0 -87
  414. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  415. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  416. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  417. data/lib/chef/knife/role_run_list_set.rb +0 -69
  418. data/lib/chef/knife/role_show.rb +0 -48
  419. data/lib/chef/knife/search.rb +0 -194
  420. data/lib/chef/knife/serve.rb +0 -65
  421. data/lib/chef/knife/show.rb +0 -72
  422. data/lib/chef/knife/ssh.rb +0 -645
  423. data/lib/chef/knife/ssl_check.rb +0 -284
  424. data/lib/chef/knife/ssl_fetch.rb +0 -161
  425. data/lib/chef/knife/status.rb +0 -95
  426. data/lib/chef/knife/supermarket_download.rb +0 -121
  427. data/lib/chef/knife/supermarket_install.rb +0 -192
  428. data/lib/chef/knife/supermarket_list.rb +0 -76
  429. data/lib/chef/knife/supermarket_search.rb +0 -53
  430. data/lib/chef/knife/supermarket_share.rb +0 -166
  431. data/lib/chef/knife/supermarket_show.rb +0 -66
  432. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  433. data/lib/chef/knife/tag_create.rb +0 -52
  434. data/lib/chef/knife/tag_delete.rb +0 -60
  435. data/lib/chef/knife/tag_list.rb +0 -47
  436. data/lib/chef/knife/upload.rb +0 -86
  437. data/lib/chef/knife/user_create.rb +0 -107
  438. data/lib/chef/knife/user_delete.rb +0 -44
  439. data/lib/chef/knife/user_dissociate.rb +0 -42
  440. data/lib/chef/knife/user_edit.rb +0 -52
  441. data/lib/chef/knife/user_invite_add.rb +0 -43
  442. data/lib/chef/knife/user_invite_list.rb +0 -34
  443. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  444. data/lib/chef/knife/user_key_create.rb +0 -73
  445. data/lib/chef/knife/user_key_delete.rb +0 -80
  446. data/lib/chef/knife/user_key_edit.rb +0 -83
  447. data/lib/chef/knife/user_key_list.rb +0 -73
  448. data/lib/chef/knife/user_key_show.rb +0 -80
  449. data/lib/chef/knife/user_list.rb +0 -42
  450. data/lib/chef/knife/user_reregister.rb +0 -59
  451. data/lib/chef/knife/user_show.rb +0 -48
  452. data/lib/chef/knife/xargs.rb +0 -282
  453. data/lib/chef/knife/yaml_convert.rb +0 -91
  454. data/lib/chef/knife.rb +0 -665
  455. data/lib/chef/resource/user/dscl_user.rb +0 -35
  456. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  457. data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
  458. data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
  459. data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
  460. data/spec/data/knife_subcommand/test_yourself.rb +0 -21
  461. data/spec/functional/knife/configure_spec.rb +0 -33
  462. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  463. data/spec/functional/knife/exec_spec.rb +0 -55
  464. data/spec/functional/knife/rehash_spec.rb +0 -39
  465. data/spec/functional/knife/smoke_test.rb +0 -42
  466. data/spec/functional/knife/ssh_spec.rb +0 -352
  467. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  468. data/spec/functional/resource/windows_service_spec.rb +0 -105
  469. data/spec/functional/win32/service_manager_spec.rb +0 -220
  470. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  471. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  472. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  473. data/spec/integration/knife/chefignore_spec.rb +0 -301
  474. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  475. data/spec/integration/knife/client_create_spec.rb +0 -70
  476. data/spec/integration/knife/client_delete_spec.rb +0 -64
  477. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  478. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  479. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  480. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  481. data/spec/integration/knife/client_list_spec.rb +0 -49
  482. data/spec/integration/knife/client_show_spec.rb +0 -37
  483. data/spec/integration/knife/common_options_spec.rb +0 -174
  484. data/spec/integration/knife/config_list_spec.rb +0 -220
  485. data/spec/integration/knife/config_show_spec.rb +0 -192
  486. data/spec/integration/knife/config_use_spec.rb +0 -198
  487. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  488. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  489. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  490. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  491. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  492. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  493. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  494. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  495. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  496. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  497. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  498. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  499. data/spec/integration/knife/delete_spec.rb +0 -1018
  500. data/spec/integration/knife/deps_spec.rb +0 -703
  501. data/spec/integration/knife/diff_spec.rb +0 -605
  502. data/spec/integration/knife/download_spec.rb +0 -1336
  503. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  504. data/spec/integration/knife/environment_create_spec.rb +0 -41
  505. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  506. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  507. data/spec/integration/knife/environment_list_spec.rb +0 -42
  508. data/spec/integration/knife/environment_show_spec.rb +0 -77
  509. data/spec/integration/knife/list_spec.rb +0 -1060
  510. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  511. data/spec/integration/knife/node_create_spec.rb +0 -47
  512. data/spec/integration/knife/node_delete_spec.rb +0 -48
  513. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  514. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  515. data/spec/integration/knife/node_list_spec.rb +0 -45
  516. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  517. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  518. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  519. data/spec/integration/knife/node_show_spec.rb +0 -36
  520. data/spec/integration/knife/raw_spec.rb +0 -297
  521. data/spec/integration/knife/redirection_spec.rb +0 -64
  522. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  523. data/spec/integration/knife/role_create_spec.rb +0 -41
  524. data/spec/integration/knife/role_delete_spec.rb +0 -48
  525. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  526. data/spec/integration/knife/role_list_spec.rb +0 -45
  527. data/spec/integration/knife/role_show_spec.rb +0 -51
  528. data/spec/integration/knife/search_node_spec.rb +0 -40
  529. data/spec/integration/knife/serve_spec.rb +0 -92
  530. data/spec/integration/knife/show_spec.rb +0 -197
  531. data/spec/integration/knife/upload_spec.rb +0 -1617
  532. data/spec/support/shared/functional/knife.rb +0 -37
  533. data/spec/support/shared/functional/win32_service.rb +0 -57
  534. data/spec/support/shared/integration/knife_support.rb +0 -192
  535. data/spec/support/shared/unit/knife_shared.rb +0 -39
  536. data/spec/unit/application/knife_spec.rb +0 -241
  537. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  538. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  539. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  540. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  541. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  542. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  543. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  544. data/spec/unit/knife/client_create_spec.rb +0 -169
  545. data/spec/unit/knife/client_delete_spec.rb +0 -99
  546. data/spec/unit/knife/client_edit_spec.rb +0 -53
  547. data/spec/unit/knife/client_list_spec.rb +0 -34
  548. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  549. data/spec/unit/knife/client_show_spec.rb +0 -52
  550. data/spec/unit/knife/configure_client_spec.rb +0 -81
  551. data/spec/unit/knife/configure_spec.rb +0 -190
  552. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  553. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  554. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  555. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  556. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  557. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  558. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  559. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  560. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  561. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  562. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  563. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  564. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  565. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  566. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  567. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  568. data/spec/unit/knife/core/ui_spec.rb +0 -656
  569. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  570. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  571. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  572. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  573. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  574. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  575. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  576. data/spec/unit/knife/environment_create_spec.rb +0 -91
  577. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  578. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  579. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  580. data/spec/unit/knife/environment_list_spec.rb +0 -54
  581. data/spec/unit/knife/environment_show_spec.rb +0 -52
  582. data/spec/unit/knife/key_create_spec.rb +0 -223
  583. data/spec/unit/knife/key_delete_spec.rb +0 -133
  584. data/spec/unit/knife/key_edit_spec.rb +0 -264
  585. data/spec/unit/knife/key_helper.rb +0 -74
  586. data/spec/unit/knife/key_list_spec.rb +0 -216
  587. data/spec/unit/knife/key_show_spec.rb +0 -126
  588. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  589. data/spec/unit/knife/node_delete_spec.rb +0 -77
  590. data/spec/unit/knife/node_edit_spec.rb +0 -116
  591. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  592. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  593. data/spec/unit/knife/node_list_spec.rb +0 -62
  594. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  595. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  596. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  597. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  598. data/spec/unit/knife/node_show_spec.rb +0 -65
  599. data/spec/unit/knife/raw_spec.rb +0 -43
  600. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  601. data/spec/unit/knife/role_create_spec.rb +0 -80
  602. data/spec/unit/knife/role_delete_spec.rb +0 -67
  603. data/spec/unit/knife/role_edit_spec.rb +0 -77
  604. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  605. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  606. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  607. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  608. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  609. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  610. data/spec/unit/knife/role_list_spec.rb +0 -54
  611. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  612. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  613. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  614. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  615. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  616. data/spec/unit/knife/role_show_spec.rb +0 -59
  617. data/spec/unit/knife/ssh_spec.rb +0 -403
  618. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  619. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  620. data/spec/unit/knife/status_spec.rb +0 -112
  621. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  622. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  623. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  624. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  625. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  626. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  627. data/spec/unit/knife/tag_create_spec.rb +0 -23
  628. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  629. data/spec/unit/knife/tag_list_spec.rb +0 -23
  630. data/spec/unit/knife/user_create_spec.rb +0 -184
  631. data/spec/unit/knife/user_delete_spec.rb +0 -46
  632. data/spec/unit/knife/user_edit_spec.rb +0 -48
  633. data/spec/unit/knife/user_list_spec.rb +0 -36
  634. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  635. data/spec/unit/knife/user_show_spec.rb +0 -46
  636. data/spec/unit/knife_spec.rb +0 -634
  637. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  638. data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,81 +0,0 @@
1
- #
2
- # Author:: Thomas Bishop (<bishop.thomas@gmail.com>)
3
- # Copyright:: Copyright 2011-2016, Thomas Bishop
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::ConfigureClient do
22
- before do
23
- @knife = Chef::Knife::ConfigureClient.new
24
- Chef::Config[:chef_server_url] = "https://chef.example.com"
25
- Chef::Config[:validation_client_name] = "chef-validator"
26
- Chef::Config[:validation_key] = "/etc/chef/validation.pem"
27
-
28
- @stderr = StringIO.new
29
- allow(@knife.ui).to receive(:stderr).and_return(@stderr)
30
- end
31
-
32
- describe "run" do
33
- it "should print usage and exit when a directory is not provided" do
34
- expect(@knife).to receive(:show_usage)
35
- expect(@knife.ui).to receive(:fatal).with(/must provide the directory/)
36
- expect do
37
- @knife.run
38
- end.to raise_error SystemExit
39
- end
40
-
41
- describe "when specifing a directory" do
42
- before do
43
- @knife.name_args = ["/home/bob/.chef"]
44
- @client_file = StringIO.new
45
- @validation_file = StringIO.new
46
- expect(File).to receive(:open).with("/home/bob/.chef/client.rb", "w")
47
- .and_yield(@client_file)
48
- expect(File).to receive(:open).with("/home/bob/.chef/validation.pem", "w")
49
- .and_yield(@validation_file)
50
- expect(IO).to receive(:read).and_return("foo_bar_baz")
51
- end
52
-
53
- it "should recursively create the directory" do
54
- expect(FileUtils).to receive(:mkdir_p).with("/home/bob/.chef")
55
- @knife.run
56
- end
57
-
58
- it "should write out the config file" do
59
- allow(FileUtils).to receive(:mkdir_p)
60
- @knife.run
61
- expect(@client_file.string).to match %r{chef_server_url\s+'https\://chef\.example\.com'}
62
- expect(@client_file.string).to match(/validation_client_name\s+'chef-validator'/)
63
- end
64
-
65
- it "should write out the validation.pem file" do
66
- allow(FileUtils).to receive(:mkdir_p)
67
- @knife.run
68
- expect(@validation_file.string).to match(/foo_bar_baz/)
69
- end
70
-
71
- it "should print information on what is being configured" do
72
- allow(FileUtils).to receive(:mkdir_p)
73
- @knife.run
74
- expect(@stderr.string).to match(/creating client configuration/i)
75
- expect(@stderr.string).to match(/writing client\.rb/i)
76
- expect(@stderr.string).to match(/writing validation\.pem/i)
77
- end
78
- end
79
- end
80
-
81
- end
@@ -1,190 +0,0 @@
1
- require "spec_helper"
2
-
3
- describe Chef::Knife::Configure do
4
- before do
5
- Chef::Log.logger = Logger.new(StringIO.new)
6
-
7
- Chef::Config[:node_name] = "webmonkey.example.com"
8
- @knife = Chef::Knife::Configure.new
9
- @rest_client = double("null rest client", post: { result: :true })
10
- allow(@knife).to receive(:rest).and_return(@rest_client)
11
-
12
- @out = StringIO.new
13
- allow(@knife.ui).to receive(:stdout).and_return(@out)
14
- @knife.config[:config_file] = "/home/you/.chef/knife.rb"
15
-
16
- @in = StringIO.new("\n" * 7)
17
- allow(@knife.ui).to receive(:stdin).and_return(@in)
18
-
19
- @err = StringIO.new
20
- allow(@knife.ui).to receive(:stderr).and_return(@err)
21
-
22
- allow(Ohai::System).to receive(:new).and_return(ohai)
23
- end
24
-
25
- let(:fqdn) { "foo.example.org" }
26
-
27
- let(:ohai) do
28
- o = {}
29
- allow(o).to receive(:all_plugins).with(%w{ os hostname fqdn })
30
- o[:fqdn] = fqdn
31
- o
32
- end
33
-
34
- let(:default_admin_key) { "/etc/chef-server/admin.pem" }
35
- let(:default_admin_key_win32) { File.expand_path(default_admin_key) }
36
-
37
- let(:default_validator_key) { "/etc/chef-server/chef-validator.pem" }
38
- let(:default_validator_key_win32) { File.expand_path(default_validator_key) }
39
-
40
- let(:default_server_url) { "https://#{fqdn}/organizations/myorg" }
41
-
42
- it "asks the user for the URL of the chef server" do
43
- @knife.ask_user_for_config
44
- expect(@out.string).to match(Regexp.escape("Please enter the chef server URL: [#{default_server_url}]"))
45
- expect(@knife.chef_server).to eq(default_server_url)
46
- end
47
-
48
- it "asks the user for the clientname they want for the new client if -i is specified" do
49
- @knife.config[:initial] = true
50
- allow(Etc).to receive(:getlogin).and_return("a-new-user")
51
- @knife.ask_user_for_config
52
- expect(@out.string).to match(Regexp.escape("Please enter a name for the new user: [a-new-user]"))
53
- expect(@knife.new_client_name).to eq(Etc.getlogin)
54
- end
55
-
56
- it "should not ask the user for the clientname they want for the new client if -i and --node_name are specified" do
57
- @knife.config[:initial] = true
58
- @knife.config[:node_name] = "testnode"
59
- allow(Etc).to receive(:getlogin).and_return("a-new-user")
60
- @knife.ask_user_for_config
61
- expect(@out.string).not_to match(Regexp.escape("Please enter a name for the new user"))
62
- expect(@knife.new_client_name).to eq("testnode")
63
- end
64
-
65
- it "asks the user for the existing API username or clientname if -i is not specified" do
66
- allow(Etc).to receive(:getlogin).and_return("a-new-user")
67
- @knife.ask_user_for_config
68
- expect(@out.string).to match(Regexp.escape("Please enter an existing username or clientname for the API: [a-new-user]"))
69
- expect(@knife.new_client_name).to eq(Etc.getlogin)
70
- end
71
-
72
- it "asks the user for the existing admin client's name if -i is specified" do
73
- @knife.config[:initial] = true
74
- @knife.ask_user_for_config
75
- expect(@out.string).to match(Regexp.escape("Please enter the existing admin name: [admin]"))
76
- expect(@knife.admin_client_name).to eq("admin")
77
- end
78
-
79
- it "should not ask the user for the existing admin client's name if -i and --admin-client_name are specified" do
80
- @knife.config[:initial] = true
81
- @knife.config[:admin_client_name] = "my-webui"
82
- @knife.ask_user_for_config
83
- expect(@out.string).not_to match(Regexp.escape("Please enter the existing admin:"))
84
- expect(@knife.admin_client_name).to eq("my-webui")
85
- end
86
-
87
- it "should not ask the user for the existing admin client's name if -i is not specified" do
88
- @knife.ask_user_for_config
89
- expect(@out.string).not_to match(Regexp.escape("Please enter the existing admin: [admin]"))
90
- expect(@knife.admin_client_name).not_to eq("admin")
91
- end
92
-
93
- it "asks the user for the location of the existing admin key if -i is specified" do
94
- @knife.config[:initial] = true
95
- @knife.ask_user_for_config
96
- expect(@out.string).to match(Regexp.escape("Please enter the location of the existing admin's private key: [#{default_admin_key}]"))
97
- if windows?
98
- expect(@knife.admin_client_key.capitalize).to eq(default_admin_key_win32.capitalize)
99
- else
100
- expect(@knife.admin_client_key).to eq(default_admin_key)
101
- end
102
- end
103
-
104
- it "should not ask the user for the location of the existing admin key if -i and --admin_client_key are specified" do
105
- @knife.config[:initial] = true
106
- @knife.config[:admin_client_key] = "/home/you/.chef/my-webui.pem"
107
- @knife.ask_user_for_config
108
- expect(@out.string).not_to match(Regexp.escape("Please enter the location of the existing admin client's private key:"))
109
- if windows?
110
- expect(@knife.admin_client_key).to match %r{^[A-Za-z]:/home/you/\.chef/my-webui\.pem$}
111
- else
112
- expect(@knife.admin_client_key).to eq("/home/you/.chef/my-webui.pem")
113
- end
114
- end
115
-
116
- it "should not ask the user for the location of the existing admin key if -i is not specified" do
117
- @knife.ask_user_for_config
118
- expect(@out.string).not_to match(Regexp.escape("Please enter the location of the existing admin client's private key: [#{default_admin_key}]"))
119
- if windows?
120
- expect(@knife.admin_client_key).not_to eq(default_admin_key_win32)
121
- else
122
- expect(@knife.admin_client_key).not_to eq(default_admin_key)
123
- end
124
- end
125
-
126
- it "should not ask the user for anything if -i and all other properties are specified" do
127
- @knife.config[:initial] = true
128
- @knife.config[:chef_server_url] = "http://localhost:5000"
129
- @knife.config[:node_name] = "testnode"
130
- @knife.config[:admin_client_name] = "my-webui"
131
- @knife.config[:admin_client_key] = "/home/you/.chef/my-webui.pem"
132
- @knife.config[:client_key] = "/home/you/a-new-user.pem"
133
- allow(Etc).to receive(:getlogin).and_return("a-new-user")
134
-
135
- @knife.ask_user_for_config
136
- expect(@out.string).to match(/\s*/)
137
-
138
- expect(@knife.new_client_name).to eq("testnode")
139
- expect(@knife.chef_server).to eq("http://localhost:5000")
140
- expect(@knife.admin_client_name).to eq("my-webui")
141
- if windows?
142
- expect(@knife.admin_client_key).to match %r{^[A-Za-z]:/home/you/\.chef/my-webui\.pem$}
143
- expect(@knife.new_client_key).to match %r{^[A-Za-z]:/home/you/a-new-user\.pem$}
144
- else
145
- expect(@knife.admin_client_key).to eq("/home/you/.chef/my-webui.pem")
146
- expect(@knife.new_client_key).to eq("/home/you/a-new-user.pem")
147
- end
148
- end
149
-
150
- it "writes the new data to a config file" do
151
- allow(Chef::Util::PathHelper).to receive(:home).with(".chef").and_return("/home/you/.chef")
152
- allow(File).to receive(:expand_path).with("/home/you/.chef/credentials").and_return("/home/you/.chef/credentials")
153
- allow(File).to receive(:expand_path).with("/home/you/.chef/#{Etc.getlogin}.pem").and_return("/home/you/.chef/#{Etc.getlogin}.pem")
154
- allow(File).to receive(:expand_path).with(default_admin_key).and_return(default_admin_key)
155
- expect(FileUtils).to receive(:mkdir_p).with("/home/you/.chef")
156
- config_file = StringIO.new
157
- expect(::File).to receive(:open).with("/home/you/.chef/credentials", "w").and_yield config_file
158
- @knife.config[:repository] = "/home/you/chef-repo"
159
- @knife.run
160
- expect(config_file.string).to match(/^client_name\s+=\s+'#{Etc.getlogin}'$/)
161
- expect(config_file.string).to match(%r{^client_key\s+=\s+'/home/you/.chef/#{Etc.getlogin}.pem'$})
162
- expect(config_file.string).to match(/^chef_server_url\s+=\s+'#{default_server_url}'$/)
163
- end
164
-
165
- it "creates a new client when given the --initial option" do
166
- allow(Chef::Util::PathHelper).to receive(:home).with(".chef").and_return("/home/you/.chef")
167
- expect(File).to receive(:expand_path).with("/home/you/.chef/credentials").and_return("/home/you/.chef/credentials")
168
- expect(File).to receive(:expand_path).with("/home/you/.chef/a-new-user.pem").and_return("/home/you/.chef/a-new-user.pem")
169
- allow(File).to receive(:expand_path).with(default_admin_key).and_return(default_admin_key)
170
- Chef::Config[:node_name] = "webmonkey.example.com"
171
-
172
- user_command = Chef::Knife::UserCreate.new
173
- expect(user_command).to receive(:run)
174
-
175
- allow(Etc).to receive(:getlogin).and_return("a-new-user")
176
-
177
- allow(Chef::Knife::UserCreate).to receive(:new).and_return(user_command)
178
- expect(FileUtils).to receive(:mkdir_p).with("/home/you/.chef")
179
- expect(::File).to receive(:open).with("/home/you/.chef/credentials", "w")
180
- @knife.config[:initial] = true
181
- @knife.config[:user_password] = "blah"
182
- @knife.run
183
- expect(user_command.name_args).to eq(Array("a-new-user"))
184
- expect(user_command.config[:user_password]).to eq("blah")
185
- expect(user_command.config[:admin]).to be_truthy
186
- expect(user_command.config[:file]).to eq("/home/you/.chef/a-new-user.pem")
187
- expect(user_command.config[:yes]).to be_truthy
188
- expect(user_command.config[:disable_editing]).to be_truthy
189
- end
190
- end
@@ -1,87 +0,0 @@
1
- #
2
- # Author:: Stephen Delano (<stephen@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::CookbookBulkDelete do
22
- before(:each) do
23
- Chef::Log.logger = Logger.new(StringIO.new)
24
-
25
- Chef::Config[:node_name] = "webmonkey.example.com"
26
- @knife = Chef::Knife::CookbookBulkDelete.new
27
- @knife.config = { print_after: nil }
28
- @knife.name_args = ["."]
29
- @stdout = StringIO.new
30
- @stderr = StringIO.new
31
- allow(@knife.ui).to receive(:stdout).and_return(@stdout)
32
- allow(@knife.ui).to receive(:stderr).and_return(@stderr)
33
- allow(@knife.ui).to receive(:confirm).and_return(true)
34
- @cookbooks = {}
35
- %w{cheezburger pizza lasagna}.each do |cookbook_name|
36
- cookbook = Chef::CookbookVersion.new(cookbook_name)
37
- @cookbooks[cookbook_name] = cookbook
38
- end
39
- @rest = double("Chef::ServerAPI")
40
- allow(@rest).to receive(:get).and_return(@cookbooks)
41
- allow(@rest).to receive(:delete).and_return(true)
42
- allow(@knife).to receive(:rest).and_return(@rest)
43
- allow(Chef::CookbookVersion).to receive(:list).and_return(@cookbooks)
44
-
45
- end
46
-
47
- describe "when there are several cookbooks on the server" do
48
- before do
49
- @cheezburger = { "cheezburger" => { "url" => "file:///dev/null", "versions" => [{ "url" => "file:///dev/null-cheez", "version" => "1.0.0" }] } }
50
- allow(@rest).to receive(:get).with("cookbooks/cheezburger").and_return(@cheezburger)
51
- @pizza = { "pizza" => { "url" => "file:///dev/null", "versions" => [{ "url" => "file:///dev/null-pizza", "version" => "2.0.0" }] } }
52
- allow(@rest).to receive(:get).with("cookbooks/pizza").and_return(@pizza)
53
- @lasagna = { "lasagna" => { "url" => "file:///dev/null", "versions" => [{ "url" => "file:///dev/null-lasagna", "version" => "3.0.0" }] } }
54
- allow(@rest).to receive(:get).with("cookbooks/lasagna").and_return(@lasagna)
55
- end
56
-
57
- it "should print the cookbooks you are about to delete" do
58
- expected = @knife.ui.list(@cookbooks.keys.sort, :columns_down)
59
- @knife.run
60
- expect(@stdout.string).to match(/#{expected}/)
61
- end
62
-
63
- it "should confirm you really want to delete them" do
64
- expect(@knife.ui).to receive(:confirm)
65
- @knife.run
66
- end
67
-
68
- it "should delete each cookbook" do
69
- { "cheezburger" => "1.0.0", "pizza" => "2.0.0", "lasagna" => "3.0.0" }.each do |cookbook_name, version|
70
- expect(@rest).to receive(:delete).with("cookbooks/#{cookbook_name}/#{version}")
71
- end
72
- @knife.run
73
- end
74
-
75
- it "should only delete cookbooks that match the regex" do
76
- @knife.name_args = ["cheezburger"]
77
- expect(@rest).to receive(:delete).with("cookbooks/cheezburger/1.0.0")
78
- @knife.run
79
- end
80
- end
81
-
82
- it "should exit if the regex is not provided" do
83
- @knife.name_args = []
84
- expect { @knife.run }.to raise_error(SystemExit)
85
- end
86
-
87
- end
@@ -1,239 +0,0 @@
1
- #
2
- # Author:: Thomas Bishop (<bishop.thomas@gmail.com>)
3
- # Copyright:: Copyright 2011-2016, Thomas Bishop
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::CookbookDelete do
22
- before(:each) do
23
- @knife = Chef::Knife::CookbookDelete.new
24
- @knife.name_args = ["foobar"]
25
- @knife.cookbook_name = "foobar"
26
- @stdout = StringIO.new
27
- allow(@knife.ui).to receive(:stdout).and_return(@stdout)
28
- @stderr = StringIO.new
29
- allow(@knife.ui).to receive(:stderr).and_return(@stderr)
30
- end
31
-
32
- describe "run" do
33
- it "should print usage and exit when a cookbook name is not provided" do
34
- @knife.name_args = []
35
- expect(@knife).to receive(:show_usage)
36
- expect(@knife.ui).to receive(:fatal)
37
- expect { @knife.run }.to raise_error(SystemExit)
38
- end
39
-
40
- describe "when specifying a cookbook name" do
41
- it "should delete the cookbook without a specific version" do
42
- expect(@knife).to receive(:delete_without_explicit_version)
43
- @knife.run
44
- end
45
-
46
- describe "and a version" do
47
- it "should delete the specific version of the cookbook" do
48
- @knife.name_args << "1.0.0"
49
- expect(@knife).to receive(:delete_explicit_version)
50
- @knife.run
51
- end
52
- end
53
-
54
- describe "with -a or --all" do
55
- it "should delete all versions of the cookbook" do
56
- @knife.config[:all] = true
57
- expect(@knife).to receive(:delete_all_versions)
58
- @knife.run
59
- end
60
- end
61
-
62
- describe "with -p or --purge" do
63
- it "should prompt to purge the files" do
64
- @knife.config[:purge] = true
65
- expect(@knife).to receive(:confirm)
66
- .with(/.+Are you sure you want to purge files.+/)
67
- expect(@knife).to receive(:delete_without_explicit_version)
68
- @knife.run
69
- end
70
- end
71
- end
72
- end
73
-
74
- describe "delete_explicit_version" do
75
- it "should delete the specific cookbook version" do
76
- @knife.cookbook_name = "foobar"
77
- @knife.version = "1.0.0"
78
- expect(@knife).to receive(:delete_object).with(Chef::CookbookVersion,
79
- "foobar version 1.0.0",
80
- "cookbook").and_yield
81
- expect(@knife).to receive(:delete_request).with("cookbooks/foobar/1.0.0")
82
- @knife.delete_explicit_version
83
- end
84
- end
85
-
86
- describe "delete_all_versions" do
87
- it "should prompt to delete all versions of the cookbook" do
88
- @knife.cookbook_name = "foobar"
89
- expect(@knife).to receive(:confirm).with("Do you really want to delete all versions of foobar")
90
- expect(@knife).to receive(:delete_all_without_confirmation)
91
- @knife.delete_all_versions
92
- end
93
- end
94
-
95
- describe "delete_all_without_confirmation" do
96
- it "should delete all versions without confirmation" do
97
- versions = ["1.0.0", "1.1.0"]
98
- expect(@knife).to receive(:available_versions).and_return(versions)
99
- versions.each do |v|
100
- expect(@knife).to receive(:delete_version_without_confirmation).with(v)
101
- end
102
- @knife.delete_all_without_confirmation
103
- end
104
- end
105
-
106
- describe "delete_without_explicit_version" do
107
- it "should exit if there are no available versions" do
108
- expect(@knife).to receive(:available_versions).and_return(nil)
109
- expect { @knife.delete_without_explicit_version }.to raise_error(SystemExit)
110
- end
111
-
112
- it "should delete the version if only one is found" do
113
- expect(@knife).to receive(:available_versions).at_least(:once).and_return(["1.0.0"])
114
- expect(@knife).to receive(:delete_explicit_version)
115
- @knife.delete_without_explicit_version
116
- end
117
-
118
- it "should ask which version(s) to delete if multiple are found" do
119
- expect(@knife).to receive(:available_versions).at_least(:once).and_return(["1.0.0", "1.1.0"])
120
- expect(@knife).to receive(:ask_which_versions_to_delete).and_return(["1.0.0", "1.1.0"])
121
- expect(@knife).to receive(:delete_versions_without_confirmation).with(["1.0.0", "1.1.0"])
122
- @knife.delete_without_explicit_version
123
- end
124
- end
125
-
126
- describe "available_versions" do
127
- before(:each) do
128
- @rest_mock = double("rest")
129
- expect(@knife).to receive(:rest).and_return(@rest_mock)
130
- @cookbook_data = { "foobar" => { "versions" => [{ "version" => "1.0.0" },
131
- { "version" => "1.1.0" },
132
- { "version" => "2.0.0" } ] },
133
- }
134
- end
135
-
136
- it "should return the list of versions of the cookbook" do
137
- expect(@rest_mock).to receive(:get).with("cookbooks/foobar").and_return(@cookbook_data)
138
- expect(@knife.available_versions).to eq(["1.0.0", "1.1.0", "2.0.0"])
139
- end
140
-
141
- it "should raise if an error other than HTTP 404 is returned" do
142
- exception = Net::HTTPClientException.new("500 Internal Server Error", "500")
143
- expect(@rest_mock).to receive(:get).and_raise(exception)
144
- expect { @knife.available_versions }.to raise_error Net::HTTPClientException
145
- end
146
-
147
- describe "if the cookbook can't be found" do
148
- before(:each) do
149
- expect(@rest_mock).to receive(:get)
150
- .and_raise(Net::HTTPClientException.new("404 Not Found", "404"))
151
- end
152
-
153
- it "should print an error" do
154
- @knife.available_versions
155
- expect(@stderr.string).to match(/error.+cannot find a cookbook named foobar/i)
156
- end
157
-
158
- it "should return nil" do
159
- expect(@knife.available_versions).to eq(nil)
160
- end
161
- end
162
- end
163
-
164
- describe "ask_which_version_to_delete" do
165
- before(:each) do
166
- allow(@knife).to receive(:available_versions).and_return(["1.0.0", "1.1.0", "2.0.0"])
167
- end
168
-
169
- it "should prompt the user to select a version" do
170
- prompt = /Which version\(s\) do you want to delete\?.+1\. foobar 1\.0\.0.+2\. foobar 1\.1\.0.+3\. foobar 2\.0\.0.+4\. All versions.+/m
171
- expect(@knife).to receive(:ask_question).with(prompt).and_return("1")
172
- @knife.ask_which_versions_to_delete
173
- end
174
-
175
- it "should print an error and exit if a version wasn't specified" do
176
- expect(@knife).to receive(:ask_question).and_return("")
177
- expect(@knife.ui).to receive(:error).with(/no versions specified/i)
178
- expect { @knife.ask_which_versions_to_delete }.to raise_error(SystemExit)
179
- end
180
-
181
- it "should print an error if an invalid choice was selected" do
182
- expect(@knife).to receive(:ask_question).and_return("100")
183
- expect(@knife.ui).to receive(:error).with(/100 is not a valid choice/i)
184
- @knife.ask_which_versions_to_delete
185
- end
186
-
187
- it "should return the selected versions" do
188
- expect(@knife).to receive(:ask_question).and_return("1, 3")
189
- expect(@knife.ask_which_versions_to_delete).to eq(["1.0.0", "2.0.0"])
190
- end
191
-
192
- it "should return all of the versions if 'all' was selected" do
193
- expect(@knife).to receive(:ask_question).and_return("4")
194
- expect(@knife.ask_which_versions_to_delete).to eq([:all])
195
- end
196
- end
197
-
198
- describe "delete_version_without_confirmation" do
199
- it "should delete the cookbook version" do
200
- expect(@knife).to receive(:delete_request).with("cookbooks/foobar/1.0.0")
201
- @knife.delete_version_without_confirmation("1.0.0")
202
- end
203
-
204
- it "should output that the cookbook was deleted" do
205
- allow(@knife).to receive(:delete_request)
206
- @knife.delete_version_without_confirmation("1.0.0")
207
- expect(@stderr.string).to match(/deleted cookbook\[foobar\]\[1.0.0\]/im)
208
- end
209
-
210
- describe "with --print-after" do
211
- it "should display the cookbook data" do
212
- object = ""
213
- @knife.config[:print_after] = true
214
- allow(@knife).to receive(:delete_request).and_return(object)
215
- expect(@knife).to receive(:format_for_display).with(object)
216
- @knife.delete_version_without_confirmation("1.0.0")
217
- end
218
- end
219
- end
220
-
221
- describe "delete_versions_without_confirmation" do
222
- it "should delete each version without confirmation" do
223
- versions = ["1.0.0", "1.1.0"]
224
- versions.each do |v|
225
- expect(@knife).to receive(:delete_version_without_confirmation).with(v)
226
- end
227
- @knife.delete_versions_without_confirmation(versions)
228
- end
229
-
230
- describe "with -a or --all" do
231
- it "should delete all versions without confirmation" do
232
- versions = [:all]
233
- expect(@knife).to receive(:delete_all_without_confirmation)
234
- @knife.delete_versions_without_confirmation(versions)
235
- end
236
- end
237
- end
238
-
239
- end