chef 12.0.3-x86-mingw32 → 12.1.0.rc.0-x86-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/CONTRIBUTING.md +4 -1
- data/README.md +42 -18
- data/distro/common/html/_sources/ctl_chef_client.txt +1 -1
- data/distro/common/html/_sources/ctl_chef_server.txt +53 -35
- data/distro/common/html/_sources/ctl_chef_solo.txt +1 -1
- data/distro/common/html/_sources/knife_bootstrap.txt +1 -1
- data/distro/common/html/_sources/knife_cookbook_site.txt +1 -1
- data/distro/common/html/_sources/knife_data_bag.txt +4 -4
- data/distro/common/html/_sources/knife_status.txt +1 -1
- data/distro/common/html/_static/searchtools.js +1 -1
- data/distro/common/html/ctl_chef_client.html +55 -7
- data/distro/common/html/ctl_chef_server.html +84 -41
- data/distro/common/html/ctl_chef_shell.html +45 -1
- data/distro/common/html/ctl_chef_solo.html +51 -5
- data/distro/common/html/index.html +2 -2
- data/distro/common/html/knife.html +1 -1
- data/distro/common/html/knife_bootstrap.html +30 -10
- data/distro/common/html/knife_cookbook_site.html +2 -0
- data/distro/common/html/knife_data_bag.html +4 -4
- data/distro/common/html/knife_node.html +2 -2
- data/distro/common/html/knife_raw.html +1 -1
- data/distro/common/html/knife_role.html +1 -1
- data/distro/common/html/knife_search.html +3 -3
- data/distro/common/html/knife_status.html +4 -0
- data/distro/common/html/searchindex.js +1 -1
- data/distro/common/man/man1/chef-shell.1 +72 -1
- data/distro/common/man/man1/knife-bootstrap.1 +71 -63
- data/distro/common/man/man1/knife-client.1 +1 -1
- data/distro/common/man/man1/knife-configure.1 +1 -1
- data/distro/common/man/man1/knife-cookbook-site.1 +4 -1
- data/distro/common/man/man1/knife-cookbook.1 +1 -1
- data/distro/common/man/man1/knife-data-bag.1 +5 -5
- data/distro/common/man/man1/knife-delete.1 +1 -1
- data/distro/common/man/man1/knife-deps.1 +1 -1
- data/distro/common/man/man1/knife-diff.1 +1 -1
- data/distro/common/man/man1/knife-download.1 +1 -1
- data/distro/common/man/man1/knife-edit.1 +1 -1
- data/distro/common/man/man1/knife-environment.1 +1 -1
- data/distro/common/man/man1/knife-exec.1 +1 -1
- data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
- data/distro/common/man/man1/knife-list.1 +1 -1
- data/distro/common/man/man1/knife-node.1 +3 -3
- data/distro/common/man/man1/knife-raw.1 +2 -2
- data/distro/common/man/man1/knife-recipe-list.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +2 -2
- data/distro/common/man/man1/knife-search.1 +4 -4
- data/distro/common/man/man1/knife-serve.1 +1 -1
- data/distro/common/man/man1/knife-show.1 +1 -1
- data/distro/common/man/man1/knife-ssh.1 +1 -1
- data/distro/common/man/man1/knife-ssl-check.1 +1 -1
- data/distro/common/man/man1/knife-ssl-fetch.1 +1 -1
- data/distro/common/man/man1/knife-status.1 +1 -1
- data/distro/common/man/man1/knife-tag.1 +1 -1
- data/distro/common/man/man1/knife-upload.1 +1 -1
- data/distro/common/man/man1/knife-user.1 +1 -1
- data/distro/common/man/man1/knife-xargs.1 +1 -1
- data/distro/common/man/man1/knife.1 +1 -1
- data/distro/common/man/man8/chef-apply.8 +86 -0
- data/distro/common/man/man8/chef-client.8 +76 -5
- data/distro/common/man/man8/chef-solo.8 +79 -6
- data/distro/common/markdown/man1/knife-bootstrap.mkd +1 -1
- data/distro/common/markdown/man1/knife-cookbook-site.mkd +1 -1
- data/distro/common/markdown/man1/knife-data-bag.mkd +1 -1
- data/distro/common/markdown/man1/knife-environment.mkd +1 -1
- data/distro/common/markdown/man1/knife.mkd +1 -1
- data/lib/chef.rb +0 -7
- data/lib/chef/api_client.rb +10 -2
- data/lib/chef/api_client/registration.rb +7 -9
- data/lib/chef/application.rb +28 -12
- data/lib/chef/application/apply.rb +17 -1
- data/lib/chef/application/client.rb +74 -6
- data/lib/chef/application/knife.rb +1 -2
- data/lib/chef/application/solo.rb +30 -0
- data/lib/chef/application/windows_service.rb +1 -0
- data/lib/chef/application/windows_service_manager.rb +8 -2
- data/lib/chef/applications.rb +0 -1
- data/lib/chef/audit/audit_event_proxy.rb +93 -0
- data/lib/chef/audit/audit_reporter.rb +169 -0
- data/lib/chef/audit/control_group_data.rb +140 -0
- data/lib/chef/audit/rspec_formatter.rb +37 -0
- data/lib/chef/audit/runner.rb +178 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +11 -2
- data/lib/chef/chef_fs/config.rb +25 -4
- data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +15 -0
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -0
- data/lib/chef/chef_fs/file_system.rb +1 -1
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +5 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +3 -2
- data/lib/chef/{shef/ext.rb → chef_fs/file_system/chef_repository_file_system_policies_dir.rb} +22 -3
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +4 -0
- data/lib/chef/client.rb +81 -52
- data/lib/chef/config.rb +35 -3
- data/lib/chef/cookbook/metadata.rb +3 -3
- data/lib/chef/cookbook_manifest.rb +275 -0
- data/lib/chef/cookbook_site_streaming_uploader.rb +24 -23
- data/lib/chef/cookbook_uploader.rb +11 -2
- data/lib/chef/cookbook_version.rb +71 -194
- data/lib/chef/data_bag.rb +5 -2
- data/lib/chef/data_bag_item.rb +6 -3
- data/lib/chef/deprecation/warnings.rb +5 -4
- data/lib/chef/dsl/audit.rb +51 -0
- data/lib/chef/dsl/include_recipe.rb +2 -3
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/dsl/recipe.rb +49 -31
- data/lib/chef/encrypted_data_bag_item/assertions.rb +0 -3
- data/lib/chef/environment.rb +5 -2
- data/lib/chef/event_dispatch/base.rb +36 -1
- data/lib/chef/event_dispatch/dispatcher.rb +3 -5
- data/lib/chef/exceptions.rb +61 -2
- data/lib/chef/file_access_control/unix.rb +12 -0
- data/lib/chef/file_access_control/windows.rb +14 -0
- data/lib/chef/formatters/doc.rb +47 -1
- data/{spec/unit/monkey_patches/string_spec.rb → lib/chef/guard_interpreter.rb} +11 -16
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +3 -2
- data/lib/chef/http.rb +1 -2
- data/lib/chef/knife.rb +5 -3
- data/lib/chef/knife/bootstrap.rb +84 -15
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +165 -0
- data/lib/chef/knife/bootstrap/client_builder.rb +190 -0
- data/lib/chef/knife/bootstrap/{README.md → templates/README.md} +0 -0
- data/lib/chef/knife/bootstrap/{archlinux-gems.erb → templates/archlinux-gems.erb} +9 -0
- data/lib/chef/knife/bootstrap/{chef-aix.erb → templates/chef-aix.erb} +9 -0
- data/lib/chef/knife/bootstrap/{chef-full.erb → templates/chef-full.erb} +10 -1
- data/lib/chef/knife/client_create.rb +8 -7
- data/lib/chef/knife/cookbook_site_download.rb +1 -1
- data/lib/chef/knife/cookbook_site_install.rb +1 -1
- data/lib/chef/knife/cookbook_site_list.rb +1 -1
- data/lib/chef/knife/cookbook_site_search.rb +1 -1
- data/lib/chef/knife/cookbook_site_share.rb +39 -28
- data/lib/chef/knife/cookbook_site_show.rb +3 -3
- data/lib/chef/knife/cookbook_site_unshare.rb +1 -1
- data/lib/chef/knife/cookbook_test.rb +1 -0
- data/lib/chef/knife/cookbook_upload.rb +13 -8
- data/lib/chef/knife/core/bootstrap_context.rb +14 -3
- data/lib/chef/knife/core/generic_presenter.rb +5 -2
- data/lib/chef/knife/core/object_loader.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +24 -0
- data/lib/chef/knife/core/ui.rb +9 -1
- data/lib/chef/knife/node_run_list_remove.rb +11 -3
- data/lib/chef/knife/raw.rb +14 -3
- data/lib/chef/knife/role_env_run_list_add.rb +86 -0
- data/lib/chef/knife/role_env_run_list_clear.rb +55 -0
- data/lib/chef/knife/role_env_run_list_remove.rb +57 -0
- data/lib/chef/knife/role_env_run_list_replace.rb +59 -0
- data/lib/chef/knife/role_env_run_list_set.rb +70 -0
- data/lib/chef/knife/role_run_list_add.rb +86 -0
- data/lib/chef/knife/role_run_list_clear.rb +55 -0
- data/lib/chef/knife/role_run_list_remove.rb +57 -0
- data/lib/chef/knife/role_run_list_replace.rb +59 -0
- data/lib/chef/knife/role_run_list_set.rb +70 -0
- data/lib/chef/knife/search.rb +4 -4
- data/lib/chef/knife/serve.rb +3 -0
- data/lib/chef/knife/ssh.rb +1 -1
- data/lib/chef/knife/ssl_check.rb +2 -2
- data/lib/chef/knife/ssl_fetch.rb +14 -1
- data/lib/chef/log.rb +10 -1
- data/lib/chef/mixin/command.rb +1 -1
- data/lib/chef/mixin/command/windows.rb +1 -5
- data/lib/chef/mixin/get_source_from_package.rb +1 -0
- data/lib/chef/mixin/params_validate.rb +2 -2
- data/lib/chef/mixin/securable.rb +1 -7
- data/lib/chef/mixin/shell_out.rb +7 -1
- data/lib/chef/mixin/template.rb +2 -14
- data/lib/chef/mixin/why_run.rb +1 -1
- data/lib/chef/monkey_patches/net_http.rb +4 -0
- data/lib/chef/monologger.rb +0 -2
- data/lib/chef/node.rb +5 -2
- data/lib/chef/node/attribute.rb +11 -9
- data/lib/chef/node/attribute_collections.rb +8 -12
- data/lib/chef/node/immutable_collections.rb +4 -10
- data/lib/chef/org.rb +148 -0
- data/lib/chef/platform/provider_mapping.rb +3 -2
- data/lib/chef/platform/provider_priority_map.rb +2 -0
- data/lib/chef/platform/query_helpers.rb +0 -3
- data/lib/chef/policy_builder/policyfile.rb +51 -8
- data/lib/chef/provider/deploy.rb +1 -2
- data/lib/chef/provider/directory.rb +3 -3
- data/lib/chef/provider/dsc_script.rb +13 -7
- data/lib/chef/provider/env.rb +8 -8
- data/lib/chef/provider/execute.rb +55 -36
- data/lib/chef/provider/file.rb +8 -0
- data/lib/chef/provider/group.rb +2 -0
- data/lib/chef/provider/group/dscl.rb +3 -4
- data/lib/chef/provider/ifconfig.rb +25 -25
- data/lib/chef/provider/ifconfig/aix.rb +25 -27
- data/lib/chef/provider/lwrp_base.rb +1 -1
- data/lib/chef/provider/mount.rb +2 -2
- data/lib/chef/provider/mount/mount.rb +3 -4
- data/lib/chef/provider/mount/solaris.rb +1 -1
- data/lib/chef/provider/package.rb +297 -48
- data/lib/chef/provider/package/aix.rb +25 -30
- data/lib/chef/provider/package/apt.rb +63 -19
- data/lib/chef/provider/package/dpkg.rb +15 -16
- data/lib/chef/provider/package/macports.rb +7 -7
- data/lib/chef/provider/package/openbsd.rb +107 -0
- data/lib/chef/provider/package/pacman.rb +13 -15
- data/lib/chef/provider/package/portage.rb +3 -4
- data/lib/chef/provider/package/rpm.rb +28 -17
- data/lib/chef/provider/package/rubygems.rb +9 -9
- data/lib/chef/provider/package/solaris.rb +17 -21
- data/lib/chef/provider/package/windows/msi.rb +1 -1
- data/lib/chef/provider/package/yum-dump.py +2 -2
- data/lib/chef/provider/package/yum.rb +117 -51
- data/lib/chef/provider/package/zypper.rb +17 -18
- data/lib/chef/provider/powershell_script.rb +4 -4
- data/lib/chef/provider/registry_key.rb +2 -2
- data/lib/chef/provider/remote_directory.rb +1 -1
- data/lib/chef/provider/script.rb +25 -16
- data/lib/chef/provider/service.rb +1 -1
- data/lib/chef/provider/service/freebsd.rb +1 -1
- data/lib/chef/provider/service/openbsd.rb +216 -0
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +99 -1
- data/lib/chef/provider/user.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +19 -4
- data/lib/chef/providers.rb +2 -0
- data/lib/chef/recipe.rb +11 -5
- data/lib/chef/request_id.rb +1 -1
- data/lib/chef/resource.rb +839 -444
- data/lib/chef/resource/chef_gem.rb +20 -3
- data/lib/chef/resource/conditional.rb +3 -14
- data/lib/chef/resource/dsc_script.rb +14 -0
- data/lib/chef/resource/execute.rb +14 -7
- data/lib/chef/resource/file.rb +14 -0
- data/lib/chef/resource/file/verification.rb +122 -0
- data/lib/chef/resource/ips_package.rb +1 -1
- data/lib/chef/resource/lwrp_base.rb +2 -11
- data/lib/chef/resource/macports_package.rb +2 -1
- data/lib/chef/resource/openbsd_package.rb +51 -0
- data/lib/chef/resource/package.rb +2 -2
- data/lib/chef/resource/paludis_package.rb +1 -1
- data/lib/chef/resource/reboot.rb +1 -1
- data/lib/chef/resource/remote_file.rb +1 -0
- data/lib/chef/resource/rpm_package.rb +9 -0
- data/lib/chef/resource/script.rb +11 -0
- data/lib/chef/resource/template.rb +2 -3
- data/lib/chef/resource/windows_package.rb +1 -1
- data/lib/chef/resource/windows_service.rb +18 -0
- data/lib/chef/resource_builder.rb +137 -0
- data/lib/chef/resource_definition.rb +1 -1
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resources.rb +1 -0
- data/lib/chef/role.rb +17 -4
- data/lib/chef/run_context.rb +10 -6
- data/lib/chef/search/query.rb +66 -87
- data/lib/chef/shell/ext.rb +2 -2
- data/lib/chef/util/diff.rb +1 -4
- data/lib/chef/util/dsc/configuration_generator.rb +30 -6
- data/lib/chef/util/dsc/lcm_output_parser.rb +7 -3
- data/lib/chef/util/dsc/local_configuration_manager.rb +8 -8
- data/lib/chef/util/file_edit.rb +2 -2
- data/lib/chef/util/path_helper.rb +1 -4
- data/lib/chef/util/windows/net_use.rb +3 -3
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +1 -0
- data/lib/chef/win32/api/security.rb +26 -0
- data/lib/chef/win32/file.rb +21 -0
- data/lib/chef/win32/security.rb +46 -0
- data/lib/chef/win32/security/token.rb +8 -0
- data/lib/chef/win32/version.rb +0 -4
- data/spec/data/recipes.tgz +0 -0
- data/spec/functional/application_spec.rb +1 -1
- data/spec/functional/audit/rspec_formatter_spec.rb +54 -0
- data/spec/functional/audit/runner_spec.rb +137 -0
- data/spec/functional/dsl/reboot_pending_spec.rb +10 -10
- data/spec/functional/dsl/registry_helper_spec.rb +6 -6
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +5 -5
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +12 -21
- data/spec/functional/http/simple_spec.rb +1 -1
- data/spec/functional/knife/cookbook_delete_spec.rb +24 -24
- data/spec/functional/knife/exec_spec.rb +2 -4
- data/spec/functional/knife/smoke_test.rb +1 -1
- data/spec/functional/knife/ssh_spec.rb +23 -23
- data/spec/functional/provider/remote_file/cache_control_data_spec.rb +8 -8
- data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +2 -2
- data/spec/functional/rebooter_spec.rb +1 -1
- data/spec/functional/resource/aix_service_spec.rb +3 -0
- data/spec/functional/resource/aixinit_service_spec.rb +3 -3
- data/spec/functional/resource/bash_spec.rb +88 -0
- data/spec/functional/resource/deploy_revision_spec.rb +99 -100
- data/spec/functional/resource/env_spec.rb +3 -3
- data/spec/functional/resource/execute_spec.rb +97 -63
- data/spec/functional/resource/file_spec.rb +7 -7
- data/spec/functional/resource/git_spec.rb +13 -13
- data/spec/functional/resource/group_spec.rb +28 -25
- data/spec/functional/resource/ifconfig_spec.rb +2 -2
- data/spec/functional/resource/link_spec.rb +77 -78
- data/spec/functional/resource/mount_spec.rb +5 -5
- data/spec/functional/resource/ohai_spec.rb +1 -1
- data/spec/functional/resource/package_spec.rb +22 -22
- data/spec/functional/resource/powershell_spec.rb +57 -42
- data/spec/functional/resource/reboot_spec.rb +2 -2
- data/spec/functional/resource/registry_spec.rb +91 -91
- data/spec/functional/resource/remote_directory_spec.rb +19 -19
- data/spec/functional/resource/remote_file_spec.rb +18 -18
- data/spec/functional/resource/template_spec.rb +4 -4
- data/spec/functional/resource/user/dscl_spec.rb +4 -4
- data/spec/functional/resource/user/useradd_spec.rb +64 -51
- data/spec/functional/resource/windows_service_spec.rb +98 -0
- data/spec/functional/run_lock_spec.rb +9 -9
- data/spec/functional/shell_spec.rb +3 -3
- data/spec/functional/tiny_server_spec.rb +12 -12
- data/spec/functional/util/path_helper_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_helper_spec.rb +125 -125
- data/spec/functional/win32/security_spec.rb +65 -2
- data/spec/functional/win32/service_manager_spec.rb +30 -84
- data/spec/functional/win32/versions_spec.rb +6 -6
- data/spec/integration/client/client_spec.rb +102 -9
- data/spec/integration/knife/chef_fs_data_store_spec.rb +12 -8
- data/spec/integration/knife/common_options_spec.rb +3 -3
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
- data/spec/integration/knife/deps_spec.rb +4 -4
- data/spec/integration/knife/diff_spec.rb +6 -6
- data/spec/integration/knife/download_spec.rb +6 -6
- data/spec/integration/knife/list_spec.rb +2 -2
- data/spec/integration/knife/raw_spec.rb +5 -5
- data/spec/integration/knife/serve_spec.rb +3 -3
- data/spec/integration/knife/show_spec.rb +3 -3
- data/spec/integration/knife/upload_spec.rb +18 -18
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
- data/spec/integration/solo/solo_spec.rb +11 -12
- data/spec/spec_helper.rb +27 -15
- data/spec/stress/win32/file_spec.rb +4 -4
- data/spec/stress/win32/security_spec.rb +4 -4
- data/spec/support/chef_helpers.rb +3 -3
- data/spec/support/matchers/leak.rb +2 -2
- data/spec/support/mock/platform.rb +1 -1
- data/spec/support/pedant/Gemfile +3 -0
- data/spec/support/pedant/pedant_config.rb +9 -2
- data/spec/support/pedant/run_pedant.rb +15 -16
- data/spec/support/platform_helpers.rb +8 -12
- data/spec/support/shared/functional/directory_resource.rb +13 -13
- data/spec/support/shared/functional/file_resource.rb +83 -83
- data/spec/support/shared/functional/http.rb +1 -1
- data/spec/support/shared/functional/securable_resource.rb +64 -64
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +43 -41
- data/spec/support/shared/functional/win32_service.rb +60 -0
- data/spec/support/shared/functional/windows_script.rb +8 -8
- data/spec/support/shared/integration/knife_support.rb +8 -5
- data/spec/support/shared/matchers/exit_with_code.rb +6 -2
- data/spec/support/shared/unit/api_error_inspector.rb +8 -8
- data/spec/support/shared/unit/execute_resource.rb +24 -20
- data/spec/support/shared/unit/file_system_support.rb +2 -2
- data/spec/support/shared/unit/platform_introspector.rb +21 -21
- data/spec/support/shared/unit/provider/file.rb +239 -210
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +69 -69
- data/spec/support/shared/unit/script_resource.rb +40 -32
- data/spec/support/shared/unit/windows_script_resource.rb +8 -8
- data/spec/unit/api_client/registration_spec.rb +47 -47
- data/spec/unit/api_client_spec.rb +107 -69
- data/spec/unit/application/apply_spec.rb +31 -15
- data/spec/unit/application/client_spec.rb +146 -45
- data/spec/unit/application/knife_spec.rb +31 -31
- data/spec/unit/application/solo_spec.rb +59 -43
- data/spec/unit/application_spec.rb +109 -74
- data/spec/unit/audit/audit_event_proxy_spec.rb +311 -0
- data/spec/unit/audit/audit_reporter_spec.rb +393 -0
- data/spec/unit/audit/control_group_data_spec.rb +478 -0
- data/{lib/chef/monkey_patches/file.rb → spec/unit/audit/rspec_formatter_spec.rb} +11 -8
- data/spec/unit/audit/runner_spec.rb +135 -0
- data/spec/unit/chef_fs/config_spec.rb +52 -0
- data/spec/unit/chef_fs/diff_spec.rb +12 -12
- data/spec/unit/chef_fs/file_pattern_spec.rb +276 -277
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +6 -6
- data/spec/unit/chef_fs/file_system_spec.rb +26 -13
- data/spec/unit/chef_fs/parallelizer.rb +87 -87
- data/spec/unit/chef_spec.rb +1 -1
- data/spec/unit/client_spec.rb +263 -97
- data/spec/unit/config_fetcher_spec.rb +13 -13
- data/spec/unit/config_spec.rb +105 -66
- data/spec/unit/cookbook/chefignore_spec.rb +6 -6
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +3 -3
- data/spec/unit/cookbook/metadata_spec.rb +149 -149
- data/spec/unit/cookbook/syntax_check_spec.rb +36 -31
- data/spec/unit/cookbook_loader_spec.rb +62 -58
- data/spec/unit/cookbook_manifest_spec.rb +141 -468
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +27 -27
- data/spec/unit/cookbook_spec.rb +15 -15
- data/spec/unit/cookbook_uploader_spec.rb +37 -3
- data/spec/unit/cookbook_version_file_specificity_spec.rb +554 -0
- data/spec/unit/cookbook_version_spec.rb +98 -240
- data/spec/unit/daemon_spec.rb +31 -31
- data/spec/unit/data_bag_item_spec.rb +121 -89
- data/spec/unit/data_bag_spec.rb +35 -35
- data/spec/unit/deprecation_spec.rb +27 -14
- data/spec/unit/digester_spec.rb +3 -3
- data/spec/unit/dsl/audit_spec.rb +43 -0
- data/spec/unit/dsl/data_query_spec.rb +1 -1
- data/spec/unit/dsl/platform_introspection_spec.rb +14 -14
- data/spec/unit/dsl/reboot_pending_spec.rb +18 -18
- data/spec/unit/dsl/regsitry_helper_spec.rb +6 -6
- data/spec/unit/encrypted_data_bag_item_spec.rb +58 -82
- data/spec/unit/environment_spec.rb +105 -105
- data/spec/unit/exceptions_spec.rb +47 -1
- data/spec/unit/file_access_control_spec.rb +62 -56
- data/spec/unit/file_cache_spec.rb +11 -11
- data/spec/unit/file_content_management/deploy/cp_spec.rb +2 -2
- data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +10 -10
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +23 -23
- data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +14 -14
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +12 -12
- data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +1 -1
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +16 -16
- data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +4 -4
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +103 -13
- data/spec/unit/guard_interpreter_spec.rb +41 -0
- data/spec/unit/handler/json_file_spec.rb +10 -10
- data/spec/unit/handler_spec.rb +39 -39
- data/spec/unit/http/basic_client_spec.rb +3 -3
- data/spec/unit/http/http_request_spec.rb +10 -10
- data/spec/unit/http/simple_spec.rb +3 -3
- data/spec/unit/http/ssl_policies_spec.rb +15 -15
- data/spec/unit/http/validate_content_length_spec.rb +18 -13
- data/spec/unit/http_spec.rb +16 -9
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +153 -0
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +178 -0
- data/spec/unit/knife/bootstrap_spec.rb +144 -91
- data/spec/unit/knife/client_bulk_delete_spec.rb +24 -24
- data/spec/unit/knife/client_create_spec.rb +57 -43
- data/spec/unit/knife/client_delete_spec.rb +15 -15
- data/spec/unit/knife/client_edit_spec.rb +4 -4
- data/spec/unit/knife/client_list_spec.rb +2 -2
- data/spec/unit/knife/client_reregister_spec.rb +9 -9
- data/spec/unit/knife/configure_client_spec.rb +20 -20
- data/spec/unit/knife/configure_spec.rb +85 -85
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +15 -15
- data/spec/unit/knife/cookbook_create_spec.rb +59 -59
- data/spec/unit/knife/cookbook_delete_spec.rb +49 -49
- data/spec/unit/knife/cookbook_download_spec.rb +56 -56
- data/spec/unit/knife/cookbook_list_spec.rb +9 -9
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +8 -8
- data/spec/unit/knife/cookbook_metadata_spec.rb +44 -44
- data/spec/unit/knife/cookbook_show_spec.rb +29 -29
- data/spec/unit/knife/cookbook_site_download_spec.rb +26 -26
- data/spec/unit/knife/cookbook_site_install_spec.rb +5 -1
- data/spec/unit/knife/cookbook_site_share_spec.rb +68 -59
- data/spec/unit/knife/cookbook_site_unshare_spec.rb +15 -15
- data/spec/unit/knife/cookbook_test_spec.rb +16 -16
- data/spec/unit/knife/cookbook_upload_spec.rb +105 -71
- data/spec/unit/knife/core/bootstrap_context_spec.rb +37 -22
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +36 -36
- data/spec/unit/knife/core/object_loader_spec.rb +3 -3
- data/spec/unit/knife/core/subcommand_loader_spec.rb +107 -33
- data/spec/unit/knife/core/ui_spec.rb +84 -72
- data/spec/unit/knife/data_bag_from_file_spec.rb +1 -1
- data/spec/unit/knife/environment_compare_spec.rb +12 -12
- data/spec/unit/knife/environment_create_spec.rb +16 -16
- data/spec/unit/knife/environment_delete_spec.rb +14 -14
- data/spec/unit/knife/environment_edit_spec.rb +15 -15
- data/spec/unit/knife/environment_from_file_spec.rb +17 -17
- data/spec/unit/knife/environment_list_spec.rb +7 -7
- data/spec/unit/knife/environment_show_spec.rb +10 -10
- data/spec/unit/knife/index_rebuild_spec.rb +17 -17
- data/spec/unit/knife/knife_help.rb +24 -24
- data/spec/unit/knife/node_bulk_delete_spec.rb +14 -14
- data/spec/unit/knife/node_delete_spec.rb +11 -11
- data/spec/unit/knife/node_edit_spec.rb +17 -17
- data/spec/unit/knife/node_environment_set_spec.rb +12 -12
- data/spec/unit/knife/node_from_file_spec.rb +8 -8
- data/spec/unit/knife/node_list_spec.rb +9 -9
- data/spec/unit/knife/node_run_list_add_spec.rb +29 -29
- data/spec/unit/knife/node_run_list_remove_spec.rb +28 -13
- data/spec/unit/knife/node_run_list_set_spec.rb +27 -27
- data/spec/unit/knife/raw_spec.rb +43 -0
- data/spec/unit/knife/role_bulk_delete_spec.rb +12 -12
- data/spec/unit/knife/role_create_spec.rb +12 -12
- data/spec/unit/knife/role_delete_spec.rb +10 -10
- data/spec/unit/knife/role_edit_spec.rb +13 -13
- data/spec/unit/knife/role_env_run_list_add_spec.rb +217 -0
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +100 -0
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +108 -0
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +108 -0
- data/spec/unit/knife/role_env_run_list_set_spec.rb +102 -0
- data/spec/unit/knife/role_from_file_spec.rb +10 -10
- data/spec/unit/knife/role_list_spec.rb +7 -7
- data/spec/unit/knife/role_run_list_add_spec.rb +179 -0
- data/spec/unit/knife/role_run_list_clear_spec.rb +90 -0
- data/spec/unit/knife/role_run_list_remove_spec.rb +98 -0
- data/spec/unit/knife/role_run_list_replace_spec.rb +101 -0
- data/spec/unit/knife/role_run_list_set_spec.rb +92 -0
- data/spec/unit/knife/ssh_spec.rb +66 -66
- data/spec/unit/knife/ssl_check_spec.rb +27 -27
- data/spec/unit/knife/ssl_fetch_spec.rb +45 -12
- data/spec/unit/knife/status_spec.rb +5 -5
- data/spec/unit/knife/tag_create_spec.rb +5 -5
- data/spec/unit/knife/tag_delete_spec.rb +6 -6
- data/spec/unit/knife/tag_list_spec.rb +4 -4
- data/spec/unit/knife/user_create_spec.rb +18 -18
- data/spec/unit/knife/user_delete_spec.rb +4 -4
- data/spec/unit/knife/user_edit_spec.rb +7 -7
- data/spec/unit/knife/user_list_spec.rb +2 -2
- data/spec/unit/knife/user_reregister_spec.rb +10 -10
- data/spec/unit/knife/user_show_spec.rb +5 -5
- data/spec/unit/knife_spec.rb +36 -36
- data/spec/unit/lwrp_spec.rb +63 -39
- data/spec/unit/mash_spec.rb +6 -6
- data/spec/unit/mixin/checksum_spec.rb +2 -2
- data/spec/unit/mixin/command_spec.rb +13 -13
- data/spec/unit/mixin/convert_to_class_name_spec.rb +6 -6
- data/spec/unit/mixin/deep_merge_spec.rb +49 -49
- data/spec/unit/mixin/deprecation_spec.rb +5 -5
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +14 -14
- data/spec/unit/mixin/homebrew_user_spec.rb +3 -3
- data/spec/unit/mixin/params_validate_spec.rb +71 -71
- data/spec/unit/mixin/path_sanity_spec.rb +14 -14
- data/spec/unit/mixin/securable_spec.rb +177 -177
- data/spec/unit/mixin/shell_out_spec.rb +56 -27
- data/spec/unit/mixin/template_spec.rb +31 -31
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +5 -5
- data/spec/unit/mixin/xml_escape_spec.rb +7 -7
- data/spec/unit/monkey_patches/uri_spec.rb +1 -1
- data/spec/unit/monologger_spec.rb +3 -3
- data/spec/unit/node/attribute_spec.rb +185 -136
- data/spec/unit/node/immutable_collections_spec.rb +22 -22
- data/spec/unit/node_spec.rb +210 -179
- data/spec/unit/org_spec.rb +196 -0
- data/spec/unit/platform/query_helpers_spec.rb +5 -5
- data/spec/unit/platform_spec.rb +46 -46
- data/spec/unit/policy_builder/expand_node_object_spec.rb +17 -18
- data/spec/unit/policy_builder/policyfile_spec.rb +159 -71
- data/spec/unit/provider/directory_spec.rb +5 -5
- data/spec/unit/provider/dsc_script_spec.rb +6 -6
- data/spec/unit/provider/env_spec.rb +27 -14
- data/spec/unit/provider/execute_spec.rb +139 -68
- data/spec/unit/provider/file/content_spec.rb +8 -8
- data/spec/unit/provider/git_spec.rb +10 -5
- data/spec/unit/provider/group/dscl_spec.rb +8 -11
- data/spec/unit/provider/group_spec.rb +13 -13
- data/spec/unit/provider/ifconfig/aix_spec.rb +3 -2
- data/spec/unit/provider/ifconfig/debian_spec.rb +19 -19
- data/spec/unit/provider/ifconfig_spec.rb +2 -2
- data/spec/unit/provider/mdadm_spec.rb +2 -2
- data/spec/unit/provider/mount/aix_spec.rb +5 -5
- data/spec/unit/provider/mount/mount_spec.rb +22 -22
- data/spec/unit/provider/mount/solaris_spec.rb +20 -20
- data/spec/unit/provider/package/aix_spec.rb +23 -22
- data/spec/unit/provider/package/apt_spec.rb +23 -4
- data/spec/unit/provider/package/dpkg_spec.rb +14 -15
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
- data/spec/unit/provider/package/freebsd/port_spec.rb +1 -1
- data/spec/unit/provider/package/ips_spec.rb +1 -2
- data/spec/unit/provider/package/macports_spec.rb +14 -14
- data/spec/unit/provider/package/openbsd_spec.rb +66 -0
- data/spec/unit/provider/package/pacman_spec.rb +15 -14
- data/spec/unit/provider/package/portage_spec.rb +11 -11
- data/spec/unit/provider/package/rpm_spec.rb +132 -84
- data/spec/unit/provider/package/rubygems_spec.rb +54 -25
- data/spec/unit/provider/package/solaris_spec.rb +22 -25
- data/spec/unit/provider/package/yum_spec.rb +237 -36
- data/spec/unit/provider/package/zypper_spec.rb +9 -12
- data/spec/unit/provider/package_spec.rb +276 -2
- data/spec/unit/provider/package_spec.rbe +0 -0
- data/spec/unit/provider/remote_directory_spec.rb +25 -25
- data/spec/unit/provider/remote_file/ftp_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +3 -3
- data/spec/unit/provider/script_spec.rb +61 -43
- data/spec/unit/provider/service/aix_service_spec.rb +5 -5
- data/spec/unit/provider/service/arch_service_spec.rb +5 -5
- data/spec/unit/provider/service/debian_service_spec.rb +8 -8
- data/spec/unit/provider/service/freebsd_service_spec.rb +16 -2
- data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
- data/spec/unit/provider/service/init_service_spec.rb +5 -5
- data/spec/unit/provider/service/insserv_service_spec.rb +2 -2
- data/spec/unit/provider/service/invokercd_service_spec.rb +5 -5
- data/spec/unit/provider/service/macosx_spec.rb +7 -7
- data/spec/unit/provider/service/openbsd_service_spec.rb +543 -0
- data/spec/unit/provider/service/redhat_spec.rb +4 -4
- data/spec/unit/provider/service/simple_service_spec.rb +2 -2
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +14 -14
- data/spec/unit/provider/service/systemd_service_spec.rb +15 -7
- data/spec/unit/provider/service/upstart_service_spec.rb +4 -4
- data/spec/unit/provider/service/windows_spec.rb +119 -25
- data/spec/unit/provider/service_spec.rb +1 -1
- data/spec/unit/provider/user/dscl_spec.rb +38 -30
- data/spec/unit/provider/user_spec.rb +1 -1
- data/spec/unit/provider_resolver_spec.rb +7 -7
- data/spec/unit/provider_spec.rb +23 -23
- data/spec/unit/recipe_spec.rb +194 -83
- data/spec/unit/registry_helper_spec.rb +143 -143
- data/spec/unit/resource/chef_gem_spec.rb +117 -3
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
- data/spec/unit/resource/conditional_spec.rb +56 -15
- data/spec/unit/resource/deploy_spec.rb +2 -2
- data/spec/unit/resource/dsc_script_spec.rb +32 -0
- data/spec/unit/resource/execute_spec.rb +4 -0
- data/spec/unit/resource/file/verification_spec.rb +111 -0
- data/spec/unit/resource/file_spec.rb +14 -0
- data/spec/unit/resource/openbsd_package_spec.rb +49 -0
- data/spec/unit/resource/remote_file_spec.rb +12 -12
- data/spec/unit/resource/resource_notification_spec.rb +18 -18
- data/spec/unit/resource/rpm_package_spec.rb +12 -0
- data/spec/unit/resource/scm_spec.rb +4 -4
- data/spec/unit/resource/script_spec.rb +3 -5
- data/spec/unit/resource/subversion_spec.rb +1 -1
- data/spec/unit/resource_builder_spec.rb +1 -0
- data/spec/unit/resource_collection/resource_list_spec.rb +2 -2
- data/spec/unit/resource_collection/resource_set_spec.rb +3 -3
- data/spec/unit/resource_collection/stepable_iterator_spec.rb +24 -24
- data/spec/unit/resource_collection_spec.rb +52 -52
- data/spec/unit/resource_definition_spec.rb +1 -1
- data/spec/unit/resource_reporter_spec.rb +118 -118
- data/spec/unit/resource_spec.rb +131 -125
- data/spec/unit/rest/auth_credentials_spec.rb +73 -73
- data/spec/unit/rest_spec.rb +12 -12
- data/spec/unit/role_spec.rb +85 -84
- data/spec/unit/run_context/cookbook_compiler_spec.rb +18 -18
- data/spec/unit/run_context_spec.rb +39 -68
- data/spec/unit/run_list/run_list_expansion_spec.rb +21 -21
- data/spec/unit/run_list/run_list_item_spec.rb +28 -28
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +14 -14
- data/spec/unit/run_list_spec.rb +55 -55
- data/spec/unit/run_lock_spec.rb +14 -14
- data/spec/unit/run_status_spec.rb +24 -24
- data/spec/unit/scan_access_control_spec.rb +23 -23
- data/spec/unit/search/query_spec.rb +54 -66
- data/spec/unit/shell/model_wrapper_spec.rb +13 -13
- data/spec/unit/shell/shell_ext_spec.rb +32 -32
- data/spec/unit/shell/shell_session_spec.rb +24 -24
- data/spec/unit/shell_out_spec.rb +4 -4
- data/spec/unit/shell_spec.rb +27 -27
- data/spec/unit/user_spec.rb +50 -50
- data/spec/unit/util/backup_spec.rb +32 -32
- data/spec/unit/util/diff_spec.rb +31 -31
- data/spec/unit/util/dsc/configuration_generator_spec.rb +38 -16
- data/spec/unit/util/dsc/lcm_output_parser_spec.rb +21 -26
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +10 -10
- data/spec/unit/util/editor_spec.rb +10 -10
- data/spec/unit/util/file_edit_spec.rb +10 -10
- data/spec/unit/util/path_helper_spec.rb +38 -46
- data/spec/unit/util/powershell/cmdlet_spec.rb +9 -9
- data/spec/unit/util/selinux_spec.rb +30 -30
- data/spec/unit/util/threaded_job_queue_spec.rb +6 -6
- data/spec/unit/version/platform_spec.rb +5 -5
- data/spec/unit/version_class_spec.rb +15 -15
- data/spec/unit/version_constraint/platform_spec.rb +7 -7
- data/spec/unit/version_constraint_spec.rb +43 -43
- data/spec/unit/windows_service_spec.rb +15 -15
- data/spec/unit/workstation_config_loader_spec.rb +2 -2
- data/tasks/rspec.rb +16 -18
- metadata +126 -49
- data/bin/shef +0 -35
- data/lib/chef/application/agent.rb +0 -18
- data/lib/chef/monkey_patches/fileutils.rb +0 -65
- data/lib/chef/monkey_patches/numeric.rb +0 -15
- data/lib/chef/monkey_patches/object.rb +0 -9
- data/lib/chef/monkey_patches/pathname.rb +0 -32
- data/lib/chef/monkey_patches/regexp.rb +0 -34
- data/lib/chef/monkey_patches/securerandom.rb +0 -44
- data/lib/chef/monkey_patches/string.rb +0 -49
- data/lib/chef/monkey_patches/tempfile.rb +0 -64
- data/lib/chef/monkey_patches/uri.rb +0 -70
data/spec/unit/chef_spec.rb
CHANGED
data/spec/unit/client_spec.rb
CHANGED
@@ -44,7 +44,7 @@ describe Chef::Client do
|
|
44
44
|
ohai_system = double( "Ohai::System",
|
45
45
|
:all_plugins => true,
|
46
46
|
:data => ohai_data)
|
47
|
-
ohai_system.
|
47
|
+
allow(ohai_system).to receive(:[]) do |key|
|
48
48
|
ohai_data[key]
|
49
49
|
end
|
50
50
|
ohai_system
|
@@ -72,7 +72,7 @@ describe Chef::Client do
|
|
72
72
|
|
73
73
|
# Node/Ohai data
|
74
74
|
#Chef::Config[:node_name] = fqdn
|
75
|
-
Ohai::System.
|
75
|
+
allow(Ohai::System).to receive(:new).and_return(ohai_system)
|
76
76
|
end
|
77
77
|
|
78
78
|
describe "authentication protocol selection" do
|
@@ -85,7 +85,7 @@ describe Chef::Client do
|
|
85
85
|
Chef::Config[:node_name] = ("f" * 90)
|
86
86
|
# ugly that this happens as a side effect of a getter :(
|
87
87
|
client.node_name
|
88
|
-
Chef::Config[:authentication_protocol_version].
|
88
|
+
expect(Chef::Config[:authentication_protocol_version]).to eq("1.0")
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
@@ -94,7 +94,7 @@ describe Chef::Client do
|
|
94
94
|
Chef::Config[:node_name] = ("f" * 91)
|
95
95
|
# ugly that this happens as a side effect of a getter :(
|
96
96
|
client.node_name
|
97
|
-
Chef::Config[:authentication_protocol_version].
|
97
|
+
expect(Chef::Config[:authentication_protocol_version]).to eq("1.1")
|
98
98
|
end
|
99
99
|
end
|
100
100
|
end
|
@@ -104,11 +104,11 @@ describe Chef::Client do
|
|
104
104
|
|
105
105
|
context "and STDOUT is a TTY" do
|
106
106
|
before do
|
107
|
-
STDOUT.
|
107
|
+
allow(STDOUT).to receive(:tty?).and_return(true)
|
108
108
|
end
|
109
109
|
|
110
110
|
it "configures the :doc formatter" do
|
111
|
-
client.formatters_for_run.
|
111
|
+
expect(client.formatters_for_run).to eq([[:doc]])
|
112
112
|
end
|
113
113
|
|
114
114
|
context "and force_logger is set" do
|
@@ -117,8 +117,8 @@ describe Chef::Client do
|
|
117
117
|
end
|
118
118
|
|
119
119
|
it "configures the :null formatter" do
|
120
|
-
Chef::Config[:force_logger].
|
121
|
-
client.formatters_for_run.
|
120
|
+
expect(Chef::Config[:force_logger]).to be_truthy
|
121
|
+
expect(client.formatters_for_run).to eq([[:null]])
|
122
122
|
end
|
123
123
|
|
124
124
|
end
|
@@ -127,11 +127,11 @@ describe Chef::Client do
|
|
127
127
|
|
128
128
|
context "and STDOUT is not a TTY" do
|
129
129
|
before do
|
130
|
-
STDOUT.
|
130
|
+
allow(STDOUT).to receive(:tty?).and_return(false)
|
131
131
|
end
|
132
132
|
|
133
133
|
it "configures the :null formatter" do
|
134
|
-
client.formatters_for_run.
|
134
|
+
expect(client.formatters_for_run).to eq([[:null]])
|
135
135
|
end
|
136
136
|
|
137
137
|
context "and force_formatter is set" do
|
@@ -139,7 +139,7 @@ describe Chef::Client do
|
|
139
139
|
Chef::Config[:force_formatter] = true
|
140
140
|
end
|
141
141
|
it "it configures the :doc formatter" do
|
142
|
-
client.formatters_for_run.
|
142
|
+
expect(client.formatters_for_run).to eq([[:doc]])
|
143
143
|
end
|
144
144
|
end
|
145
145
|
end
|
@@ -153,14 +153,14 @@ describe Chef::Client do
|
|
153
153
|
end
|
154
154
|
|
155
155
|
it "does not configure a default formatter" do
|
156
|
-
client.formatters_for_run.
|
156
|
+
expect(client.formatters_for_run).to eq([[:min, nil]])
|
157
157
|
end
|
158
158
|
|
159
159
|
it "configures the formatter for STDOUT/STDERR" do
|
160
160
|
configured_formatters = client.configure_formatters
|
161
161
|
min_formatter = configured_formatters[0]
|
162
|
-
min_formatter.output.out.
|
163
|
-
min_formatter.output.err.
|
162
|
+
expect(min_formatter.output.out).to eq(STDOUT)
|
163
|
+
expect(min_formatter.output.err).to eq(STDERR)
|
164
164
|
end
|
165
165
|
end
|
166
166
|
|
@@ -178,8 +178,8 @@ describe Chef::Client do
|
|
178
178
|
it "configures the formatter for the file path" do
|
179
179
|
configured_formatters = client.configure_formatters
|
180
180
|
min_formatter = configured_formatters[0]
|
181
|
-
min_formatter.output.out.path.
|
182
|
-
min_formatter.output.err.path.
|
181
|
+
expect(min_formatter.output.out.path).to eq(@tmpout.path)
|
182
|
+
expect(min_formatter.output.err.path).to eq(@tmpout.path)
|
183
183
|
end
|
184
184
|
end
|
185
185
|
|
@@ -187,11 +187,12 @@ describe Chef::Client do
|
|
187
187
|
end
|
188
188
|
|
189
189
|
describe "a full client run" do
|
190
|
-
|
190
|
+
shared_context "a client run" do
|
191
191
|
let(:http_node_load) { double("Chef::REST (node)") }
|
192
192
|
let(:http_cookbook_sync) { double("Chef::REST (cookbook sync)") }
|
193
193
|
let(:http_node_save) { double("Chef::REST (node save)") }
|
194
194
|
let(:runner) { double("Chef::Runner") }
|
195
|
+
let(:audit_runner) { instance_double("Chef::Audit::Runner", :failed? => false) }
|
195
196
|
|
196
197
|
let(:api_client_exists?) { false }
|
197
198
|
|
@@ -204,11 +205,15 @@ describe Chef::Client do
|
|
204
205
|
# --Client.register
|
205
206
|
# Make sure Client#register thinks the client key doesn't
|
206
207
|
# exist, so it tries to register and create one.
|
207
|
-
File.
|
208
|
+
allow(File).to receive(:exists?).and_call_original
|
209
|
+
expect(File).to receive(:exists?).
|
210
|
+
with(Chef::Config[:client_key]).
|
211
|
+
exactly(:once).
|
212
|
+
and_return(api_client_exists?)
|
208
213
|
|
209
214
|
unless api_client_exists?
|
210
215
|
# Client.register will register with the validation client name.
|
211
|
-
Chef::ApiClient::Registration.
|
216
|
+
expect_any_instance_of(Chef::ApiClient::Registration).to receive(:run)
|
212
217
|
end
|
213
218
|
end
|
214
219
|
|
@@ -216,64 +221,76 @@ describe Chef::Client do
|
|
216
221
|
# Client.register will then turn around create another
|
217
222
|
# Chef::REST object, this time with the client key it got from the
|
218
223
|
# previous step.
|
219
|
-
Chef::REST.
|
224
|
+
expect(Chef::REST).to receive(:new).
|
220
225
|
with(Chef::Config[:chef_server_url], fqdn, Chef::Config[:client_key]).
|
221
|
-
exactly(
|
226
|
+
exactly(:once).
|
222
227
|
and_return(http_node_load)
|
223
228
|
|
224
229
|
# --Client#build_node
|
225
230
|
# looks up the node, which we will return, then later saves it.
|
226
|
-
Chef::Node.
|
231
|
+
expect(Chef::Node).to receive(:find_or_create).with(fqdn).and_return(node)
|
227
232
|
|
228
233
|
# --ResourceReporter#node_load_completed
|
229
234
|
# gets a run id from the server for storing resource history
|
230
235
|
# (has its own tests, so stubbing it here.)
|
231
|
-
Chef::ResourceReporter.
|
236
|
+
expect_any_instance_of(Chef::ResourceReporter).to receive(:node_load_completed)
|
232
237
|
end
|
233
238
|
|
234
239
|
def stub_for_sync_cookbooks
|
235
240
|
# --Client#setup_run_context
|
236
241
|
# ---Client#sync_cookbooks -- downloads the list of cookbooks to sync
|
237
242
|
#
|
238
|
-
Chef::CookbookSynchronizer.
|
239
|
-
Chef::REST.
|
240
|
-
http_cookbook_sync.
|
243
|
+
expect_any_instance_of(Chef::CookbookSynchronizer).to receive(:sync_cookbooks)
|
244
|
+
expect(Chef::REST).to receive(:new).with(Chef::Config[:chef_server_url]).and_return(http_cookbook_sync)
|
245
|
+
expect(http_cookbook_sync).to receive(:post).
|
241
246
|
with("environments/_default/cookbook_versions", {:run_list => []}).
|
242
247
|
and_return({})
|
243
248
|
end
|
244
249
|
|
245
250
|
def stub_for_converge
|
246
251
|
# --Client#converge
|
247
|
-
Chef::Runner.
|
248
|
-
runner.
|
252
|
+
expect(Chef::Runner).to receive(:new).and_return(runner)
|
253
|
+
expect(runner).to receive(:converge).and_return(true)
|
254
|
+
end
|
249
255
|
|
250
|
-
|
251
|
-
#
|
252
|
-
|
253
|
-
|
256
|
+
def stub_for_audit
|
257
|
+
# -- Client#run_audits
|
258
|
+
expect(Chef::Audit::Runner).to receive(:new).and_return(audit_runner)
|
259
|
+
expect(audit_runner).to receive(:run).and_return(true)
|
254
260
|
end
|
255
261
|
|
256
262
|
def stub_for_node_save
|
257
|
-
node.
|
263
|
+
allow(node).to receive(:data_for_save).and_return(node.for_json)
|
258
264
|
|
259
265
|
# --Client#save_updated_node
|
260
|
-
Chef::REST.
|
261
|
-
http_node_save.
|
266
|
+
expect(Chef::REST).to receive(:new).with(Chef::Config[:chef_server_url]).and_return(http_node_save)
|
267
|
+
expect(http_node_save).to receive(:put_rest).with("nodes/#{fqdn}", node.for_json).and_return(true)
|
262
268
|
end
|
263
269
|
|
264
270
|
def stub_for_run
|
265
|
-
Chef::RunLock.
|
266
|
-
Chef::RunLock.
|
267
|
-
Chef::RunLock.
|
271
|
+
expect_any_instance_of(Chef::RunLock).to receive(:acquire)
|
272
|
+
expect_any_instance_of(Chef::RunLock).to receive(:save_pid)
|
273
|
+
expect_any_instance_of(Chef::RunLock).to receive(:release)
|
268
274
|
|
269
275
|
# Post conditions: check that node has been filled in correctly
|
270
|
-
client.
|
271
|
-
client.
|
276
|
+
expect(client).to receive(:run_started)
|
277
|
+
expect(client).to receive(:run_completed_successfully)
|
278
|
+
|
279
|
+
# --ResourceReporter#run_completed
|
280
|
+
# updates the server with the resource history
|
281
|
+
# (has its own tests, so stubbing it here.)
|
282
|
+
expect_any_instance_of(Chef::ResourceReporter).to receive(:run_completed)
|
283
|
+
# --AuditReporter#run_completed
|
284
|
+
# posts the audit data to server.
|
285
|
+
# (has its own tests, so stubbing it here.)
|
286
|
+
expect_any_instance_of(Chef::Audit::AuditReporter).to receive(:run_completed)
|
272
287
|
end
|
273
288
|
|
274
289
|
before do
|
275
290
|
Chef::Config[:client_fork] = enable_fork
|
276
291
|
Chef::Config[:cache_path] = windows? ? 'C:\chef' : '/var/chef'
|
292
|
+
Chef::Config[:why_run] = false
|
293
|
+
Chef::Config[:audit_mode] = :enabled
|
277
294
|
|
278
295
|
stub_const("Chef::Client::STDOUT_FD", stdout)
|
279
296
|
stub_const("Chef::Client::STDERR_FD", stderr)
|
@@ -282,30 +299,31 @@ describe Chef::Client do
|
|
282
299
|
stub_for_node_load
|
283
300
|
stub_for_sync_cookbooks
|
284
301
|
stub_for_converge
|
302
|
+
stub_for_audit
|
285
303
|
stub_for_node_save
|
286
304
|
stub_for_run
|
287
305
|
end
|
306
|
+
end
|
288
307
|
|
289
|
-
|
308
|
+
shared_examples_for "a successful client run" do
|
309
|
+
include_context "a client run"
|
310
|
+
|
311
|
+
it "runs ohai, sets up authentication, loads node state, synchronizes policy, converges, and runs audits" do
|
290
312
|
# This is what we're testing.
|
291
313
|
client.run
|
292
314
|
|
293
315
|
# fork is stubbed, so we can see the outcome of the run
|
294
|
-
node.automatic_attrs[:platform].
|
295
|
-
node.automatic_attrs[:platform_version].
|
316
|
+
expect(node.automatic_attrs[:platform]).to eq("example-platform")
|
317
|
+
expect(node.automatic_attrs[:platform_version]).to eq("example-platform-1.0")
|
296
318
|
end
|
297
319
|
end
|
298
320
|
|
299
|
-
|
300
321
|
describe "when running chef-client without fork" do
|
301
|
-
|
302
322
|
include_examples "a successful client run"
|
303
323
|
end
|
304
324
|
|
305
325
|
describe "when the client key already exists" do
|
306
|
-
|
307
326
|
let(:api_client_exists?) { true }
|
308
|
-
|
309
327
|
include_examples "a successful client run"
|
310
328
|
end
|
311
329
|
|
@@ -321,30 +339,29 @@ describe Chef::Client do
|
|
321
339
|
|
322
340
|
before do
|
323
341
|
# Client will try to compile and run override_recipe
|
324
|
-
Chef::RunContext::CookbookCompiler.
|
342
|
+
expect_any_instance_of(Chef::RunContext::CookbookCompiler).to receive(:compile)
|
325
343
|
end
|
326
344
|
|
327
345
|
def stub_for_sync_cookbooks
|
328
346
|
# --Client#setup_run_context
|
329
347
|
# ---Client#sync_cookbooks -- downloads the list of cookbooks to sync
|
330
348
|
#
|
331
|
-
Chef::CookbookSynchronizer.
|
332
|
-
Chef::REST.
|
333
|
-
http_cookbook_sync.
|
349
|
+
expect_any_instance_of(Chef::CookbookSynchronizer).to receive(:sync_cookbooks)
|
350
|
+
expect(Chef::REST).to receive(:new).with(Chef::Config[:chef_server_url]).and_return(http_cookbook_sync)
|
351
|
+
expect(http_cookbook_sync).to receive(:post).
|
334
352
|
with("environments/_default/cookbook_versions", {:run_list => ["override_recipe"]}).
|
335
353
|
and_return({})
|
336
354
|
end
|
337
355
|
|
338
356
|
def stub_for_node_save
|
339
357
|
# Expect NO node save
|
340
|
-
node.
|
358
|
+
expect(node).not_to receive(:save)
|
341
359
|
end
|
342
360
|
end
|
343
361
|
end
|
344
362
|
end
|
345
363
|
|
346
364
|
describe "when a permanent run list is passed as an option" do
|
347
|
-
|
348
365
|
include_examples "a successful client run" do
|
349
366
|
|
350
367
|
let(:new_runlist) { "recipe[new_run_list_recipe]" }
|
@@ -354,9 +371,9 @@ describe Chef::Client do
|
|
354
371
|
# --Client#setup_run_context
|
355
372
|
# ---Client#sync_cookbooks -- downloads the list of cookbooks to sync
|
356
373
|
#
|
357
|
-
Chef::CookbookSynchronizer.
|
358
|
-
Chef::REST.
|
359
|
-
http_cookbook_sync.
|
374
|
+
expect_any_instance_of(Chef::CookbookSynchronizer).to receive(:sync_cookbooks)
|
375
|
+
expect(Chef::REST).to receive(:new).with(Chef::Config[:chef_server_url]).and_return(http_cookbook_sync)
|
376
|
+
expect(http_cookbook_sync).to receive(:post).
|
360
377
|
with("environments/_default/cookbook_versions", {:run_list => ["new_run_list_recipe"]}).
|
361
378
|
and_return({})
|
362
379
|
end
|
@@ -364,12 +381,161 @@ describe Chef::Client do
|
|
364
381
|
before do
|
365
382
|
# Client will try to compile and run the new_run_list_recipe, but we
|
366
383
|
# do not create a fixture for this.
|
367
|
-
Chef::RunContext::CookbookCompiler.
|
384
|
+
expect_any_instance_of(Chef::RunContext::CookbookCompiler).to receive(:compile)
|
368
385
|
end
|
369
386
|
|
370
387
|
it "sets the new run list on the node" do
|
371
388
|
client.run
|
372
|
-
node.run_list.
|
389
|
+
expect(node.run_list).to eq(Chef::RunList.new(new_runlist))
|
390
|
+
end
|
391
|
+
end
|
392
|
+
end
|
393
|
+
|
394
|
+
describe "when converge fails" do
|
395
|
+
include_context "a client run" do
|
396
|
+
let(:e) { Exception.new }
|
397
|
+
def stub_for_converge
|
398
|
+
expect(Chef::Runner).to receive(:new).and_return(runner)
|
399
|
+
expect(runner).to receive(:converge).and_raise(e)
|
400
|
+
expect(Chef::Application).to receive(:debug_stacktrace).with an_instance_of(Chef::Exceptions::RunFailedWrappingError)
|
401
|
+
end
|
402
|
+
|
403
|
+
def stub_for_node_save
|
404
|
+
expect(client).to_not receive(:save_updated_node)
|
405
|
+
end
|
406
|
+
|
407
|
+
def stub_for_run
|
408
|
+
expect_any_instance_of(Chef::RunLock).to receive(:acquire)
|
409
|
+
expect_any_instance_of(Chef::RunLock).to receive(:save_pid)
|
410
|
+
expect_any_instance_of(Chef::RunLock).to receive(:release)
|
411
|
+
|
412
|
+
# Post conditions: check that node has been filled in correctly
|
413
|
+
expect(client).to receive(:run_started)
|
414
|
+
expect(client).to receive(:run_failed)
|
415
|
+
|
416
|
+
expect_any_instance_of(Chef::ResourceReporter).to receive(:run_failed)
|
417
|
+
expect_any_instance_of(Chef::Audit::AuditReporter).to receive(:run_failed)
|
418
|
+
end
|
419
|
+
end
|
420
|
+
|
421
|
+
it "runs the audits and raises the error" do
|
422
|
+
expect{ client.run }.to raise_error(Chef::Exceptions::RunFailedWrappingError) do |error|
|
423
|
+
expect(error.wrapped_errors.size).to eq(1)
|
424
|
+
expect(error.wrapped_errors[0]).to eq(e)
|
425
|
+
end
|
426
|
+
end
|
427
|
+
end
|
428
|
+
|
429
|
+
describe "when the audit phase fails" do
|
430
|
+
context "with an exception" do
|
431
|
+
include_context "a client run" do
|
432
|
+
let(:e) { Exception.new }
|
433
|
+
def stub_for_audit
|
434
|
+
expect(Chef::Audit::Runner).to receive(:new).and_return(audit_runner)
|
435
|
+
expect(audit_runner).to receive(:run).and_raise(e)
|
436
|
+
expect(Chef::Application).to receive(:debug_stacktrace).with an_instance_of(Chef::Exceptions::RunFailedWrappingError)
|
437
|
+
end
|
438
|
+
|
439
|
+
def stub_for_run
|
440
|
+
expect_any_instance_of(Chef::RunLock).to receive(:acquire)
|
441
|
+
expect_any_instance_of(Chef::RunLock).to receive(:save_pid)
|
442
|
+
expect_any_instance_of(Chef::RunLock).to receive(:release)
|
443
|
+
|
444
|
+
# Post conditions: check that node has been filled in correctly
|
445
|
+
expect(client).to receive(:run_started)
|
446
|
+
expect(client).to receive(:run_failed)
|
447
|
+
|
448
|
+
expect_any_instance_of(Chef::ResourceReporter).to receive(:run_failed)
|
449
|
+
expect_any_instance_of(Chef::Audit::AuditReporter).to receive(:run_failed)
|
450
|
+
end
|
451
|
+
end
|
452
|
+
|
453
|
+
it "should save the node after converge and raise exception" do
|
454
|
+
expect{ client.run }.to raise_error(Chef::Exceptions::RunFailedWrappingError) do |error|
|
455
|
+
expect(error.wrapped_errors.size).to eq(1)
|
456
|
+
expect(error.wrapped_errors[0]).to eq(e)
|
457
|
+
end
|
458
|
+
end
|
459
|
+
end
|
460
|
+
|
461
|
+
context "with failed audits" do
|
462
|
+
include_context "a client run" do
|
463
|
+
let(:audit_runner) do
|
464
|
+
instance_double("Chef::Audit::Runner", :run => true, :failed? => true, :num_failed => 1, :num_total => 1)
|
465
|
+
end
|
466
|
+
|
467
|
+
def stub_for_audit
|
468
|
+
expect(Chef::Audit::Runner).to receive(:new).and_return(audit_runner)
|
469
|
+
expect(Chef::Application).to receive(:debug_stacktrace).with an_instance_of(Chef::Exceptions::RunFailedWrappingError)
|
470
|
+
end
|
471
|
+
|
472
|
+
def stub_for_run
|
473
|
+
expect_any_instance_of(Chef::RunLock).to receive(:acquire)
|
474
|
+
expect_any_instance_of(Chef::RunLock).to receive(:save_pid)
|
475
|
+
expect_any_instance_of(Chef::RunLock).to receive(:release)
|
476
|
+
|
477
|
+
# Post conditions: check that node has been filled in correctly
|
478
|
+
expect(client).to receive(:run_started)
|
479
|
+
expect(client).to receive(:run_failed)
|
480
|
+
|
481
|
+
expect_any_instance_of(Chef::ResourceReporter).to receive(:run_failed)
|
482
|
+
expect_any_instance_of(Chef::Audit::AuditReporter).to receive(:run_failed)
|
483
|
+
end
|
484
|
+
end
|
485
|
+
|
486
|
+
it "should save the node after converge and raise exception" do
|
487
|
+
expect{ client.run }.to raise_error(Chef::Exceptions::RunFailedWrappingError) do |error|
|
488
|
+
expect(error.wrapped_errors.size).to eq(1)
|
489
|
+
expect(error.wrapped_errors[0]).to be_instance_of(Chef::Exceptions::AuditsFailed)
|
490
|
+
end
|
491
|
+
end
|
492
|
+
end
|
493
|
+
end
|
494
|
+
|
495
|
+
describe "when why_run mode is enabled" do
|
496
|
+
include_context "a client run" do
|
497
|
+
|
498
|
+
before do
|
499
|
+
Chef::Config[:why_run] = true
|
500
|
+
end
|
501
|
+
|
502
|
+
def stub_for_audit
|
503
|
+
expect(Chef::Audit::Runner).to_not receive(:new)
|
504
|
+
end
|
505
|
+
|
506
|
+
def stub_for_node_save
|
507
|
+
# This is how we should be mocking external calls - not letting it fall all the way through to the
|
508
|
+
# REST call
|
509
|
+
expect(node).to receive(:save)
|
510
|
+
end
|
511
|
+
|
512
|
+
it "runs successfully without enabling the audit runner" do
|
513
|
+
client.run
|
514
|
+
|
515
|
+
# fork is stubbed, so we can see the outcome of the run
|
516
|
+
expect(node.automatic_attrs[:platform]).to eq("example-platform")
|
517
|
+
expect(node.automatic_attrs[:platform_version]).to eq("example-platform-1.0")
|
518
|
+
end
|
519
|
+
end
|
520
|
+
end
|
521
|
+
|
522
|
+
describe "when audits are disabled" do
|
523
|
+
include_context "a client run" do
|
524
|
+
|
525
|
+
before do
|
526
|
+
Chef::Config[:audit_mode] = :disabled
|
527
|
+
end
|
528
|
+
|
529
|
+
def stub_for_audit
|
530
|
+
expect(Chef::Audit::Runner).to_not receive(:new)
|
531
|
+
end
|
532
|
+
|
533
|
+
it "runs successfully without enabling the audit runner" do
|
534
|
+
client.run
|
535
|
+
|
536
|
+
# fork is stubbed, so we can see the outcome of the run
|
537
|
+
expect(node.automatic_attrs[:platform]).to eq("example-platform")
|
538
|
+
expect(node.automatic_attrs[:platform_version]).to eq("example-platform-1.0")
|
373
539
|
end
|
374
540
|
end
|
375
541
|
end
|
@@ -381,23 +547,23 @@ describe Chef::Client do
|
|
381
547
|
|
382
548
|
it "should remove the run_lock on failure of #load_node" do
|
383
549
|
@run_lock = double("Chef::RunLock", :acquire => true)
|
384
|
-
Chef::RunLock.
|
550
|
+
allow(Chef::RunLock).to receive(:new).and_return(@run_lock)
|
385
551
|
|
386
552
|
@events = double("Chef::EventDispatch::Dispatcher").as_null_object
|
387
|
-
Chef::EventDispatch::Dispatcher.
|
553
|
+
allow(Chef::EventDispatch::Dispatcher).to receive(:new).and_return(@events)
|
388
554
|
# @events is created on Chef::Client.new, so we need to recreate it after mocking
|
389
555
|
client = Chef::Client.new
|
390
|
-
client.
|
391
|
-
@run_lock.
|
392
|
-
|
556
|
+
allow(client).to receive(:load_node).and_raise(Exception)
|
557
|
+
expect(@run_lock).to receive(:release)
|
558
|
+
expect { client.run }.to raise_error(Exception)
|
393
559
|
end
|
394
560
|
end
|
395
561
|
|
396
562
|
describe "when notifying other objects of the status of the chef run" do
|
397
563
|
before do
|
398
564
|
Chef::Client.clear_notifications
|
399
|
-
Chef::Node.
|
400
|
-
node.
|
565
|
+
allow(Chef::Node).to receive(:find_or_create).and_return(node)
|
566
|
+
allow(node).to receive(:save)
|
401
567
|
client.load_node
|
402
568
|
client.build_node
|
403
569
|
end
|
@@ -405,34 +571,34 @@ describe Chef::Client do
|
|
405
571
|
it "notifies observers that the run has started" do
|
406
572
|
notified = false
|
407
573
|
Chef::Client.when_run_starts do |run_status|
|
408
|
-
run_status.node.
|
574
|
+
expect(run_status.node).to eq(node)
|
409
575
|
notified = true
|
410
576
|
end
|
411
577
|
|
412
578
|
client.run_started
|
413
|
-
notified.
|
579
|
+
expect(notified).to be_truthy
|
414
580
|
end
|
415
581
|
|
416
582
|
it "notifies observers that the run has completed successfully" do
|
417
583
|
notified = false
|
418
584
|
Chef::Client.when_run_completes_successfully do |run_status|
|
419
|
-
run_status.node.
|
585
|
+
expect(run_status.node).to eq(node)
|
420
586
|
notified = true
|
421
587
|
end
|
422
588
|
|
423
589
|
client.run_completed_successfully
|
424
|
-
notified.
|
590
|
+
expect(notified).to be_truthy
|
425
591
|
end
|
426
592
|
|
427
593
|
it "notifies observers that the run failed" do
|
428
594
|
notified = false
|
429
595
|
Chef::Client.when_run_fails do |run_status|
|
430
|
-
run_status.node.
|
596
|
+
expect(run_status.node).to eq(node)
|
431
597
|
notified = true
|
432
598
|
end
|
433
599
|
|
434
600
|
client.run_failed
|
435
|
-
notified.
|
601
|
+
expect(notified).to be_truthy
|
436
602
|
end
|
437
603
|
end
|
438
604
|
|
@@ -446,73 +612,73 @@ describe Chef::Client do
|
|
446
612
|
# build_node will call Node#expand! with server, which will
|
447
613
|
# eventually hit the server to expand the included role.
|
448
614
|
mock_chef_rest = double("Chef::REST")
|
449
|
-
mock_chef_rest.
|
450
|
-
Chef::REST.
|
615
|
+
expect(mock_chef_rest).to receive(:get_rest).with("roles/role_containing_cookbook1").and_return(role_containing_cookbook1)
|
616
|
+
expect(Chef::REST).to receive(:new).and_return(mock_chef_rest)
|
451
617
|
|
452
618
|
# check pre-conditions.
|
453
|
-
node[:roles].
|
454
|
-
node[:recipes].
|
619
|
+
expect(node[:roles]).to be_nil
|
620
|
+
expect(node[:recipes]).to be_nil
|
455
621
|
|
456
|
-
client.policy_builder.
|
622
|
+
allow(client.policy_builder).to receive(:node).and_return(node)
|
457
623
|
|
458
624
|
# chefspec and possibly others use the return value of this method
|
459
|
-
client.build_node.
|
625
|
+
expect(client.build_node).to eq(node)
|
460
626
|
|
461
627
|
# check post-conditions.
|
462
|
-
node[:roles].
|
463
|
-
node[:roles].length.
|
464
|
-
node[:roles].
|
465
|
-
node[:recipes].
|
466
|
-
node[:recipes].length.
|
467
|
-
node[:recipes].
|
628
|
+
expect(node[:roles]).not_to be_nil
|
629
|
+
expect(node[:roles].length).to eq(1)
|
630
|
+
expect(node[:roles]).to include("role_containing_cookbook1")
|
631
|
+
expect(node[:recipes]).not_to be_nil
|
632
|
+
expect(node[:recipes].length).to eq(1)
|
633
|
+
expect(node[:recipes]).to include("cookbook1")
|
468
634
|
end
|
469
635
|
|
470
636
|
it "should set the environment from the specified configuration value" do
|
471
|
-
node.chef_environment.
|
637
|
+
expect(node.chef_environment).to eq("_default")
|
472
638
|
Chef::Config[:environment] = "A"
|
473
639
|
|
474
640
|
test_env = Chef::Environment.new
|
475
641
|
test_env.name("A")
|
476
642
|
|
477
643
|
mock_chef_rest = double("Chef::REST")
|
478
|
-
mock_chef_rest.
|
479
|
-
Chef::REST.
|
480
|
-
client.policy_builder.
|
481
|
-
client.build_node.
|
644
|
+
expect(mock_chef_rest).to receive(:get_rest).with("environments/A").and_return(test_env)
|
645
|
+
expect(Chef::REST).to receive(:new).and_return(mock_chef_rest)
|
646
|
+
allow(client.policy_builder).to receive(:node).and_return(node)
|
647
|
+
expect(client.build_node).to eq(node)
|
482
648
|
|
483
|
-
node.chef_environment.
|
649
|
+
expect(node.chef_environment).to eq("A")
|
484
650
|
end
|
485
651
|
end
|
486
652
|
|
487
653
|
describe "windows_admin_check" do
|
488
654
|
context "platform is not windows" do
|
489
655
|
before do
|
490
|
-
Chef::Platform.
|
656
|
+
allow(Chef::Platform).to receive(:windows?).and_return(false)
|
491
657
|
end
|
492
658
|
|
493
659
|
it "shouldn't be called" do
|
494
|
-
client.
|
660
|
+
expect(client).not_to receive(:has_admin_privileges?)
|
495
661
|
client.do_windows_admin_check
|
496
662
|
end
|
497
663
|
end
|
498
664
|
|
499
665
|
context "platform is windows" do
|
500
666
|
before do
|
501
|
-
Chef::Platform.
|
667
|
+
allow(Chef::Platform).to receive(:windows?).and_return(true)
|
502
668
|
end
|
503
669
|
|
504
670
|
it "should be called" do
|
505
|
-
client.
|
671
|
+
expect(client).to receive(:has_admin_privileges?)
|
506
672
|
client.do_windows_admin_check
|
507
673
|
end
|
508
674
|
|
509
675
|
context "admin privileges exist" do
|
510
676
|
before do
|
511
|
-
client.
|
677
|
+
expect(client).to receive(:has_admin_privileges?).and_return(true)
|
512
678
|
end
|
513
679
|
|
514
680
|
it "should not log a warning message" do
|
515
|
-
Chef::Log.
|
681
|
+
expect(Chef::Log).not_to receive(:warn)
|
516
682
|
client.do_windows_admin_check
|
517
683
|
end
|
518
684
|
|
@@ -525,11 +691,11 @@ describe Chef::Client do
|
|
525
691
|
|
526
692
|
context "admin privileges doesn't exist" do
|
527
693
|
before do
|
528
|
-
client.
|
694
|
+
expect(client).to receive(:has_admin_privileges?).and_return(false)
|
529
695
|
end
|
530
696
|
|
531
697
|
it "should log a warning message" do
|
532
|
-
Chef::Log.
|
698
|
+
expect(Chef::Log).to receive(:warn)
|
533
699
|
client.do_windows_admin_check
|
534
700
|
end
|
535
701
|
|