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
@@ -35,30 +35,30 @@ shared_examples_for "a Windows script resource" do
|
|
35
35
|
end
|
36
36
|
|
37
37
|
it "should be a kind of Chef::Resource::WindowsScript" do
|
38
|
-
@resource.
|
39
|
-
@resource.
|
38
|
+
expect(@resource).to be_a_kind_of(Chef::Resource)
|
39
|
+
expect(@resource).to be_a_kind_of(Chef::Resource::WindowsScript)
|
40
40
|
end
|
41
41
|
|
42
42
|
context "when evaluating guards" do
|
43
43
|
it "should have a default_guard_interpreter attribute that is the same as the resource" do
|
44
|
-
@resource.default_guard_interpreter.
|
44
|
+
expect(@resource.default_guard_interpreter).to eq(@resource.resource_name)
|
45
45
|
end
|
46
46
|
|
47
47
|
it "should default to using guard_interpreter attribute that is the same as the resource" do
|
48
|
-
@resource.guard_interpreter.
|
48
|
+
expect(@resource.guard_interpreter).to eq(@resource.resource_name)
|
49
49
|
end
|
50
50
|
|
51
51
|
it "should use a resource to evaluate the guard when guard_interpreter is not specified" do
|
52
|
-
Chef::GuardInterpreter::ResourceGuardInterpreter.
|
53
|
-
Chef::GuardInterpreter::DefaultGuardInterpreter.
|
52
|
+
expect_any_instance_of(Chef::GuardInterpreter::ResourceGuardInterpreter).to receive(:evaluate_action).and_return(true)
|
53
|
+
expect_any_instance_of(Chef::GuardInterpreter::DefaultGuardInterpreter).not_to receive(:evaluate)
|
54
54
|
@resource.only_if 'echo hi'
|
55
|
-
@resource.should_skip?(:run).
|
55
|
+
expect(@resource.should_skip?(:run)).to eq(nil)
|
56
56
|
end
|
57
57
|
|
58
58
|
describe "when the guard is given a ruby block" do
|
59
59
|
it "should evaluate the guard if the guard_interpreter is set to its default value" do
|
60
60
|
@resource.only_if { true }
|
61
|
-
@resource.should_skip?(:run).
|
61
|
+
expect(@resource.should_skip?(:run)).to eq(nil)
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should raise an exception if the guard_interpreter is overridden from its default value" do
|
@@ -85,7 +85,7 @@ describe Chef::ApiClient::Registration do
|
|
85
85
|
before do
|
86
86
|
Chef::Config[:validation_client_name] = "test-validator"
|
87
87
|
Chef::Config[:validation_key] = File.expand_path('ssl/private_key.pem', CHEF_SPEC_DATA)
|
88
|
-
OpenSSL::PKey::RSA.
|
88
|
+
allow(OpenSSL::PKey::RSA).to receive(:generate).with(2048).and_return(generated_private_key)
|
89
89
|
end
|
90
90
|
|
91
91
|
after do
|
@@ -93,51 +93,51 @@ describe Chef::ApiClient::Registration do
|
|
93
93
|
end
|
94
94
|
|
95
95
|
it "has an HTTP client configured with validator credentials" do
|
96
|
-
registration.http_api.
|
97
|
-
registration.http_api.client_name.
|
98
|
-
registration.http_api.signing_key.
|
96
|
+
expect(registration.http_api).to be_a_kind_of(Chef::REST)
|
97
|
+
expect(registration.http_api.client_name).to eq("test-validator")
|
98
|
+
expect(registration.http_api.signing_key).to eq(private_key_data)
|
99
99
|
end
|
100
100
|
|
101
101
|
describe "when creating/updating the client on the server" do
|
102
102
|
before do
|
103
|
-
registration.
|
103
|
+
allow(registration).to receive(:http_api).and_return(http_mock)
|
104
104
|
end
|
105
105
|
|
106
106
|
it "posts a locally generated public key to the server to create a client" do
|
107
|
-
http_mock.
|
107
|
+
expect(http_mock).to receive(:post).
|
108
108
|
with("clients", expected_post_data).
|
109
109
|
and_return(create_with_pkey_response)
|
110
|
-
registration.create_or_update.
|
111
|
-
registration.private_key.
|
110
|
+
expect(registration.create_or_update).to eq(create_with_pkey_response)
|
111
|
+
expect(registration.private_key).to eq(generated_private_key_pem)
|
112
112
|
end
|
113
113
|
|
114
114
|
it "puts a locally generated public key to the server to update a client" do
|
115
|
-
http_mock.
|
115
|
+
expect(http_mock).to receive(:post).
|
116
116
|
with("clients", expected_post_data).
|
117
117
|
and_raise(exception_409)
|
118
|
-
http_mock.
|
118
|
+
expect(http_mock).to receive(:put).
|
119
119
|
with("clients/#{client_name}", expected_put_data).
|
120
120
|
and_return(update_with_pkey_response)
|
121
|
-
registration.create_or_update.
|
122
|
-
registration.private_key.
|
121
|
+
expect(registration.create_or_update).to eq(update_with_pkey_response)
|
122
|
+
expect(registration.private_key).to eq(generated_private_key_pem)
|
123
123
|
end
|
124
124
|
|
125
125
|
it "writes the generated private key to disk" do
|
126
|
-
http_mock.
|
126
|
+
expect(http_mock).to receive(:post).
|
127
127
|
with("clients", expected_post_data).
|
128
128
|
and_return(create_with_pkey_response)
|
129
129
|
registration.run
|
130
|
-
IO.read(key_location).
|
130
|
+
expect(IO.read(key_location)).to eq(generated_private_key_pem)
|
131
131
|
end
|
132
132
|
|
133
133
|
context "and the client already exists on a Chef 11 server" do
|
134
134
|
it "requests a new key from the server and saves it" do
|
135
|
-
http_mock.
|
136
|
-
http_mock.
|
135
|
+
expect(http_mock).to receive(:post).and_raise(exception_409)
|
136
|
+
expect(http_mock).to receive(:put).
|
137
137
|
with("clients/#{client_name}", expected_put_data).
|
138
138
|
and_return(update_with_pkey_response)
|
139
|
-
registration.create_or_update.
|
140
|
-
registration.private_key.
|
139
|
+
expect(registration.create_or_update).to eq(update_with_pkey_response)
|
140
|
+
expect(registration.private_key).to eq(generated_private_key_pem)
|
141
141
|
end
|
142
142
|
end
|
143
143
|
|
@@ -153,37 +153,37 @@ describe Chef::ApiClient::Registration do
|
|
153
153
|
|
154
154
|
before do
|
155
155
|
Chef::Config[:local_key_generation] = false
|
156
|
-
OpenSSL::PKey::RSA.
|
156
|
+
expect(OpenSSL::PKey::RSA).not_to receive(:generate)
|
157
157
|
end
|
158
158
|
|
159
159
|
it "creates a new ApiClient on the server using the validator identity" do
|
160
|
-
http_mock.
|
160
|
+
expect(http_mock).to receive(:post).
|
161
161
|
with("clients", expected_post_data).
|
162
162
|
and_return(server_v10_response)
|
163
|
-
registration.create_or_update.
|
164
|
-
registration.private_key.
|
163
|
+
expect(registration.create_or_update).to eq(server_v10_response)
|
164
|
+
expect(registration.private_key).to eq("--begin rsa key etc--")
|
165
165
|
end
|
166
166
|
|
167
167
|
context "and the client already exists on a Chef 11 server" do
|
168
168
|
it "requests a new key from the server and saves it" do
|
169
|
-
http_mock.
|
170
|
-
http_mock.
|
169
|
+
expect(http_mock).to receive(:post).and_raise(exception_409)
|
170
|
+
expect(http_mock).to receive(:put).
|
171
171
|
with("clients/#{client_name}", expected_put_data).
|
172
172
|
and_return(server_v11_response)
|
173
|
-
registration.create_or_update.
|
174
|
-
registration.private_key.
|
173
|
+
expect(registration.create_or_update).to eq(server_v11_response)
|
174
|
+
expect(registration.private_key).to eq("--begin rsa key etc--")
|
175
175
|
end
|
176
176
|
end
|
177
177
|
|
178
178
|
context "and the client already exists on a Chef 10 server" do
|
179
179
|
it "requests a new key from the server and saves it" do
|
180
|
-
http_mock.
|
180
|
+
expect(http_mock).to receive(:post).with("clients", expected_post_data).
|
181
181
|
and_raise(exception_409)
|
182
|
-
http_mock.
|
182
|
+
expect(http_mock).to receive(:put).
|
183
183
|
with("clients/#{client_name}", expected_put_data).
|
184
184
|
and_return(server_v10_response)
|
185
|
-
registration.create_or_update.
|
186
|
-
registration.private_key.
|
185
|
+
expect(registration.create_or_update).to eq(server_v10_response)
|
186
|
+
expect(registration.private_key).to eq("--begin rsa key etc--")
|
187
187
|
end
|
188
188
|
end
|
189
189
|
end
|
@@ -191,23 +191,23 @@ describe Chef::ApiClient::Registration do
|
|
191
191
|
|
192
192
|
describe "when writing the private key to disk" do
|
193
193
|
before do
|
194
|
-
registration.
|
194
|
+
allow(registration).to receive(:private_key).and_return('--begin rsa key etc--')
|
195
195
|
end
|
196
196
|
|
197
197
|
# Permission read via File.stat is busted on windows, though creating the
|
198
198
|
# file with 0600 has the desired effect of giving access rights to the
|
199
199
|
# owner only. A platform-specific functional test would be helpful.
|
200
200
|
it "creates the file with 0600 permissions", :unix_only do
|
201
|
-
File.
|
201
|
+
expect(File).not_to exist(key_location)
|
202
202
|
registration.write_key
|
203
|
-
File.
|
203
|
+
expect(File).to exist(key_location)
|
204
204
|
stat = File.stat(key_location)
|
205
|
-
(stat.mode & 07777).
|
205
|
+
expect(stat.mode & 07777).to eq(0600)
|
206
206
|
end
|
207
207
|
|
208
208
|
it "writes the private key content to the file" do
|
209
209
|
registration.write_key
|
210
|
-
IO.read(key_location).
|
210
|
+
expect(IO.read(key_location)).to eq("--begin rsa key etc--")
|
211
211
|
end
|
212
212
|
|
213
213
|
context 'when the client key location is a symlink' do
|
@@ -236,37 +236,37 @@ describe Chef::ApiClient::Registration do
|
|
236
236
|
describe "when registering a client" do
|
237
237
|
|
238
238
|
before do
|
239
|
-
registration.
|
239
|
+
allow(registration).to receive(:http_api).and_return(http_mock)
|
240
240
|
end
|
241
241
|
|
242
242
|
it "creates the client on the server and writes the key" do
|
243
|
-
http_mock.
|
243
|
+
expect(http_mock).to receive(:post).ordered.and_return(server_v10_response)
|
244
244
|
registration.run
|
245
|
-
IO.read(key_location).
|
245
|
+
expect(IO.read(key_location)).to eq(generated_private_key_pem)
|
246
246
|
end
|
247
247
|
|
248
248
|
it "retries up to 5 times" do
|
249
249
|
response_500 = Net::HTTPInternalServerError.new("1.1", "500", "Internal Server Error")
|
250
250
|
exception_500 = Net::HTTPFatalError.new("500 Internal Server Error", response_500)
|
251
251
|
|
252
|
-
http_mock.
|
253
|
-
http_mock.
|
254
|
-
http_mock.
|
255
|
-
http_mock.
|
256
|
-
http_mock.
|
252
|
+
expect(http_mock).to receive(:post).ordered.and_raise(exception_500) # 1
|
253
|
+
expect(http_mock).to receive(:post).ordered.and_raise(exception_500) # 2
|
254
|
+
expect(http_mock).to receive(:post).ordered.and_raise(exception_500) # 3
|
255
|
+
expect(http_mock).to receive(:post).ordered.and_raise(exception_500) # 4
|
256
|
+
expect(http_mock).to receive(:post).ordered.and_raise(exception_500) # 5
|
257
257
|
|
258
|
-
http_mock.
|
258
|
+
expect(http_mock).to receive(:post).ordered.and_return(server_v10_response)
|
259
259
|
registration.run
|
260
|
-
IO.read(key_location).
|
260
|
+
expect(IO.read(key_location)).to eq(generated_private_key_pem)
|
261
261
|
end
|
262
262
|
|
263
263
|
it "gives up retrying after the max attempts" do
|
264
264
|
response_500 = Net::HTTPInternalServerError.new("1.1", "500", "Internal Server Error")
|
265
265
|
exception_500 = Net::HTTPFatalError.new("500 Internal Server Error", response_500)
|
266
266
|
|
267
|
-
http_mock.
|
267
|
+
expect(http_mock).to receive(:post).exactly(6).times.and_raise(exception_500)
|
268
268
|
|
269
|
-
|
269
|
+
expect {registration.run}.to raise_error(Net::HTTPFatalError)
|
270
270
|
end
|
271
271
|
|
272
272
|
end
|
@@ -28,64 +28,64 @@ describe Chef::ApiClient do
|
|
28
28
|
|
29
29
|
it "has a name attribute" do
|
30
30
|
@client.name("ops_master")
|
31
|
-
@client.name.
|
31
|
+
expect(@client.name).to eq("ops_master")
|
32
32
|
end
|
33
33
|
|
34
34
|
it "does not allow spaces in the name" do
|
35
|
-
|
35
|
+
expect { @client.name "ops master" }.to raise_error(ArgumentError)
|
36
36
|
end
|
37
37
|
|
38
38
|
it "only allows string values for the name" do
|
39
|
-
|
39
|
+
expect { @client.name Hash.new }.to raise_error(ArgumentError)
|
40
40
|
end
|
41
41
|
|
42
42
|
it "has an admin flag attribute" do
|
43
43
|
@client.admin(true)
|
44
|
-
@client.admin.
|
44
|
+
expect(@client.admin).to be_truthy
|
45
45
|
end
|
46
46
|
|
47
47
|
it "defaults to non-admin" do
|
48
|
-
@client.admin.
|
48
|
+
expect(@client.admin).to be_falsey
|
49
49
|
end
|
50
50
|
|
51
51
|
it "allows only boolean values for the admin flag" do
|
52
|
-
|
53
|
-
|
52
|
+
expect { @client.admin(false) }.not_to raise_error
|
53
|
+
expect { @client.admin(Hash.new) }.to raise_error(ArgumentError)
|
54
54
|
end
|
55
55
|
|
56
56
|
it "has a 'validator' flag attribute" do
|
57
57
|
@client.validator(true)
|
58
|
-
@client.validator.
|
58
|
+
expect(@client.validator).to be_truthy
|
59
59
|
end
|
60
60
|
|
61
61
|
it "defaults to non-validator" do
|
62
|
-
@client.validator.
|
62
|
+
expect(@client.validator).to be_falsey
|
63
63
|
end
|
64
64
|
|
65
65
|
it "allows only boolean values for the 'validator' flag" do
|
66
|
-
|
67
|
-
|
66
|
+
expect { @client.validator(false) }.not_to raise_error
|
67
|
+
expect { @client.validator(Hash.new) }.to raise_error(ArgumentError)
|
68
68
|
end
|
69
69
|
|
70
70
|
it "has a public key attribute" do
|
71
71
|
@client.public_key("super public")
|
72
|
-
@client.public_key.
|
72
|
+
expect(@client.public_key).to eq("super public")
|
73
73
|
end
|
74
74
|
|
75
75
|
it "accepts only String values for the public key" do
|
76
|
-
|
77
|
-
|
76
|
+
expect { @client.public_key "" }.not_to raise_error
|
77
|
+
expect { @client.public_key Hash.new }.to raise_error(ArgumentError)
|
78
78
|
end
|
79
79
|
|
80
80
|
|
81
81
|
it "has a private key attribute" do
|
82
82
|
@client.private_key("super private")
|
83
|
-
@client.private_key.
|
83
|
+
expect(@client.private_key).to eq("super private")
|
84
84
|
end
|
85
85
|
|
86
86
|
it "accepts only String values for the private key" do
|
87
|
-
|
88
|
-
|
87
|
+
expect { @client.private_key "" }.not_to raise_error
|
88
|
+
expect { @client.private_key Hash.new }.to raise_error(ArgumentError)
|
89
89
|
end
|
90
90
|
|
91
91
|
describe "when serializing to JSON" do
|
@@ -96,32 +96,32 @@ describe Chef::ApiClient do
|
|
96
96
|
end
|
97
97
|
|
98
98
|
it "serializes as a JSON object" do
|
99
|
-
@json.
|
99
|
+
expect(@json).to match(/^\{.+\}$/)
|
100
100
|
end
|
101
101
|
|
102
102
|
it "includes the name value" do
|
103
|
-
@json.
|
103
|
+
expect(@json).to include(%q{"name":"black"})
|
104
104
|
end
|
105
105
|
|
106
106
|
it "includes the public key value" do
|
107
|
-
@json.
|
107
|
+
expect(@json).to include(%{"public_key":"crowes"})
|
108
108
|
end
|
109
109
|
|
110
110
|
it "includes the 'admin' flag" do
|
111
|
-
@json.
|
111
|
+
expect(@json).to include(%q{"admin":false})
|
112
112
|
end
|
113
113
|
|
114
114
|
it "includes the 'validator' flag" do
|
115
|
-
@json.
|
115
|
+
expect(@json).to include(%q{"validator":false})
|
116
116
|
end
|
117
117
|
|
118
118
|
it "includes the private key when present" do
|
119
119
|
@client.private_key("monkeypants")
|
120
|
-
@client.to_json.
|
120
|
+
expect(@client.to_json).to include(%q{"private_key":"monkeypants"})
|
121
121
|
end
|
122
122
|
|
123
123
|
it "does not include the private key if not present" do
|
124
|
-
@json.
|
124
|
+
expect(@json).not_to include("private_key")
|
125
125
|
end
|
126
126
|
|
127
127
|
include_examples "to_json equalivent to Chef::JSONCompat.to_json" do
|
@@ -129,43 +129,83 @@ describe Chef::ApiClient do
|
|
129
129
|
end
|
130
130
|
end
|
131
131
|
|
132
|
-
describe "when deserializing from JSON" do
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
132
|
+
describe "when deserializing from JSON (string) using ApiClient#from_json" do
|
133
|
+
let(:client_string) do
|
134
|
+
"{\"name\":\"black\",\"public_key\":\"crowes\",\"private_key\":\"monkeypants\",\"admin\":true,\"validator\":true}"
|
135
|
+
end
|
136
|
+
|
137
|
+
let(:client) do
|
138
|
+
Chef::ApiClient.from_json(client_string)
|
139
|
+
end
|
140
|
+
|
141
|
+
it "does not require a 'json_class' string" do
|
142
|
+
expect(Chef::JSONCompat.parse(client_string)["json_class"]).to eq(nil)
|
143
143
|
end
|
144
144
|
|
145
145
|
it "should deserialize to a Chef::ApiClient object" do
|
146
|
-
|
146
|
+
expect(client).to be_a_kind_of(Chef::ApiClient)
|
147
147
|
end
|
148
148
|
|
149
149
|
it "preserves the name" do
|
150
|
-
|
150
|
+
expect(client.name).to eq("black")
|
151
151
|
end
|
152
152
|
|
153
153
|
it "preserves the public key" do
|
154
|
-
|
154
|
+
expect(client.public_key).to eq("crowes")
|
155
155
|
end
|
156
156
|
|
157
157
|
it "preserves the admin status" do
|
158
|
-
|
158
|
+
expect(client.admin).to be_truthy
|
159
159
|
end
|
160
160
|
|
161
161
|
it "preserves the 'validator' status" do
|
162
|
-
|
162
|
+
expect(client.validator).to be_truthy
|
163
163
|
end
|
164
164
|
|
165
165
|
it "includes the private key if present" do
|
166
|
-
|
166
|
+
expect(client.private_key).to eq("monkeypants")
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
describe "when deserializing from JSON (hash) using JSONCompat#from_json" do
|
171
|
+
let(:client_hash) do
|
172
|
+
{
|
173
|
+
"name" => "black",
|
174
|
+
"public_key" => "crowes",
|
175
|
+
"private_key" => "monkeypants",
|
176
|
+
"admin" => true,
|
177
|
+
"validator" => true,
|
178
|
+
"json_class" => "Chef::ApiClient"
|
179
|
+
}
|
180
|
+
end
|
181
|
+
|
182
|
+
let(:client) do
|
183
|
+
Chef::JSONCompat.from_json(Chef::JSONCompat.to_json(client_hash))
|
167
184
|
end
|
168
185
|
|
186
|
+
it "should deserialize to a Chef::ApiClient object" do
|
187
|
+
expect(client).to be_a_kind_of(Chef::ApiClient)
|
188
|
+
end
|
189
|
+
|
190
|
+
it "preserves the name" do
|
191
|
+
expect(client.name).to eq("black")
|
192
|
+
end
|
193
|
+
|
194
|
+
it "preserves the public key" do
|
195
|
+
expect(client.public_key).to eq("crowes")
|
196
|
+
end
|
197
|
+
|
198
|
+
it "preserves the admin status" do
|
199
|
+
expect(client.admin).to be_truthy
|
200
|
+
end
|
201
|
+
|
202
|
+
it "preserves the 'validator' status" do
|
203
|
+
expect(client.validator).to be_truthy
|
204
|
+
end
|
205
|
+
|
206
|
+
it "includes the private key if present" do
|
207
|
+
expect(client.private_key).to eq("monkeypants")
|
208
|
+
end
|
169
209
|
end
|
170
210
|
|
171
211
|
describe "when loading from JSON" do
|
@@ -183,33 +223,33 @@ describe Chef::ApiClient do
|
|
183
223
|
"json_class" => "Chef::ApiClient"
|
184
224
|
}
|
185
225
|
@http_client = double("Chef::REST mock")
|
186
|
-
Chef::REST.
|
187
|
-
@http_client.
|
226
|
+
allow(Chef::REST).to receive(:new).and_return(@http_client)
|
227
|
+
expect(@http_client).to receive(:get).with("clients/black").and_return(client)
|
188
228
|
@client = Chef::ApiClient.load(client['name'])
|
189
229
|
end
|
190
230
|
|
191
231
|
it "should deserialize to a Chef::ApiClient object" do
|
192
|
-
@client.
|
232
|
+
expect(@client).to be_a_kind_of(Chef::ApiClient)
|
193
233
|
end
|
194
234
|
|
195
235
|
it "preserves the name" do
|
196
|
-
@client.name.
|
236
|
+
expect(@client.name).to eq("black")
|
197
237
|
end
|
198
238
|
|
199
239
|
it "preserves the public key" do
|
200
|
-
@client.public_key.
|
240
|
+
expect(@client.public_key).to eq("crowes")
|
201
241
|
end
|
202
242
|
|
203
243
|
it "preserves the admin status" do
|
204
|
-
@client.admin.
|
244
|
+
expect(@client.admin).to be_a_kind_of(TrueClass)
|
205
245
|
end
|
206
246
|
|
207
247
|
it "preserves the 'validator' status" do
|
208
|
-
@client.validator.
|
248
|
+
expect(@client.validator).to be_a_kind_of(TrueClass)
|
209
249
|
end
|
210
250
|
|
211
251
|
it "includes the private key if present" do
|
212
|
-
@client.private_key.
|
252
|
+
expect(@client.private_key).to eq("monkeypants")
|
213
253
|
end
|
214
254
|
|
215
255
|
end
|
@@ -230,9 +270,9 @@ describe Chef::ApiClient do
|
|
230
270
|
end
|
231
271
|
|
232
272
|
it "has an HTTP client configured with default credentials" do
|
233
|
-
@client.http_api.
|
234
|
-
@client.http_api.client_name.
|
235
|
-
@client.http_api.signing_key.to_s.
|
273
|
+
expect(@client.http_api).to be_a_kind_of(Chef::REST)
|
274
|
+
expect(@client.http_api.client_name).to eq("silent-bob")
|
275
|
+
expect(@client.http_api.signing_key.to_s).to eq(private_key_data)
|
236
276
|
end
|
237
277
|
end
|
238
278
|
|
@@ -240,7 +280,7 @@ describe Chef::ApiClient do
|
|
240
280
|
describe "when requesting a new key" do
|
241
281
|
before do
|
242
282
|
@http_client = double("Chef::REST mock")
|
243
|
-
Chef::REST.
|
283
|
+
allow(Chef::REST).to receive(:new).and_return(@http_client)
|
244
284
|
end
|
245
285
|
|
246
286
|
context "and the client does not exist on the server" do
|
@@ -248,11 +288,11 @@ describe Chef::ApiClient do
|
|
248
288
|
@a_404_response = Net::HTTPNotFound.new("404 not found and such", nil, nil)
|
249
289
|
@a_404_exception = Net::HTTPServerException.new("404 not found exception", @a_404_response)
|
250
290
|
|
251
|
-
@http_client.
|
291
|
+
expect(@http_client).to receive(:get).with("clients/lost-my-key").and_raise(@a_404_exception)
|
252
292
|
end
|
253
293
|
|
254
294
|
it "raises a 404 error" do
|
255
|
-
|
295
|
+
expect { Chef::ApiClient.reregister("lost-my-key") }.to raise_error(Net::HTTPServerException)
|
256
296
|
end
|
257
297
|
end
|
258
298
|
|
@@ -260,7 +300,7 @@ describe Chef::ApiClient do
|
|
260
300
|
before do
|
261
301
|
@api_client_without_key = Chef::ApiClient.new
|
262
302
|
@api_client_without_key.name("lost-my-key")
|
263
|
-
@http_client.
|
303
|
+
expect(@http_client).to receive(:get).with("clients/lost-my-key").and_return(@api_client_without_key)
|
264
304
|
end
|
265
305
|
|
266
306
|
|
@@ -269,7 +309,7 @@ describe Chef::ApiClient do
|
|
269
309
|
@api_client_with_key = Chef::ApiClient.new
|
270
310
|
@api_client_with_key.name("lost-my-key")
|
271
311
|
@api_client_with_key.private_key("the new private key")
|
272
|
-
@http_client.
|
312
|
+
expect(@http_client).to receive(:put).
|
273
313
|
with("clients/lost-my-key", :name => "lost-my-key", :admin => false, :validator => false, :private_key => true).
|
274
314
|
and_return(@api_client_with_key)
|
275
315
|
end
|
@@ -277,17 +317,17 @@ describe Chef::ApiClient do
|
|
277
317
|
it "returns an ApiClient with a private key" do
|
278
318
|
response = Chef::ApiClient.reregister("lost-my-key")
|
279
319
|
# no sane == method for ApiClient :'(
|
280
|
-
response.
|
281
|
-
response.private_key.
|
282
|
-
response.name.
|
283
|
-
response.admin.
|
320
|
+
expect(response).to eq(@api_client_without_key)
|
321
|
+
expect(response.private_key).to eq("the new private key")
|
322
|
+
expect(response.name).to eq("lost-my-key")
|
323
|
+
expect(response.admin).to be_falsey
|
284
324
|
end
|
285
325
|
end
|
286
326
|
|
287
327
|
context "and the client exists on a Chef 10-like server" do
|
288
328
|
before do
|
289
329
|
@api_client_with_key = {"name" => "lost-my-key", "private_key" => "the new private key"}
|
290
|
-
@http_client.
|
330
|
+
expect(@http_client).to receive(:put).
|
291
331
|
with("clients/lost-my-key", :name => "lost-my-key", :admin => false, :validator => false, :private_key => true).
|
292
332
|
and_return(@api_client_with_key)
|
293
333
|
end
|
@@ -295,16 +335,14 @@ describe Chef::ApiClient do
|
|
295
335
|
it "returns an ApiClient with a private key" do
|
296
336
|
response = Chef::ApiClient.reregister("lost-my-key")
|
297
337
|
# no sane == method for ApiClient :'(
|
298
|
-
response.
|
299
|
-
response.private_key.
|
300
|
-
response.name.
|
301
|
-
response.admin.
|
302
|
-
response.validator.
|
338
|
+
expect(response).to eq(@api_client_without_key)
|
339
|
+
expect(response.private_key).to eq("the new private key")
|
340
|
+
expect(response.name).to eq("lost-my-key")
|
341
|
+
expect(response.admin).to be_falsey
|
342
|
+
expect(response.validator).to be_falsey
|
303
343
|
end
|
304
344
|
end
|
305
345
|
|
306
346
|
end
|
307
347
|
end
|
308
348
|
end
|
309
|
-
|
310
|
-
|