chef 12.0.0.alpha.2-x86-mingw32 → 12.0.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.
- data/CONTRIBUTING.md +9 -0
- data/README.md +1 -1
- data/Rakefile +12 -0
- data/bin/chef-service-manager +1 -1
- data/bin/chef-windows-service +35 -0
- data/distro/common/html/_sources/ctl_chef_server.txt +307 -10
- data/distro/common/html/ctl_chef_client.html +3 -7
- data/distro/common/html/ctl_chef_server.html +609 -41
- data/distro/common/html/ctl_chef_shell.html +2 -2
- data/distro/common/html/ctl_chef_solo.html +1 -1
- data/distro/common/html/index.html +13 -13
- data/distro/common/html/knife.html +10 -10
- data/distro/common/html/knife_bootstrap.html +8 -8
- data/distro/common/html/knife_client.html +12 -12
- data/distro/common/html/knife_common_options.html +7 -7
- data/distro/common/html/knife_configure.html +3 -3
- data/distro/common/html/knife_cookbook.html +19 -19
- data/distro/common/html/knife_cookbook_site.html +28 -28
- data/distro/common/html/knife_data_bag.html +28 -13
- data/distro/common/html/knife_delete.html +2 -2
- data/distro/common/html/knife_deps.html +3 -3
- data/distro/common/html/knife_diff.html +4 -4
- data/distro/common/html/knife_download.html +3 -3
- data/distro/common/html/knife_edit.html +2 -2
- data/distro/common/html/knife_environment.html +14 -14
- data/distro/common/html/knife_exec.html +11 -11
- data/distro/common/html/knife_index_rebuild.html +2 -2
- data/distro/common/html/knife_list.html +3 -3
- data/distro/common/html/knife_node.html +23 -23
- data/distro/common/html/knife_raw.html +4 -4
- data/distro/common/html/knife_recipe_list.html +3 -3
- data/distro/common/html/knife_role.html +11 -11
- data/distro/common/html/knife_search.html +4 -4
- data/distro/common/html/knife_serve.html +3 -3
- data/distro/common/html/knife_show.html +3 -3
- data/distro/common/html/knife_ssh.html +7 -7
- data/distro/common/html/knife_ssl_check.html +7 -7
- data/distro/common/html/knife_ssl_fetch.html +9 -9
- data/distro/common/html/knife_status.html +3 -3
- data/distro/common/html/knife_tag.html +9 -9
- data/distro/common/html/knife_upload.html +3 -3
- data/distro/common/html/knife_user.html +9 -9
- data/distro/common/html/knife_using.html +11 -11
- data/distro/common/html/knife_xargs.html +14 -5
- data/distro/common/html/search.html +2 -2
- data/distro/common/html/searchindex.js +1 -1
- data/distro/common/man/man1/chef-shell.1 +2 -2
- data/distro/common/man/man1/knife-bootstrap.1 +7 -7
- data/distro/common/man/man1/knife-client.1 +10 -10
- data/distro/common/man/man1/knife-configure.1 +5 -5
- data/distro/common/man/man1/knife-cookbook-site.1 +24 -24
- data/distro/common/man/man1/knife-cookbook.1 +12 -12
- data/distro/common/man/man1/knife-data-bag.1 +34 -10
- data/distro/common/man/man1/knife-delete.1 +5 -5
- data/distro/common/man/man1/knife-deps.1 +5 -5
- data/distro/common/man/man1/knife-diff.1 +7 -7
- data/distro/common/man/man1/knife-download.1 +5 -5
- data/distro/common/man/man1/knife-edit.1 +5 -5
- data/distro/common/man/man1/knife-environment.1 +11 -11
- data/distro/common/man/man1/knife-exec.1 +11 -11
- data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
- data/distro/common/man/man1/knife-list.1 +5 -5
- data/distro/common/man/man1/knife-node.1 +16 -16
- data/distro/common/man/man1/knife-raw.1 +6 -6
- data/distro/common/man/man1/knife-recipe-list.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +7 -7
- data/distro/common/man/man1/knife-search.1 +6 -6
- data/distro/common/man/man1/knife-serve.1 +6 -6
- data/distro/common/man/man1/knife-show.1 +5 -5
- data/distro/common/man/man1/knife-ssh.1 +9 -9
- data/distro/common/man/man1/knife-ssl-check.1 +7 -7
- data/distro/common/man/man1/knife-ssl-fetch.1 +9 -9
- data/distro/common/man/man1/knife-status.1 +5 -5
- data/distro/common/man/man1/knife-tag.1 +8 -8
- data/distro/common/man/man1/knife-upload.1 +5 -5
- data/distro/common/man/man1/knife-user.1 +8 -8
- data/distro/common/man/man1/knife-xargs.1 +36 -10
- data/distro/common/man/man1/knife.1 +14 -14
- data/distro/common/man/man8/chef-client.8 +3 -10
- data/distro/common/man/man8/chef-solo.8 +1 -1
- data/ext/win32-eventlog/Rakefile +50 -0
- data/ext/win32-eventlog/chef-log.man +26 -0
- data/lib/chef/application.rb +313 -241
- data/lib/chef/application/apply.rb +10 -8
- data/lib/chef/application/client.rb +58 -33
- data/lib/chef/application/solo.rb +33 -12
- data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
- data/lib/chef/chef_fs/command_line.rb +1 -1
- data/lib/chef/chef_fs/file_system/organization_invites_entry.rb +2 -1
- data/lib/chef/chef_fs/file_system/organization_members_entry.rb +2 -1
- data/lib/chef/chef_fs/file_system/rest_list_entry.rb +2 -1
- data/lib/chef/client.rb +18 -48
- data/lib/chef/config.rb +43 -11
- data/lib/chef/cookbook/cookbook_version_loader.rb +14 -7
- data/lib/chef/cookbook/metadata.rb +81 -38
- data/lib/chef/cookbook/syntax_check.rb +18 -52
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_version.rb +58 -39
- data/lib/chef/data_bag.rb +2 -2
- data/lib/chef/deprecation/provider/file.rb +2 -1
- data/lib/chef/dsl/data_query.rb +2 -29
- data/lib/chef/dsl/recipe.rb +8 -22
- data/lib/chef/encrypted_data_bag_item/assertions.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/check_encrypted.rb +56 -0
- data/lib/chef/encrypted_data_bag_item/encrypted_data_bag_item_assertions.rb +1 -1
- data/lib/chef/event_loggers/base.rb +62 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +104 -0
- data/lib/chef/exceptions.rb +18 -1
- data/lib/chef/file_cache.rb +3 -2
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +15 -6
- data/lib/chef/http.rb +20 -13
- data/lib/chef/http/ssl_policies.rb +2 -1
- data/lib/chef/json_compat.rb +9 -3
- data/lib/chef/knife.rb +2 -1
- data/lib/chef/knife/bootstrap.rb +12 -18
- data/lib/chef/knife/bootstrap/archlinux-gems.erb +2 -2
- data/lib/chef/knife/bootstrap/chef-aix.erb +2 -2
- data/lib/chef/knife/bootstrap/chef-full.erb +2 -2
- data/lib/chef/knife/cookbook_create.rb +1 -1
- data/lib/chef/knife/cookbook_site_share.rb +43 -8
- data/lib/chef/knife/core/bootstrap_context.rb +6 -11
- data/lib/chef/knife/core/object_loader.rb +5 -5
- data/lib/chef/knife/core/status_presenter.rb +156 -0
- data/lib/chef/knife/core/subcommand_loader.rb +6 -5
- data/lib/chef/knife/core/ui.rb +4 -4
- data/lib/chef/knife/data_bag_create.rb +7 -32
- data/lib/chef/knife/data_bag_edit.rb +24 -43
- data/lib/chef/knife/data_bag_from_file.rb +6 -31
- data/lib/chef/knife/data_bag_secret_options.rb +142 -0
- data/lib/chef/knife/data_bag_show.rb +19 -33
- data/lib/chef/knife/node_from_file.rb +9 -8
- data/lib/chef/knife/ssh.rb +0 -7
- data/lib/chef/knife/ssl_check.rb +70 -6
- data/lib/chef/knife/status.rb +11 -58
- data/lib/chef/mixin/command/unix.rb +2 -2
- data/lib/chef/mixin/convert_to_class_name.rb +54 -0
- data/lib/chef/mixin/descendants_tracker.rb +82 -0
- data/lib/chef/mixin/homebrew_user.rb +68 -0
- data/lib/chef/mixin/shell_out.rb +0 -4
- data/lib/chef/mixin/windows_architecture_helper.rb +16 -0
- data/lib/chef/mixin/windows_env_helper.rb +56 -0
- data/lib/chef/node.rb +2 -2
- data/lib/chef/node_map.rb +146 -0
- data/lib/chef/platform/provider_mapping.rb +11 -39
- data/lib/chef/platform/provider_priority_map.rb +80 -0
- data/lib/chef/platform/query_helpers.rb +5 -1
- data/lib/chef/platform/service_helpers.rb +113 -0
- data/lib/chef/provider.rb +24 -0
- data/lib/chef/provider/breakpoint.rb +2 -0
- data/lib/chef/provider/cookbook_file.rb +2 -0
- data/lib/chef/provider/cron.rb +1 -1
- data/lib/chef/provider/cron/unix.rb +13 -9
- data/lib/chef/provider/deploy.rb +3 -2
- data/lib/chef/provider/deploy/revision.rb +4 -2
- data/lib/chef/provider/deploy/timestamped.rb +2 -0
- data/lib/chef/provider/directory.rb +2 -0
- data/lib/chef/provider/dsc_script.rb +179 -0
- data/lib/chef/provider/env.rb +25 -10
- data/lib/chef/provider/env/windows.rb +9 -16
- data/lib/chef/provider/erl_call.rb +2 -0
- data/lib/chef/provider/execute.rb +5 -2
- data/lib/chef/provider/file.rb +2 -0
- data/lib/chef/provider/git.rb +51 -23
- data/lib/chef/provider/group/dscl.rb +2 -2
- data/lib/chef/provider/group/pw.rb +9 -13
- data/lib/chef/provider/http_request.rb +2 -0
- data/lib/chef/provider/link.rb +3 -0
- data/lib/chef/provider/log.rb +2 -0
- data/lib/chef/provider/lwrp_base.rb +11 -9
- data/lib/chef/provider/mount/mount.rb +1 -1
- data/lib/chef/provider/package/aix.rb +2 -0
- data/lib/chef/provider/package/apt.rb +2 -0
- data/lib/chef/provider/package/dpkg.rb +2 -0
- data/lib/chef/provider/package/easy_install.rb +2 -0
- data/lib/chef/provider/package/freebsd/pkg.rb +2 -1
- data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
- data/lib/chef/provider/package/freebsd/port.rb +1 -9
- data/lib/chef/provider/package/homebrew.rb +127 -0
- data/lib/chef/provider/package/ips.rb +2 -0
- data/lib/chef/provider/package/macports.rb +3 -0
- data/lib/chef/provider/package/pacman.rb +5 -4
- data/lib/chef/provider/package/paludis.rb +4 -2
- data/lib/chef/provider/package/portage.rb +4 -1
- data/lib/chef/provider/package/rpm.rb +2 -0
- data/lib/chef/provider/package/rubygems.rb +4 -0
- data/lib/chef/provider/package/smartos.rb +2 -0
- data/lib/chef/provider/package/solaris.rb +2 -0
- data/lib/chef/provider/package/windows.rb +5 -2
- data/lib/chef/provider/package/yum.rb +2 -0
- data/lib/chef/provider/powershell_script.rb +3 -1
- data/lib/chef/provider/remote_directory.rb +25 -10
- data/lib/chef/provider/route.rb +2 -0
- data/lib/chef/provider/ruby_block.rb +2 -0
- data/lib/chef/provider/script.rb +6 -0
- data/lib/chef/provider/service/aix.rb +128 -0
- data/lib/chef/provider/service/aixinit.rb +117 -0
- data/lib/chef/provider/service/arch.rb +6 -0
- data/lib/chef/provider/service/debian.rb +35 -29
- data/lib/chef/provider/service/freebsd.rb +7 -1
- data/lib/chef/provider/service/gentoo.rb +5 -1
- data/lib/chef/provider/service/init.rb +2 -0
- data/lib/chef/provider/service/insserv.rb +15 -8
- data/lib/chef/provider/service/invokercd.rb +6 -0
- data/lib/chef/provider/service/macosx.rb +4 -1
- data/lib/chef/provider/service/redhat.rb +9 -3
- data/lib/chef/provider/service/simple.rb +2 -0
- data/lib/chef/provider/service/solaris.rb +2 -0
- data/lib/chef/provider/service/systemd.rb +7 -0
- data/lib/chef/provider/service/upstart.rb +7 -0
- data/lib/chef/provider/service/windows.rb +5 -0
- data/lib/chef/provider/subversion.rb +2 -0
- data/lib/chef/provider/template.rb +1 -0
- data/lib/chef/provider/user/dscl.rb +3 -2
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +2 -0
- data/lib/chef/provider_resolver.rb +103 -0
- data/lib/chef/providers.rb +6 -2
- data/lib/chef/recipe.rb +2 -0
- data/lib/chef/resource.rb +69 -78
- data/lib/chef/resource/apt_package.rb +3 -1
- data/lib/chef/resource/bash.rb +1 -0
- data/lib/chef/resource/bff_package.rb +0 -1
- data/lib/chef/resource/breakpoint.rb +1 -1
- data/lib/chef/resource/chef_gem.rb +1 -2
- data/lib/chef/resource/conditional.rb +26 -6
- data/lib/chef/resource/cookbook_file.rb +2 -3
- data/lib/chef/resource/csh.rb +1 -0
- data/lib/chef/resource/deploy.rb +0 -1
- data/lib/chef/resource/deploy_revision.rb +6 -1
- data/lib/chef/resource/directory.rb +1 -2
- data/lib/chef/resource/dpkg_package.rb +2 -1
- data/lib/chef/resource/dsc_script.rb +125 -0
- data/lib/chef/resource/easy_install_package.rb +2 -1
- data/lib/chef/resource/erl_call.rb +1 -0
- data/lib/chef/resource/execute.rb +26 -9
- data/lib/chef/resource/file.rb +1 -3
- data/lib/chef/resource/freebsd_package.rb +10 -23
- data/lib/chef/resource/gem_package.rb +2 -1
- data/lib/chef/resource/git.rb +2 -1
- data/lib/chef/resource/homebrew_package.rb +46 -0
- data/lib/chef/resource/http_request.rb +1 -0
- data/lib/chef/resource/ips_package.rb +3 -1
- data/lib/chef/resource/link.rb +1 -2
- data/lib/chef/resource/log.rb +4 -0
- data/lib/chef/resource/lwrp_base.rb +24 -15
- data/lib/chef/resource/macports_package.rb +3 -1
- data/lib/chef/resource/pacman_package.rb +2 -1
- data/lib/chef/resource/paludis_package.rb +3 -1
- data/lib/chef/resource/perl.rb +1 -0
- data/lib/chef/resource/powershell_script.rb +0 -2
- data/lib/chef/resource/python.rb +1 -1
- data/lib/chef/resource/remote_directory.rb +1 -2
- data/lib/chef/resource/remote_file.rb +1 -1
- data/lib/chef/resource/rpm_package.rb +2 -1
- data/lib/chef/resource/ruby.rb +1 -0
- data/lib/chef/resource/ruby_block.rb +3 -0
- data/lib/chef/resource/script.rb +2 -25
- data/lib/chef/resource/service.rb +0 -4
- data/lib/chef/resource/smartos_package.rb +3 -4
- data/lib/chef/resource/solaris_package.rb +7 -1
- data/lib/chef/resource/subversion.rb +0 -1
- data/lib/chef/resource/template.rb +2 -3
- data/lib/chef/resource/timestamped_deploy.rb +1 -2
- data/lib/chef/resource/whyrun_safe_ruby_block.rb +0 -1
- data/lib/chef/resource/windows_package.rb +3 -4
- data/lib/chef/resource/windows_script.rb +3 -0
- data/lib/chef/resource/windows_service.rb +2 -2
- data/lib/chef/resource/yum_package.rb +3 -1
- data/lib/chef/resource_collection.rb +50 -227
- data/lib/chef/resource_collection/resource_collection_serialization.rb +59 -0
- data/lib/chef/resource_collection/resource_list.rb +89 -0
- data/lib/chef/resource_collection/resource_set.rb +170 -0
- data/lib/chef/resources.rb +2 -0
- data/lib/chef/role.rb +1 -1
- data/lib/chef/run_context.rb +5 -1
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/util/backup.rb +3 -2
- data/lib/chef/util/dsc/configuration_generator.rb +115 -0
- data/lib/chef/util/dsc/lcm_output_parser.rb +133 -0
- data/lib/chef/util/dsc/local_configuration_manager.rb +141 -0
- data/lib/chef/util/dsc/resource_info.rb +26 -0
- data/lib/chef/util/path_helper.rb +12 -0
- data/lib/chef/util/powershell/cmdlet.rb +136 -0
- data/lib/chef/util/powershell/cmdlet_result.rb +46 -0
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api/system.rb +9 -0
- data/lib/chef/win32/version.rb +2 -0
- data/spec/.DS_Store +0 -0
- data/spec/data/.DS_Store +0 -0
- data/spec/data/bootstrap/test-hints.erb +1 -1
- data/spec/data/bootstrap/test.erb +1 -1
- data/spec/data/cb_version_cookbooks/cookbook2/files/test.txt +0 -0
- data/spec/data/cb_version_cookbooks/cookbook2/templates/test.erb +0 -0
- data/spec/data/cookbooks/ignorken/files/default/not_me.rb +2 -0
- data/spec/data/cookbooks/ignorken/templates/ubuntu-12.10/not_me.rb +2 -0
- data/spec/data/cookbooks/openldap/libraries/openldap.rb +4 -0
- data/spec/data/cookbooks/openldap/libraries/openldap/version.rb +3 -0
- data/spec/data/lwrp/.DS_Store +0 -0
- data/spec/data/lwrp/providers/.DS_Store +0 -0
- data/spec/data/lwrp/providers/buck_passer.rb +9 -2
- data/spec/data/lwrp/resources/.DS_Store +0 -0
- data/spec/data/lwrp/resources/foo.rb +3 -2
- data/spec/data/lwrp_override/.DS_Store +0 -0
- data/spec/data/lwrp_override/providers/.DS_Store +0 -0
- data/spec/data/lwrp_override/providers/buck_passer.rb +5 -10
- data/spec/data/lwrp_override/resources/.DS_Store +0 -0
- data/spec/data/lwrp_override/resources/foo.rb +4 -3
- data/spec/functional/assets/chefinittest +34 -0
- data/spec/functional/assets/testchefsubsys +11 -0
- data/spec/functional/dsl/reboot_pending_spec.rb +19 -16
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +82 -0
- data/spec/functional/knife/cookbook_delete_spec.rb +3 -3
- data/spec/functional/knife/exec_spec.rb +1 -1
- data/spec/functional/resource/aix_service_spec.rb +136 -0
- data/spec/functional/resource/aixinit_service_spec.rb +211 -0
- data/spec/functional/resource/base.rb +1 -0
- data/spec/functional/resource/batch_spec.rb +4 -11
- data/spec/functional/resource/cron_spec.rb +7 -1
- data/spec/functional/resource/dsc_script_spec.rb +382 -0
- data/spec/functional/resource/env_spec.rb +54 -0
- data/spec/functional/resource/execute_spec.rb +113 -0
- data/spec/functional/resource/file_spec.rb +2 -0
- data/spec/functional/resource/group_spec.rb +7 -4
- data/spec/functional/resource/powershell_spec.rb +198 -185
- data/spec/functional/resource/rpm_spec.rb +5 -4
- data/spec/functional/resource/user/dscl_spec.rb +2 -1
- data/spec/functional/util/path_helper_spec.rb +37 -0
- data/spec/functional/util/powershell/cmdlet_spec.rb +114 -0
- data/spec/integration/client/client_spec.rb +1 -1
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/knife/chef_fs_data_store_spec.rb +1 -1
- data/spec/integration/knife/chef_repo_path_spec.rb +1 -1
- data/spec/integration/knife/chef_repository_file_system_spec.rb +1 -1
- data/spec/integration/knife/chefignore_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +1 -1
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
- data/spec/integration/knife/delete_spec.rb +1 -1
- data/spec/integration/knife/deps_spec.rb +1 -1
- data/spec/integration/knife/diff_spec.rb +1 -1
- data/spec/integration/knife/download_spec.rb +1 -1
- data/spec/integration/knife/list_spec.rb +1 -1
- data/spec/integration/knife/raw_spec.rb +1 -1
- data/spec/integration/knife/redirection_spec.rb +1 -1
- data/spec/integration/knife/serve_spec.rb +1 -1
- data/spec/integration/knife/show_spec.rb +1 -1
- data/spec/integration/knife/upload_spec.rb +4 -3
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
- data/spec/spec_helper.rb +15 -0
- data/spec/support/chef_helpers.rb +1 -0
- data/spec/support/lib/chef/provider/snakeoil.rb +1 -0
- data/spec/support/lib/chef/resource/zen_follower.rb +1 -7
- data/spec/support/platform_helpers.rb +28 -0
- data/spec/support/shared/functional/file_resource.rb +6 -0
- data/spec/support/shared/functional/windows_script.rb +118 -0
- data/spec/support/shared/integration/integration_helper.rb +5 -2
- data/spec/support/shared/matchers/exit_with_code.rb +28 -0
- data/spec/support/shared/matchers/match_environment_variable.rb +17 -0
- data/spec/support/shared/shared_examples.rb +14 -0
- data/spec/support/shared/unit/execute_resource.rb +0 -7
- data/spec/support/shared/unit/resource/static_provider_resolution.rb +71 -0
- data/spec/support/shared/unit/script_resource.rb +1 -1
- data/spec/support/shared/unit/windows_script_resource.rb +35 -2
- data/spec/tiny_server.rb +1 -2
- data/spec/unit/api_client_spec.rb +5 -1
- data/spec/unit/application/{apply.rb → apply_spec.rb} +13 -5
- data/spec/unit/application/client_spec.rb +106 -13
- data/spec/unit/application/solo_spec.rb +25 -1
- data/spec/unit/client_spec.rb +1 -26
- data/spec/unit/config_fetcher_spec.rb +2 -1
- data/spec/unit/config_spec.rb +91 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +8 -0
- data/spec/unit/cookbook/metadata_spec.rb +43 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +8 -2
- data/spec/unit/cookbook_loader_spec.rb +4 -2
- data/spec/unit/cookbook_version_spec.rb +83 -2
- data/spec/unit/data_bag_item_spec.rb +5 -1
- data/spec/unit/data_bag_spec.rb +6 -1
- data/spec/unit/dsl/data_query_spec.rb +8 -110
- data/spec/unit/encrypted_data_bag_item/check_encrypted_spec.rb +95 -0
- data/spec/unit/encrypted_data_bag_item_spec.rb +16 -23
- data/spec/unit/environment_spec.rb +6 -2
- data/spec/unit/exceptions_spec.rb +6 -0
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +16 -15
- data/spec/unit/json_compat_spec.rb +12 -2
- data/spec/unit/knife/bootstrap_spec.rb +16 -63
- data/spec/unit/knife/cookbook_site_share_spec.rb +59 -6
- data/spec/unit/knife/core/bootstrap_context_spec.rb +8 -37
- data/spec/unit/knife/core/subcommand_loader_spec.rb +1 -1
- data/spec/unit/knife/core/ui_spec.rb +28 -0
- data/spec/unit/knife/data_bag_create_spec.rb +63 -71
- data/spec/unit/knife/data_bag_edit_spec.rb +83 -49
- data/spec/unit/knife/data_bag_from_file_spec.rb +104 -126
- data/spec/unit/knife/data_bag_secret_options_spec.rb +165 -0
- data/spec/unit/knife/data_bag_show_spec.rb +74 -72
- data/spec/unit/knife/environment_from_file_spec.rb +3 -2
- data/spec/unit/knife/ssl_check_spec.rb +46 -1
- data/spec/unit/knife/status_spec.rb +1 -2
- data/spec/unit/knife_spec.rb +18 -1
- data/spec/unit/lwrp_spec.rb +29 -8
- data/spec/unit/mixin/homebrew_user_spec.rb +100 -0
- data/spec/unit/node_map_spec.rb +155 -0
- data/spec/unit/node_spec.rb +11 -0
- data/spec/unit/platform/query_helpers_spec.rb +23 -0
- data/spec/unit/platform_spec.rb +23 -0
- data/spec/unit/provider/breakpoint_spec.rb +9 -9
- data/spec/unit/provider/cookbook_file/content_spec.rb +3 -3
- data/spec/unit/provider/cookbook_file_spec.rb +1 -1
- data/spec/unit/provider/cron/unix_spec.rb +78 -60
- data/spec/unit/provider/cron_spec.rb +175 -175
- data/spec/unit/provider/deploy/revision_spec.rb +22 -21
- data/spec/unit/provider/deploy/timestamped_spec.rb +3 -3
- data/spec/unit/provider/deploy_spec.rb +231 -230
- data/spec/unit/provider/directory_spec.rb +55 -55
- data/spec/unit/provider/dsc_script_spec.rb +174 -0
- data/spec/unit/provider/env/windows_spec.rb +70 -34
- data/spec/unit/provider/env_spec.rb +95 -49
- data/spec/unit/provider/erl_call_spec.rb +9 -9
- data/spec/unit/provider/execute_spec.rb +43 -27
- data/spec/unit/provider/file/content_spec.rb +9 -9
- data/spec/unit/provider/file_spec.rb +1 -1
- data/spec/unit/provider/git_spec.rb +221 -159
- data/spec/unit/provider/group/dscl_spec.rb +64 -63
- data/spec/unit/provider/group/gpasswd_spec.rb +14 -14
- data/spec/unit/provider/group/groupadd_spec.rb +33 -33
- data/spec/unit/provider/group/groupmod_spec.rb +23 -23
- data/spec/unit/provider/group/pw_spec.rb +21 -21
- data/spec/unit/provider/group/usermod_spec.rb +20 -20
- data/spec/unit/provider/group/windows_spec.rb +15 -15
- data/spec/unit/provider/group_spec.rb +76 -76
- data/spec/unit/provider/http_request_spec.rb +30 -30
- data/spec/unit/provider/ifconfig/aix_spec.rb +20 -20
- data/spec/unit/provider/ifconfig/debian_spec.rb +25 -9
- data/spec/unit/provider/ifconfig/redhat_spec.rb +13 -13
- data/spec/unit/provider/ifconfig_spec.rb +43 -43
- data/spec/unit/provider/link_spec.rb +60 -60
- data/spec/unit/provider/log_spec.rb +0 -4
- data/spec/unit/provider/mdadm_spec.rb +23 -23
- data/spec/unit/provider/mount/aix_spec.rb +17 -17
- data/spec/unit/provider/mount/mount_spec.rb +115 -119
- data/spec/unit/provider/mount/solaris_spec.rb +72 -72
- data/spec/unit/provider/mount/windows_spec.rb +24 -24
- data/spec/unit/provider/ohai_spec.rb +11 -11
- data/spec/unit/provider/package/aix_spec.rb +34 -34
- data/spec/unit/provider/package/apt_spec.rb +36 -36
- data/spec/unit/provider/package/dpkg_spec.rb +27 -27
- data/spec/unit/provider/package/easy_install_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +53 -53
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +24 -24
- data/spec/unit/provider/package/freebsd/port_spec.rb +45 -35
- data/spec/unit/provider/package/homebrew_spec.rb +266 -0
- data/spec/unit/provider/package/ips_spec.rb +34 -34
- data/spec/unit/provider/package/macports_spec.rb +49 -49
- data/spec/unit/provider/package/pacman_spec.rb +35 -39
- data/spec/unit/provider/package/paludis_spec.rb +20 -20
- data/spec/unit/provider/package/portage_spec.rb +38 -38
- data/spec/unit/provider/package/rpm_spec.rb +29 -29
- data/spec/unit/provider/package/rubygems_spec.rb +284 -270
- data/spec/unit/provider/package/smartos_spec.rb +15 -15
- data/spec/unit/provider/package/solaris_spec.rb +35 -35
- data/spec/unit/provider/package/windows/msi_spec.rb +3 -3
- data/spec/unit/provider/package/windows_spec.rb +6 -6
- data/spec/unit/provider/package/yum_spec.rb +416 -416
- data/spec/unit/provider/package/zypper_spec.rb +47 -47
- data/spec/unit/provider/package_spec.rb +107 -107
- data/spec/unit/provider/powershell_spec.rb +1 -1
- data/spec/unit/provider/registry_key_spec.rb +61 -61
- data/spec/unit/provider/remote_directory_spec.rb +36 -36
- data/spec/unit/provider/remote_file/cache_control_data_spec.rb +24 -24
- data/spec/unit/provider/remote_file/content_spec.rb +45 -45
- data/spec/unit/provider/remote_file/fetcher_spec.rb +9 -9
- data/spec/unit/provider/remote_file/ftp_spec.rb +32 -32
- data/spec/unit/provider/remote_file/http_spec.rb +44 -44
- data/spec/unit/provider/remote_file/local_file_spec.rb +9 -9
- data/spec/unit/provider/remote_file_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +63 -63
- data/spec/unit/provider/ruby_block_spec.rb +4 -4
- data/spec/unit/provider/script_spec.rb +12 -12
- data/spec/unit/provider/service/aix_service_spec.rb +181 -0
- data/spec/unit/provider/service/aixinit_service_spec.rb +269 -0
- data/spec/unit/provider/service/arch_service_spec.rb +48 -48
- data/spec/unit/provider/service/debian_service_spec.rb +40 -40
- data/spec/unit/provider/service/gentoo_service_spec.rb +28 -28
- data/spec/unit/provider/service/init_service_spec.rb +39 -39
- data/spec/unit/provider/service/insserv_service_spec.rb +8 -8
- data/spec/unit/provider/service/invokercd_service_spec.rb +35 -35
- data/spec/unit/provider/service/macosx_spec.rb +49 -49
- data/spec/unit/provider/service/redhat_spec.rb +27 -27
- data/spec/unit/provider/service/simple_service_spec.rb +28 -28
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +43 -46
- data/spec/unit/provider/service/systemd_service_spec.rb +63 -63
- data/spec/unit/provider/service/upstart_service_spec.rb +78 -78
- data/spec/unit/provider/service/windows_spec.rb +92 -92
- data/spec/unit/provider/service_spec.rb +40 -40
- data/spec/unit/provider/subversion_spec.rb +80 -80
- data/spec/unit/provider/template/content_spec.rb +9 -9
- data/spec/unit/provider/template_spec.rb +6 -6
- data/spec/unit/provider/user/dscl_spec.rb +170 -167
- data/spec/unit/provider/user/pw_spec.rb +48 -48
- data/spec/unit/provider/user/solaris_spec.rb +8 -8
- data/spec/unit/provider/user/useradd_spec.rb +1 -1
- data/spec/unit/provider/user/windows_spec.rb +26 -26
- data/spec/unit/provider/user_spec.rb +72 -72
- data/spec/unit/provider/whyrun_safe_ruby_block_spec.rb +4 -4
- data/spec/unit/provider_resolver_spec.rb +387 -0
- data/spec/unit/recipe_spec.rb +33 -12
- data/spec/unit/resource/apt_package_spec.rb +10 -13
- data/spec/unit/resource/bash_spec.rb +4 -4
- data/spec/unit/resource/batch_spec.rb +1 -1
- data/spec/unit/resource/breakpoint_spec.rb +11 -7
- data/spec/unit/resource/chef_gem_spec.rb +8 -15
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
- data/spec/unit/resource/conditional_spec.rb +35 -16
- data/spec/unit/resource/cookbook_file_spec.rb +13 -13
- data/spec/unit/resource/cron_spec.rb +37 -37
- data/spec/unit/resource/csh_spec.rb +4 -4
- data/spec/unit/resource/deploy_revision_spec.rb +13 -18
- data/spec/unit/resource/deploy_spec.rb +60 -55
- data/spec/unit/resource/directory_spec.rb +18 -18
- data/spec/unit/resource/dpkg_package_spec.rb +8 -14
- data/spec/unit/resource/dsc_script_spec.rb +98 -0
- data/spec/unit/resource/easy_install_package_spec.rb +9 -18
- data/spec/unit/resource/env_spec.rb +12 -12
- data/spec/unit/resource/erl_call_spec.rb +11 -11
- data/spec/unit/resource/execute_spec.rb +5 -0
- data/spec/unit/resource/file_spec.rb +29 -29
- data/spec/unit/resource/freebsd_package_spec.rb +11 -12
- data/spec/unit/resource/gem_package_spec.rb +8 -15
- data/spec/unit/resource/git_spec.rb +12 -8
- data/spec/unit/resource/group_spec.rb +27 -27
- data/spec/unit/resource/homebrew_package_spec.rb +50 -0
- data/spec/unit/resource/http_request_spec.rb +6 -6
- data/spec/unit/resource/ifconfig_spec.rb +8 -8
- data/spec/unit/resource/ips_package_spec.rb +10 -13
- data/spec/unit/resource/link_spec.rb +25 -25
- data/spec/unit/resource/log_spec.rb +9 -9
- data/spec/unit/resource/macports_package_spec.rb +8 -13
- data/spec/unit/resource/mdadm_spec.rb +18 -18
- data/spec/unit/resource/mount_spec.rb +45 -45
- data/spec/unit/resource/ohai_spec.rb +7 -7
- data/spec/unit/resource/package_spec.rb +12 -12
- data/spec/unit/resource/pacman_package_spec.rb +8 -14
- data/spec/unit/resource/perl_spec.rb +4 -4
- data/spec/unit/resource/portage_package_spec.rb +3 -3
- data/spec/unit/resource/powershell_spec.rb +7 -7
- data/spec/unit/resource/python_spec.rb +4 -4
- data/spec/unit/resource/registry_key_spec.rb +32 -32
- data/spec/unit/resource/remote_directory_spec.rb +17 -17
- data/spec/unit/resource/remote_file_spec.rb +41 -41
- data/spec/unit/resource/route_spec.rb +19 -19
- data/spec/unit/resource/rpm_package_spec.rb +9 -13
- data/spec/unit/resource/ruby_block_spec.rb +8 -8
- data/spec/unit/resource/ruby_spec.rb +4 -4
- data/spec/unit/resource/scm_spec.rb +40 -40
- data/spec/unit/resource/script_spec.rb +2 -2
- data/spec/unit/resource/service_spec.rb +37 -47
- data/spec/unit/resource/smartos_package_spec.rb +10 -15
- data/spec/unit/resource/solaris_package_spec.rb +13 -28
- data/spec/unit/resource/subversion_spec.rb +16 -12
- data/spec/unit/resource/template_spec.rb +35 -35
- data/spec/unit/resource/timestamped_deploy_spec.rb +30 -4
- data/spec/unit/resource/user_spec.rb +23 -23
- data/spec/unit/resource/windows_package_spec.rb +17 -10
- data/spec/unit/resource/windows_service_spec.rb +9 -6
- data/spec/unit/resource/yum_package_spec.rb +16 -21
- data/spec/unit/resource_collection/resource_list_spec.rb +137 -0
- data/spec/unit/resource_collection/resource_set_spec.rb +199 -0
- data/spec/unit/resource_collection_spec.rb +73 -92
- data/spec/unit/resource_definition_spec.rb +38 -40
- data/spec/unit/resource_reporter_spec.rb +3 -3
- data/spec/unit/resource_spec.rb +68 -33
- data/spec/unit/rest_spec.rb +83 -76
- data/spec/unit/role_spec.rb +5 -0
- data/spec/unit/run_list_spec.rb +5 -1
- data/spec/unit/runner_spec.rb +245 -238
- data/spec/unit/shell/shell_ext_spec.rb +1 -1
- data/spec/unit/user_spec.rb +5 -1
- data/spec/unit/util/dsc/configuration_generator_spec.rb +171 -0
- data/spec/unit/util/dsc/lcm_output_parser_spec.rb +169 -0
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +139 -0
- data/spec/unit/util/path_helper_spec.rb +23 -1
- data/spec/unit/util/powershell/cmdlet_spec.rb +106 -0
- data/spec/unit/workstation_config_loader_spec.rb +1 -1
- metadata +303 -196
- checksums.yaml +0 -7
- data/distro/README +0 -2
- data/distro/arch/etc/conf.d/chef-client.conf +0 -5
- data/distro/arch/etc/conf.d/chef-expander.conf +0 -8
- data/distro/arch/etc/conf.d/chef-server-webui.conf +0 -10
- data/distro/arch/etc/conf.d/chef-server.conf +0 -10
- data/distro/arch/etc/conf.d/chef-solr.conf +0 -8
- data/distro/arch/etc/rc.d/chef-client +0 -90
- data/distro/arch/etc/rc.d/chef-expander +0 -78
- data/distro/arch/etc/rc.d/chef-server +0 -78
- data/distro/arch/etc/rc.d/chef-server-webui +0 -78
- data/distro/arch/etc/rc.d/chef-solr +0 -78
- data/distro/debian/etc/default/chef-client +0 -4
- data/distro/debian/etc/default/chef-expander +0 -8
- data/distro/debian/etc/default/chef-server +0 -9
- data/distro/debian/etc/default/chef-server-webui +0 -9
- data/distro/debian/etc/default/chef-solr +0 -8
- data/distro/debian/etc/init.d/chef-client +0 -212
- data/distro/debian/etc/init.d/chef-expander +0 -176
- data/distro/debian/etc/init.d/chef-server +0 -122
- data/distro/debian/etc/init.d/chef-server-webui +0 -123
- data/distro/debian/etc/init.d/chef-solr +0 -176
- data/distro/debian/etc/init/chef-client.conf +0 -17
- data/distro/debian/etc/init/chef-expander.conf +0 -17
- data/distro/debian/etc/init/chef-server-webui.conf +0 -17
- data/distro/debian/etc/init/chef-server.conf +0 -17
- data/distro/debian/etc/init/chef-solr.conf +0 -17
- data/distro/redhat/etc/init.d/chef-client +0 -121
- data/distro/redhat/etc/init.d/chef-expander +0 -104
- data/distro/redhat/etc/init.d/chef-server +0 -112
- data/distro/redhat/etc/init.d/chef-server-webui +0 -112
- data/distro/redhat/etc/init.d/chef-solr +0 -104
- data/distro/redhat/etc/logrotate.d/chef-client +0 -8
- data/distro/redhat/etc/logrotate.d/chef-expander +0 -8
- data/distro/redhat/etc/logrotate.d/chef-server +0 -8
- data/distro/redhat/etc/logrotate.d/chef-server-webui +0 -8
- data/distro/redhat/etc/logrotate.d/chef-solr +0 -8
- data/distro/redhat/etc/sysconfig/chef-client +0 -15
- data/distro/redhat/etc/sysconfig/chef-expander +0 -7
- data/distro/redhat/etc/sysconfig/chef-server +0 -14
- data/distro/redhat/etc/sysconfig/chef-server-webui +0 -14
- data/distro/redhat/etc/sysconfig/chef-solr +0 -8
- data/distro/windows/service_manager.rb +0 -20
- data/lib/chef/resource_platform_map.rb +0 -151
- data/spec/support/shared/matchers.rb +0 -17
- data/spec/unit/resource_platform_map_spec.rb +0 -164
@@ -421,7 +421,7 @@ describe Chef::ResourceReporter do
|
|
421
421
|
|
422
422
|
it "includes the run_list" do
|
423
423
|
@report.should have_key("run_list")
|
424
|
-
@report["run_list"].should == @run_status.node.run_list
|
424
|
+
@report["run_list"].should == Chef::JSONCompat.to_json(@run_status.node.run_list)
|
425
425
|
end
|
426
426
|
|
427
427
|
it "includes the end_time" do
|
@@ -484,7 +484,7 @@ describe Chef::ResourceReporter do
|
|
484
484
|
|
485
485
|
it "includes the exception trace in the event data" do
|
486
486
|
@report["data"]["exception"].should have_key("backtrace")
|
487
|
-
@report["data"]["exception"]["backtrace"].should == @backtrace
|
487
|
+
@report["data"]["exception"]["backtrace"].should == Chef::JSONCompat.to_json(@backtrace)
|
488
488
|
end
|
489
489
|
|
490
490
|
it "includes the error inspector output in the event data" do
|
@@ -701,7 +701,7 @@ describe Chef::ResourceReporter do
|
|
701
701
|
})
|
702
702
|
data_stream = Zlib::GzipReader.new(StringIO.new(data))
|
703
703
|
data = data_stream.read
|
704
|
-
data.should eq(@expected_data
|
704
|
+
data.should eq(Chef::JSONCompat.to_json(@expected_data))
|
705
705
|
response
|
706
706
|
end
|
707
707
|
|
data/spec/unit/resource_spec.rb
CHANGED
@@ -174,12 +174,12 @@ describe Chef::Resource do
|
|
174
174
|
end
|
175
175
|
|
176
176
|
it "should load the attributes of a prior resource" do
|
177
|
-
@resource.load_prior_resource
|
177
|
+
@resource.load_prior_resource(@resource.resource_name, @resource.name)
|
178
178
|
@resource.supports.should == { :funky => true }
|
179
179
|
end
|
180
180
|
|
181
181
|
it "should not inherit the action from the prior resource" do
|
182
|
-
@resource.load_prior_resource
|
182
|
+
@resource.load_prior_resource(@resource.resource_name, @resource.name)
|
183
183
|
@resource.action.should_not == @prior_resource.action
|
184
184
|
end
|
185
185
|
end
|
@@ -336,6 +336,10 @@ describe Chef::Resource do
|
|
336
336
|
json.should =~ /json_class/
|
337
337
|
json.should =~ /instance_vars/
|
338
338
|
end
|
339
|
+
|
340
|
+
include_examples "to_json equalivent to Chef::JSONCompat.to_json" do
|
341
|
+
let(:jsonable) { @resource }
|
342
|
+
end
|
339
343
|
end
|
340
344
|
|
341
345
|
describe "to_hash" do
|
@@ -345,7 +349,7 @@ describe Chef::Resource do
|
|
345
349
|
:updated_by_last_action, :before, :supports,
|
346
350
|
:noop, :ignore_failure, :name, :source_line,
|
347
351
|
:action, :retries, :retry_delay, :elapsed_time,
|
348
|
-
:guard_interpreter, :sensitive ]
|
352
|
+
:default_guard_interpreter, :guard_interpreter, :sensitive ]
|
349
353
|
(hash.keys - expected_keys).should == []
|
350
354
|
(expected_keys - hash.keys).should == []
|
351
355
|
hash[:name].should eql("funk")
|
@@ -354,7 +358,7 @@ describe Chef::Resource do
|
|
354
358
|
|
355
359
|
describe "self.json_create" do
|
356
360
|
it "should deserialize itself from json" do
|
357
|
-
json = @resource
|
361
|
+
json = Chef::JSONCompat.to_json(@resource)
|
358
362
|
serialized_node = Chef::JSONCompat.from_json(json)
|
359
363
|
serialized_node.should be_a_kind_of(Chef::Resource)
|
360
364
|
serialized_node.name.should eql(@resource.name)
|
@@ -390,22 +394,44 @@ describe Chef::Resource do
|
|
390
394
|
end
|
391
395
|
|
392
396
|
describe "retries" do
|
397
|
+
before do
|
398
|
+
@retriable_resource = Chef::Resource::Cat.new("precious", @run_context)
|
399
|
+
@retriable_resource.provider = Chef::Provider::SnakeOil
|
400
|
+
@retriable_resource.action = :purr
|
401
|
+
|
402
|
+
@node.automatic_attrs[:platform] = "fubuntu"
|
403
|
+
@node.automatic_attrs[:platform_version] = '10.04'
|
404
|
+
end
|
405
|
+
|
393
406
|
it "should default to not retrying if a provider fails for a resource" do
|
394
|
-
@
|
407
|
+
@retriable_resource.retries.should == 0
|
395
408
|
end
|
396
409
|
|
397
410
|
it "should allow you to set how many retries a provider should attempt after a failure" do
|
398
|
-
@
|
399
|
-
@
|
411
|
+
@retriable_resource.retries(2)
|
412
|
+
@retriable_resource.retries.should == 2
|
400
413
|
end
|
401
414
|
|
402
415
|
it "should default to a retry delay of 2 seconds" do
|
403
|
-
@
|
416
|
+
@retriable_resource.retry_delay.should == 2
|
404
417
|
end
|
405
418
|
|
406
419
|
it "should allow you to set the retry delay" do
|
407
|
-
@
|
408
|
-
@
|
420
|
+
@retriable_resource.retry_delay(10)
|
421
|
+
@retriable_resource.retry_delay.should == 10
|
422
|
+
end
|
423
|
+
|
424
|
+
it "should keep given value of retries intact after the provider fails for a resource" do
|
425
|
+
@retriable_resource.retries(3)
|
426
|
+
@retriable_resource.retry_delay(0) # No need to wait.
|
427
|
+
|
428
|
+
provider = Chef::Provider::SnakeOil.new(@retriable_resource, @run_context)
|
429
|
+
Chef::Provider::SnakeOil.stub(:new).and_return(provider)
|
430
|
+
provider.stub(:action_purr).and_raise
|
431
|
+
|
432
|
+
@retriable_resource.should_receive(:sleep).exactly(3).times
|
433
|
+
expect { @retriable_resource.run_action(:purr) }.to raise_error
|
434
|
+
@retriable_resource.retries.should == 3
|
409
435
|
end
|
410
436
|
end
|
411
437
|
|
@@ -464,7 +490,8 @@ describe Chef::Resource do
|
|
464
490
|
end
|
465
491
|
|
466
492
|
it "does not run only_if if no only_if command is given" do
|
467
|
-
|
493
|
+
expect_any_instance_of(Chef::Resource::Conditional).not_to receive(:evaluate)
|
494
|
+
@resource.only_if.clear
|
468
495
|
@resource.run_action(:purr)
|
469
496
|
end
|
470
497
|
|
@@ -506,6 +533,8 @@ describe Chef::Resource do
|
|
506
533
|
end
|
507
534
|
|
508
535
|
it "does not run not_if if no not_if command is given" do
|
536
|
+
expect_any_instance_of(Chef::Resource::Conditional).not_to receive(:evaluate)
|
537
|
+
@resource.not_if.clear
|
509
538
|
@resource.run_action(:purr)
|
510
539
|
end
|
511
540
|
|
@@ -551,7 +580,6 @@ describe Chef::Resource do
|
|
551
580
|
expect { resource.guard_interpreter(:command_dot_com) }.not_to raise_error
|
552
581
|
end
|
553
582
|
end
|
554
|
-
|
555
583
|
end
|
556
584
|
|
557
585
|
describe "should_skip?" do
|
@@ -664,24 +692,33 @@ describe Chef::Resource do
|
|
664
692
|
|
665
693
|
describe "building the platform map" do
|
666
694
|
|
695
|
+
let(:klz) { Class.new(Chef::Resource) }
|
696
|
+
|
697
|
+
before do
|
698
|
+
Chef::Resource::Klz = klz
|
699
|
+
end
|
700
|
+
|
701
|
+
after do
|
702
|
+
Chef::Resource.send(:remove_const, :Klz)
|
703
|
+
end
|
704
|
+
|
667
705
|
it 'adds mappings for a single platform' do
|
668
|
-
|
669
|
-
|
670
|
-
:platform => :autobots, :short_name => :dinobot, :resource => klz
|
706
|
+
expect(Chef::Resource.node_map).to receive(:set).with(
|
707
|
+
:dinobot, Chef::Resource::Klz, { platform: ['autobots'] }
|
671
708
|
)
|
672
|
-
klz.provides :dinobot, :
|
709
|
+
klz.provides :dinobot, platform: ['autobots']
|
673
710
|
end
|
674
711
|
|
675
712
|
it 'adds mappings for multiple platforms' do
|
676
|
-
|
677
|
-
|
678
|
-
|
713
|
+
expect(Chef::Resource.node_map).to receive(:set).with(
|
714
|
+
:energy, Chef::Resource::Klz, { platform: ['autobots', 'decepticons']}
|
715
|
+
)
|
716
|
+
klz.provides :energy, platform: ['autobots', 'decepticons']
|
679
717
|
end
|
680
718
|
|
681
719
|
it 'adds mappings for all platforms' do
|
682
|
-
|
683
|
-
|
684
|
-
:short_name => :tape_deck, :resource => klz
|
720
|
+
expect(Chef::Resource.node_map).to receive(:set).with(
|
721
|
+
:tape_deck, Chef::Resource::Klz, {}
|
685
722
|
)
|
686
723
|
klz.provides :tape_deck
|
687
724
|
end
|
@@ -689,28 +726,26 @@ describe Chef::Resource do
|
|
689
726
|
end
|
690
727
|
|
691
728
|
describe "lookups from the platform map" do
|
729
|
+
let(:klz1) { Class.new(Chef::Resource) }
|
730
|
+
let(:klz2) { Class.new(Chef::Resource) }
|
692
731
|
|
693
732
|
before(:each) do
|
733
|
+
Chef::Resource::Klz1 = klz1
|
734
|
+
Chef::Resource::Klz2 = klz2
|
694
735
|
@node = Chef::Node.new
|
695
736
|
@node.name("bumblebee")
|
696
737
|
@node.automatic[:platform] = "autobots"
|
697
738
|
@node.automatic[:platform_version] = "6.1"
|
698
|
-
Object.const_set('Soundwave',
|
699
|
-
|
739
|
+
Object.const_set('Soundwave', klz1)
|
740
|
+
klz2.provides :dinobot, :on_platforms => ['autobots']
|
741
|
+
Object.const_set('Grimlock', klz2)
|
700
742
|
end
|
701
743
|
|
702
744
|
after(:each) do
|
703
745
|
Object.send(:remove_const, :Soundwave)
|
704
746
|
Object.send(:remove_const, :Grimlock)
|
705
|
-
|
706
|
-
|
707
|
-
describe "resource_for_platform" do
|
708
|
-
it 'return a resource by short_name and platform' do
|
709
|
-
Chef::Resource.resource_for_platform(:dinobot,'autobots','6.1').should eql(Grimlock)
|
710
|
-
end
|
711
|
-
it "returns a resource by short_name if nothing else matches" do
|
712
|
-
Chef::Resource.resource_for_node(:soundwave, @node).should eql(Soundwave)
|
713
|
-
end
|
747
|
+
Chef::Resource.send(:remove_const, :Klz1)
|
748
|
+
Chef::Resource.send(:remove_const, :Klz2)
|
714
749
|
end
|
715
750
|
|
716
751
|
describe "resource_for_node" do
|
data/spec/unit/rest_spec.rb
CHANGED
@@ -62,8 +62,8 @@ describe Chef::REST do
|
|
62
62
|
let(:request_id) {"1234"}
|
63
63
|
|
64
64
|
let(:rest) do
|
65
|
-
Chef::REST::CookieJar.
|
66
|
-
Chef::RequestID.instance.
|
65
|
+
allow(Chef::REST::CookieJar).to receive(:instance).and_return({})
|
66
|
+
allow(Chef::RequestID.instance).to receive(:request_id).and_return(request_id)
|
67
67
|
rest = Chef::REST.new(base_url, nil, nil)
|
68
68
|
Chef::REST::CookieJar.instance.clear
|
69
69
|
rest
|
@@ -81,9 +81,9 @@ describe Chef::REST do
|
|
81
81
|
content_length = middlewares.find_index { |e| e.is_a? Chef::HTTP::ValidateContentLength }
|
82
82
|
decompressor = middlewares.find_index { |e| e.is_a? Chef::HTTP::Decompressor }
|
83
83
|
|
84
|
-
content_length.
|
85
|
-
decompressor.
|
86
|
-
(decompressor < content_length).
|
84
|
+
expect(content_length).not_to be_nil
|
85
|
+
expect(decompressor).not_to be_nil
|
86
|
+
expect(decompressor < content_length).to be_true
|
87
87
|
end
|
88
88
|
|
89
89
|
it "should allow the options hash to be frozen" do
|
@@ -102,43 +102,43 @@ describe Chef::REST do
|
|
102
102
|
end
|
103
103
|
|
104
104
|
it "makes a :GET request with the composed url object" do
|
105
|
-
rest.
|
105
|
+
expect(rest).to receive(:send_http_request).
|
106
106
|
with(:GET, monkey_uri, standard_read_headers, false).
|
107
107
|
and_return([1,2,3])
|
108
|
-
rest.
|
109
|
-
rest.
|
108
|
+
expect(rest).to receive(:apply_response_middleware).with(1,2,3).and_return([1,2,3])
|
109
|
+
expect(rest).to receive('success_response?'.to_sym).with(1).and_return(true)
|
110
110
|
rest.get_rest("monkey")
|
111
111
|
end
|
112
112
|
|
113
113
|
it "makes a :GET reqest for a streaming download with the composed url" do
|
114
|
-
rest.
|
114
|
+
expect(rest).to receive(:streaming_request).with('monkey', {})
|
115
115
|
rest.get_rest("monkey", true)
|
116
116
|
end
|
117
117
|
|
118
118
|
it "makes a :DELETE request with the composed url object" do
|
119
|
-
rest.
|
119
|
+
expect(rest).to receive(:send_http_request).
|
120
120
|
with(:DELETE, monkey_uri, standard_read_headers, false).
|
121
121
|
and_return([1,2,3])
|
122
|
-
rest.
|
123
|
-
rest.
|
122
|
+
expect(rest).to receive(:apply_response_middleware).with(1,2,3).and_return([1,2,3])
|
123
|
+
expect(rest).to receive('success_response?'.to_sym).with(1).and_return(true)
|
124
124
|
rest.delete_rest("monkey")
|
125
125
|
end
|
126
126
|
|
127
127
|
it "makes a :POST request with the composed url object and data" do
|
128
|
-
rest.
|
128
|
+
expect(rest).to receive(:send_http_request).
|
129
129
|
with(:POST, monkey_uri, standard_write_headers, "\"data\"").
|
130
130
|
and_return([1,2,3])
|
131
|
-
rest.
|
132
|
-
rest.
|
131
|
+
expect(rest).to receive(:apply_response_middleware).with(1,2,3).and_return([1,2,3])
|
132
|
+
expect(rest).to receive('success_response?'.to_sym).with(1).and_return(true)
|
133
133
|
rest.post_rest("monkey", "data")
|
134
134
|
end
|
135
135
|
|
136
136
|
it "makes a :PUT request with the composed url object and data" do
|
137
|
-
rest.
|
137
|
+
expect(rest).to receive(:send_http_request).
|
138
138
|
with(:PUT, monkey_uri, standard_write_headers, "\"data\"").
|
139
139
|
and_return([1,2,3])
|
140
|
-
rest.
|
141
|
-
rest.
|
140
|
+
expect(rest).to receive(:apply_response_middleware).with(1,2,3).and_return([1,2,3])
|
141
|
+
expect(rest).to receive('success_response?'.to_sym).with(1).and_return(true)
|
142
142
|
rest.put_rest("monkey", "data")
|
143
143
|
end
|
144
144
|
end
|
@@ -162,13 +162,13 @@ describe Chef::REST do
|
|
162
162
|
|
163
163
|
auth_headers = standard_write_headers.merge({"auth_done"=>"yep"})
|
164
164
|
|
165
|
-
rest.authenticator.
|
165
|
+
expect(rest.authenticator).to receive(:handle_request).
|
166
166
|
with(:POST, monkey_uri, standard_write_headers, data).
|
167
167
|
and_return([:POST, monkey_uri, auth_headers, data])
|
168
|
-
rest.
|
168
|
+
expect(rest).to receive(:send_http_request).
|
169
169
|
with(:POST, monkey_uri, auth_headers, data).
|
170
170
|
and_return([1,2,3])
|
171
|
-
rest.
|
171
|
+
expect(rest).to receive('success_response?'.to_sym).with(1).and_return(true)
|
172
172
|
rest.raw_http_request(:POST, monkey_uri, standard_write_headers, data)
|
173
173
|
end
|
174
174
|
|
@@ -176,10 +176,10 @@ describe Chef::REST do
|
|
176
176
|
data = "\"secure data\""
|
177
177
|
method, uri, auth_headers, d = rest.authenticator.handle_request(:POST, monkey_uri, standard_write_headers, data)
|
178
178
|
|
179
|
-
rest.
|
179
|
+
expect(rest).to receive(:send_http_request).
|
180
180
|
with(:POST, monkey_uri, auth_headers, data).
|
181
181
|
and_return([1,2,3])
|
182
|
-
rest.
|
182
|
+
expect(rest).to receive('success_response?'.to_sym).with(1).and_return(true)
|
183
183
|
rest.raw_http_request(:POST, monkey_uri, standard_write_headers, data)
|
184
184
|
end
|
185
185
|
end
|
@@ -241,8 +241,8 @@ describe Chef::REST do
|
|
241
241
|
|
242
242
|
let(:http_response) do
|
243
243
|
http_response = Net::HTTPSuccess.new("1.1", "200", "successful rest req")
|
244
|
-
http_response.
|
245
|
-
http_response.
|
244
|
+
allow(http_response).to receive(:read_body)
|
245
|
+
allow(http_response).to receive(:body).and_return(body)
|
246
246
|
http_response["Content-Length"] = body.bytesize.to_s
|
247
247
|
http_response
|
248
248
|
end
|
@@ -255,14 +255,14 @@ describe Chef::REST do
|
|
255
255
|
|
256
256
|
let!(:http_client) do
|
257
257
|
http_client = Net::HTTP.new(url.host, url.port)
|
258
|
-
http_client.
|
258
|
+
allow(http_client).to receive(:request).and_yield(http_response).and_return(http_response)
|
259
259
|
http_client
|
260
260
|
end
|
261
261
|
|
262
262
|
let(:rest) do
|
263
|
-
Net::HTTP.
|
264
|
-
Chef::REST::CookieJar.
|
265
|
-
Chef::RequestID.instance.
|
263
|
+
allow(Net::HTTP).to receive(:new).and_return(http_client)
|
264
|
+
allow(Chef::REST::CookieJar).to receive(:instance).and_return({})
|
265
|
+
allow(Chef::RequestID.instance).to receive(:request_id).and_return(request_id)
|
266
266
|
rest = Chef::REST.new(base_url, nil, nil)
|
267
267
|
Chef::REST::CookieJar.instance.clear
|
268
268
|
rest
|
@@ -300,16 +300,16 @@ describe Chef::REST do
|
|
300
300
|
end
|
301
301
|
|
302
302
|
before do
|
303
|
-
Net::HTTP::Get.
|
303
|
+
allow(Net::HTTP::Get).to receive(:new).and_return(request_mock)
|
304
304
|
end
|
305
305
|
|
306
306
|
it "should always include the X-Chef-Version header" do
|
307
|
-
Net::HTTP::Get.
|
307
|
+
expect(Net::HTTP::Get).to receive(:new).with("/?foo=bar", base_headers).and_return(request_mock)
|
308
308
|
rest.request(:GET, url, {})
|
309
309
|
end
|
310
310
|
|
311
311
|
it "should always include the X-Remote-Request-Id header" do
|
312
|
-
Net::HTTP::Get.
|
312
|
+
expect(Net::HTTP::Get).to receive(:new).with("/?foo=bar", base_headers).and_return(request_mock)
|
313
313
|
rest.request(:GET, url, {})
|
314
314
|
end
|
315
315
|
|
@@ -323,7 +323,7 @@ describe Chef::REST do
|
|
323
323
|
# CHEF-3140
|
324
324
|
context "when configured to disable compression" do
|
325
325
|
let(:rest) do
|
326
|
-
Net::HTTP.
|
326
|
+
allow(Net::HTTP).to receive(:new).and_return(http_client)
|
327
327
|
Chef::REST.new(base_url, nil, nil, :disable_gzip => true)
|
328
328
|
end
|
329
329
|
|
@@ -334,7 +334,7 @@ describe Chef::REST do
|
|
334
334
|
it "does not decompress a response encoded as gzip" do
|
335
335
|
http_response.add_field("content-encoding", "gzip")
|
336
336
|
request = Net::HTTP::Get.new(url.path)
|
337
|
-
Net::HTTP::Get.
|
337
|
+
expect(Net::HTTP::Get).to receive(:new).and_return(request)
|
338
338
|
# will raise a Zlib error if incorrect
|
339
339
|
expect(rest.request(:GET, url, {})).to eq("ninja")
|
340
340
|
end
|
@@ -359,28 +359,28 @@ describe Chef::REST do
|
|
359
359
|
it "should set them on the http request" do
|
360
360
|
url_string = an_instance_of(String)
|
361
361
|
header_hash = hash_including(custom_headers)
|
362
|
-
Net::HTTP::Get.
|
362
|
+
expect(Net::HTTP::Get).to receive(:new).with(url_string, header_hash)
|
363
363
|
rest.request(:GET, url, {})
|
364
364
|
end
|
365
365
|
end
|
366
366
|
|
367
367
|
context "when setting cookies" do
|
368
368
|
let(:rest) do
|
369
|
-
Net::HTTP.
|
369
|
+
allow(Net::HTTP).to receive(:new).and_return(http_client)
|
370
370
|
Chef::REST::CookieJar.instance["#{url.host}:#{url.port}"] = "cookie monster"
|
371
|
-
Chef::RequestID.instance.
|
371
|
+
allow(Chef::RequestID.instance).to receive(:request_id).and_return(request_id)
|
372
372
|
rest = Chef::REST.new(base_url, nil, nil)
|
373
373
|
rest
|
374
374
|
end
|
375
375
|
|
376
376
|
it "should set the cookie for this request if one exists for the given host:port" do
|
377
|
-
Net::HTTP::Get.
|
377
|
+
expect(Net::HTTP::Get).to receive(:new).with("/?foo=bar", base_headers.merge('Cookie' => "cookie monster")).and_return(request_mock)
|
378
378
|
rest.request(:GET, url, {})
|
379
379
|
end
|
380
380
|
end
|
381
381
|
|
382
382
|
it "should build a new HTTP GET request" do
|
383
|
-
Net::HTTP::Get.
|
383
|
+
expect(Net::HTTP::Get).to receive(:new).with("/?foo=bar", base_headers).and_return(request_mock)
|
384
384
|
rest.request(:GET, url, {})
|
385
385
|
end
|
386
386
|
|
@@ -388,7 +388,7 @@ describe Chef::REST do
|
|
388
388
|
request = Net::HTTP::Post.new(url.path)
|
389
389
|
expected_headers = base_headers.merge("Content-Type" => 'application/json', 'Content-Length' => '13')
|
390
390
|
|
391
|
-
Net::HTTP::Post.
|
391
|
+
expect(Net::HTTP::Post).to receive(:new).with("/?foo=bar", expected_headers).and_return(request)
|
392
392
|
rest.request(:POST, url, {}, {:one=>:two})
|
393
393
|
expect(request.body).to eq('{"one":"two"}')
|
394
394
|
end
|
@@ -396,13 +396,13 @@ describe Chef::REST do
|
|
396
396
|
it "should build a new HTTP PUT request" do
|
397
397
|
request = Net::HTTP::Put.new(url.path)
|
398
398
|
expected_headers = base_headers.merge("Content-Type" => 'application/json', 'Content-Length' => '13')
|
399
|
-
Net::HTTP::Put.
|
399
|
+
expect(Net::HTTP::Put).to receive(:new).with("/?foo=bar",expected_headers).and_return(request)
|
400
400
|
rest.request(:PUT, url, {}, {:one=>:two})
|
401
401
|
expect(request.body).to eq('{"one":"two"}')
|
402
402
|
end
|
403
403
|
|
404
404
|
it "should build a new HTTP DELETE request" do
|
405
|
-
Net::HTTP::Delete.
|
405
|
+
expect(Net::HTTP::Delete).to receive(:new).with("/?foo=bar", base_headers).and_return(request_mock)
|
406
406
|
rest.request(:DELETE, url)
|
407
407
|
end
|
408
408
|
|
@@ -440,7 +440,7 @@ describe Chef::REST do
|
|
440
440
|
resp_code = Net::HTTPResponse::CODE_TO_OBJ.keys.detect { |k| Net::HTTPResponse::CODE_TO_OBJ[k] == resp_cls }
|
441
441
|
http_response = Net::HTTPFound.new("1.1", resp_code, "bob is somewhere else again")
|
442
442
|
http_response.add_field("location", url.path)
|
443
|
-
http_response.
|
443
|
+
allow(http_response).to receive(:read_body)
|
444
444
|
http_response
|
445
445
|
end
|
446
446
|
it "should call request again" do
|
@@ -457,7 +457,7 @@ describe Chef::REST do
|
|
457
457
|
context "when the response is 304 NotModified" do
|
458
458
|
let (:http_response) do
|
459
459
|
http_response = Net::HTTPNotModified.new("1.1", "304", "it's the same as when you asked 5 minutes ago")
|
460
|
-
http_response.
|
460
|
+
allow(http_response).to receive(:read_body)
|
461
461
|
http_response
|
462
462
|
end
|
463
463
|
|
@@ -480,13 +480,13 @@ describe Chef::REST do
|
|
480
480
|
let(:http_response) do
|
481
481
|
http_response = Net::HTTPServerError.new("1.1", "500", "drooling from inside of mouth")
|
482
482
|
http_response.add_field("content-type", "application/json")
|
483
|
-
http_response.
|
484
|
-
http_response.
|
483
|
+
allow(http_response).to receive(:body).and_return('{ "error":[ "Ears get sore!", "Not even four" ] }')
|
484
|
+
allow(http_response).to receive(:read_body)
|
485
485
|
http_response
|
486
486
|
end
|
487
487
|
|
488
488
|
it "should show the JSON error message" do
|
489
|
-
rest.
|
489
|
+
allow(rest).to receive(:sleep)
|
490
490
|
|
491
491
|
expect {rest.request(:GET, url)}.to raise_error(Net::HTTPFatalError)
|
492
492
|
expect(log_stringio.string).to match(Regexp.escape('INFO: HTTP Request Returned 500 drooling from inside of mouth: Ears get sore!, Not even four'))
|
@@ -502,17 +502,21 @@ describe Chef::REST do
|
|
502
502
|
gzipped_body = Zlib::Deflate.deflate(unzipped_body)
|
503
503
|
gzipped_body.force_encoding(Encoding::BINARY) if "strings".respond_to?(:force_encoding)
|
504
504
|
|
505
|
-
http_response.
|
506
|
-
http_response.
|
505
|
+
allow(http_response).to receive(:body).and_return gzipped_body
|
506
|
+
allow(http_response).to receive(:read_body)
|
507
507
|
http_response
|
508
508
|
end
|
509
|
-
it "decompresses the JSON error message" do
|
510
|
-
rest.stub(:sleep)
|
511
|
-
rest.stub(:http_retry_count).and_return(0)
|
512
509
|
|
510
|
+
before do
|
511
|
+
allow(rest).to receive(:sleep)
|
512
|
+
allow(rest).to receive(:http_retry_count).and_return(0)
|
513
|
+
end
|
514
|
+
|
515
|
+
it "decompresses the JSON error message" do
|
513
516
|
expect {rest.request(:GET, url)}.to raise_error(Net::HTTPFatalError)
|
514
517
|
expect(log_stringio.string).to match(Regexp.escape('INFO: HTTP Request Returned 500 drooling from inside of mouth: Ears get sore!, Not even four'))
|
515
518
|
end
|
519
|
+
|
516
520
|
it "fails when the compressed body is truncated" do
|
517
521
|
http_response["Content-Length"] = (body.bytesize + 99).to_s
|
518
522
|
expect {rest.request(:GET, url)}.to raise_error(Chef::Exceptions::ContentLengthMismatch)
|
@@ -522,13 +526,16 @@ describe Chef::REST do
|
|
522
526
|
context "on a generic unsuccessful request" do
|
523
527
|
let(:http_response) do
|
524
528
|
http_response = Net::HTTPServerError.new("1.1", "500", "drooling from inside of mouth")
|
525
|
-
http_response.
|
526
|
-
http_response.
|
529
|
+
allow(http_response).to receive(:body)
|
530
|
+
allow(http_response).to receive(:read_body)
|
527
531
|
http_response
|
528
532
|
end
|
529
|
-
|
530
|
-
|
533
|
+
|
534
|
+
it "retries then throws an exception" do
|
535
|
+
allow(rest).to receive(:sleep)
|
531
536
|
expect {rest.request(:GET, url)}.to raise_error(Net::HTTPFatalError)
|
537
|
+
count = Chef::Config[:http_retry_count]
|
538
|
+
expect(log_stringio.string).to match(Regexp.escape("ERROR: Server returned error 500 for #{url}, retrying #{count}/#{count}"))
|
532
539
|
end
|
533
540
|
end
|
534
541
|
end
|
@@ -542,8 +549,8 @@ describe Chef::REST do
|
|
542
549
|
let(:http_response) do
|
543
550
|
http_response = Net::HTTPSuccess.new("1.1",'200', "it-works")
|
544
551
|
|
545
|
-
http_response.
|
546
|
-
http_response.
|
552
|
+
allow(http_response).to receive(:read_body)
|
553
|
+
expect(http_response).not_to receive(:body)
|
547
554
|
http_response["Content-Length"] = "0" # call set_content_length (in test), if otherwise
|
548
555
|
http_response
|
549
556
|
end
|
@@ -557,8 +564,8 @@ describe Chef::REST do
|
|
557
564
|
end
|
558
565
|
|
559
566
|
before do
|
560
|
-
Tempfile.
|
561
|
-
Net::HTTP::Get.
|
567
|
+
allow(Tempfile).to receive(:new).with("chef-rest").and_return(tempfile)
|
568
|
+
allow(Net::HTTP::Get).to receive(:new).and_return(request_mock)
|
562
569
|
end
|
563
570
|
|
564
571
|
after do
|
@@ -572,7 +579,7 @@ describe Chef::REST do
|
|
572
579
|
'Host' => host_header,
|
573
580
|
'X-REMOTE-REQUEST-ID'=> request_id
|
574
581
|
}
|
575
|
-
Net::HTTP::Get.
|
582
|
+
expect(Net::HTTP::Get).to receive(:new).with("/?foo=bar", expected_headers).and_return(request_mock)
|
576
583
|
rest.streaming_request(url, {})
|
577
584
|
end
|
578
585
|
|
@@ -583,7 +590,7 @@ describe Chef::REST do
|
|
583
590
|
'Host' => host_header,
|
584
591
|
'X-REMOTE-REQUEST-ID'=> request_id
|
585
592
|
}
|
586
|
-
Net::HTTP::Get.
|
593
|
+
expect(Net::HTTP::Get).to receive(:new).with("/?foo=bar", expected_headers).and_return(request_mock)
|
587
594
|
rest.streaming_request(url, {})
|
588
595
|
end
|
589
596
|
|
@@ -592,7 +599,7 @@ describe Chef::REST do
|
|
592
599
|
end
|
593
600
|
|
594
601
|
it "writes the response body to a tempfile" do
|
595
|
-
http_response.
|
602
|
+
allow(http_response).to receive(:read_body).and_yield("real").and_yield("ultimate").and_yield("power")
|
596
603
|
set_content_length
|
597
604
|
rest.streaming_request(url, {})
|
598
605
|
expect(IO.read(tempfile.path).chomp).to eq("realultimatepower")
|
@@ -604,7 +611,7 @@ describe Chef::REST do
|
|
604
611
|
end
|
605
612
|
|
606
613
|
it "yields the tempfile containing the streamed response body and then unlinks it when given a block" do
|
607
|
-
http_response.
|
614
|
+
allow(http_response).to receive(:read_body).and_yield("real").and_yield("ultimate").and_yield("power")
|
608
615
|
set_content_length
|
609
616
|
tempfile_path = nil
|
610
617
|
rest.streaming_request(url, {}) do |tempfile|
|
@@ -617,24 +624,24 @@ describe Chef::REST do
|
|
617
624
|
|
618
625
|
it "does not raise a divide by zero exception if the content's actual size is 0" do
|
619
626
|
http_response['Content-Length'] = "5"
|
620
|
-
http_response.
|
627
|
+
allow(http_response).to receive(:read_body).and_yield('')
|
621
628
|
expect { rest.streaming_request(url, {}) }.to raise_error(Chef::Exceptions::ContentLengthMismatch)
|
622
629
|
end
|
623
630
|
|
624
631
|
it "does not raise a divide by zero exception when the Content-Length is 0" do
|
625
632
|
http_response['Content-Length'] = "0"
|
626
|
-
http_response.
|
633
|
+
allow(http_response).to receive(:read_body).and_yield("ninja")
|
627
634
|
expect { rest.streaming_request(url, {}) }.to raise_error(Chef::Exceptions::ContentLengthMismatch)
|
628
635
|
end
|
629
636
|
|
630
637
|
it "it raises an exception when the download is truncated" do
|
631
638
|
http_response["Content-Length"] = (body.bytesize + 99).to_s
|
632
|
-
http_response.
|
639
|
+
allow(http_response).to receive(:read_body).and_yield("ninja")
|
633
640
|
expect { rest.streaming_request(url, {}) }.to raise_error(Chef::Exceptions::ContentLengthMismatch)
|
634
641
|
end
|
635
642
|
|
636
643
|
it "fetches a file and yields the tempfile it is streamed to" do
|
637
|
-
http_response.
|
644
|
+
allow(http_response).to receive(:read_body).and_yield("real").and_yield("ultimate").and_yield("power")
|
638
645
|
set_content_length
|
639
646
|
tempfile_path = nil
|
640
647
|
rest.fetch("cookbooks/a_cookbook") do |tempfile|
|
@@ -647,32 +654,32 @@ describe Chef::REST do
|
|
647
654
|
it "closes and unlinks the tempfile if there is an error while streaming the content to the tempfile" do
|
648
655
|
path = tempfile.path
|
649
656
|
expect(path).not_to be_nil
|
650
|
-
tempfile.
|
657
|
+
allow(tempfile).to receive(:write).and_raise(IOError)
|
651
658
|
rest.fetch("cookbooks/a_cookbook") {|tmpfile| "shouldn't get here"}
|
652
659
|
expect(File.exists?(path)).to be_false
|
653
660
|
end
|
654
661
|
|
655
662
|
it "closes and unlinks the tempfile when the response is a redirect" do
|
656
663
|
tempfile = double("A tempfile", :path => "/tmp/ragefist", :close => true, :binmode => true)
|
657
|
-
tempfile.
|
658
|
-
Tempfile.
|
664
|
+
expect(tempfile).to receive(:close!).at_least(1).times
|
665
|
+
allow(Tempfile).to receive(:new).with("chef-rest").and_return(tempfile)
|
659
666
|
|
660
667
|
redirect = Net::HTTPFound.new("1.1", "302", "bob is taking care of that one for me today")
|
661
668
|
redirect.add_field("location", url.path)
|
662
|
-
redirect.
|
669
|
+
allow(redirect).to receive(:read_body)
|
663
670
|
|
664
|
-
http_client.
|
665
|
-
http_client.
|
671
|
+
expect(http_client).to receive(:request).and_yield(redirect).and_return(redirect)
|
672
|
+
expect(http_client).to receive(:request).and_yield(http_response).and_return(http_response)
|
666
673
|
rest.fetch("cookbooks/a_cookbook") {|tmpfile| "shouldn't get here"}
|
667
674
|
end
|
668
675
|
|
669
676
|
it "passes the original block to the redirected request" do
|
670
677
|
http_redirect = Net::HTTPFound.new("1.1", "302", "bob is taking care of that one for me today")
|
671
678
|
http_redirect.add_field("location","/that-thing-is-here-now")
|
672
|
-
http_redirect.
|
679
|
+
allow(http_redirect).to receive(:read_body)
|
673
680
|
|
674
681
|
block_called = false
|
675
|
-
http_client.
|
682
|
+
allow(http_client).to receive(:request).and_yield(http_response).and_return(http_redirect, http_response)
|
676
683
|
rest.fetch("cookbooks/a_cookbook") do |tmpfile|
|
677
684
|
block_called = true
|
678
685
|
end
|