chef 16.13.16-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.
- checksums.yaml +4 -4
- data/Gemfile +9 -10
- data/README.md +1 -1
- data/Rakefile +2 -2
- data/chef-universal-mingw32.gemspec +1 -1
- data/chef.gemspec +6 -8
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/applications.rb +0 -1
- data/lib/chef/chef_fs/command_line.rb +5 -2
- data/lib/chef/chef_fs/file_system.rb +9 -10
- data/lib/chef/client.rb +2 -2
- data/lib/chef/compliance/default_attributes.rb +4 -3
- data/lib/chef/compliance/fetcher/automate.rb +0 -7
- data/lib/chef/compliance/reporter/automate.rb +17 -7
- data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
- data/lib/chef/compliance/reporter/cli.rb +77 -0
- data/lib/chef/compliance/reporter/compliance_enforcer.rb +4 -0
- data/lib/chef/compliance/reporter/json_file.rb +8 -1
- data/lib/chef/compliance/runner.rb +65 -27
- data/lib/chef/cookbook/synchronizer.rb +3 -5
- data/lib/chef/cookbook_loader.rb +2 -4
- data/lib/chef/cookbook_uploader.rb +0 -1
- data/lib/chef/data_bag_item.rb +11 -2
- data/lib/chef/delayed_evaluator.rb +4 -0
- data/lib/chef/deprecated.rb +4 -0
- data/lib/chef/dsl/chef_vault.rb +6 -6
- data/lib/chef/dsl/reboot_pending.rb +1 -2
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
- data/lib/chef/group.rb +75 -0
- data/lib/chef/mixin/get_source_from_package.rb +1 -1
- data/lib/chef/node/attribute.rb +6 -4
- data/lib/chef/node/immutable_collections.rb +13 -0
- data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
- data/lib/chef/org.rb +3 -2
- data/lib/chef/property.rb +18 -0
- data/lib/chef/provider.rb +1 -1
- data/lib/chef/provider/cron.rb +1 -1
- data/lib/chef/provider/execute.rb +2 -1
- data/lib/chef/provider/file.rb +1 -1
- data/lib/chef/provider/git.rb +5 -7
- data/lib/chef/provider/group/groupadd.rb +3 -3
- data/lib/chef/provider/group/groupmod.rb +3 -3
- data/lib/chef/provider/group/pw.rb +3 -3
- data/lib/chef/provider/ifconfig.rb +2 -2
- data/lib/chef/provider/link.rb +2 -2
- data/lib/chef/provider/mount.rb +5 -5
- data/lib/chef/provider/mount/aix.rb +3 -3
- data/lib/chef/provider/mount/mount.rb +5 -5
- data/lib/chef/provider/mount/windows.rb +1 -1
- data/lib/chef/provider/package.rb +17 -21
- data/lib/chef/provider/package/apt.rb +27 -1
- data/lib/chef/provider/package/deb.rb +3 -3
- data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
- data/lib/chef/provider/package/portage.rb +2 -2
- data/lib/chef/provider/package/rubygems.rb +11 -17
- data/lib/chef/provider/package/windows.rb +2 -4
- data/lib/chef/provider/package/yum/yum_helper.py +1 -1
- data/lib/chef/provider/route.rb +2 -2
- data/lib/chef/provider/service.rb +6 -6
- data/lib/chef/provider/service/aixinit.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/freebsd.rb +15 -21
- data/lib/chef/provider/service/macosx.rb +4 -4
- data/lib/chef/provider/service/systemd.rb +43 -14
- data/lib/chef/provider/service/upstart.rb +2 -13
- data/lib/chef/provider/service/windows.rb +12 -12
- data/lib/chef/provider/subversion.rb +10 -12
- data/lib/chef/provider/systemd_unit.rb +36 -10
- data/lib/chef/provider/template/content.rb +2 -6
- data/lib/chef/provider/user.rb +2 -2
- data/lib/chef/provider/user/dscl.rb +1 -1
- data/lib/chef/provider/user/mac.rb +17 -20
- data/lib/chef/provider/user/pw.rb +1 -1
- data/lib/chef/provider/user/windows.rb +1 -1
- data/lib/chef/provider/zypper_repository.rb +2 -2
- data/lib/chef/providers.rb +0 -1
- data/lib/chef/resource/alternatives.rb +6 -6
- data/lib/chef/resource/apt_package.rb +1 -1
- data/lib/chef/resource/apt_preference.rb +2 -2
- data/lib/chef/resource/apt_repository.rb +6 -6
- data/lib/chef/resource/apt_update.rb +3 -2
- data/lib/chef/resource/archive_file.rb +2 -3
- data/lib/chef/resource/breakpoint.rb +1 -1
- data/lib/chef/resource/build_essential.rb +2 -6
- data/lib/chef/resource/chef_client_config.rb +2 -2
- data/lib/chef/resource/chef_client_cron.rb +4 -4
- data/lib/chef/resource/chef_client_launchd.rb +3 -3
- data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
- data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
- data/lib/chef/resource/chef_handler.rb +3 -7
- data/lib/chef/resource/chef_sleep.rb +1 -1
- data/lib/chef/resource/chef_vault_secret.rb +3 -8
- data/lib/chef/resource/chocolatey_config.rb +2 -6
- data/lib/chef/resource/chocolatey_feature.rb +2 -6
- data/lib/chef/resource/chocolatey_source.rb +4 -10
- data/lib/chef/resource/cron/_cron_shared.rb +2 -2
- data/lib/chef/resource/cron_access.rb +2 -4
- data/lib/chef/resource/dmg_package.rb +6 -10
- data/lib/chef/resource/dpkg_package.rb +1 -1
- data/lib/chef/resource/execute.rb +6 -1
- data/lib/chef/resource/file.rb +1 -1
- data/lib/chef/resource/group.rb +2 -2
- data/lib/chef/resource/homebrew_cask.rb +2 -6
- data/lib/chef/resource/homebrew_tap.rb +2 -6
- data/lib/chef/resource/hostname.rb +21 -17
- data/lib/chef/resource/http_request.rb +1 -1
- data/lib/chef/resource/kernel_module.rb +6 -17
- data/lib/chef/resource/locale.rb +2 -3
- data/lib/chef/resource/lwrp_base.rb +4 -0
- data/lib/chef/resource/macos_userdefaults.rb +10 -14
- data/lib/chef/resource/mdadm.rb +53 -7
- data/lib/chef/resource/mount.rb +2 -1
- data/lib/chef/resource/openssl_ec_private_key.rb +2 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +1 -1
- data/lib/chef/resource/openssl_x509_certificate.rb +2 -2
- data/lib/chef/resource/plist.rb +7 -7
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/remote_file.rb +1 -1
- data/lib/chef/resource/rhsm_errata.rb +16 -1
- data/lib/chef/resource/rhsm_errata_level.rb +10 -1
- data/lib/chef/resource/rhsm_register.rb +12 -6
- data/lib/chef/resource/rhsm_repo.rb +2 -6
- data/lib/chef/resource/rhsm_subscription.rb +2 -6
- data/lib/chef/resource/scm/git.rb +1 -1
- data/lib/chef/resource/sudo.rb +6 -6
- data/lib/chef/resource/sysctl.rb +2 -6
- data/lib/chef/resource/systemd_unit.rb +2 -2
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +1 -3
- data/lib/chef/resource/user/mac_user.rb +1 -1
- data/lib/chef/resource/user_ulimit.rb +2 -2
- data/lib/chef/resource/windows_ad_join.rb +2 -6
- data/lib/chef/resource/windows_audit_policy.rb +1 -1
- data/lib/chef/resource/windows_auto_run.rb +2 -5
- data/lib/chef/resource/windows_certificate.rb +207 -73
- data/lib/chef/resource/windows_dfs_folder.rb +2 -6
- data/lib/chef/resource/windows_dfs_namespace.rb +2 -6
- data/lib/chef/resource/windows_dfs_server.rb +1 -3
- data/lib/chef/resource/windows_dns_record.rb +2 -6
- data/lib/chef/resource/windows_dns_zone.rb +2 -6
- data/lib/chef/resource/windows_env.rb +5 -4
- data/lib/chef/resource/windows_feature.rb +3 -9
- data/lib/chef/resource/windows_feature_dism.rb +2 -6
- data/lib/chef/resource/windows_feature_powershell.rb +3 -3
- data/lib/chef/resource/windows_firewall_profile.rb +4 -4
- data/lib/chef/resource/windows_firewall_rule.rb +2 -5
- data/lib/chef/resource/windows_font.rb +2 -4
- data/lib/chef/resource/windows_pagefile.rb +2 -6
- data/lib/chef/resource/windows_path.rb +2 -2
- data/lib/chef/resource/windows_printer.rb +4 -4
- data/lib/chef/resource/windows_printer_port.rb +6 -6
- data/lib/chef/resource/windows_security_policy.rb +53 -40
- data/lib/chef/resource/windows_share.rb +14 -21
- data/lib/chef/resource/windows_shortcut.rb +4 -6
- data/lib/chef/resource/windows_task.rb +17 -5
- data/lib/chef/resource/windows_uac.rb +1 -1
- data/lib/chef/resource/windows_user_privilege.rb +4 -4
- data/lib/chef/resource/windows_workgroup.rb +1 -2
- data/lib/chef/resources.rb +0 -1
- data/lib/chef/user.rb +0 -1
- data/lib/chef/user_v1.rb +3 -4
- data/lib/chef/util/dsc/configuration_generator.rb +1 -0
- data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/registry.rb +4 -2
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
- data/spec/data/lwrp/resources/bar.rb +2 -0
- data/spec/data/lwrp/resources/buck_passer.rb +1 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
- data/spec/data/lwrp/resources/foo.rb +2 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
- data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
- data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
- data/spec/data/lwrp_override/resources/foo.rb +1 -0
- data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
- data/spec/data/rubygems.org/sexp_processor-info +49 -0
- data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
- data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
- data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
- data/spec/functional/dsl/registry_helper_spec.rb +1 -1
- data/spec/functional/resource/aixinit_service_spec.rb +7 -7
- data/spec/functional/resource/apt_package_spec.rb +1 -1
- data/spec/functional/resource/chocolatey_package_spec.rb +13 -0
- data/spec/functional/resource/dnf_package_spec.rb +4 -1
- data/spec/functional/resource/registry_spec.rb +8 -8
- data/spec/functional/resource/user/mac_user_spec.rb +2 -2
- data/spec/functional/resource/windows_certificate_spec.rb +92 -35
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_spec.rb +1 -1
- data/spec/integration/client/client_spec.rb +5 -2
- data/spec/integration/client/exit_code_spec.rb +1 -1
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/compliance/compliance_spec.rb +1 -1
- data/spec/integration/ohai/ohai_spec.rb +7 -6
- data/spec/integration/recipes/accumulator_spec.rb +13 -1
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
- data/spec/integration/recipes/lwrp_spec.rb +3 -1
- data/spec/integration/recipes/notifies_spec.rb +15 -1
- data/spec/integration/recipes/notifying_block_spec.rb +2 -1
- data/spec/integration/recipes/recipe_dsl_spec.rb +9 -9
- data/spec/integration/recipes/unified_mode_spec.rb +1 -1
- data/spec/integration/recipes/use_partial_spec.rb +4 -1
- data/spec/spec_helper.rb +10 -13
- data/spec/support/chef_helpers.rb +0 -16
- data/spec/support/lib/chef/resource/with_state.rb +0 -1
- data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
- data/spec/support/lib/chef/resource/zen_master.rb +0 -1
- data/spec/support/matchers/leak.rb +7 -9
- data/spec/support/platform_helpers.rb +1 -8
- data/spec/support/shared/integration/integration_helper.rb +0 -1
- data/spec/support/shared/unit/script_resource.rb +2 -2
- data/spec/unit/application/solo_spec.rb +2 -2
- data/spec/unit/chef_fs/diff_spec.rb +1 -1
- data/spec/unit/chef_fs/file_system_spec.rb +1 -1
- data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
- data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
- data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +20 -0
- data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +1 -0
- data/spec/unit/compliance/runner_spec.rb +30 -4
- data/spec/unit/data_bag_item_spec.rb +1 -6
- data/spec/unit/dsl/reboot_pending_spec.rb +2 -2
- data/spec/unit/dsl/registry_helper_spec.rb +1 -1
- data/spec/unit/lwrp_spec.rb +1 -1
- data/spec/unit/mixin/params_validate_spec.rb +4 -3
- data/spec/unit/node/attribute_spec.rb +1 -1
- data/spec/unit/node_spec.rb +78 -0
- data/spec/unit/org_group_spec.rb +45 -0
- data/spec/unit/property_spec.rb +23 -22
- data/spec/unit/provider/cron_spec.rb +1 -1
- data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
- data/spec/unit/provider/group/groupmod_spec.rb +2 -2
- data/spec/unit/provider/group/pw_spec.rb +2 -2
- data/spec/unit/provider/group_spec.rb +1 -1
- data/spec/unit/provider/package/apt_spec.rb +84 -18
- data/spec/unit/provider/package/deb_spec.rb +3 -3
- data/spec/unit/provider/package/rubygems_spec.rb +21 -33
- data/spec/unit/provider/service/arch_service_spec.rb +1 -0
- data/spec/unit/provider/service/debian_service_spec.rb +1 -0
- data/spec/unit/provider/service/macosx_spec.rb +2 -2
- data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
- data/spec/unit/provider/service/upstart_service_spec.rb +0 -29
- data/spec/unit/provider/service/windows_spec.rb +2 -2
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/systemd_unit_spec.rb +79 -60
- data/spec/unit/provider/zypper_repository_spec.rb +2 -2
- data/spec/unit/provider_spec.rb +0 -8
- data/spec/unit/resource/powershell_script_spec.rb +2 -2
- data/spec/unit/resource/windows_task_spec.rb +1 -1
- data/spec/unit/user_spec.rb +1 -1
- data/spec/unit/user_v1_spec.rb +6 -4
- data/tasks/rspec.rb +16 -8
- metadata +19 -382
- data/bin/knife +0 -24
- data/lib/chef/application/knife.rb +0 -234
- data/lib/chef/application/windows_service.rb +0 -338
- data/lib/chef/application/windows_service_manager.rb +0 -205
- data/lib/chef/chef_fs/knife.rb +0 -160
- data/lib/chef/chef_fs/parallelizer.rb +0 -102
- data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
- data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
- data/lib/chef/knife.rb +0 -665
- data/lib/chef/knife/acl_add.rb +0 -57
- data/lib/chef/knife/acl_base.rb +0 -183
- data/lib/chef/knife/acl_bulk_add.rb +0 -78
- data/lib/chef/knife/acl_bulk_remove.rb +0 -83
- data/lib/chef/knife/acl_remove.rb +0 -62
- data/lib/chef/knife/acl_show.rb +0 -56
- data/lib/chef/knife/bootstrap.rb +0 -1192
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
- data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
- data/lib/chef/knife/bootstrap/templates/README.md +0 -11
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
- data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
- data/lib/chef/knife/client_bulk_delete.rb +0 -104
- data/lib/chef/knife/client_create.rb +0 -101
- data/lib/chef/knife/client_delete.rb +0 -62
- data/lib/chef/knife/client_edit.rb +0 -52
- data/lib/chef/knife/client_key_create.rb +0 -73
- data/lib/chef/knife/client_key_delete.rb +0 -80
- data/lib/chef/knife/client_key_edit.rb +0 -83
- data/lib/chef/knife/client_key_list.rb +0 -73
- data/lib/chef/knife/client_key_show.rb +0 -80
- data/lib/chef/knife/client_list.rb +0 -41
- data/lib/chef/knife/client_reregister.rb +0 -58
- data/lib/chef/knife/client_show.rb +0 -48
- data/lib/chef/knife/config_get.rb +0 -39
- data/lib/chef/knife/config_get_profile.rb +0 -37
- data/lib/chef/knife/config_list.rb +0 -139
- data/lib/chef/knife/config_list_profiles.rb +0 -37
- data/lib/chef/knife/config_show.rb +0 -127
- data/lib/chef/knife/config_use.rb +0 -61
- data/lib/chef/knife/config_use_profile.rb +0 -47
- data/lib/chef/knife/configure.rb +0 -150
- data/lib/chef/knife/configure_client.rb +0 -48
- data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
- data/lib/chef/knife/cookbook_delete.rb +0 -151
- data/lib/chef/knife/cookbook_download.rb +0 -142
- data/lib/chef/knife/cookbook_list.rb +0 -47
- data/lib/chef/knife/cookbook_metadata.rb +0 -106
- data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
- data/lib/chef/knife/cookbook_show.rb +0 -98
- data/lib/chef/knife/cookbook_upload.rb +0 -292
- data/lib/chef/knife/core/bootstrap_context.rb +0 -264
- data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
- data/lib/chef/knife/core/formatting_options.rb +0 -49
- data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
- data/lib/chef/knife/core/generic_presenter.rb +0 -232
- data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
- data/lib/chef/knife/core/node_editor.rb +0 -130
- data/lib/chef/knife/core/node_presenter.rb +0 -133
- data/lib/chef/knife/core/object_loader.rb +0 -115
- data/lib/chef/knife/core/status_presenter.rb +0 -147
- data/lib/chef/knife/core/subcommand_loader.rb +0 -203
- data/lib/chef/knife/core/text_formatter.rb +0 -85
- data/lib/chef/knife/core/ui.rb +0 -338
- data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -406
- data/lib/chef/knife/data_bag_create.rb +0 -81
- data/lib/chef/knife/data_bag_delete.rb +0 -49
- data/lib/chef/knife/data_bag_edit.rb +0 -74
- data/lib/chef/knife/data_bag_from_file.rb +0 -113
- data/lib/chef/knife/data_bag_list.rb +0 -42
- data/lib/chef/knife/data_bag_secret_options.rb +0 -122
- data/lib/chef/knife/data_bag_show.rb +0 -69
- data/lib/chef/knife/delete.rb +0 -125
- data/lib/chef/knife/deps.rb +0 -156
- data/lib/chef/knife/diff.rb +0 -83
- data/lib/chef/knife/download.rb +0 -84
- data/lib/chef/knife/edit.rb +0 -88
- data/lib/chef/knife/environment_compare.rb +0 -128
- data/lib/chef/knife/environment_create.rb +0 -52
- data/lib/chef/knife/environment_delete.rb +0 -44
- data/lib/chef/knife/environment_edit.rb +0 -44
- data/lib/chef/knife/environment_from_file.rb +0 -84
- data/lib/chef/knife/environment_list.rb +0 -41
- data/lib/chef/knife/environment_show.rb +0 -47
- data/lib/chef/knife/exec.rb +0 -99
- data/lib/chef/knife/group_add.rb +0 -55
- data/lib/chef/knife/group_create.rb +0 -49
- data/lib/chef/knife/group_destroy.rb +0 -53
- data/lib/chef/knife/group_list.rb +0 -43
- data/lib/chef/knife/group_remove.rb +0 -56
- data/lib/chef/knife/group_show.rb +0 -49
- data/lib/chef/knife/key_create.rb +0 -112
- data/lib/chef/knife/key_create_base.rb +0 -50
- data/lib/chef/knife/key_delete.rb +0 -55
- data/lib/chef/knife/key_edit.rb +0 -118
- data/lib/chef/knife/key_edit_base.rb +0 -55
- data/lib/chef/knife/key_list.rb +0 -90
- data/lib/chef/knife/key_list_base.rb +0 -45
- data/lib/chef/knife/key_show.rb +0 -53
- data/lib/chef/knife/list.rb +0 -177
- data/lib/chef/knife/node_bulk_delete.rb +0 -75
- data/lib/chef/knife/node_create.rb +0 -47
- data/lib/chef/knife/node_delete.rb +0 -46
- data/lib/chef/knife/node_edit.rb +0 -70
- data/lib/chef/knife/node_environment_set.rb +0 -53
- data/lib/chef/knife/node_from_file.rb +0 -51
- data/lib/chef/knife/node_list.rb +0 -44
- data/lib/chef/knife/node_policy_set.rb +0 -79
- data/lib/chef/knife/node_run_list_add.rb +0 -104
- data/lib/chef/knife/node_run_list_remove.rb +0 -67
- data/lib/chef/knife/node_run_list_set.rb +0 -66
- data/lib/chef/knife/node_show.rb +0 -63
- data/lib/chef/knife/null.rb +0 -12
- data/lib/chef/knife/raw.rb +0 -123
- data/lib/chef/knife/recipe_list.rb +0 -32
- data/lib/chef/knife/rehash.rb +0 -50
- data/lib/chef/knife/role_bulk_delete.rb +0 -66
- data/lib/chef/knife/role_create.rb +0 -53
- data/lib/chef/knife/role_delete.rb +0 -46
- data/lib/chef/knife/role_edit.rb +0 -45
- data/lib/chef/knife/role_env_run_list_add.rb +0 -87
- data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
- data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
- data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
- data/lib/chef/knife/role_env_run_list_set.rb +0 -70
- data/lib/chef/knife/role_from_file.rb +0 -51
- data/lib/chef/knife/role_list.rb +0 -42
- data/lib/chef/knife/role_run_list_add.rb +0 -87
- data/lib/chef/knife/role_run_list_clear.rb +0 -55
- data/lib/chef/knife/role_run_list_remove.rb +0 -56
- data/lib/chef/knife/role_run_list_replace.rb +0 -60
- data/lib/chef/knife/role_run_list_set.rb +0 -69
- data/lib/chef/knife/role_show.rb +0 -48
- data/lib/chef/knife/search.rb +0 -194
- data/lib/chef/knife/serve.rb +0 -65
- data/lib/chef/knife/show.rb +0 -72
- data/lib/chef/knife/ssh.rb +0 -645
- data/lib/chef/knife/ssl_check.rb +0 -284
- data/lib/chef/knife/ssl_fetch.rb +0 -161
- data/lib/chef/knife/status.rb +0 -95
- data/lib/chef/knife/supermarket_download.rb +0 -121
- data/lib/chef/knife/supermarket_install.rb +0 -192
- data/lib/chef/knife/supermarket_list.rb +0 -76
- data/lib/chef/knife/supermarket_search.rb +0 -53
- data/lib/chef/knife/supermarket_share.rb +0 -166
- data/lib/chef/knife/supermarket_show.rb +0 -66
- data/lib/chef/knife/supermarket_unshare.rb +0 -61
- data/lib/chef/knife/tag_create.rb +0 -52
- data/lib/chef/knife/tag_delete.rb +0 -60
- data/lib/chef/knife/tag_list.rb +0 -47
- data/lib/chef/knife/upload.rb +0 -86
- data/lib/chef/knife/user_create.rb +0 -107
- data/lib/chef/knife/user_delete.rb +0 -44
- data/lib/chef/knife/user_dissociate.rb +0 -42
- data/lib/chef/knife/user_edit.rb +0 -52
- data/lib/chef/knife/user_invite_add.rb +0 -43
- data/lib/chef/knife/user_invite_list.rb +0 -34
- data/lib/chef/knife/user_invite_rescind.rb +0 -63
- data/lib/chef/knife/user_key_create.rb +0 -73
- data/lib/chef/knife/user_key_delete.rb +0 -80
- data/lib/chef/knife/user_key_edit.rb +0 -83
- data/lib/chef/knife/user_key_list.rb +0 -73
- data/lib/chef/knife/user_key_show.rb +0 -80
- data/lib/chef/knife/user_list.rb +0 -42
- data/lib/chef/knife/user_reregister.rb +0 -59
- data/lib/chef/knife/user_show.rb +0 -48
- data/lib/chef/knife/xargs.rb +0 -282
- data/lib/chef/knife/yaml_convert.rb +0 -91
- data/lib/chef/resource/user/dscl_user.rb +0 -35
- data/spec/data/knife-home/.chef/plugins/knife/example_home_subcommand.rb +0 -0
- data/spec/data/knife-site-subcommands/plugins/knife/example_subcommand.rb +0 -0
- data/spec/data/knife_subcommand/test_explicit_category.rb +0 -7
- data/spec/data/knife_subcommand/test_name_mapping.rb +0 -4
- data/spec/data/knife_subcommand/test_yourself.rb +0 -21
- data/spec/functional/knife/configure_spec.rb +0 -33
- data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
- data/spec/functional/knife/exec_spec.rb +0 -55
- data/spec/functional/knife/rehash_spec.rb +0 -39
- data/spec/functional/knife/smoke_test.rb +0 -42
- data/spec/functional/knife/ssh_spec.rb +0 -352
- data/spec/functional/resource/user/dscl_spec.rb +0 -188
- data/spec/functional/resource/windows_service_spec.rb +0 -105
- data/spec/functional/win32/service_manager_spec.rb +0 -220
- data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
- data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
- data/spec/integration/knife/chefignore_spec.rb +0 -301
- data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
- data/spec/integration/knife/client_create_spec.rb +0 -70
- data/spec/integration/knife/client_delete_spec.rb +0 -64
- data/spec/integration/knife/client_key_create_spec.rb +0 -66
- data/spec/integration/knife/client_key_delete_spec.rb +0 -43
- data/spec/integration/knife/client_key_list_spec.rb +0 -61
- data/spec/integration/knife/client_key_show_spec.rb +0 -45
- data/spec/integration/knife/client_list_spec.rb +0 -49
- data/spec/integration/knife/client_show_spec.rb +0 -37
- data/spec/integration/knife/common_options_spec.rb +0 -174
- data/spec/integration/knife/config_list_spec.rb +0 -220
- data/spec/integration/knife/config_show_spec.rb +0 -192
- data/spec/integration/knife/config_use_spec.rb +0 -198
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
- data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
- data/spec/integration/knife/cookbook_download_spec.rb +0 -72
- data/spec/integration/knife/cookbook_list_spec.rb +0 -55
- data/spec/integration/knife/cookbook_show_spec.rb +0 -149
- data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
- data/spec/integration/knife/data_bag_create_spec.rb +0 -125
- data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
- data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
- data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
- data/spec/integration/knife/data_bag_list_spec.rb +0 -44
- data/spec/integration/knife/data_bag_show_spec.rb +0 -95
- data/spec/integration/knife/delete_spec.rb +0 -1018
- data/spec/integration/knife/deps_spec.rb +0 -703
- data/spec/integration/knife/diff_spec.rb +0 -605
- data/spec/integration/knife/download_spec.rb +0 -1336
- data/spec/integration/knife/environment_compare_spec.rb +0 -75
- data/spec/integration/knife/environment_create_spec.rb +0 -41
- data/spec/integration/knife/environment_delete_spec.rb +0 -37
- data/spec/integration/knife/environment_from_file_spec.rb +0 -116
- data/spec/integration/knife/environment_list_spec.rb +0 -42
- data/spec/integration/knife/environment_show_spec.rb +0 -77
- data/spec/integration/knife/list_spec.rb +0 -1060
- data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
- data/spec/integration/knife/node_create_spec.rb +0 -47
- data/spec/integration/knife/node_delete_spec.rb +0 -48
- data/spec/integration/knife/node_environment_set_spec.rb +0 -46
- data/spec/integration/knife/node_from_file_spec.rb +0 -59
- data/spec/integration/knife/node_list_spec.rb +0 -45
- data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
- data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
- data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
- data/spec/integration/knife/node_show_spec.rb +0 -36
- data/spec/integration/knife/raw_spec.rb +0 -297
- data/spec/integration/knife/redirection_spec.rb +0 -64
- data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
- data/spec/integration/knife/role_create_spec.rb +0 -41
- data/spec/integration/knife/role_delete_spec.rb +0 -48
- data/spec/integration/knife/role_from_file_spec.rb +0 -96
- data/spec/integration/knife/role_list_spec.rb +0 -45
- data/spec/integration/knife/role_show_spec.rb +0 -51
- data/spec/integration/knife/search_node_spec.rb +0 -40
- data/spec/integration/knife/serve_spec.rb +0 -92
- data/spec/integration/knife/show_spec.rb +0 -197
- data/spec/integration/knife/upload_spec.rb +0 -1617
- data/spec/support/shared/functional/knife.rb +0 -37
- data/spec/support/shared/functional/win32_service.rb +0 -57
- data/spec/support/shared/integration/knife_support.rb +0 -192
- data/spec/support/shared/unit/knife_shared.rb +0 -39
- data/spec/unit/application/knife_spec.rb +0 -241
- data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
- data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
- data/spec/unit/knife/bootstrap_spec.rb +0 -2220
- data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
- data/spec/unit/knife/client_create_spec.rb +0 -169
- data/spec/unit/knife/client_delete_spec.rb +0 -99
- data/spec/unit/knife/client_edit_spec.rb +0 -53
- data/spec/unit/knife/client_list_spec.rb +0 -34
- data/spec/unit/knife/client_reregister_spec.rb +0 -62
- data/spec/unit/knife/client_show_spec.rb +0 -52
- data/spec/unit/knife/configure_client_spec.rb +0 -81
- data/spec/unit/knife/configure_spec.rb +0 -190
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
- data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
- data/spec/unit/knife/cookbook_download_spec.rb +0 -255
- data/spec/unit/knife/cookbook_list_spec.rb +0 -88
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
- data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
- data/spec/unit/knife/cookbook_show_spec.rb +0 -253
- data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
- data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
- data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
- data/spec/unit/knife/core/node_editor_spec.rb +0 -211
- data/spec/unit/knife/core/object_loader_spec.rb +0 -81
- data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
- data/spec/unit/knife/core/ui_spec.rb +0 -656
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
- data/spec/unit/knife/data_bag_create_spec.rb +0 -175
- data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
- data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
- data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
- data/spec/unit/knife/data_bag_show_spec.rb +0 -139
- data/spec/unit/knife/environment_compare_spec.rb +0 -112
- data/spec/unit/knife/environment_create_spec.rb +0 -91
- data/spec/unit/knife/environment_delete_spec.rb +0 -71
- data/spec/unit/knife/environment_edit_spec.rb +0 -79
- data/spec/unit/knife/environment_from_file_spec.rb +0 -90
- data/spec/unit/knife/environment_list_spec.rb +0 -54
- data/spec/unit/knife/environment_show_spec.rb +0 -52
- data/spec/unit/knife/key_create_spec.rb +0 -223
- data/spec/unit/knife/key_delete_spec.rb +0 -133
- data/spec/unit/knife/key_edit_spec.rb +0 -264
- data/spec/unit/knife/key_helper.rb +0 -74
- data/spec/unit/knife/key_list_spec.rb +0 -216
- data/spec/unit/knife/key_show_spec.rb +0 -126
- data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
- data/spec/unit/knife/node_delete_spec.rb +0 -77
- data/spec/unit/knife/node_edit_spec.rb +0 -116
- data/spec/unit/knife/node_environment_set_spec.rb +0 -61
- data/spec/unit/knife/node_from_file_spec.rb +0 -59
- data/spec/unit/knife/node_list_spec.rb +0 -62
- data/spec/unit/knife/node_policy_set_spec.rb +0 -122
- data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
- data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
- data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
- data/spec/unit/knife/node_show_spec.rb +0 -65
- data/spec/unit/knife/raw_spec.rb +0 -43
- data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
- data/spec/unit/knife/role_create_spec.rb +0 -80
- data/spec/unit/knife/role_delete_spec.rb +0 -67
- data/spec/unit/knife/role_edit_spec.rb +0 -77
- data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
- data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
- data/spec/unit/knife/role_from_file_spec.rb +0 -69
- data/spec/unit/knife/role_list_spec.rb +0 -54
- data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
- data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
- data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
- data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
- data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
- data/spec/unit/knife/role_show_spec.rb +0 -59
- data/spec/unit/knife/ssh_spec.rb +0 -403
- data/spec/unit/knife/ssl_check_spec.rb +0 -256
- data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
- data/spec/unit/knife/status_spec.rb +0 -112
- data/spec/unit/knife/supermarket_download_spec.rb +0 -152
- data/spec/unit/knife/supermarket_install_spec.rb +0 -202
- data/spec/unit/knife/supermarket_list_spec.rb +0 -70
- data/spec/unit/knife/supermarket_search_spec.rb +0 -85
- data/spec/unit/knife/supermarket_share_spec.rb +0 -208
- data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
- data/spec/unit/knife/tag_create_spec.rb +0 -23
- data/spec/unit/knife/tag_delete_spec.rb +0 -25
- data/spec/unit/knife/tag_list_spec.rb +0 -23
- data/spec/unit/knife/user_create_spec.rb +0 -184
- data/spec/unit/knife/user_delete_spec.rb +0 -46
- data/spec/unit/knife/user_edit_spec.rb +0 -48
- data/spec/unit/knife/user_list_spec.rb +0 -36
- data/spec/unit/knife/user_reregister_spec.rb +0 -56
- data/spec/unit/knife/user_show_spec.rb +0 -46
- data/spec/unit/knife_spec.rb +0 -634
- data/spec/unit/provider/user/dscl_spec.rb +0 -699
- data/spec/unit/windows_service_spec.rb +0 -118
@@ -1,364 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Matthew Kent (<mkent@magoazul.com>)
|
3
|
-
# Author:: Steven Danna (<steve@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/cookbook_uploader"
|
23
|
-
require "timeout"
|
24
|
-
|
25
|
-
describe Chef::Knife::CookbookUpload do
|
26
|
-
let(:cookbook) do
|
27
|
-
cookbook = Chef::CookbookVersion.new("test_cookbook", "/tmp/blah")
|
28
|
-
allow(cookbook).to receive(:has_metadata_file?).and_return(true)
|
29
|
-
allow(cookbook.metadata).to receive(:name).and_return(cookbook.name)
|
30
|
-
cookbook
|
31
|
-
end
|
32
|
-
|
33
|
-
let(:cookbooks_by_name) do
|
34
|
-
{ cookbook.name => cookbook }
|
35
|
-
end
|
36
|
-
|
37
|
-
let(:cookbook_loader) do
|
38
|
-
cookbook_loader = cookbooks_by_name.dup
|
39
|
-
allow(cookbook_loader).to receive(:merged_cookbooks).and_return([])
|
40
|
-
allow(cookbook_loader).to receive(:load_cookbooks).and_return(cookbook_loader)
|
41
|
-
allow(cookbook_loader).to receive(:compile_metadata).and_return(nil)
|
42
|
-
allow(cookbook_loader).to receive(:freeze_versions).and_return(nil)
|
43
|
-
cookbook_loader
|
44
|
-
end
|
45
|
-
|
46
|
-
let(:cookbook_uploader) { double(upload_cookbooks: nil) }
|
47
|
-
|
48
|
-
let(:output) { StringIO.new }
|
49
|
-
|
50
|
-
let(:name_args) { ["test_cookbook"] }
|
51
|
-
|
52
|
-
let(:knife) do
|
53
|
-
k = Chef::Knife::CookbookUpload.new
|
54
|
-
k.name_args = name_args
|
55
|
-
allow(k.ui).to receive(:stdout).and_return(output)
|
56
|
-
allow(k.ui).to receive(:stderr).and_return(output)
|
57
|
-
k
|
58
|
-
end
|
59
|
-
|
60
|
-
before(:each) do
|
61
|
-
allow(Chef::CookbookLoader).to receive(:new).and_return(cookbook_loader)
|
62
|
-
allow(Chef::CookbookLoader).to receive(:copy_to_tmp_dir_from_array).and_yield(cookbook_loader)
|
63
|
-
end
|
64
|
-
|
65
|
-
describe "with --concurrency" do
|
66
|
-
it "should upload cookbooks with predefined concurrency" do
|
67
|
-
allow(Chef::CookbookVersion).to receive(:list_all_versions).and_return({})
|
68
|
-
knife.config[:concurrency] = 3
|
69
|
-
test_cookbook = Chef::CookbookVersion.new("test_cookbook", "/tmp/blah")
|
70
|
-
allow(cookbook_loader).to receive(:each).and_yield("test_cookbook", test_cookbook)
|
71
|
-
allow(cookbook_loader).to receive(:cookbook_names).and_return(["test_cookbook"])
|
72
|
-
expect(Chef::CookbookUploader).to receive(:new)
|
73
|
-
.with( kind_of(Array), { force: nil, concurrency: 3 })
|
74
|
-
.and_return(double("Chef::CookbookUploader", upload_cookbooks: true))
|
75
|
-
knife.run
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
describe "run" do
|
80
|
-
before(:each) do
|
81
|
-
allow(Chef::CookbookUploader).to receive_messages(new: cookbook_uploader)
|
82
|
-
allow(Chef::CookbookVersion).to receive(:list_all_versions).and_return({})
|
83
|
-
end
|
84
|
-
|
85
|
-
it "should print usage and exit when a cookbook name is not provided" do
|
86
|
-
knife.name_args = []
|
87
|
-
expect(knife).to receive(:show_usage)
|
88
|
-
expect(knife.ui).to receive(:fatal)
|
89
|
-
expect { knife.run }.to raise_error(SystemExit)
|
90
|
-
end
|
91
|
-
|
92
|
-
describe "when specifying cookbook without metadata.rb or metadata.json" do
|
93
|
-
let(:name_args) { ["test_cookbook1"] }
|
94
|
-
let(:cookbook) do
|
95
|
-
cookbook = Chef::CookbookVersion.new("test_cookbook1", "/tmp/blah")
|
96
|
-
allow(cookbook).to receive(:has_metadata_file?).and_return(false)
|
97
|
-
cookbook
|
98
|
-
end
|
99
|
-
|
100
|
-
it "should upload the cookbook" do
|
101
|
-
expect { knife.run }.to raise_error(Chef::Exceptions::MetadataNotFound)
|
102
|
-
end
|
103
|
-
end
|
104
|
-
|
105
|
-
describe "when name attribute in metadata not set" do
|
106
|
-
let(:name_args) { ["test_cookbook1"] }
|
107
|
-
|
108
|
-
let(:cookbook) do
|
109
|
-
cookbook = Chef::CookbookVersion.new("test_cookbook1", "/tmp/blah")
|
110
|
-
allow(cookbook).to receive(:has_metadata_file?).and_return(true)
|
111
|
-
allow(cookbook.metadata).to receive(:name).and_return(nil)
|
112
|
-
cookbook
|
113
|
-
end
|
114
|
-
|
115
|
-
it "should upload the cookbook" do
|
116
|
-
expect { knife.run }.to raise_error(Chef::Exceptions::MetadataNotValid)
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
describe "when specifying a cookbook name" do
|
121
|
-
it "should upload the cookbook" do
|
122
|
-
expect(knife).to receive(:upload).once
|
123
|
-
knife.run
|
124
|
-
end
|
125
|
-
|
126
|
-
it "should report on success" do
|
127
|
-
expect(knife).to receive(:upload).once
|
128
|
-
expect(knife.ui).to receive(:info).with(/Uploaded 1 cookbook/)
|
129
|
-
knife.run
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
describe "when specifying the same cookbook name twice" do
|
134
|
-
it "should upload the cookbook only once" do
|
135
|
-
knife.name_args = %w{test_cookbook test_cookbook}
|
136
|
-
expect(knife).to receive(:upload).once
|
137
|
-
knife.run
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
describe "when specifying a cookbook name among many" do
|
142
|
-
let(:name_args) { ["test_cookbook1"] }
|
143
|
-
|
144
|
-
let(:cookbook) do
|
145
|
-
cookbook = Chef::CookbookVersion.new("test_cookbook1", "/tmp/blah")
|
146
|
-
allow(cookbook).to receive(:has_metadata_file?).and_return(true)
|
147
|
-
allow(cookbook.metadata).to receive(:name).and_return(cookbook.name)
|
148
|
-
cookbook
|
149
|
-
end
|
150
|
-
|
151
|
-
let(:cookbooks_by_name) do
|
152
|
-
{ cookbook.name => cookbook }
|
153
|
-
end
|
154
|
-
|
155
|
-
it "should read only one cookbook" do
|
156
|
-
expect(cookbook_loader).to receive(:[]).once.with("test_cookbook1").and_call_original
|
157
|
-
knife.run
|
158
|
-
end
|
159
|
-
|
160
|
-
it "should not read all cookbooks" do
|
161
|
-
expect(cookbook_loader).to receive(:load_cookbooks)
|
162
|
-
knife.run
|
163
|
-
end
|
164
|
-
|
165
|
-
it "should upload only one cookbook" do
|
166
|
-
expect(knife).to receive(:upload).exactly(1).times
|
167
|
-
knife.run
|
168
|
-
end
|
169
|
-
end
|
170
|
-
|
171
|
-
# This is testing too much. We should break it up.
|
172
|
-
describe "when specifying a cookbook name with dependencies" do
|
173
|
-
let(:name_args) { ["test_cookbook2"] }
|
174
|
-
|
175
|
-
let(:test_cookbook1) do
|
176
|
-
cookbook = Chef::CookbookVersion.new("test_cookbook1", "/tmp/blah")
|
177
|
-
allow(cookbook).to receive(:has_metadata_file?).and_return(true)
|
178
|
-
allow(cookbook.metadata).to receive(:name).and_return(cookbook.name)
|
179
|
-
cookbook
|
180
|
-
end
|
181
|
-
|
182
|
-
let(:test_cookbook2) do
|
183
|
-
c = Chef::CookbookVersion.new("test_cookbook2")
|
184
|
-
c.metadata.depends("test_cookbook3")
|
185
|
-
allow(c).to receive(:has_metadata_file?).and_return(true)
|
186
|
-
allow(c.metadata).to receive(:name).and_return(c.name)
|
187
|
-
c
|
188
|
-
end
|
189
|
-
|
190
|
-
let(:test_cookbook3) do
|
191
|
-
c = Chef::CookbookVersion.new("test_cookbook3")
|
192
|
-
c.metadata.depends("test_cookbook1")
|
193
|
-
c.metadata.depends("test_cookbook2")
|
194
|
-
allow(c).to receive(:has_metadata_file?).and_return(true)
|
195
|
-
allow(c.metadata).to receive(:name).and_return(c.name)
|
196
|
-
c
|
197
|
-
end
|
198
|
-
|
199
|
-
let(:cookbooks_by_name) do
|
200
|
-
{ "test_cookbook1" => test_cookbook1,
|
201
|
-
"test_cookbook2" => test_cookbook2,
|
202
|
-
"test_cookbook3" => test_cookbook3 }
|
203
|
-
end
|
204
|
-
|
205
|
-
it "should upload all dependencies once" do
|
206
|
-
knife.config[:depends] = true
|
207
|
-
allow(knife).to receive(:cookbook_names).and_return(%w{test_cookbook1 test_cookbook2 test_cookbook3})
|
208
|
-
expect(knife).to receive(:upload).exactly(3).times
|
209
|
-
expect do
|
210
|
-
Timeout.timeout(5) do
|
211
|
-
knife.run
|
212
|
-
end
|
213
|
-
end.not_to raise_error
|
214
|
-
end
|
215
|
-
end
|
216
|
-
|
217
|
-
describe "when specifying a cookbook name with missing dependencies" do
|
218
|
-
let(:cookbook_dependency) { Chef::CookbookVersion.new("dependency", "/tmp/blah") }
|
219
|
-
|
220
|
-
before(:each) do
|
221
|
-
cookbook.metadata.depends("dependency")
|
222
|
-
allow(cookbook_loader).to receive(:[]) do |ckbk|
|
223
|
-
{ "test_cookbook" => cookbook,
|
224
|
-
"dependency" => cookbook_dependency }[ckbk]
|
225
|
-
end
|
226
|
-
allow(knife).to receive(:cookbook_names).and_return(%w{cookbook_dependency test_cookbook})
|
227
|
-
@stdout, @stderr, @stdin = StringIO.new, StringIO.new, StringIO.new
|
228
|
-
knife.ui = Chef::Knife::UI.new(@stdout, @stderr, @stdin, {})
|
229
|
-
end
|
230
|
-
|
231
|
-
it "should exit and not upload the cookbook" do
|
232
|
-
expect(cookbook_loader).to receive(:[]).once.with("test_cookbook")
|
233
|
-
expect(cookbook_uploader).not_to receive(:upload_cookbooks)
|
234
|
-
expect { knife.run }.to raise_error(SystemExit)
|
235
|
-
end
|
236
|
-
|
237
|
-
it "should output a message for a single missing dependency" do
|
238
|
-
expect { knife.run }.to raise_error(SystemExit)
|
239
|
-
expect(@stderr.string).to include("Cookbook test_cookbook depends on cookbooks which are not currently")
|
240
|
-
expect(@stderr.string).to include("being uploaded and cannot be found on the server.")
|
241
|
-
expect(@stderr.string).to include("The missing cookbook(s) are: 'dependency' version '>= 0.0.0'")
|
242
|
-
end
|
243
|
-
|
244
|
-
it "should output a message for a multiple missing dependencies which are concatenated" do
|
245
|
-
cookbook_dependency2 = Chef::CookbookVersion.new("dependency2")
|
246
|
-
cookbook.metadata.depends("dependency2")
|
247
|
-
allow(cookbook_loader).to receive(:[]) do |ckbk|
|
248
|
-
{ "test_cookbook" => cookbook,
|
249
|
-
"dependency" => cookbook_dependency,
|
250
|
-
"dependency2" => cookbook_dependency2 }[ckbk]
|
251
|
-
end
|
252
|
-
allow(knife).to receive(:cookbook_names).and_return(%w{dependency dependency2 test_cookbook})
|
253
|
-
expect { knife.run }.to raise_error(SystemExit)
|
254
|
-
expect(@stderr.string).to include("Cookbook test_cookbook depends on cookbooks which are not currently")
|
255
|
-
expect(@stderr.string).to include("being uploaded and cannot be found on the server.")
|
256
|
-
expect(@stderr.string).to include("The missing cookbook(s) are:")
|
257
|
-
expect(@stderr.string).to include("'dependency' version '>= 0.0.0'")
|
258
|
-
expect(@stderr.string).to include("'dependency2' version '>= 0.0.0'")
|
259
|
-
end
|
260
|
-
end
|
261
|
-
|
262
|
-
it "should freeze the version of the cookbooks if --freeze is specified" do
|
263
|
-
knife.config[:freeze] = true
|
264
|
-
expect(cookbook_loader).to receive(:freeze_versions).once
|
265
|
-
knife.run
|
266
|
-
end
|
267
|
-
|
268
|
-
describe "with -a or --all" do
|
269
|
-
before(:each) do
|
270
|
-
knife.config[:all] = true
|
271
|
-
end
|
272
|
-
|
273
|
-
context "when cookbooks exist in the cookbook path" do
|
274
|
-
let(:test_cookbook1) do
|
275
|
-
cookbook = Chef::CookbookVersion.new("test_cookbook1", "/tmp/blah")
|
276
|
-
allow(cookbook).to receive(:has_metadata_file?).and_return(true)
|
277
|
-
allow(cookbook.metadata).to receive(:name).and_return(cookbook.name)
|
278
|
-
cookbook
|
279
|
-
end
|
280
|
-
|
281
|
-
let(:test_cookbook2) do
|
282
|
-
cookbook = Chef::CookbookVersion.new("test_cookbook2", "/tmp/blah")
|
283
|
-
allow(cookbook).to receive(:has_metadata_file?).and_return(true)
|
284
|
-
allow(cookbook.metadata).to receive(:name).and_return(cookbook.name)
|
285
|
-
cookbook
|
286
|
-
end
|
287
|
-
|
288
|
-
before(:each) do
|
289
|
-
allow(cookbook_loader).to receive(:each).and_yield("test_cookbook1", test_cookbook1).and_yield("test_cookbook2", test_cookbook2)
|
290
|
-
allow(cookbook_loader).to receive(:cookbook_names).and_return(%w{test_cookbook1 test_cookbook2})
|
291
|
-
end
|
292
|
-
|
293
|
-
it "should upload all cookbooks" do
|
294
|
-
expect(knife).to receive(:upload).once
|
295
|
-
knife.run
|
296
|
-
end
|
297
|
-
|
298
|
-
it "should report on success" do
|
299
|
-
expect(knife).to receive(:upload).once
|
300
|
-
expect(knife.ui).to receive(:info).with(/Uploaded all cookbooks/)
|
301
|
-
knife.run
|
302
|
-
end
|
303
|
-
|
304
|
-
it "should update the version constraints for an environment" do
|
305
|
-
allow(knife).to receive(:assert_environment_valid!).and_return(true)
|
306
|
-
knife.config[:environment] = "production"
|
307
|
-
expect(knife).to receive(:update_version_constraints).once
|
308
|
-
knife.run
|
309
|
-
end
|
310
|
-
end
|
311
|
-
|
312
|
-
context "when no cookbooks exist in the cookbook path" do
|
313
|
-
before(:each) do
|
314
|
-
allow(cookbook_loader).to receive(:each)
|
315
|
-
end
|
316
|
-
|
317
|
-
it "should not upload any cookbooks" do
|
318
|
-
expect(knife).to_not receive(:upload)
|
319
|
-
knife.run
|
320
|
-
end
|
321
|
-
|
322
|
-
context "when cookbook path is an array" do
|
323
|
-
it "should warn users that no cookbooks exist" do
|
324
|
-
cookbook_path = windows? ? "C:/chef-repo/cookbooks" : "/chef-repo/cookbooks"
|
325
|
-
knife.config[:cookbook_path] = [cookbook_path, "/home/user/cookbooks"]
|
326
|
-
expect(knife.ui).to receive(:warn).with("Could not find any cookbooks in your cookbook path: '#{knife.config[:cookbook_path].join(", ")}'. Use --cookbook-path to specify the desired path.")
|
327
|
-
knife.run
|
328
|
-
end
|
329
|
-
end
|
330
|
-
|
331
|
-
context "when cookbook path is a string" do
|
332
|
-
it "should warn users that no cookbooks exist" do
|
333
|
-
knife.config[:cookbook_path] = windows? ? "C:/chef-repo/cookbooks" : "/chef-repo/cookbooks"
|
334
|
-
expect(knife.ui).to receive(:warn).with(
|
335
|
-
"Could not find any cookbooks in your cookbook path: '#{knife.config[:cookbook_path]}'. Use --cookbook-path to specify the desired path."
|
336
|
-
)
|
337
|
-
knife.run
|
338
|
-
end
|
339
|
-
end
|
340
|
-
end
|
341
|
-
end
|
342
|
-
|
343
|
-
describe "when a frozen cookbook exists on the server" do
|
344
|
-
it "should fail to replace it" do
|
345
|
-
exception = Chef::Exceptions::CookbookFrozen.new
|
346
|
-
expect(cookbook_uploader).to receive(:upload_cookbooks)
|
347
|
-
.and_raise(exception)
|
348
|
-
allow(knife.ui).to receive(:error)
|
349
|
-
expect(knife.ui).to receive(:error).with(exception)
|
350
|
-
expect { knife.run }.to raise_error(SystemExit)
|
351
|
-
end
|
352
|
-
|
353
|
-
it "should not update the version constraints for an environment" do
|
354
|
-
allow(knife).to receive(:assert_environment_valid!).and_return(true)
|
355
|
-
knife.config[:environment] = "production"
|
356
|
-
allow(knife).to receive(:upload).and_raise(Chef::Exceptions::CookbookFrozen)
|
357
|
-
expect(knife.ui).to receive(:error).with(/Failed to upload 1 cookbook/)
|
358
|
-
expect(knife.ui).to receive(:warn).with(/Not updating version constraints/)
|
359
|
-
expect(knife).not_to receive(:update_version_constraints)
|
360
|
-
expect { knife.run }.to raise_error(SystemExit)
|
361
|
-
end
|
362
|
-
end
|
363
|
-
end # run
|
364
|
-
end
|
@@ -1,287 +0,0 @@
|
|
1
|
-
#
|
2
|
-
# Author:: Daniel DeLeo (<dan@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/core/bootstrap_context"
|
21
|
-
|
22
|
-
describe Chef::Knife::Core::BootstrapContext do
|
23
|
-
let(:config) { { foo: :bar, color: true } }
|
24
|
-
let(:run_list) { Chef::RunList.new("recipe[tmux]", "role[base]") }
|
25
|
-
let(:chef_config) do
|
26
|
-
{
|
27
|
-
config_log_level: "info",
|
28
|
-
config_log_location: "/tmp/log",
|
29
|
-
validation_key: File.join(CHEF_SPEC_DATA, "ssl", "private_key.pem"),
|
30
|
-
chef_server_url: "http://chef.example.com:4444",
|
31
|
-
validation_client_name: "chef-validator-testing",
|
32
|
-
}
|
33
|
-
end
|
34
|
-
|
35
|
-
let(:secret) { nil }
|
36
|
-
|
37
|
-
subject(:bootstrap_context) { described_class.new(config, run_list, chef_config, secret) }
|
38
|
-
|
39
|
-
it "initializes with Chef 11 parameters" do
|
40
|
-
expect { described_class.new(config, run_list, chef_config) }.not_to raise_error
|
41
|
-
end
|
42
|
-
|
43
|
-
it "runs chef with the first-boot.json with no environment" do
|
44
|
-
expect(bootstrap_context.start_chef).to eq "chef-client -j /etc/chef/first-boot.json"
|
45
|
-
end
|
46
|
-
|
47
|
-
describe "when in verbosity mode" do
|
48
|
-
let(:config) { { verbosity: 2, color: true } }
|
49
|
-
it "adds '-l debug' when verbosity is >= 2" do
|
50
|
-
expect(bootstrap_context.start_chef).to eq "chef-client -j /etc/chef/first-boot.json -l debug"
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe "when no color value has been set in config" do
|
55
|
-
let(:config) { { color: false } }
|
56
|
-
it "adds '--no-color' when color is false" do
|
57
|
-
expect(bootstrap_context.start_chef).to eq "chef-client -j /etc/chef/first-boot.json --no-color"
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
it "reads the validation key" do
|
62
|
-
expect(bootstrap_context.validation_key).to eq IO.read(File.join(CHEF_SPEC_DATA, "ssl", "private_key.pem"))
|
63
|
-
end
|
64
|
-
|
65
|
-
it "generates the config file data" do
|
66
|
-
expected = <<~EXPECTED
|
67
|
-
chef_server_url "http://chef.example.com:4444"
|
68
|
-
validation_client_name "chef-validator-testing"
|
69
|
-
log_level :info
|
70
|
-
log_location "/tmp/log"
|
71
|
-
# Using default node name (fqdn)
|
72
|
-
EXPECTED
|
73
|
-
expect(bootstrap_context.config_content).to eq expected
|
74
|
-
end
|
75
|
-
|
76
|
-
describe "when chef_license is set" do
|
77
|
-
let(:chef_config) { { chef_license: "accept-no-persist" } }
|
78
|
-
it "sets chef_license in the generated config file" do
|
79
|
-
expect(bootstrap_context.config_content).to include("chef_license \"accept-no-persist\"")
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
describe "when file_cache_path is set" do
|
84
|
-
let(:chef_config) { { file_cache_path: "/home/opscode/cache" } }
|
85
|
-
it "sets file_cache_path in the generated config file" do
|
86
|
-
expect(bootstrap_context.config_content).to include("file_cache_path \"/home/opscode/cache\"")
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
describe "when file_backup_path is set" do
|
91
|
-
let(:chef_config) { { file_backup_path: "/home/opscode/backup" } }
|
92
|
-
it "sets file_backup_path in the generated config file" do
|
93
|
-
expect(bootstrap_context.config_content).to include("file_backup_path \"/home/opscode/backup\"")
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
describe "alternate chef-client path" do
|
98
|
-
let(:chef_config) { { chef_client_path: "/usr/local/bin/chef-client" } }
|
99
|
-
it "runs chef-client from another path when specified" do
|
100
|
-
expect(bootstrap_context.start_chef).to eq "/usr/local/bin/chef-client -j /etc/chef/first-boot.json"
|
101
|
-
end
|
102
|
-
end
|
103
|
-
|
104
|
-
describe "validation key path that contains a ~" do
|
105
|
-
let(:chef_config) { { validation_key: "~/my.key" } }
|
106
|
-
it "reads the validation key when it contains a ~" do
|
107
|
-
expect(File).to receive(:exist?).with(File.expand_path("my.key", ENV["HOME"])).and_return(true)
|
108
|
-
expect(IO).to receive(:read).with(File.expand_path("my.key", ENV["HOME"]))
|
109
|
-
bootstrap_context.validation_key
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
describe "when an explicit node name is given" do
|
114
|
-
let(:config) { { chef_node_name: "foobar.example.com" } }
|
115
|
-
it "sets the node name in the client.rb" do
|
116
|
-
expect(bootstrap_context.config_content).to match(/node_name "foobar\.example\.com"/)
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
describe "when bootstrapping into a specific environment" do
|
121
|
-
let(:config) { { environment: "prodtastic", color: true } }
|
122
|
-
it "starts chef in the configured environment" do
|
123
|
-
expect(bootstrap_context.start_chef).to eq("chef-client -j /etc/chef/first-boot.json -E prodtastic")
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
describe "when tags are given" do
|
128
|
-
let(:config) { { tags: [ "unicorn" ] } }
|
129
|
-
it "adds the attributes to first_boot" do
|
130
|
-
expect(Chef::JSONCompat.to_json(bootstrap_context.first_boot)).to eq(Chef::JSONCompat.to_json({ run_list: run_list, tags: ["unicorn"] }))
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
describe "when JSON attributes are given" do
|
135
|
-
let(:config) { { first_boot_attributes: { baz: :quux } } }
|
136
|
-
it "adds the attributes to first_boot" do
|
137
|
-
expect(Chef::JSONCompat.to_json(bootstrap_context.first_boot)).to eq(Chef::JSONCompat.to_json({ baz: :quux, run_list: run_list }))
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
describe "when JSON attributes are NOT given" do
|
142
|
-
it "sets first_boot equal to run_list" do
|
143
|
-
expect(Chef::JSONCompat.to_json(bootstrap_context.first_boot)).to eq(Chef::JSONCompat.to_json({ run_list: run_list }))
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
describe "when policy_name and policy_group are present in config" do
|
148
|
-
|
149
|
-
let(:config) { { policy_name: "my_app_server", policy_group: "staging" } }
|
150
|
-
|
151
|
-
it "includes them in the first_boot data and excludes run_list" do
|
152
|
-
expect(Chef::JSONCompat.to_json(bootstrap_context.first_boot)).to eq(Chef::JSONCompat.to_json({ policy_name: "my_app_server", policy_group: "staging" }))
|
153
|
-
end
|
154
|
-
|
155
|
-
end
|
156
|
-
|
157
|
-
describe "when an encrypted_data_bag_secret is provided" do
|
158
|
-
let(:secret) { "supersekret" }
|
159
|
-
it "reads the encrypted_data_bag_secret" do
|
160
|
-
expect(bootstrap_context.encrypted_data_bag_secret).to eq "supersekret"
|
161
|
-
end
|
162
|
-
end
|
163
|
-
|
164
|
-
describe "to support compatibility with existing templates" do
|
165
|
-
it "sets the @config instance variable" do
|
166
|
-
expect(bootstrap_context.instance_variable_get(:@config)).to eq config
|
167
|
-
end
|
168
|
-
|
169
|
-
it "sets the @run_list instance variable" do
|
170
|
-
expect(bootstrap_context.instance_variable_get(:@run_list)).to eq run_list
|
171
|
-
end
|
172
|
-
end
|
173
|
-
|
174
|
-
describe "ssl_verify_mode" do
|
175
|
-
it "isn't set in the config_content by default" do
|
176
|
-
expect(bootstrap_context.config_content).not_to include("ssl_verify_mode")
|
177
|
-
end
|
178
|
-
|
179
|
-
describe "when configured via the config hash" do
|
180
|
-
let(:config) { { node_ssl_verify_mode: "none" } }
|
181
|
-
|
182
|
-
it "uses the config value" do
|
183
|
-
expect(bootstrap_context.config_content).to include("ssl_verify_mode :verify_none")
|
184
|
-
end
|
185
|
-
end
|
186
|
-
end
|
187
|
-
|
188
|
-
describe "fips mode" do
|
189
|
-
before do
|
190
|
-
chef_config[:fips] = true
|
191
|
-
end
|
192
|
-
|
193
|
-
it "sets fips mode in the client.rb" do
|
194
|
-
expect(bootstrap_context.config_content).to match(/fips true/)
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
|
-
describe "verify_api_cert" do
|
199
|
-
it "isn't set in the config_content by default" do
|
200
|
-
expect(bootstrap_context.config_content).not_to include("verify_api_cert")
|
201
|
-
end
|
202
|
-
|
203
|
-
describe "when configured via the config hash" do
|
204
|
-
let(:config) { { node_verify_api_cert: true } }
|
205
|
-
|
206
|
-
it "uses config value" do
|
207
|
-
expect(bootstrap_context.config_content).to include("verify_api_cert true")
|
208
|
-
end
|
209
|
-
end
|
210
|
-
end
|
211
|
-
|
212
|
-
describe "#config_log_location" do
|
213
|
-
context "when config_log_location is nil" do
|
214
|
-
let(:chef_config) { { config_log_location: nil } }
|
215
|
-
it "sets the default config_log_location in the client.rb" do
|
216
|
-
expect(bootstrap_context.get_log_location).to eq "STDOUT"
|
217
|
-
end
|
218
|
-
end
|
219
|
-
|
220
|
-
context "when config_log_location is empty" do
|
221
|
-
let(:chef_config) { { config_log_location: "" } }
|
222
|
-
it "sets the default config_log_location in the client.rb" do
|
223
|
-
expect(bootstrap_context.get_log_location).to eq "STDOUT"
|
224
|
-
end
|
225
|
-
end
|
226
|
-
|
227
|
-
context "when config_log_location is :win_evt" do
|
228
|
-
let(:chef_config) { { config_log_location: :win_evt } }
|
229
|
-
it "raise error when config_log_location is :win_evt " do
|
230
|
-
expect { bootstrap_context.get_log_location }.to raise_error("The value :win_evt is not supported for config_log_location on Linux Platforms \n")
|
231
|
-
end
|
232
|
-
end
|
233
|
-
|
234
|
-
context "when config_log_location is :syslog" do
|
235
|
-
let(:chef_config) { { config_log_location: :syslog } }
|
236
|
-
it "sets the config_log_location value as :syslog in the client.rb" do
|
237
|
-
expect(bootstrap_context.get_log_location).to eq ":syslog"
|
238
|
-
end
|
239
|
-
end
|
240
|
-
|
241
|
-
context "When config_log_location is STDOUT" do
|
242
|
-
let(:chef_config) { { config_log_location: STDOUT } }
|
243
|
-
it "Sets the config_log_location value as STDOUT in the client.rb" do
|
244
|
-
expect(bootstrap_context.get_log_location).to eq "STDOUT"
|
245
|
-
end
|
246
|
-
end
|
247
|
-
|
248
|
-
context "when config_log_location is STDERR" do
|
249
|
-
let(:chef_config) { { config_log_location: STDERR } }
|
250
|
-
it "sets the config_log_location value as STDERR in the client.rb" do
|
251
|
-
expect(bootstrap_context.get_log_location).to eq "STDERR"
|
252
|
-
end
|
253
|
-
end
|
254
|
-
|
255
|
-
context "when config_log_location is a path" do
|
256
|
-
let(:chef_config) { { config_log_location: "/tmp/ChefLogFile" } }
|
257
|
-
it "sets the config_log_location path in the client.rb" do
|
258
|
-
expect(bootstrap_context.get_log_location).to eq "\"/tmp/ChefLogFile\""
|
259
|
-
end
|
260
|
-
end
|
261
|
-
|
262
|
-
end
|
263
|
-
|
264
|
-
describe "#version_to_install" do
|
265
|
-
context "when bootstrap_version is provided" do
|
266
|
-
let(:config) { { bootstrap_version: "awesome" } }
|
267
|
-
|
268
|
-
it "returns bootstrap_version" do
|
269
|
-
expect(bootstrap_context.version_to_install).to eq "awesome"
|
270
|
-
end
|
271
|
-
end
|
272
|
-
|
273
|
-
context "when bootstrap_version is not provided" do
|
274
|
-
let(:config) { { channel: "stable" } }
|
275
|
-
it "returns the currently running major version out of Chef::VERSION" do
|
276
|
-
expect(bootstrap_context.version_to_install).to eq Chef::VERSION.split(".").first
|
277
|
-
end
|
278
|
-
end
|
279
|
-
|
280
|
-
context "and channel is other than stable" do
|
281
|
-
let(:config) { { channel: "unstable" } }
|
282
|
-
it "returns the version string 'latest'" do
|
283
|
-
expect(bootstrap_context.version_to_install).to eq "latest"
|
284
|
-
end
|
285
|
-
end
|
286
|
-
end
|
287
|
-
end
|