chef 16.18.0-universal-mingw32 → 17.0.242-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (649) 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/action_collection.rb +1 -1
  8. data/lib/chef/application/base.rb +1 -1
  9. data/lib/chef/application.rb +1 -1
  10. data/lib/chef/applications.rb +0 -1
  11. data/lib/chef/chef_fs/command_line.rb +5 -2
  12. data/lib/chef/chef_fs/file_system.rb +9 -10
  13. data/lib/chef/client.rb +5 -5
  14. data/lib/chef/compliance/default_attributes.rb +4 -3
  15. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  16. data/lib/chef/compliance/reporter/automate.rb +17 -7
  17. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  18. data/lib/chef/compliance/reporter/cli.rb +77 -0
  19. data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
  20. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  21. data/lib/chef/compliance/runner.rb +65 -27
  22. data/lib/chef/cookbook/gem_installer.rb +1 -5
  23. data/lib/chef/cookbook/synchronizer.rb +3 -5
  24. data/lib/chef/cookbook_loader.rb +2 -4
  25. data/lib/chef/cookbook_uploader.rb +0 -1
  26. data/lib/chef/cookbook_version.rb +4 -26
  27. data/lib/chef/data_bag_item.rb +11 -2
  28. data/lib/chef/data_collector/run_end_message.rb +2 -2
  29. data/lib/chef/delayed_evaluator.rb +4 -0
  30. data/lib/chef/deprecated.rb +6 -12
  31. data/lib/chef/dsl/chef_vault.rb +6 -6
  32. data/lib/chef/dsl/reboot_pending.rb +1 -2
  33. data/lib/chef/exceptions.rb +0 -3
  34. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  35. data/lib/chef/formatters/error_mapper.rb +2 -2
  36. data/lib/chef/group.rb +75 -0
  37. data/lib/chef/http.rb +5 -5
  38. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  39. data/lib/chef/node/attribute.rb +9 -24
  40. data/lib/chef/node/immutable_collections.rb +13 -0
  41. data/lib/chef/node/mixin/deep_merge_cache.rb +14 -10
  42. data/lib/chef/node.rb +19 -20
  43. data/lib/chef/org.rb +3 -2
  44. data/lib/chef/policy_builder/policyfile.rb +0 -5
  45. data/lib/chef/property.rb +18 -0
  46. data/lib/chef/provider/cron.rb +1 -1
  47. data/lib/chef/provider/execute.rb +2 -1
  48. data/lib/chef/provider/file.rb +1 -1
  49. data/lib/chef/provider/git.rb +5 -7
  50. data/lib/chef/provider/group/dscl.rb +1 -1
  51. data/lib/chef/provider/group/groupadd.rb +3 -3
  52. data/lib/chef/provider/group/groupmod.rb +3 -3
  53. data/lib/chef/provider/group/pw.rb +3 -3
  54. data/lib/chef/provider/ifconfig.rb +2 -2
  55. data/lib/chef/provider/link.rb +2 -2
  56. data/lib/chef/provider/mount/aix.rb +3 -3
  57. data/lib/chef/provider/mount/mount.rb +5 -5
  58. data/lib/chef/provider/mount/windows.rb +1 -1
  59. data/lib/chef/provider/mount.rb +5 -5
  60. data/lib/chef/provider/package/apt.rb +27 -1
  61. data/lib/chef/provider/package/deb.rb +3 -3
  62. data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
  63. data/lib/chef/provider/package/portage.rb +2 -2
  64. data/lib/chef/provider/package/powershell.rb +0 -5
  65. data/lib/chef/provider/package/rubygems.rb +9 -15
  66. data/lib/chef/provider/package/windows.rb +2 -4
  67. data/lib/chef/provider/package/yum/yum_helper.py +1 -1
  68. data/lib/chef/provider/package.rb +17 -21
  69. data/lib/chef/provider/route.rb +2 -2
  70. data/lib/chef/provider/service/aixinit.rb +1 -1
  71. data/lib/chef/provider/service/debian.rb +1 -1
  72. data/lib/chef/provider/service/freebsd.rb +15 -21
  73. data/lib/chef/provider/service/macosx.rb +4 -4
  74. data/lib/chef/provider/service/systemd.rb +43 -14
  75. data/lib/chef/provider/service/upstart.rb +2 -13
  76. data/lib/chef/provider/service/windows.rb +12 -12
  77. data/lib/chef/provider/service.rb +6 -6
  78. data/lib/chef/provider/subversion.rb +10 -12
  79. data/lib/chef/provider/systemd_unit.rb +36 -10
  80. data/lib/chef/provider/template/content.rb +3 -7
  81. data/lib/chef/provider/user/dscl.rb +1 -1
  82. data/lib/chef/provider/user/mac.rb +17 -20
  83. data/lib/chef/provider/user/pw.rb +1 -1
  84. data/lib/chef/provider/user/windows.rb +1 -1
  85. data/lib/chef/provider/user.rb +2 -2
  86. data/lib/chef/provider/zypper_repository.rb +2 -2
  87. data/lib/chef/provider.rb +1 -1
  88. data/lib/chef/providers.rb +0 -1
  89. data/lib/chef/resource/alternatives.rb +6 -6
  90. data/lib/chef/resource/apt_package.rb +1 -1
  91. data/lib/chef/resource/apt_preference.rb +2 -2
  92. data/lib/chef/resource/apt_repository.rb +6 -6
  93. data/lib/chef/resource/apt_update.rb +3 -2
  94. data/lib/chef/resource/archive_file.rb +8 -9
  95. data/lib/chef/resource/breakpoint.rb +1 -1
  96. data/lib/chef/resource/build_essential.rb +2 -6
  97. data/lib/chef/resource/chef_client_config.rb +2 -2
  98. data/lib/chef/resource/chef_client_cron.rb +4 -4
  99. data/lib/chef/resource/chef_client_launchd.rb +3 -3
  100. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  101. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  102. data/lib/chef/resource/chef_client_trusted_certificate.rb +0 -1
  103. data/lib/chef/resource/chef_handler.rb +3 -7
  104. data/lib/chef/resource/chef_sleep.rb +1 -1
  105. data/lib/chef/resource/chef_vault_secret.rb +3 -8
  106. data/lib/chef/resource/chocolatey_config.rb +2 -6
  107. data/lib/chef/resource/chocolatey_feature.rb +2 -6
  108. data/lib/chef/resource/chocolatey_source.rb +4 -10
  109. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  110. data/lib/chef/resource/cron_access.rb +2 -4
  111. data/lib/chef/resource/dmg_package.rb +6 -10
  112. data/lib/chef/resource/dpkg_package.rb +1 -1
  113. data/lib/chef/resource/execute.rb +6 -1
  114. data/lib/chef/resource/file.rb +1 -1
  115. data/lib/chef/resource/group.rb +2 -2
  116. data/lib/chef/resource/homebrew_cask.rb +5 -15
  117. data/lib/chef/resource/homebrew_tap.rb +2 -6
  118. data/lib/chef/resource/hostname.rb +21 -17
  119. data/lib/chef/resource/http_request.rb +1 -1
  120. data/lib/chef/resource/kernel_module.rb +6 -17
  121. data/lib/chef/resource/locale.rb +2 -3
  122. data/lib/chef/resource/lwrp_base.rb +4 -0
  123. data/lib/chef/resource/macos_userdefaults.rb +10 -14
  124. data/lib/chef/resource/mdadm.rb +53 -7
  125. data/lib/chef/resource/mount.rb +3 -2
  126. data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
  127. data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
  128. data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
  129. data/lib/chef/resource/plist.rb +7 -7
  130. data/lib/chef/resource/powershell_script.rb +1 -1
  131. data/lib/chef/resource/remote_file.rb +1 -1
  132. data/lib/chef/resource/rhsm_errata.rb +16 -1
  133. data/lib/chef/resource/rhsm_errata_level.rb +10 -1
  134. data/lib/chef/resource/rhsm_register.rb +12 -6
  135. data/lib/chef/resource/rhsm_repo.rb +2 -6
  136. data/lib/chef/resource/rhsm_subscription.rb +7 -11
  137. data/lib/chef/resource/scm/git.rb +1 -1
  138. data/lib/chef/resource/sudo.rb +6 -6
  139. data/lib/chef/resource/support/client.erb +2 -6
  140. data/lib/chef/resource/sysctl.rb +2 -6
  141. data/lib/chef/resource/systemd_unit.rb +3 -3
  142. data/lib/chef/resource/template.rb +1 -1
  143. data/lib/chef/resource/timezone.rb +1 -3
  144. data/lib/chef/resource/user/mac_user.rb +1 -1
  145. data/lib/chef/resource/user_ulimit.rb +2 -3
  146. data/lib/chef/resource/windows_ad_join.rb +2 -6
  147. data/lib/chef/resource/windows_audit_policy.rb +1 -1
  148. data/lib/chef/resource/windows_auto_run.rb +2 -5
  149. data/lib/chef/resource/windows_certificate.rb +207 -73
  150. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  151. data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
  152. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  153. data/lib/chef/resource/windows_dns_record.rb +2 -6
  154. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  155. data/lib/chef/resource/windows_env.rb +5 -4
  156. data/lib/chef/resource/windows_feature.rb +3 -9
  157. data/lib/chef/resource/windows_feature_dism.rb +2 -6
  158. data/lib/chef/resource/windows_feature_powershell.rb +3 -3
  159. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  160. data/lib/chef/resource/windows_firewall_rule.rb +2 -5
  161. data/lib/chef/resource/windows_font.rb +2 -4
  162. data/lib/chef/resource/windows_pagefile.rb +2 -6
  163. data/lib/chef/resource/windows_path.rb +2 -2
  164. data/lib/chef/resource/windows_printer.rb +4 -4
  165. data/lib/chef/resource/windows_printer_port.rb +6 -6
  166. data/lib/chef/resource/windows_security_policy.rb +9 -12
  167. data/lib/chef/resource/windows_share.rb +14 -21
  168. data/lib/chef/resource/windows_shortcut.rb +4 -6
  169. data/lib/chef/resource/windows_task.rb +17 -5
  170. data/lib/chef/resource/windows_uac.rb +2 -4
  171. data/lib/chef/resource/windows_user_privilege.rb +5 -5
  172. data/lib/chef/resource/windows_workgroup.rb +1 -2
  173. data/lib/chef/resource.rb +1 -1
  174. data/lib/chef/resource_reporter.rb +1 -1
  175. data/lib/chef/resources.rb +0 -1
  176. data/lib/chef/shell/ext.rb +3 -3
  177. data/lib/chef/user.rb +0 -1
  178. data/lib/chef/user_v1.rb +3 -4
  179. data/lib/chef/util/dsc/configuration_generator.rb +1 -0
  180. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  181. data/lib/chef/version.rb +1 -1
  182. data/lib/chef/win32/api.rb +2 -9
  183. data/lib/chef/win32/registry.rb +4 -2
  184. data/lib/chef/win32/version.rb +1 -2
  185. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  186. data/spec/data/lwrp/resources/bar.rb +2 -0
  187. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  188. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  189. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  190. data/spec/data/lwrp/resources/foo.rb +2 -0
  191. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  192. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  193. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  194. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  195. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  196. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  197. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  198. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  199. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  200. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  201. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  202. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  203. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  204. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  205. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  206. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  207. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  208. data/spec/functional/dsl/registry_helper_spec.rb +1 -1
  209. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  210. data/spec/functional/resource/apt_package_spec.rb +1 -1
  211. data/spec/functional/resource/chocolatey_package_spec.rb +9 -0
  212. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  213. data/spec/functional/resource/group_spec.rb +1 -5
  214. data/spec/functional/resource/link_spec.rb +0 -8
  215. data/spec/functional/resource/registry_spec.rb +8 -8
  216. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  217. data/spec/functional/resource/windows_certificate_spec.rb +92 -35
  218. data/spec/functional/version_spec.rb +1 -1
  219. data/spec/functional/win32/registry_spec.rb +1 -1
  220. data/spec/integration/client/client_spec.rb +5 -2
  221. data/spec/integration/client/exit_code_spec.rb +1 -1
  222. data/spec/integration/client/ipv6_spec.rb +1 -1
  223. data/spec/integration/compliance/compliance_spec.rb +1 -1
  224. data/spec/integration/ohai/ohai_spec.rb +7 -6
  225. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  226. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  227. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  228. data/spec/integration/recipes/notifies_spec.rb +15 -1
  229. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  230. data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
  231. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  232. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  233. data/spec/spec_helper.rb +10 -13
  234. data/spec/support/chef_helpers.rb +0 -16
  235. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  236. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  237. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  238. data/spec/support/matchers/leak.rb +7 -9
  239. data/spec/support/platform_helpers.rb +1 -8
  240. data/spec/support/shared/integration/integration_helper.rb +0 -1
  241. data/spec/support/shared/unit/script_resource.rb +2 -2
  242. data/spec/unit/application/solo_spec.rb +2 -2
  243. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  244. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  245. data/spec/unit/client_spec.rb +4 -4
  246. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  247. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  248. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
  249. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
  250. data/spec/unit/compliance/runner_spec.rb +30 -4
  251. data/spec/unit/cookbook_version_spec.rb +0 -52
  252. data/spec/unit/data_bag_item_spec.rb +1 -6
  253. data/spec/unit/data_collector_spec.rb +2 -71
  254. data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
  255. data/spec/unit/dsl/registry_helper_spec.rb +1 -1
  256. data/spec/unit/lwrp_spec.rb +1 -1
  257. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  258. data/spec/unit/mixin/powershell_out_spec.rb +2 -2
  259. data/spec/unit/node/attribute_spec.rb +1 -1
  260. data/spec/unit/node_spec.rb +78 -0
  261. data/spec/unit/org_group_spec.rb +45 -0
  262. data/spec/unit/policy_builder/policyfile_spec.rb +1 -11
  263. data/spec/unit/property_spec.rb +23 -22
  264. data/spec/unit/provider/cron_spec.rb +1 -1
  265. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  266. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  267. data/spec/unit/provider/group/pw_spec.rb +2 -2
  268. data/spec/unit/provider/group_spec.rb +1 -1
  269. data/spec/unit/provider/package/apt_spec.rb +84 -18
  270. data/spec/unit/provider/package/deb_spec.rb +3 -3
  271. data/spec/unit/provider/package/powershell_spec.rb +12 -74
  272. data/spec/unit/provider/package/rubygems_spec.rb +18 -30
  273. data/spec/unit/provider/service/arch_service_spec.rb +1 -0
  274. data/spec/unit/provider/service/debian_service_spec.rb +1 -0
  275. data/spec/unit/provider/service/macosx_spec.rb +2 -2
  276. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  277. data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
  278. data/spec/unit/provider/service/windows_spec.rb +2 -2
  279. data/spec/unit/provider/subversion_spec.rb +2 -2
  280. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  281. data/spec/unit/provider/zypper_repository_spec.rb +2 -2
  282. data/spec/unit/provider_spec.rb +0 -8
  283. data/spec/unit/resource/archive_file_spec.rb +1 -13
  284. data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +0 -14
  285. data/spec/unit/resource/homebrew_cask_spec.rb +11 -29
  286. data/spec/unit/resource/mount_spec.rb +0 -10
  287. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  288. data/spec/unit/resource/rhsm_subscription_spec.rb +3 -50
  289. data/spec/unit/resource/systemd_unit_spec.rb +1 -1
  290. data/spec/unit/resource/user_ulimit_spec.rb +1 -14
  291. data/spec/unit/resource/windows_task_spec.rb +1 -1
  292. data/spec/unit/resource_spec.rb +2 -7
  293. data/spec/unit/user_spec.rb +1 -1
  294. data/spec/unit/user_v1_spec.rb +6 -4
  295. data/tasks/rspec.rb +15 -7
  296. metadata +19 -382
  297. data/bin/knife +0 -24
  298. data/lib/chef/application/knife.rb +0 -234
  299. data/lib/chef/application/windows_service.rb +0 -338
  300. data/lib/chef/application/windows_service_manager.rb +0 -205
  301. data/lib/chef/chef_fs/knife.rb +0 -160
  302. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  303. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  304. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  305. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  306. data/lib/chef/knife/acl_add.rb +0 -57
  307. data/lib/chef/knife/acl_base.rb +0 -183
  308. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  309. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  310. data/lib/chef/knife/acl_remove.rb +0 -62
  311. data/lib/chef/knife/acl_show.rb +0 -56
  312. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  313. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  314. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  315. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  316. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  317. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  318. data/lib/chef/knife/bootstrap.rb +0 -1192
  319. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  320. data/lib/chef/knife/client_create.rb +0 -101
  321. data/lib/chef/knife/client_delete.rb +0 -62
  322. data/lib/chef/knife/client_edit.rb +0 -52
  323. data/lib/chef/knife/client_key_create.rb +0 -73
  324. data/lib/chef/knife/client_key_delete.rb +0 -80
  325. data/lib/chef/knife/client_key_edit.rb +0 -83
  326. data/lib/chef/knife/client_key_list.rb +0 -73
  327. data/lib/chef/knife/client_key_show.rb +0 -80
  328. data/lib/chef/knife/client_list.rb +0 -41
  329. data/lib/chef/knife/client_reregister.rb +0 -58
  330. data/lib/chef/knife/client_show.rb +0 -48
  331. data/lib/chef/knife/config_get.rb +0 -39
  332. data/lib/chef/knife/config_get_profile.rb +0 -37
  333. data/lib/chef/knife/config_list.rb +0 -139
  334. data/lib/chef/knife/config_list_profiles.rb +0 -37
  335. data/lib/chef/knife/config_show.rb +0 -127
  336. data/lib/chef/knife/config_use.rb +0 -61
  337. data/lib/chef/knife/config_use_profile.rb +0 -47
  338. data/lib/chef/knife/configure.rb +0 -150
  339. data/lib/chef/knife/configure_client.rb +0 -48
  340. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  341. data/lib/chef/knife/cookbook_delete.rb +0 -151
  342. data/lib/chef/knife/cookbook_download.rb +0 -142
  343. data/lib/chef/knife/cookbook_list.rb +0 -47
  344. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  345. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  346. data/lib/chef/knife/cookbook_show.rb +0 -98
  347. data/lib/chef/knife/cookbook_upload.rb +0 -292
  348. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  349. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  350. data/lib/chef/knife/core/formatting_options.rb +0 -49
  351. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  352. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  353. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  354. data/lib/chef/knife/core/node_editor.rb +0 -130
  355. data/lib/chef/knife/core/node_presenter.rb +0 -133
  356. data/lib/chef/knife/core/object_loader.rb +0 -115
  357. data/lib/chef/knife/core/status_presenter.rb +0 -147
  358. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  359. data/lib/chef/knife/core/text_formatter.rb +0 -85
  360. data/lib/chef/knife/core/ui.rb +0 -338
  361. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
  362. data/lib/chef/knife/data_bag_create.rb +0 -81
  363. data/lib/chef/knife/data_bag_delete.rb +0 -49
  364. data/lib/chef/knife/data_bag_edit.rb +0 -74
  365. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  366. data/lib/chef/knife/data_bag_list.rb +0 -42
  367. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  368. data/lib/chef/knife/data_bag_show.rb +0 -69
  369. data/lib/chef/knife/delete.rb +0 -125
  370. data/lib/chef/knife/deps.rb +0 -156
  371. data/lib/chef/knife/diff.rb +0 -83
  372. data/lib/chef/knife/download.rb +0 -84
  373. data/lib/chef/knife/edit.rb +0 -88
  374. data/lib/chef/knife/environment_compare.rb +0 -128
  375. data/lib/chef/knife/environment_create.rb +0 -52
  376. data/lib/chef/knife/environment_delete.rb +0 -44
  377. data/lib/chef/knife/environment_edit.rb +0 -44
  378. data/lib/chef/knife/environment_from_file.rb +0 -84
  379. data/lib/chef/knife/environment_list.rb +0 -41
  380. data/lib/chef/knife/environment_show.rb +0 -47
  381. data/lib/chef/knife/exec.rb +0 -99
  382. data/lib/chef/knife/group_add.rb +0 -55
  383. data/lib/chef/knife/group_create.rb +0 -49
  384. data/lib/chef/knife/group_destroy.rb +0 -53
  385. data/lib/chef/knife/group_list.rb +0 -43
  386. data/lib/chef/knife/group_remove.rb +0 -56
  387. data/lib/chef/knife/group_show.rb +0 -49
  388. data/lib/chef/knife/key_create.rb +0 -112
  389. data/lib/chef/knife/key_create_base.rb +0 -50
  390. data/lib/chef/knife/key_delete.rb +0 -55
  391. data/lib/chef/knife/key_edit.rb +0 -118
  392. data/lib/chef/knife/key_edit_base.rb +0 -55
  393. data/lib/chef/knife/key_list.rb +0 -90
  394. data/lib/chef/knife/key_list_base.rb +0 -45
  395. data/lib/chef/knife/key_show.rb +0 -53
  396. data/lib/chef/knife/list.rb +0 -177
  397. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  398. data/lib/chef/knife/node_create.rb +0 -47
  399. data/lib/chef/knife/node_delete.rb +0 -46
  400. data/lib/chef/knife/node_edit.rb +0 -70
  401. data/lib/chef/knife/node_environment_set.rb +0 -53
  402. data/lib/chef/knife/node_from_file.rb +0 -51
  403. data/lib/chef/knife/node_list.rb +0 -44
  404. data/lib/chef/knife/node_policy_set.rb +0 -79
  405. data/lib/chef/knife/node_run_list_add.rb +0 -104
  406. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  407. data/lib/chef/knife/node_run_list_set.rb +0 -66
  408. data/lib/chef/knife/node_show.rb +0 -63
  409. data/lib/chef/knife/null.rb +0 -12
  410. data/lib/chef/knife/raw.rb +0 -123
  411. data/lib/chef/knife/recipe_list.rb +0 -32
  412. data/lib/chef/knife/rehash.rb +0 -50
  413. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  414. data/lib/chef/knife/role_create.rb +0 -53
  415. data/lib/chef/knife/role_delete.rb +0 -46
  416. data/lib/chef/knife/role_edit.rb +0 -45
  417. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  418. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  419. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  420. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  421. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  422. data/lib/chef/knife/role_from_file.rb +0 -51
  423. data/lib/chef/knife/role_list.rb +0 -42
  424. data/lib/chef/knife/role_run_list_add.rb +0 -87
  425. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  426. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  427. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  428. data/lib/chef/knife/role_run_list_set.rb +0 -69
  429. data/lib/chef/knife/role_show.rb +0 -48
  430. data/lib/chef/knife/search.rb +0 -194
  431. data/lib/chef/knife/serve.rb +0 -65
  432. data/lib/chef/knife/show.rb +0 -72
  433. data/lib/chef/knife/ssh.rb +0 -645
  434. data/lib/chef/knife/ssl_check.rb +0 -284
  435. data/lib/chef/knife/ssl_fetch.rb +0 -161
  436. data/lib/chef/knife/status.rb +0 -95
  437. data/lib/chef/knife/supermarket_download.rb +0 -121
  438. data/lib/chef/knife/supermarket_install.rb +0 -192
  439. data/lib/chef/knife/supermarket_list.rb +0 -76
  440. data/lib/chef/knife/supermarket_search.rb +0 -53
  441. data/lib/chef/knife/supermarket_share.rb +0 -166
  442. data/lib/chef/knife/supermarket_show.rb +0 -66
  443. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  444. data/lib/chef/knife/tag_create.rb +0 -52
  445. data/lib/chef/knife/tag_delete.rb +0 -60
  446. data/lib/chef/knife/tag_list.rb +0 -47
  447. data/lib/chef/knife/upload.rb +0 -86
  448. data/lib/chef/knife/user_create.rb +0 -107
  449. data/lib/chef/knife/user_delete.rb +0 -44
  450. data/lib/chef/knife/user_dissociate.rb +0 -42
  451. data/lib/chef/knife/user_edit.rb +0 -52
  452. data/lib/chef/knife/user_invite_add.rb +0 -43
  453. data/lib/chef/knife/user_invite_list.rb +0 -34
  454. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  455. data/lib/chef/knife/user_key_create.rb +0 -73
  456. data/lib/chef/knife/user_key_delete.rb +0 -80
  457. data/lib/chef/knife/user_key_edit.rb +0 -83
  458. data/lib/chef/knife/user_key_list.rb +0 -73
  459. data/lib/chef/knife/user_key_show.rb +0 -80
  460. data/lib/chef/knife/user_list.rb +0 -42
  461. data/lib/chef/knife/user_reregister.rb +0 -59
  462. data/lib/chef/knife/user_show.rb +0 -48
  463. data/lib/chef/knife/xargs.rb +0 -282
  464. data/lib/chef/knife/yaml_convert.rb +0 -91
  465. data/lib/chef/knife.rb +0 -665
  466. data/lib/chef/resource/user/dscl_user.rb +0 -35
  467. data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
  468. data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
  469. data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
  470. data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
  471. data/spec/data/knife_subcommand/test_yourself.rb +0 -21
  472. data/spec/functional/knife/configure_spec.rb +0 -33
  473. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  474. data/spec/functional/knife/exec_spec.rb +0 -55
  475. data/spec/functional/knife/rehash_spec.rb +0 -39
  476. data/spec/functional/knife/smoke_test.rb +0 -42
  477. data/spec/functional/knife/ssh_spec.rb +0 -352
  478. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  479. data/spec/functional/resource/windows_service_spec.rb +0 -105
  480. data/spec/functional/win32/service_manager_spec.rb +0 -220
  481. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  482. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  483. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  484. data/spec/integration/knife/chefignore_spec.rb +0 -301
  485. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  486. data/spec/integration/knife/client_create_spec.rb +0 -70
  487. data/spec/integration/knife/client_delete_spec.rb +0 -64
  488. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  489. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  490. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  491. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  492. data/spec/integration/knife/client_list_spec.rb +0 -49
  493. data/spec/integration/knife/client_show_spec.rb +0 -37
  494. data/spec/integration/knife/common_options_spec.rb +0 -174
  495. data/spec/integration/knife/config_list_spec.rb +0 -220
  496. data/spec/integration/knife/config_show_spec.rb +0 -192
  497. data/spec/integration/knife/config_use_spec.rb +0 -198
  498. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  499. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  500. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  501. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  502. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  503. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  504. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  505. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  506. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  507. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  508. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  509. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  510. data/spec/integration/knife/delete_spec.rb +0 -1018
  511. data/spec/integration/knife/deps_spec.rb +0 -703
  512. data/spec/integration/knife/diff_spec.rb +0 -605
  513. data/spec/integration/knife/download_spec.rb +0 -1336
  514. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  515. data/spec/integration/knife/environment_create_spec.rb +0 -41
  516. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  517. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  518. data/spec/integration/knife/environment_list_spec.rb +0 -42
  519. data/spec/integration/knife/environment_show_spec.rb +0 -77
  520. data/spec/integration/knife/list_spec.rb +0 -1060
  521. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  522. data/spec/integration/knife/node_create_spec.rb +0 -47
  523. data/spec/integration/knife/node_delete_spec.rb +0 -48
  524. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  525. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  526. data/spec/integration/knife/node_list_spec.rb +0 -45
  527. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  528. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  529. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  530. data/spec/integration/knife/node_show_spec.rb +0 -36
  531. data/spec/integration/knife/raw_spec.rb +0 -297
  532. data/spec/integration/knife/redirection_spec.rb +0 -64
  533. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  534. data/spec/integration/knife/role_create_spec.rb +0 -41
  535. data/spec/integration/knife/role_delete_spec.rb +0 -48
  536. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  537. data/spec/integration/knife/role_list_spec.rb +0 -45
  538. data/spec/integration/knife/role_show_spec.rb +0 -51
  539. data/spec/integration/knife/search_node_spec.rb +0 -40
  540. data/spec/integration/knife/serve_spec.rb +0 -92
  541. data/spec/integration/knife/show_spec.rb +0 -197
  542. data/spec/integration/knife/upload_spec.rb +0 -1616
  543. data/spec/support/shared/functional/knife.rb +0 -37
  544. data/spec/support/shared/functional/win32_service.rb +0 -57
  545. data/spec/support/shared/integration/knife_support.rb +0 -192
  546. data/spec/support/shared/unit/knife_shared.rb +0 -39
  547. data/spec/unit/application/knife_spec.rb +0 -241
  548. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  549. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  550. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  551. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  552. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  553. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  554. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  555. data/spec/unit/knife/client_create_spec.rb +0 -169
  556. data/spec/unit/knife/client_delete_spec.rb +0 -99
  557. data/spec/unit/knife/client_edit_spec.rb +0 -53
  558. data/spec/unit/knife/client_list_spec.rb +0 -34
  559. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  560. data/spec/unit/knife/client_show_spec.rb +0 -52
  561. data/spec/unit/knife/configure_client_spec.rb +0 -81
  562. data/spec/unit/knife/configure_spec.rb +0 -190
  563. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  564. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  565. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  566. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  567. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  568. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  569. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  570. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  571. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  572. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  573. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  574. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  575. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  576. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  577. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  578. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  579. data/spec/unit/knife/core/ui_spec.rb +0 -656
  580. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  581. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  582. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  583. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  584. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  585. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  586. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  587. data/spec/unit/knife/environment_create_spec.rb +0 -91
  588. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  589. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  590. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  591. data/spec/unit/knife/environment_list_spec.rb +0 -54
  592. data/spec/unit/knife/environment_show_spec.rb +0 -52
  593. data/spec/unit/knife/key_create_spec.rb +0 -223
  594. data/spec/unit/knife/key_delete_spec.rb +0 -133
  595. data/spec/unit/knife/key_edit_spec.rb +0 -264
  596. data/spec/unit/knife/key_helper.rb +0 -74
  597. data/spec/unit/knife/key_list_spec.rb +0 -216
  598. data/spec/unit/knife/key_show_spec.rb +0 -126
  599. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  600. data/spec/unit/knife/node_delete_spec.rb +0 -77
  601. data/spec/unit/knife/node_edit_spec.rb +0 -116
  602. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  603. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  604. data/spec/unit/knife/node_list_spec.rb +0 -62
  605. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  606. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  607. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  608. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  609. data/spec/unit/knife/node_show_spec.rb +0 -65
  610. data/spec/unit/knife/raw_spec.rb +0 -43
  611. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  612. data/spec/unit/knife/role_create_spec.rb +0 -80
  613. data/spec/unit/knife/role_delete_spec.rb +0 -67
  614. data/spec/unit/knife/role_edit_spec.rb +0 -77
  615. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  616. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  617. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  618. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  619. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  620. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  621. data/spec/unit/knife/role_list_spec.rb +0 -54
  622. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  623. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  624. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  625. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  626. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  627. data/spec/unit/knife/role_show_spec.rb +0 -59
  628. data/spec/unit/knife/ssh_spec.rb +0 -403
  629. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  630. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  631. data/spec/unit/knife/status_spec.rb +0 -112
  632. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  633. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  634. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  635. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  636. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  637. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  638. data/spec/unit/knife/tag_create_spec.rb +0 -23
  639. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  640. data/spec/unit/knife/tag_list_spec.rb +0 -23
  641. data/spec/unit/knife/user_create_spec.rb +0 -184
  642. data/spec/unit/knife/user_delete_spec.rb +0 -46
  643. data/spec/unit/knife/user_edit_spec.rb +0 -48
  644. data/spec/unit/knife/user_list_spec.rb +0 -36
  645. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  646. data/spec/unit/knife/user_show_spec.rb +0 -46
  647. data/spec/unit/knife_spec.rb +0 -634
  648. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  649. data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,174 +0,0 @@
1
- #
2
- # Author:: Seth Falcon (<seth@chef.io>)
3
- # Copyright:: Copyright (c) Chef Software Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require "spec_helper"
20
-
21
- require "chef/data_bag_item"
22
- require "chef/encrypted_data_bag_item"
23
- require "tempfile"
24
-
25
- Chef::Knife::DataBagFromFile.load_deps
26
-
27
- describe Chef::Knife::DataBagFromFile do
28
- before :each do
29
- allow(ChefUtils).to receive(:windows?) { false }
30
- Chef::Config[:node_name] = "webmonkey.example.com"
31
- FileUtils.mkdir_p([db_folder, db_folder2])
32
- db_file.write(Chef::JSONCompat.to_json(plain_data))
33
- db_file.flush
34
- allow(knife).to receive(:config).and_return(config)
35
- allow(Chef::Knife::Core::ObjectLoader).to receive(:new).and_return(loader)
36
- end
37
-
38
- # We have to explicitly clean up Tempfile on Windows because it said so.
39
- after :each do
40
- db_file.close
41
- db_file2.close
42
- db_file3.close
43
- FileUtils.rm_rf(db_folder)
44
- FileUtils.rm_rf(db_folder2)
45
- FileUtils.remove_entry_secure tmp_dir
46
- end
47
-
48
- let(:knife) do
49
- k = Chef::Knife::DataBagFromFile.new
50
- allow(k).to receive(:rest).and_return(rest)
51
- allow(k.ui).to receive(:stdout).and_return(stdout)
52
- k
53
- end
54
-
55
- let(:tmp_dir) { make_canonical_temp_directory }
56
- let(:db_folder) { File.join(tmp_dir, data_bags_path, bag_name) }
57
- let(:db_file) { Tempfile.new(["data_bag_from_file_test", ".json"], db_folder) }
58
- let(:db_file2) { Tempfile.new(["data_bag_from_file_test2", ".json"], db_folder) }
59
- let(:db_folder2) { File.join(tmp_dir, data_bags_path, bag_name2) }
60
- let(:db_file3) { Tempfile.new(["data_bag_from_file_test3", ".json"], db_folder2) }
61
-
62
- def new_bag_expects(b = bag_name, d = plain_data)
63
- data_bag = double
64
- expect(data_bag).to receive(:data_bag).with(b)
65
- expect(data_bag).to receive(:raw_data=).with(d)
66
- expect(data_bag).to receive(:save)
67
- expect(data_bag).to receive(:data_bag)
68
- expect(data_bag).to receive(:id)
69
- data_bag
70
- end
71
-
72
- let(:loader) { double("Knife::Core::ObjectLoader") }
73
-
74
- let(:data_bags_path) { "data_bags" }
75
- let(:plain_data) do
76
- {
77
- "id" => "item_name",
78
- "greeting" => "hello",
79
- "nested" => { "a1" => [1, 2, 3], "a2" => { "b1" => true } },
80
- }
81
- end
82
- let(:enc_data) { Chef::EncryptedDataBagItem.encrypt_data_bag_item(plain_data, secret) }
83
-
84
- let(:rest) { double("Chef::ServerAPI") }
85
- let(:stdout) { StringIO.new }
86
-
87
- let(:bag_name) { "sudoing_admins" }
88
- let(:bag_name2) { "sudoing_admins2" }
89
- let(:item_name) { "ME" }
90
-
91
- let(:secret) { "abc123SECRET" }
92
-
93
- let(:config) { {} }
94
-
95
- it "loads from a file and saves" do
96
- knife.name_args = [bag_name, db_file.path]
97
- expect(loader).to receive(:load_from).with(data_bags_path, bag_name, db_file.path).and_return(plain_data)
98
- expect(Chef::DataBagItem).to receive(:new).and_return(new_bag_expects)
99
-
100
- knife.run
101
- end
102
-
103
- it "loads all from multiple files and saves" do
104
- knife.name_args = [ bag_name, db_file.path, db_file2.path ]
105
- expect(loader).to receive(:load_from).with(data_bags_path, bag_name, db_file.path).and_return(plain_data)
106
- expect(loader).to receive(:load_from).with(data_bags_path, bag_name, db_file2.path).and_return(plain_data)
107
- expect(Chef::DataBagItem).to receive(:new).twice.and_return(new_bag_expects, new_bag_expects)
108
-
109
- knife.run
110
- end
111
-
112
- it "loads all from a folder and saves" do
113
- knife.name_args = [ bag_name, db_folder ]
114
- expect(loader).to receive(:load_from).with(data_bags_path, bag_name, db_file.path).and_return(plain_data)
115
- expect(loader).to receive(:load_from).with(data_bags_path, bag_name, db_file2.path).and_return(plain_data)
116
- expect(Chef::DataBagItem).to receive(:new).twice.and_return(new_bag_expects, new_bag_expects)
117
-
118
- knife.run
119
- end
120
-
121
- describe "loading all data bags" do
122
-
123
- it "loads all data bags when -a or --all options is provided" do
124
- knife.name_args = []
125
- config[:all] = true
126
- expect(loader).to receive(:find_all_object_dirs).with("./#{data_bags_path}").and_return([bag_name, bag_name2])
127
- expect(loader).to receive(:find_all_objects).with("./#{data_bags_path}/#{bag_name}").and_return([File.basename(db_file.path), File.basename(db_file2.path)])
128
- expect(loader).to receive(:find_all_objects).with("./#{data_bags_path}/#{bag_name2}").and_return([File.basename(db_file3.path)])
129
- expect(loader).to receive(:load_from).with(data_bags_path, bag_name, File.basename(db_file.path)).and_return(plain_data)
130
- expect(loader).to receive(:load_from).with(data_bags_path, bag_name, File.basename(db_file2.path)).and_return(plain_data)
131
- expect(loader).to receive(:load_from).with(data_bags_path, bag_name2, File.basename(db_file3.path)).and_return(plain_data)
132
- expect(Chef::DataBagItem).to receive(:new).exactly(3).times.and_return(new_bag_expects, new_bag_expects, new_bag_expects(bag_name2))
133
-
134
- knife.run
135
- end
136
-
137
- it "loads all data bags items when -a or --all options is provided" do
138
- knife.name_args = [bag_name2]
139
- config[:all] = true
140
- expect(loader).to receive(:find_all_objects).with("./#{data_bags_path}/#{bag_name2}").and_return([File.basename(db_file3.path)])
141
- expect(loader).to receive(:load_from).with(data_bags_path, bag_name2, File.basename(db_file3.path)).and_return(plain_data)
142
- expect(Chef::DataBagItem).to receive(:new).and_return(new_bag_expects(bag_name2))
143
-
144
- knife.run
145
- end
146
-
147
- end
148
-
149
- describe "encrypted data bag items" do
150
- before(:each) do
151
- expect(knife).to receive(:encryption_secret_provided?).and_return(true)
152
- expect(knife).to receive(:read_secret).and_return(secret)
153
- expect(Chef::EncryptedDataBagItem).to receive(:encrypt_data_bag_item).with(plain_data, secret).and_return(enc_data)
154
- end
155
-
156
- it "encrypts values when given --secret" do
157
- knife.name_args = [bag_name, db_file.path]
158
- expect(loader).to receive(:load_from).with(data_bags_path, bag_name, db_file.path).and_return(plain_data)
159
- expect(Chef::DataBagItem).to receive(:new).and_return(new_bag_expects(bag_name, enc_data))
160
-
161
- knife.run
162
- end
163
-
164
- end
165
-
166
- describe "command line parsing" do
167
- it "prints help if given no arguments" do
168
- knife.name_args = [bag_name]
169
- expect { knife.run }.to exit_with_code(1)
170
- expect(stdout.string).to start_with("knife data bag from file BAG FILE|FOLDER [FILE|FOLDER..] (options)")
171
- end
172
- end
173
-
174
- end
@@ -1,173 +0,0 @@
1
- #
2
- # Author:: Tyler Ball (<tball@chef.io>)
3
- # Copyright:: Copyright (c) Chef Software Inc.
4
- # License:: Apache License, Version 2.0
5
- #
6
- # Licensed under the Apache License, Version 2.0 (the "License");
7
- # you may not use this file except in compliance with the License.
8
- # You may obtain a copy of the License at
9
- #
10
- # http://www.apache.org/licenses/LICENSE-2.0
11
- #
12
- # Unless required by applicable law or agreed to in writing, software
13
- # distributed under the License is distributed on an "AS IS" BASIS,
14
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
- # See the License for the specific language governing permissions and
16
- # limitations under the License.
17
- #
18
-
19
- require "spec_helper"
20
- require "chef/knife"
21
- require "chef/config"
22
- require "tempfile"
23
-
24
- class ExampleDataBagCommand < Chef::Knife
25
- include Chef::Knife::DataBagSecretOptions
26
- end
27
-
28
- describe Chef::Knife::DataBagSecretOptions do
29
- let(:example_db) do
30
- k = ExampleDataBagCommand.new
31
- allow(k.ui).to receive(:stdout).and_return(stdout)
32
- k
33
- end
34
-
35
- let(:stdout) { StringIO.new }
36
-
37
- let(:secret) { "abc123SECRET" }
38
- let(:secret_file) do
39
- sfile = Tempfile.new("encrypted_data_bag_secret")
40
- sfile.puts(secret)
41
- sfile.flush
42
- sfile
43
- end
44
-
45
- after do
46
- secret_file.close
47
- secret_file.unlink
48
- end
49
-
50
- describe "#validate_secrets" do
51
-
52
- it "throws an error when provided with both --secret and --secret-file on the CL" do
53
- example_db.config[:cl_secret_file] = secret_file.path
54
- example_db.config[:cl_secret] = secret
55
- expect(example_db).to receive(:exit).with(1)
56
- expect(example_db.ui).to receive(:fatal).with("Please specify only one of --secret, --secret-file")
57
-
58
- example_db.validate_secrets
59
- end
60
-
61
- it "throws an error when provided with `secret` and `secret_file` in knife.rb" do
62
- Chef::Config[:knife][:secret_file] = secret_file.path
63
- Chef::Config[:knife][:secret] = secret
64
- example_db.merge_configs
65
- expect(example_db).to receive(:exit).with(1)
66
- expect(example_db.ui).to receive(:fatal).with("Please specify only one of 'secret' or 'secret_file' in your config file")
67
-
68
- example_db.validate_secrets
69
- end
70
-
71
- end
72
-
73
- describe "#read_secret" do
74
-
75
- it "returns the secret first" do
76
- example_db.config[:cl_secret] = secret
77
- Chef::Config[:knife][:secret] = secret
78
- example_db.merge_configs
79
- expect(example_db.read_secret).to eq(secret)
80
- end
81
-
82
- it "returns the secret_file only if secret does not exist" do
83
- example_db.config[:cl_secret_file] = secret_file.path
84
- Chef::Config[:knife][:secret_file] = secret_file.path
85
- example_db.merge_configs
86
- expect(Chef::EncryptedDataBagItem).to receive(:load_secret).with(secret_file.path).and_return("secret file contents")
87
- expect(example_db.read_secret).to eq("secret file contents")
88
- end
89
-
90
- it "returns the secret from the knife.rb config" do
91
- Chef::Config[:knife][:secret_file] = secret_file.path
92
- Chef::Config[:knife][:secret] = secret
93
- example_db.merge_configs
94
- expect(example_db.read_secret).to eq(secret)
95
- end
96
-
97
- it "returns the secret_file from the knife.rb config only if the secret does not exist" do
98
- Chef::Config[:knife][:secret_file] = secret_file.path
99
- example_db.merge_configs
100
- expect(Chef::EncryptedDataBagItem).to receive(:load_secret).with(secret_file.path).and_return("secret file contents")
101
- expect(example_db.read_secret).to eq("secret file contents")
102
- end
103
-
104
- end
105
-
106
- describe "#encryption_secret_provided?" do
107
-
108
- it "returns true if the secret is passed on the CL" do
109
- example_db.config[:cl_secret] = secret
110
- expect(example_db.encryption_secret_provided?).to eq(true)
111
- end
112
-
113
- it "returns true if the secret_file is passed on the CL" do
114
- example_db.config[:cl_secret_file] = secret_file.path
115
- expect(example_db.encryption_secret_provided?).to eq(true)
116
- end
117
-
118
- it "returns true if --encrypt is passed on the CL and :secret is in config" do
119
- example_db.config[:encrypt] = true
120
- Chef::Config[:knife][:secret] = secret
121
- example_db.merge_configs
122
- expect(example_db.encryption_secret_provided?).to eq(true)
123
- end
124
-
125
- it "returns true if --encrypt is passed on the CL and :secret_file is in config" do
126
- example_db.config[:encrypt] = true
127
- Chef::Config[:knife][:secret_file] = secret_file.path
128
- example_db.merge_configs
129
- expect(example_db.encryption_secret_provided?).to eq(true)
130
- end
131
-
132
- it "throws an error if --encrypt is passed and there is not :secret or :secret_file in the config" do
133
- example_db.config[:encrypt] = true
134
- expect(example_db).to receive(:exit).with(1)
135
- expect(example_db.ui).to receive(:fatal).with("No secret or secret_file specified in config, unable to encrypt item.")
136
- example_db.encryption_secret_provided?
137
- end
138
-
139
- it "returns false if no secret is passed" do
140
- expect(example_db.encryption_secret_provided?).to eq(false)
141
- end
142
-
143
- it "returns false if --encrypt is not provided and :secret is in the config" do
144
- Chef::Config[:knife][:secret] = secret
145
- example_db.merge_configs
146
- expect(example_db.encryption_secret_provided?).to eq(false)
147
- end
148
-
149
- it "returns false if --encrypt is not provided and :secret_file is in the config" do
150
- Chef::Config[:knife][:secret_file] = secret_file.path
151
- example_db.merge_configs
152
- expect(example_db.encryption_secret_provided?).to eq(false)
153
- end
154
-
155
- it "returns true if --encrypt is not provided, :secret is in the config and need_encrypt_flag is false" do
156
- Chef::Config[:knife][:secret] = secret
157
- example_db.merge_configs
158
- expect(example_db.encryption_secret_provided_ignore_encrypt_flag?).to eq(true)
159
- end
160
-
161
- it "returns true if --encrypt is not provided, :secret_file is in the config and need_encrypt_flag is false" do
162
- Chef::Config[:knife][:secret_file] = secret_file.path
163
- example_db.merge_configs
164
- expect(example_db.encryption_secret_provided_ignore_encrypt_flag?).to eq(true)
165
- end
166
-
167
- it "returns false if --encrypt is not provided and need_encrypt_flag is false" do
168
- expect(example_db.encryption_secret_provided_ignore_encrypt_flag?).to eq(false)
169
- end
170
-
171
- end
172
-
173
- end
@@ -1,139 +0,0 @@
1
- #
2
- # Author:: Adam Jacob (<adam@chef.io>)
3
- # Author:: Seth Falcon (<seth@chef.io>)
4
- # Copyright:: Copyright (c) Chef Software Inc.
5
- # License:: Apache License, Version 2.0
6
- #
7
- # Licensed under the Apache License, Version 2.0 (the "License");
8
- # you may not use this file except in compliance with the License.
9
- # You may obtain a copy of the License at
10
- #
11
- # http://www.apache.org/licenses/LICENSE-2.0
12
- #
13
- # Unless required by applicable law or agreed to in writing, software
14
- # distributed under the License is distributed on an "AS IS" BASIS,
15
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
- # See the License for the specific language governing permissions and
17
- # limitations under the License.
18
- #
19
-
20
- require "spec_helper"
21
-
22
- require "chef/data_bag_item"
23
- require "chef/encrypted_data_bag_item"
24
- require "chef/json_compat"
25
- require "tempfile"
26
-
27
- describe Chef::Knife::DataBagShow do
28
-
29
- before do
30
- Chef::Config[:node_name] = "webmonkey.example.com"
31
- knife.name_args = [bag_name, item_name]
32
- allow(knife).to receive(:config).and_return(config)
33
- end
34
-
35
- let(:knife) do
36
- k = Chef::Knife::DataBagShow.new
37
- allow(k).to receive(:rest).and_return(rest)
38
- allow(k.ui).to receive(:stdout).and_return(stdout)
39
- k
40
- end
41
-
42
- let(:rest) { double("Chef::ServerAPI") }
43
- let(:stdout) { StringIO.new }
44
-
45
- let(:bag_name) { "sudoing_admins" }
46
- let(:item_name) { "ME" }
47
-
48
- let(:data_bag_contents) do
49
- { "id" => "id", "baz" => "http://localhost:4000/data/bag_o_data/baz",
50
- "qux" => "http://localhost:4000/data/bag_o_data/qux" }
51
- end
52
- let(:enc_hash) { Chef::EncryptedDataBagItem.encrypt_data_bag_item(data_bag_contents, secret) }
53
- let(:data_bag) { Chef::DataBagItem.from_hash(data_bag_contents) }
54
- let(:data_bag_with_encoded_hash) { Chef::DataBagItem.from_hash(enc_hash) }
55
- let(:enc_data_bag) { Chef::EncryptedDataBagItem.new(enc_hash, secret) }
56
-
57
- let(:secret) { "abc123SECRET" }
58
- #
59
- # let(:raw_hash) {{ "login_name" => "alphaomega", "id" => item_name }}
60
- #
61
- let(:config) { { format: "json" } }
62
-
63
- context "Data bag to show is encrypted" do
64
- before do
65
- allow(knife).to receive(:encrypted?).and_return(true)
66
- end
67
-
68
- it "decrypts and displays the encrypted data bag when the secret is provided" do
69
- expect(knife).to receive(:encryption_secret_provided_ignore_encrypt_flag?).and_return(true)
70
- expect(knife).to receive(:read_secret).and_return(secret)
71
- expect(Chef::DataBagItem).to receive(:load).with(bag_name, item_name).and_return(data_bag_with_encoded_hash)
72
- expect(knife.ui).to receive(:info).with("Encrypted data bag detected, decrypting with provided secret.")
73
- expect(Chef::EncryptedDataBagItem).to receive(:load).with(bag_name, item_name, secret).and_return(enc_data_bag)
74
-
75
- expected = %q{baz: http://localhost:4000/data/bag_o_data/baz
76
- id: id
77
- qux: http://localhost:4000/data/bag_o_data/qux}
78
- knife.run
79
- expect(stdout.string.strip).to eq(expected)
80
- end
81
-
82
- it "displays the encrypted data bag when the secret is not provided" do
83
- expect(knife).to receive(:encryption_secret_provided_ignore_encrypt_flag?).and_return(false)
84
- expect(Chef::DataBagItem).to receive(:load).with(bag_name, item_name).and_return(data_bag_with_encoded_hash)
85
- expect(knife.ui).to receive(:warn).with("Encrypted data bag detected, but no secret provided for decoding. Displaying encrypted data.")
86
-
87
- knife.run
88
- expect(stdout.string.strip).to include("baz", "qux", "cipher")
89
- end
90
- end
91
-
92
- context "Data bag to show is not encrypted" do
93
- before do
94
- allow(knife).to receive(:encrypted?).and_return(false)
95
- end
96
-
97
- it "displays the data bag" do
98
- expect(knife).to receive(:read_secret).exactly(0).times
99
- expect(Chef::DataBagItem).to receive(:load).with(bag_name, item_name).and_return(data_bag)
100
-
101
- expected = %q{baz: http://localhost:4000/data/bag_o_data/baz
102
- id: id
103
- qux: http://localhost:4000/data/bag_o_data/qux}
104
- knife.run
105
- expect(stdout.string.strip).to eq(expected)
106
- end
107
-
108
- context "when a secret is given" do
109
- it "displays the data bag" do
110
- expect(knife).to receive(:encryption_secret_provided_ignore_encrypt_flag?).and_return(true)
111
- expect(knife).to receive(:read_secret).and_return(secret)
112
- expect(Chef::DataBagItem).to receive(:load).with(bag_name, item_name).and_return(data_bag)
113
- expect(knife.ui).to receive(:warn).with("Unencrypted data bag detected, ignoring any provided secret options.")
114
-
115
- expected = %q{baz: http://localhost:4000/data/bag_o_data/baz
116
- id: id
117
- qux: http://localhost:4000/data/bag_o_data/qux}
118
- knife.run
119
- expect(stdout.string.strip).to eq(expected)
120
- end
121
- end
122
- end
123
-
124
- it "displays the list of items in the data bag when only one @name_arg is provided" do
125
- knife.name_args = [bag_name]
126
- expect(Chef::DataBag).to receive(:load).with(bag_name).and_return({})
127
-
128
- knife.run
129
- expect(stdout.string.strip).to eq("")
130
- end
131
-
132
- it "raises an error when no @name_args are provided" do
133
- knife.name_args = []
134
-
135
- expect { knife.run }.to exit_with_code(1)
136
- expect(stdout.string).to start_with("knife data bag show BAG [ITEM] (options)")
137
- end
138
-
139
- end
@@ -1,112 +0,0 @@
1
- #
2
- # Author:: Sander Botman (<sbotman@schubergphilis.com>)
3
- # Copyright:: Copyright 2013-2016, Sander Botman.
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::EnvironmentCompare do
22
- before(:each) do
23
- @knife = Chef::Knife::EnvironmentCompare.new
24
-
25
- @environments = {
26
- "cita" => "http://localhost:4000/environments/cita",
27
- "citm" => "http://localhost:4000/environments/citm",
28
- }
29
-
30
- allow(@knife).to receive(:environment_list).and_return(@environments)
31
-
32
- @constraints = {
33
- "cita" => { "foo" => "= 1.0.1", "bar" => "= 0.0.4" },
34
- "citm" => { "foo" => "= 1.0.1", "bar" => "= 0.0.2" },
35
- }
36
-
37
- allow(@knife).to receive(:constraint_list).and_return(@constraints)
38
-
39
- @cookbooks = { "foo" => "= 1.0.1", "bar" => "= 0.0.1" }
40
-
41
- allow(@knife).to receive(:cookbook_list).and_return(@cookbooks)
42
-
43
- @rest_double = double("rest")
44
- allow(@knife).to receive(:rest).and_return(@rest_double)
45
- @cookbook_names = %w{apache2 mysql foo bar dummy chef_handler}
46
- @base_url = "https://server.example.com/cookbooks"
47
- @cookbook_data = {}
48
- @cookbook_names.each do |item|
49
- @cookbook_data[item] = { "url" => "#{@base_url}/#{item}",
50
- "versions" => [{ "version" => "1.0.1",
51
- "url" => "#{@base_url}/#{item}/1.0.1" }] }
52
- end
53
-
54
- allow(@rest_double).to receive(:get).with("/cookbooks?num_versions=1").and_return(@cookbook_data)
55
-
56
- @stdout = StringIO.new
57
- allow(@knife.ui).to receive(:stdout).and_return(@stdout)
58
- end
59
-
60
- describe "run" do
61
- it "should display only cookbooks with version constraints" do
62
- @knife.config[:format] = "summary"
63
- @knife.run
64
- @environments.each_key do |item|
65
- expect(@stdout.string).to(match(/#{item}/)) && expect(@stdout.string.lines.count).to(be 4)
66
- end
67
- end
68
-
69
- it "should display 4 number of lines" do
70
- @knife.config[:format] = "summary"
71
- @knife.run
72
- expect(@stdout.string.lines.count).to be 4
73
- end
74
- end
75
-
76
- describe "with -m or --mismatch" do
77
- it "should display only cookbooks that have mismatching version constraints" do
78
- @knife.config[:format] = "summary"
79
- @knife.config[:mismatch] = true
80
- @knife.run
81
- @constraints.each_value do |ver|
82
- expect(@stdout.string).to match(/#{ver[1]}/)
83
- end
84
- end
85
-
86
- it "should display 3 number of lines" do
87
- @knife.config[:format] = "summary"
88
- @knife.config[:mismatch] = true
89
- @knife.run
90
- expect(@stdout.string.lines.count).to be 3
91
- end
92
- end
93
-
94
- describe "with -a or --all" do
95
- it "should display all cookbooks" do
96
- @knife.config[:format] = "summary"
97
- @knife.config[:all] = true
98
- @knife.run
99
- @constraints.each_value do |ver|
100
- expect(@stdout.string).to match(/#{ver[1]}/)
101
- end
102
- end
103
-
104
- it "should display 8 number of lines" do
105
- @knife.config[:format] = "summary"
106
- @knife.config[:all] = true
107
- @knife.run
108
- expect(@stdout.string.lines.count).to be 8
109
- end
110
- end
111
-
112
- end
@@ -1,91 +0,0 @@
1
- #
2
- # Author:: Stephen Delano (<stephen@ospcode.com>)
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::EnvironmentCreate do
22
- before(:each) do
23
- @knife = Chef::Knife::EnvironmentCreate.new
24
- allow(@knife).to receive(:msg).and_return true
25
- allow(@knife).to receive(:output).and_return true
26
- allow(@knife).to receive(:show_usage).and_return true
27
- @knife.name_args = [ "production" ]
28
-
29
- @environment = Chef::Environment.new
30
- allow(@environment).to receive(:save)
31
-
32
- allow(Chef::Environment).to receive(:new).and_return @environment
33
- allow(@knife).to receive(:edit_data).and_return @environment
34
- end
35
-
36
- describe "run" do
37
- it "should create a new environment" do
38
- expect(Chef::Environment).to receive(:new)
39
- @knife.run
40
- end
41
-
42
- it "should set the environment name" do
43
- expect(@environment).to receive(:name).with("production")
44
- @knife.run
45
- end
46
-
47
- it "should not print the environment" do
48
- expect(@knife).not_to receive(:output)
49
- @knife.run
50
- end
51
-
52
- it "should prompt you to edit the data" do
53
- expect(@knife).to receive(:edit_data).with(@environment, object_class: Chef::Environment)
54
- @knife.run
55
- end
56
-
57
- it "should save the environment" do
58
- expect(@environment).to receive(:save)
59
- @knife.run
60
- end
61
-
62
- it "should show usage and exit when no environment name is provided" do
63
- @knife.name_args = [ ]
64
- expect(@knife.ui).to receive(:fatal)
65
- expect(@knife).to receive(:show_usage)
66
- expect { @knife.run }.to raise_error(SystemExit)
67
- end
68
-
69
- describe "with --description" do
70
- before(:each) do
71
- @knife.config[:description] = "This is production"
72
- end
73
-
74
- it "should set the description" do
75
- expect(@environment).to receive(:description).with("This is production")
76
- @knife.run
77
- end
78
- end
79
-
80
- describe "with --print-after" do
81
- before(:each) do
82
- @knife.config[:print_after] = true
83
- end
84
-
85
- it "should pretty print the environment, formatted for display" do
86
- expect(@knife).to receive(:output).with(@environment)
87
- @knife.run
88
- end
89
- end
90
- end
91
- end