chef 12.18.31 → 13.0.118
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +15 -11
- data/README.md +13 -13
- data/Rakefile +1 -19
- data/VERSION +1 -1
- data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +1 -1
- data/acceptance/Gemfile +8 -5
- data/acceptance/Gemfile.lock +90 -81
- data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +1 -1
- data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +1 -1
- data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +4 -0
- data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +9 -8
- data/chef-universal-mingw32.gemspec +2 -3
- data/chef.gemspec +8 -7
- data/lib/chef/api_client.rb +8 -15
- data/lib/chef/api_client_v1.rb +9 -11
- data/lib/chef/application/apply.rb +8 -10
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +11 -82
- data/lib/chef/application/knife.rb +2 -2
- data/lib/chef/application/solo.rb +0 -1
- data/lib/chef/application/windows_service.rb +36 -37
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/application.rb +15 -25
- data/lib/chef/audit/audit_event_proxy.rb +2 -2
- data/lib/chef/audit/control_group_data.rb +1 -1
- data/lib/chef/blacklist.rb +81 -0
- data/lib/chef/chef_class.rb +1 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +6 -8
- data/lib/chef/chef_fs/command_line.rb +15 -16
- data/lib/chef/chef_fs/data_handler/client_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/container_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/environment_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/group_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/node_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/role_data_handler.rb +1 -1
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_pattern.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/chef_server_root_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_artifacts_dir.rb +6 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +18 -32
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +8 -10
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +28 -30
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +27 -29
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +29 -26
- data/lib/chef/chef_fs/file_system/chef_server/versioned_cookbooks_dir.rb +5 -1
- data/lib/chef/chef_fs/file_system/memory/memory_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +10 -12
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +13 -16
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +9 -13
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +2 -0
- data/lib/chef/chef_fs/file_system/repository/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/nodes_dir.rb +3 -0
- data/lib/chef/chef_fs/file_system.rb +1 -1
- data/lib/chef/chef_fs/parallelizer.rb +9 -11
- data/lib/chef/client.rb +47 -11
- data/lib/chef/config_fetcher.rb +4 -4
- data/lib/chef/constants.rb +1 -1
- data/lib/chef/cookbook/cookbook_version_loader.rb +26 -115
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/gem_installer.rb +10 -6
- data/lib/chef/cookbook/manifest_v0.rb +68 -0
- data/lib/chef/cookbook/manifest_v2.rb +41 -0
- data/lib/chef/cookbook/metadata.rb +25 -134
- data/lib/chef/cookbook/remote_file_vendor.rb +3 -3
- data/lib/chef/cookbook/synchronizer.rb +24 -21
- data/lib/chef/cookbook/syntax_check.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +91 -65
- data/lib/chef/cookbook_site_streaming_uploader.rb +7 -9
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +69 -157
- data/lib/chef/data_bag.rb +1 -7
- data/lib/chef/data_bag_item.rb +5 -10
- data/lib/chef/data_collector/messages.rb +2 -0
- data/lib/chef/data_collector/resource_report.rb +32 -4
- data/lib/chef/data_collector.rb +3 -4
- data/lib/chef/decorator/unchain.rb +0 -16
- data/lib/chef/decorator.rb +1 -1
- data/lib/chef/deprecated.rb +53 -19
- data/lib/chef/dsl/audit.rb +2 -2
- data/lib/chef/dsl/declare_resource.rb +11 -17
- data/lib/chef/dsl/platform_introspection.rb +29 -31
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/dsl/recipe.rb +1 -4
- data/lib/chef/dsl/resources.rb +4 -13
- data/lib/chef/encrypted_data_bag_item.rb +2 -2
- data/lib/chef/environment.rb +9 -16
- data/lib/chef/event_dispatch/base.rb +16 -0
- data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
- data/lib/chef/exceptions.rb +6 -10
- data/lib/chef/file_access_control/unix.rb +14 -14
- data/lib/chef/file_access_control/windows.rb +1 -1
- data/lib/chef/formatters/error_description.rb +18 -1
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +4 -5
- data/lib/chef/formatters/error_mapper.rb +6 -6
- data/lib/chef/guard_interpreter/default_guard_interpreter.rb +4 -2
- data/lib/chef/http/api_versions.rb +54 -0
- data/lib/chef/http/authenticator.rb +15 -6
- data/lib/chef/http/json_output.rb +4 -1
- data/lib/chef/http/socketless_chef_zero_client.rb +1 -0
- data/lib/chef/http/validate_content_length.rb +2 -2
- data/lib/chef/http.rb +39 -0
- data/lib/chef/json_compat.rb +7 -103
- data/lib/chef/key.rb +5 -10
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +6 -6
- data/lib/chef/knife/bootstrap.rb +6 -0
- data/lib/chef/knife/configure.rb +1 -3
- data/lib/chef/knife/configure_client.rb +1 -3
- data/lib/chef/knife/cookbook_create.rb +1 -434
- data/lib/chef/knife/cookbook_download.rb +3 -4
- data/lib/chef/knife/cookbook_show.rb +7 -3
- data/lib/chef/knife/cookbook_site_install.rb +2 -2
- data/lib/chef/knife/core/bootstrap_context.rb +8 -7
- data/lib/chef/knife/core/cookbook_scm_repo.rb +2 -2
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +2 -32
- data/lib/chef/knife/core/ui.rb +20 -27
- data/lib/chef/knife/data_bag_create.rb +6 -4
- data/lib/chef/knife/data_bag_secret_options.rb +1 -1
- data/lib/chef/knife/deps.rb +32 -34
- data/lib/chef/knife/edit.rb +1 -1
- data/lib/chef/knife/help.rb +1 -1
- data/lib/chef/knife/list.rb +1 -1
- data/lib/chef/knife/search.rb +9 -20
- data/lib/chef/knife/ssh.rb +62 -36
- data/lib/chef/knife/ssl_check.rb +1 -1
- data/lib/chef/knife/user_delete.rb +1 -1
- data/lib/chef/knife/xargs.rb +1 -1
- data/lib/chef/knife.rb +6 -7
- data/lib/chef/mash.rb +1 -1
- data/lib/chef/mixin/create_path.rb +3 -5
- data/lib/chef/mixin/from_file.rb +2 -2
- data/lib/chef/mixin/get_source_from_package.rb +2 -2
- data/lib/chef/mixin/notifying_block.rb +7 -9
- data/lib/chef/mixin/params_validate.rb +9 -8
- data/lib/chef/mixin/path_sanity.rb +17 -19
- data/lib/chef/mixin/securable.rb +1 -1
- data/lib/chef/mixin/shell_out.rb +33 -29
- data/lib/chef/mixin/unformatter.rb +2 -2
- data/lib/chef/mixin/uris.rb +4 -6
- data/lib/chef/mixin/versioned_api.rb +84 -0
- data/lib/chef/mixin/which.rb +25 -8
- data/lib/chef/mixin/windows_architecture_helper.rb +2 -2
- data/lib/chef/mixin/xml_escape.rb +3 -5
- data/lib/chef/mixins.rb +0 -1
- data/lib/chef/monkey_patches/webrick-utils.rb +1 -1
- data/lib/chef/node/attribute.rb +9 -32
- data/lib/chef/node/attribute_collections.rb +1 -19
- data/lib/chef/node/common_api.rb +5 -7
- data/lib/chef/node/immutable_collections.rb +42 -38
- data/lib/chef/node/mixin/immutablize_array.rb +1 -1
- data/lib/chef/node/mixin/immutablize_hash.rb +1 -1
- data/lib/chef/node.rb +21 -20
- data/lib/chef/node_map.rb +2 -5
- data/lib/chef/org.rb +10 -17
- data/lib/chef/platform/provider_mapping.rb +2 -169
- data/lib/chef/platform/query_helpers.rb +1 -1
- data/lib/chef/platform/rebooter.rb +1 -2
- data/lib/chef/policy_builder/expand_node_object.rb +3 -29
- data/lib/chef/policy_builder/policyfile.rb +8 -6
- data/lib/chef/property.rb +66 -80
- data/lib/chef/provider/apt_repository.rb +6 -10
- data/lib/chef/provider/apt_update.rb +1 -7
- data/lib/chef/provider/batch.rb +1 -1
- data/lib/chef/provider/breakpoint.rb +2 -2
- data/lib/chef/provider/cookbook_file.rb +3 -9
- data/lib/chef/provider/cron.rb +42 -60
- data/lib/chef/provider/deploy/revision.rb +3 -5
- data/lib/chef/provider/deploy.rb +82 -88
- data/lib/chef/provider/directory.rb +33 -37
- data/lib/chef/provider/dsc_resource.rb +23 -11
- data/lib/chef/provider/dsc_script.rb +1 -5
- data/lib/chef/provider/env/windows.rb +5 -1
- data/lib/chef/provider/env.rb +32 -30
- data/lib/chef/provider/erl_call.rb +15 -47
- data/lib/chef/provider/execute.rb +7 -8
- data/lib/chef/provider/file.rb +49 -61
- data/lib/chef/provider/git.rb +56 -60
- data/lib/chef/provider/group.rb +1 -7
- data/lib/chef/provider/http_request.rb +37 -41
- data/lib/chef/provider/ifconfig/redhat.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +0 -6
- data/lib/chef/provider/launchd.rb +6 -2
- data/lib/chef/provider/link.rb +51 -55
- data/lib/chef/provider/log.rb +3 -7
- data/lib/chef/provider/lwrp_base.rb +0 -9
- data/lib/chef/provider/mdadm.rb +25 -33
- data/lib/chef/provider/mount/aix.rb +2 -2
- data/lib/chef/provider/mount/mount.rb +2 -2
- data/lib/chef/provider/mount.rb +1 -5
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/ohai.rb +1 -7
- data/lib/chef/provider/osx_profile.rb +24 -29
- data/lib/chef/provider/package/aix.rb +55 -53
- data/lib/chef/provider/package/apt.rb +15 -13
- data/lib/chef/provider/package/cab.rb +48 -20
- data/lib/chef/provider/package/chocolatey.rb +9 -10
- data/lib/chef/provider/package/dnf/dnf_helper.py +1 -1
- data/lib/chef/provider/package/dnf/python_helper.rb +63 -26
- data/lib/chef/provider/package/dnf/version.rb +1 -1
- data/lib/chef/provider/package/dnf.rb +21 -19
- data/lib/chef/provider/package/dpkg.rb +8 -9
- data/lib/chef/provider/package/freebsd/base.rb +10 -10
- data/lib/chef/provider/package/freebsd/pkg.rb +15 -15
- data/lib/chef/provider/package/freebsd/pkgng.rb +13 -15
- data/lib/chef/provider/package/freebsd/port.rb +7 -7
- data/lib/chef/provider/package/homebrew.rb +11 -10
- data/lib/chef/provider/package/ips.rb +18 -24
- data/lib/chef/provider/package/macports.rb +23 -23
- data/lib/chef/provider/package/msu.rb +11 -12
- data/lib/chef/provider/package/openbsd.rb +25 -22
- data/lib/chef/provider/package/pacman.rb +16 -17
- data/lib/chef/provider/package/paludis.rb +26 -27
- data/lib/chef/provider/package/portage.rb +22 -23
- data/lib/chef/provider/package/powershell.rb +17 -17
- data/lib/chef/provider/package/rpm.rb +25 -26
- data/lib/chef/provider/package/rubygems.rb +64 -62
- data/lib/chef/provider/package/smartos.rb +16 -16
- data/lib/chef/provider/package/solaris.rb +44 -45
- data/lib/chef/provider/package/windows/exe.rb +6 -6
- data/lib/chef/provider/package/windows/msi.rb +7 -7
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -3
- data/lib/chef/provider/package/windows.rb +3 -3
- data/lib/chef/provider/package/yum/rpm_utils.rb +34 -34
- data/lib/chef/provider/package/yum/yum_cache.rb +12 -12
- data/lib/chef/provider/package/yum.rb +319 -269
- data/lib/chef/provider/package/zypper.rb +10 -20
- data/lib/chef/provider/package.rb +71 -63
- data/lib/chef/provider/powershell_script.rb +15 -7
- data/lib/chef/provider/reboot.rb +10 -14
- data/lib/chef/provider/registry_key.rb +39 -43
- data/lib/chef/provider/remote_directory.rb +3 -15
- data/lib/chef/provider/remote_file.rb +3 -9
- data/lib/chef/provider/route.rb +1 -7
- data/lib/chef/provider/ruby_block.rb +4 -8
- data/lib/chef/provider/script.rb +42 -6
- data/lib/chef/provider/service/aix.rb +1 -5
- data/lib/chef/provider/service/debian.rb +15 -21
- data/lib/chef/provider/service/freebsd.rb +0 -1
- data/lib/chef/provider/service/gentoo.rb +0 -1
- data/lib/chef/provider/service/init.rb +0 -1
- data/lib/chef/provider/service/insserv.rb +2 -2
- data/lib/chef/provider/service/openbsd.rb +0 -1
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/simple.rb +0 -5
- data/lib/chef/provider/service/solaris.rb +5 -4
- data/lib/chef/provider/service/systemd.rb +1 -1
- data/lib/chef/provider/service/upstart.rb +10 -12
- data/lib/chef/provider/service/windows.rb +1 -5
- data/lib/chef/provider/service.rb +51 -58
- data/lib/chef/provider/subversion.rb +40 -46
- data/lib/chef/provider/systemd_unit.rb +2 -0
- data/lib/chef/provider/template/content.rb +24 -1
- data/lib/chef/provider/template.rb +3 -9
- data/lib/chef/provider/user/dscl.rb +3 -3
- data/lib/chef/provider/user/linux.rb +6 -5
- data/lib/chef/provider/user/pw.rb +4 -10
- data/lib/chef/provider/user/solaris.rb +2 -2
- data/lib/chef/provider/user/useradd.rb +5 -5
- data/lib/chef/provider/user.rb +43 -59
- data/lib/chef/provider/whyrun_safe_ruby_block.rb +4 -4
- data/lib/chef/provider/windows_task.rb +418 -0
- data/lib/chef/provider/yum_repository.rb +3 -6
- data/lib/chef/provider.rb +63 -115
- data/lib/chef/provider_resolver.rb +8 -34
- data/lib/chef/providers.rb +1 -1
- data/lib/chef/recipe.rb +9 -1
- data/lib/chef/resource/action_class.rb +13 -17
- data/lib/chef/resource/apt_repository.rb +0 -1
- data/lib/chef/resource/apt_update.rb +3 -1
- data/lib/chef/resource/chef_gem.rb +4 -11
- data/lib/chef/resource/chocolatey_package.rb +4 -1
- data/lib/chef/resource/dnf_package.rb +6 -3
- data/lib/chef/resource/dsc_resource.rb +9 -1
- data/lib/chef/resource/execute.rb +66 -19
- data/lib/chef/resource/file/verification/systemd_unit.rb +67 -0
- data/lib/chef/resource/file/verification.rb +2 -7
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +16 -2
- data/lib/chef/resource/launchd.rb +3 -3
- data/lib/chef/resource/lwrp_base.rb +0 -2
- data/lib/chef/resource/mount.rb +5 -12
- data/lib/chef/resource/package.rb +2 -2
- data/lib/chef/resource/powershell_script.rb +1 -1
- data/lib/chef/resource/registry_key.rb +1 -1
- data/lib/chef/resource/script.rb +8 -34
- data/lib/chef/resource/service.rb +15 -13
- data/lib/chef/resource/systemd_unit.rb +5 -0
- data/lib/chef/resource/user/aix_user.rb +1 -1
- data/lib/chef/resource/user/dscl_user.rb +1 -1
- data/lib/chef/resource/user/linux_user.rb +1 -10
- data/lib/chef/resource/user/pw_user.rb +1 -1
- data/lib/chef/resource/user/solaris_user.rb +1 -1
- data/lib/chef/resource/user/windows_user.rb +1 -1
- data/lib/chef/resource/user.rb +1 -19
- data/lib/chef/resource/windows_package.rb +4 -1
- data/lib/chef/resource/windows_task.rb +237 -0
- data/lib/chef/resource/yum_package.rb +13 -4
- data/lib/chef/resource/yum_repository.rb +0 -1
- data/lib/chef/resource/zypper_package.rb +2 -0
- data/lib/chef/resource.rb +90 -202
- data/lib/chef/resource_builder.rb +1 -65
- data/lib/chef/resource_collection/resource_collection_serialization.rb +11 -4
- data/lib/chef/resource_collection/resource_list.rb +6 -0
- data/lib/chef/resource_collection/resource_set.rb +44 -17
- data/lib/chef/resource_collection.rb +10 -0
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resource_resolver.rb +1 -25
- data/lib/chef/resources.rb +1 -1
- data/lib/chef/role.rb +0 -6
- data/lib/chef/run_context/cookbook_compiler.rb +49 -5
- data/lib/chef/run_context.rb +4 -25
- data/lib/chef/run_list/run_list_item.rb +1 -1
- data/lib/chef/run_list/versioned_recipe_list.rb +14 -12
- data/lib/chef/search/query.rb +26 -31
- data/lib/chef/server_api.rb +2 -0
- data/lib/chef/{resource/easy_install_package.rb → server_api_versions.rb} +18 -10
- data/lib/chef/shell/ext.rb +3 -3
- data/lib/chef/shell/shell_session.rb +14 -4
- data/lib/chef/shell.rb +32 -7
- data/lib/chef/user.rb +9 -16
- data/lib/chef/user_v1.rb +9 -16
- data/lib/chef/util/diff.rb +1 -1
- data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
- data/lib/chef/util/selinux.rb +1 -1
- data/lib/chef/util/windows/net_group.rb +18 -30
- data/lib/chef/util/windows/net_use.rb +7 -11
- data/lib/chef/util/windows/net_user.rb +12 -18
- data/lib/chef/util/windows/volume.rb +9 -15
- data/lib/chef/version.rb +1 -1
- data/lib/chef/version_class.rb +1 -1
- data/lib/chef/win32/api/file.rb +25 -31
- data/lib/chef/win32/api/installer.rb +2 -2
- data/lib/chef/win32/api.rb +4 -6
- data/lib/chef/win32/file.rb +4 -6
- data/lib/chef/win32/registry.rb +9 -9
- data/lib/chef/win32/security/acl.rb +2 -2
- data/lib/chef/win32/security/sid.rb +5 -0
- data/lib/chef/win32/security.rb +2 -2
- data/lib/chef/win32/unicode.rb +2 -2
- data/lib/chef/win32/version.rb +1 -1
- data/lib/chef.rb +1 -2
- data/spec/data/cookbooks/openldap/templates/default/openldap_nested_variable_stuff.erb +1 -0
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/data/lwrp/providers/inline_compiler.rb +0 -2
- data/spec/data/lwrp/resources/buck_passer.rb +5 -0
- data/spec/data/lwrp/resources/buck_passer_2.rb +3 -0
- data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +3 -0
- data/spec/data/lwrp/resources/inline_compiler.rb +3 -0
- data/spec/data/lwrp/resources/monkey_name_printer.rb +5 -0
- data/spec/data/lwrp/resources/paint_drying_watcher.rb +3 -0
- data/spec/data/lwrp/resources/thumb_twiddler.rb +3 -0
- data/spec/data/prefer_metadata_json/metadata.json +51 -0
- data/spec/data/prefer_metadata_json/metadata.rb +6 -0
- data/spec/data/prefer_metadata_json/recipes/default.rb +0 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes/default.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_attr/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_attr/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipe.rb +3 -0
- data/spec/data/root_alias_cookbooks/dup_recipe/recipes/default.rb +3 -0
- data/spec/data/root_alias_cookbooks/simple/attributes.rb +1 -0
- data/spec/data/root_alias_cookbooks/simple/metadata.rb +2 -0
- data/spec/data/root_alias_cookbooks/simple/recipe.rb +3 -0
- data/spec/data/shef-config.rb +11 -10
- data/spec/functional/knife/ssh_spec.rb +34 -6
- data/spec/functional/rebooter_spec.rb +1 -0
- data/spec/functional/resource/bash_spec.rb +11 -45
- data/spec/functional/resource/batch_spec.rb +5 -1
- data/spec/functional/resource/cron_spec.rb +2 -2
- data/spec/functional/resource/dsc_script_spec.rb +2 -4
- data/spec/functional/resource/execute_spec.rb +17 -0
- data/spec/functional/resource/link_spec.rb +3 -3
- data/spec/functional/resource/template_spec.rb +33 -0
- data/spec/functional/resource/user/dscl_spec.rb +2 -4
- data/spec/functional/root_alias_spec.rb +78 -0
- data/spec/functional/shell_spec.rb +38 -40
- data/spec/integration/client/client_spec.rb +109 -16
- data/spec/integration/client/exit_code_spec.rb +1 -105
- data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -97
- data/spec/integration/knife/cookbook_download_spec.rb +0 -24
- data/spec/integration/knife/cookbook_show_spec.rb +12 -23
- data/spec/integration/knife/deps_spec.rb +5 -9
- data/spec/integration/knife/search_node_spec.rb +39 -0
- data/spec/integration/knife/serve_spec.rb +58 -22
- data/spec/integration/knife/upload_spec.rb +3 -11
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +7 -11
- data/spec/integration/recipes/notifies_spec.rb +60 -0
- data/spec/integration/recipes/recipe_dsl_spec.rb +76 -226
- data/spec/integration/recipes/resource_action_spec.rb +37 -30
- data/spec/spec_helper.rb +7 -0
- data/spec/support/chef_helpers.rb +5 -7
- data/spec/support/platform_helpers.rb +10 -3
- data/spec/support/platforms/prof/gc.rb +4 -6
- data/spec/support/shared/context/client.rb +9 -2
- data/spec/support/shared/functional/execute_resource.rb +150 -0
- data/spec/support/shared/functional/windows_script.rb +74 -4
- data/spec/support/shared/integration/knife_support.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +37 -9
- data/spec/support/shared/unit/provider/file.rb +10 -0
- data/spec/support/shared/unit/script_resource.rb +1 -9
- data/spec/unit/application/exit_code_spec.rb +4 -89
- data/spec/unit/application_spec.rb +39 -29
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
- data/spec/unit/client_spec.rb +72 -31
- data/spec/unit/config_fetcher_spec.rb +2 -2
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +31 -19
- data/spec/unit/cookbook/file_vendor_spec.rb +20 -9
- data/spec/unit/cookbook/gem_installer_spec.rb +85 -0
- data/spec/unit/cookbook/manifest_v0_spec.rb +133 -0
- data/spec/unit/cookbook/manifest_v2_spec.rb +70 -0
- data/spec/unit/cookbook/metadata_spec.rb +29 -108
- data/spec/unit/cookbook/synchronizer_spec.rb +5 -6
- data/spec/unit/cookbook/syntax_check_spec.rb +9 -2
- data/spec/unit/cookbook_loader_spec.rb +17 -19
- data/spec/unit/cookbook_manifest_spec.rb +12 -44
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -4
- data/spec/unit/cookbook_spec.rb +10 -14
- data/spec/unit/cookbook_uploader_spec.rb +1 -1
- data/spec/unit/cookbook_version_file_specificity_spec.rb +55 -28
- data/spec/unit/cookbook_version_spec.rb +19 -128
- data/spec/unit/data_bag_item_spec.rb +4 -0
- data/spec/unit/data_collector/messages_spec.rb +137 -0
- data/spec/unit/data_collector/resource_report_spec.rb +145 -0
- data/spec/unit/deprecation_spec.rb +0 -14
- data/spec/unit/encrypted_data_bag_item_spec.rb +6 -6
- data/spec/unit/formatters/error_description_spec.rb +52 -7
- data/spec/unit/http/api_versions_spec.rb +79 -0
- data/spec/unit/http/authenticator_spec.rb +20 -0
- data/spec/unit/http/socketless_chef_zero_client_spec.rb +2 -1
- data/spec/unit/json_compat_spec.rb +0 -32
- data/spec/unit/knife/bootstrap_spec.rb +34 -0
- data/spec/unit/knife/configure_client_spec.rb +0 -2
- data/spec/unit/knife/cookbook_create_spec.rb +1 -220
- data/spec/unit/knife/cookbook_download_spec.rb +46 -28
- data/spec/unit/knife/cookbook_show_spec.rb +42 -9
- data/spec/unit/knife/core/bootstrap_context_spec.rb +17 -0
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +1 -1
- data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -6
- data/spec/unit/knife/core/ui_spec.rb +21 -11
- data/spec/unit/knife/data_bag_create_spec.rb +65 -45
- data/spec/unit/knife/ssh_spec.rb +34 -36
- data/spec/unit/knife_spec.rb +2 -2
- data/spec/unit/lwrp_spec.rb +38 -127
- data/spec/unit/mixin/path_sanity_spec.rb +7 -7
- data/spec/unit/mixin/shell_out_spec.rb +18 -84
- data/spec/unit/mixin/versioned_api_spec.rb +128 -0
- data/spec/unit/mixin/which.rb +160 -0
- data/spec/unit/node/attribute_spec.rb +65 -33
- data/spec/unit/node/immutable_collections_spec.rb +104 -1
- data/spec/unit/node_map_spec.rb +1 -23
- data/spec/unit/node_spec.rb +81 -98
- data/spec/unit/policy_builder/expand_node_object_spec.rb +2 -27
- data/spec/unit/policy_builder/policyfile_spec.rb +12 -12
- data/spec/unit/property/validation_spec.rb +51 -69
- data/spec/unit/property_spec.rb +105 -125
- data/spec/unit/provider/apt_repository_spec.rb +33 -27
- data/spec/unit/provider/cron_spec.rb +15 -39
- data/spec/unit/provider/deploy_spec.rb +1 -1
- data/spec/unit/provider/directory_spec.rb +10 -0
- data/spec/unit/provider/dsc_resource_spec.rb +175 -0
- data/spec/unit/provider/erl_call_spec.rb +5 -13
- data/spec/unit/provider/execute_spec.rb +3 -14
- data/spec/unit/provider/launchd_spec.rb +2 -2
- data/spec/unit/provider/package/aix_spec.rb +22 -22
- data/spec/unit/provider/package/apt_spec.rb +37 -27
- data/spec/unit/provider/package/cab_spec.rb +59 -5
- data/{lib-backcompat/chef/chef_fs/file_system/repository/file_system_root_dir.rb → spec/unit/provider/package/dnf/python_helper_spec.rb} +10 -15
- data/spec/unit/provider/package/dpkg_spec.rb +16 -16
- data/spec/unit/provider/package/freebsd/pkg_spec.rb +15 -15
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +9 -9
- data/spec/unit/provider/package/freebsd/port_spec.rb +9 -9
- data/spec/unit/provider/package/homebrew_spec.rb +9 -9
- data/spec/unit/provider/package/ips_spec.rb +37 -31
- data/spec/unit/provider/package/macports_spec.rb +10 -10
- data/spec/unit/provider/package/openbsd_spec.rb +10 -10
- data/spec/unit/provider/package/pacman_spec.rb +6 -6
- data/spec/unit/provider/package/paludis_spec.rb +7 -7
- data/spec/unit/provider/package/portage_spec.rb +6 -7
- data/spec/unit/provider/package/rpm_spec.rb +23 -23
- data/spec/unit/provider/package/rubygems_spec.rb +135 -46
- data/spec/unit/provider/package/solaris_spec.rb +15 -15
- data/spec/unit/provider/package/windows/msi_spec.rb +1 -1
- data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +25 -0
- data/spec/unit/provider/package/windows_spec.rb +2 -1
- data/spec/unit/provider/package/yum_spec.rb +58 -50
- data/spec/unit/provider/package/zypper_spec.rb +54 -97
- data/spec/unit/provider/package_spec.rb +8 -0
- data/spec/unit/provider/powershell_script_spec.rb +14 -4
- data/spec/unit/provider/remote_file/sftp_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +7 -1
- data/spec/unit/provider/script_spec.rb +49 -6
- data/spec/unit/provider/service/debian_service_spec.rb +14 -20
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +37 -1
- data/spec/unit/provider/service/upstart_service_spec.rb +12 -25
- data/spec/unit/provider/subversion_spec.rb +2 -2
- data/spec/unit/provider/user/linux_spec.rb +5 -43
- data/spec/unit/provider/user/pw_spec.rb +7 -27
- data/spec/unit/provider/windows_task_spec.rb +392 -0
- data/spec/unit/provider_resolver_spec.rb +0 -1
- data/spec/unit/provider_spec.rb +10 -3
- data/spec/unit/recipe_spec.rb +3 -172
- data/spec/unit/resource/chef_gem_spec.rb +16 -62
- data/spec/unit/resource/conditional_spec.rb +4 -4
- data/spec/unit/resource/cookbook_file_spec.rb +2 -2
- data/spec/unit/resource/cron_spec.rb +1 -1
- data/spec/unit/resource/deploy_spec.rb +4 -4
- data/spec/unit/resource/directory_spec.rb +2 -2
- data/spec/unit/resource/dsc_resource_spec.rb +6 -0
- data/spec/unit/resource/env_spec.rb +1 -1
- data/spec/unit/resource/execute_spec.rb +215 -1
- data/spec/unit/resource/file/verification/systemd_unit_spec.rb +103 -0
- data/spec/unit/resource/file/verification_spec.rb +8 -14
- data/spec/unit/resource/file_spec.rb +3 -3
- data/spec/unit/resource/freebsd_package_spec.rb +2 -2
- data/spec/unit/resource/group_spec.rb +2 -2
- data/spec/unit/resource/ifconfig_spec.rb +1 -1
- data/spec/unit/resource/link_spec.rb +2 -2
- data/spec/unit/resource/mdadm_spec.rb +1 -1
- data/spec/unit/resource/mount_spec.rb +3 -3
- data/spec/unit/resource/ohai_spec.rb +1 -1
- data/spec/unit/resource/package_spec.rb +14 -4
- data/spec/unit/resource/registry_key_spec.rb +2 -2
- data/spec/unit/resource/remote_directory_spec.rb +2 -2
- data/spec/unit/resource/remote_file_spec.rb +2 -2
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/scm_spec.rb +2 -2
- data/spec/unit/resource/script_spec.rb +1 -1
- data/spec/unit/resource/service_spec.rb +25 -5
- data/spec/unit/resource/systemd_unit_spec.rb +1 -1
- data/spec/unit/resource/template_spec.rb +2 -2
- data/spec/unit/resource/user_spec.rb +6 -6
- data/spec/unit/resource/windows_task_spec.rb +213 -0
- data/spec/unit/resource/yum_package_spec.rb +42 -1
- data/spec/unit/resource_collection/resource_set_spec.rb +46 -1
- data/spec/unit/resource_collection_spec.rb +4 -3
- data/spec/unit/resource_reporter_spec.rb +6 -6
- data/spec/unit/resource_spec.rb +55 -71
- data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -3
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +7 -4
- data/spec/unit/runner_spec.rb +10 -28
- data/spec/unit/search/query_spec.rb +32 -34
- data/spec/unit/server_api_versions_spec.rb +44 -0
- data/spec/unit/shell/shell_session_spec.rb +33 -2
- data/spec/unit/util/selinux_spec.rb +3 -14
- data/spec/unit/win32/error_spec.rb +67 -0
- data/spec/unit/win32/security_spec.rb +66 -0
- data/tasks/bundle.rb +36 -52
- data/tasks/changelog.rb +1 -1
- data/tasks/dependencies.rb +54 -52
- data/tasks/version.rb +41 -0
- metadata +91 -76
- data/lib/chef/deprecation/mixin/template.rb +0 -48
- data/lib/chef/deprecation/provider/cookbook_file.rb +0 -54
- data/lib/chef/deprecation/provider/file.rb +0 -198
- data/lib/chef/deprecation/provider/remote_directory.rb +0 -52
- data/lib/chef/deprecation/provider/remote_file.rb +0 -85
- data/lib/chef/deprecation/provider/template.rb +0 -63
- data/lib/chef/dsl/method_missing.rb +0 -75
- data/lib/chef/knife/cookbook_site_vendor.rb +0 -46
- data/lib/chef/knife/core/custom_manifest_loader.rb +0 -69
- data/lib/chef/mixin/command/unix.rb +0 -220
- data/lib/chef/mixin/command/windows.rb +0 -71
- data/lib/chef/mixin/command.rb +0 -194
- data/lib/chef/monkey_patches/net-ssh-multi.rb +0 -141
- data/lib/chef/provider/package/easy_install.rb +0 -135
- data/lib/chef/rest.rb +0 -210
- data/lib/chef/shell_out.rb +0 -13
- data/lib/chef/tasks/chef_repo.rake +0 -200
- data/lib-backcompat/chef/chef_fs/file_system/acl_entry.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/already_exists_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/chef_server_root_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/cookbook_frozen_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/default_environment_cannot_be_modified_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/file_system_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/must_delete_recursively_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/not_found_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_failed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/operation_not_allowed_error.rb +0 -20
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_acls_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_client_keys_dir.rb +0 -5
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_entry.rb +0 -6
- data/lib-backcompat/chef/chef_fs/file_system/repository/chef_repository_file_system_policies_dir.rb +0 -5
- data/spec/functional/rest_spec.rb +0 -95
- data/spec/unit/knife/core/custom_manifest_loader_spec.rb +0 -41
- data/spec/unit/lib_backcompat_spec.rb +0 -34
- data/spec/unit/mixin/command_spec.rb +0 -107
- data/spec/unit/platform_spec.rb +0 -242
- data/spec/unit/provider/package/easy_install_spec.rb +0 -114
- data/spec/unit/resource/easy_install_package_spec.rb +0 -39
- data/spec/unit/rest/auth_credentials_spec.rb +0 -292
- data/spec/unit/rest_spec.rb +0 -753
- data/spec/unit/shell_out_spec.rb +0 -18
- data/tasks/bin/bundle-platform +0 -20
- data/tasks/bin/bundle-platform.bat +0 -2
- data/tasks/bin/bundler_patch.rb +0 -27
- data/tasks/bin/gem-version-diff +0 -37
- data/tasks/bundle_util.rb +0 -110
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
3
|
# Author:: AJ Christensen (<aj@chef.io>)
|
|
4
|
-
# Copyright:: Copyright 2008-
|
|
4
|
+
# Copyright:: Copyright 2008-2017, Chef Software Inc.
|
|
5
5
|
# License:: Apache License, Version 2.0
|
|
6
6
|
#
|
|
7
7
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -208,7 +208,7 @@ describe Chef::Node::Attribute do
|
|
|
208
208
|
end
|
|
209
209
|
|
|
210
210
|
describe "when debugging attributes" do
|
|
211
|
-
|
|
211
|
+
it "gives the value at each level of precedence for a path spec" do
|
|
212
212
|
@attributes.default[:foo][:bar] = "default"
|
|
213
213
|
@attributes.env_default[:foo][:bar] = "env_default"
|
|
214
214
|
@attributes.role_default[:foo][:bar] = "role_default"
|
|
@@ -219,9 +219,7 @@ describe Chef::Node::Attribute do
|
|
|
219
219
|
@attributes.env_override[:foo][:bar] = "env_override"
|
|
220
220
|
@attributes.force_override[:foo][:bar] = "force_override"
|
|
221
221
|
@attributes.automatic[:foo][:bar] = "automatic"
|
|
222
|
-
end
|
|
223
222
|
|
|
224
|
-
it "gives the value at each level of precedence for a path spec" do
|
|
225
223
|
expected = [
|
|
226
224
|
%w{default default},
|
|
227
225
|
%w{env_default env_default},
|
|
@@ -236,6 +234,25 @@ describe Chef::Node::Attribute do
|
|
|
236
234
|
]
|
|
237
235
|
expect(@attributes.debug_value(:foo, :bar)).to eq(expected)
|
|
238
236
|
end
|
|
237
|
+
|
|
238
|
+
it "works through arrays" do
|
|
239
|
+
@attributes.default["foo"] = [ { "bar" => "baz" } ]
|
|
240
|
+
|
|
241
|
+
expect(@attributes.debug_value(:foo, 0)).to eq(
|
|
242
|
+
[
|
|
243
|
+
["default", { "bar" => "baz" }],
|
|
244
|
+
["env_default", :not_present],
|
|
245
|
+
["role_default", :not_present],
|
|
246
|
+
["force_default", :not_present],
|
|
247
|
+
["normal", :not_present],
|
|
248
|
+
["override", :not_present],
|
|
249
|
+
["role_override", :not_present],
|
|
250
|
+
["env_override", :not_present],
|
|
251
|
+
["force_override", :not_present],
|
|
252
|
+
["automatic", :not_present],
|
|
253
|
+
]
|
|
254
|
+
)
|
|
255
|
+
end
|
|
239
256
|
end
|
|
240
257
|
|
|
241
258
|
describe "when fetching values based on precedence" do
|
|
@@ -459,8 +476,7 @@ describe Chef::Node::Attribute do
|
|
|
459
476
|
expect(@attributes.default["foo"]).to eql({ "bar" => [ "fizz" ] })
|
|
460
477
|
end
|
|
461
478
|
|
|
462
|
-
it "mutating strings should not mutate the attributes" do
|
|
463
|
-
pending "this is a bug that should be fixed"
|
|
479
|
+
it "mutating strings should not mutate the attributes in a hash" do
|
|
464
480
|
@attributes.default["foo"]["bar"]["baz"] = "fizz"
|
|
465
481
|
hash = @attributes["foo"].to_hash
|
|
466
482
|
expect(hash).to eql({ "bar" => { "baz" => "fizz" } })
|
|
@@ -468,6 +484,15 @@ describe Chef::Node::Attribute do
|
|
|
468
484
|
expect(hash).to eql({ "bar" => { "baz" => "fizzbuzz" } })
|
|
469
485
|
expect(@attributes.default["foo"]).to eql({ "bar" => { "baz" => "fizz" } })
|
|
470
486
|
end
|
|
487
|
+
|
|
488
|
+
it "mutating array elements should not mutate the attributes" do
|
|
489
|
+
@attributes.default["foo"]["bar"] = [ "fizz" ]
|
|
490
|
+
hash = @attributes["foo"].to_hash
|
|
491
|
+
expect(hash).to eql({ "bar" => [ "fizz" ] })
|
|
492
|
+
hash["bar"][0] << "buzz"
|
|
493
|
+
expect(hash).to eql({ "bar" => [ "fizzbuzz" ] })
|
|
494
|
+
expect(@attributes.default["foo"]).to eql({ "bar" => [ "fizz" ] })
|
|
495
|
+
end
|
|
471
496
|
end
|
|
472
497
|
|
|
473
498
|
describe "dup" do
|
|
@@ -475,6 +500,24 @@ describe Chef::Node::Attribute do
|
|
|
475
500
|
@attributes.default[:foo] = %w{foo bar baz} + Array(1..3) + [nil, true, false, [ "el", 0, nil ] ]
|
|
476
501
|
@attributes.default[:foo].dup
|
|
477
502
|
end
|
|
503
|
+
|
|
504
|
+
it "mutating strings should not mutate the attributes in a hash" do
|
|
505
|
+
@attributes.default["foo"]["bar"]["baz"] = "fizz"
|
|
506
|
+
hash = @attributes["foo"].dup
|
|
507
|
+
expect(hash).to eql({ "bar" => { "baz" => "fizz" } })
|
|
508
|
+
hash["bar"]["baz"] << "buzz"
|
|
509
|
+
expect(hash).to eql({ "bar" => { "baz" => "fizzbuzz" } })
|
|
510
|
+
expect(@attributes.default["foo"]).to eql({ "bar" => { "baz" => "fizz" } })
|
|
511
|
+
end
|
|
512
|
+
|
|
513
|
+
it "mutating array elements should not mutate the attributes" do
|
|
514
|
+
@attributes.default["foo"]["bar"] = [ "fizz" ]
|
|
515
|
+
hash = @attributes["foo"].dup
|
|
516
|
+
expect(hash).to eql({ "bar" => [ "fizz" ] })
|
|
517
|
+
hash["bar"][0] << "buzz"
|
|
518
|
+
expect(hash).to eql({ "bar" => [ "fizzbuzz" ] })
|
|
519
|
+
expect(@attributes.default["foo"]).to eql({ "bar" => [ "fizz" ] })
|
|
520
|
+
end
|
|
478
521
|
end
|
|
479
522
|
|
|
480
523
|
describe "has_key?" do
|
|
@@ -490,11 +533,6 @@ describe Chef::Node::Attribute do
|
|
|
490
533
|
expect(@attributes.has_key?("does_not_exist_at_all")).to eq(false)
|
|
491
534
|
end
|
|
492
535
|
|
|
493
|
-
it "should return true if an attribute exists but is set to nil using dot notation" do
|
|
494
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
495
|
-
expect(@attributes.music.deeper.has_key?("gates_of_ishtar")).to eq(true)
|
|
496
|
-
end
|
|
497
|
-
|
|
498
536
|
it "should return true if an attribute exists but is set to false" do
|
|
499
537
|
@attributes.has_key?("music")
|
|
500
538
|
expect(@attributes["music"].has_key?("apophis")).to eq(true)
|
|
@@ -530,19 +568,6 @@ describe Chef::Node::Attribute do
|
|
|
530
568
|
|
|
531
569
|
end
|
|
532
570
|
|
|
533
|
-
describe "method_missing" do
|
|
534
|
-
it "should behave like a [] lookup" do
|
|
535
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
536
|
-
expect(@attributes.music.mastodon).to eq("rocks")
|
|
537
|
-
end
|
|
538
|
-
|
|
539
|
-
it "should allow the last method to set a value if it has an = sign on the end" do
|
|
540
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
541
|
-
@attributes.normal.music.mastodon = %w{dream still shining}
|
|
542
|
-
expect(@attributes.normal.music.mastodon).to eq(%w{dream still shining})
|
|
543
|
-
end
|
|
544
|
-
end
|
|
545
|
-
|
|
546
571
|
describe "keys" do
|
|
547
572
|
before(:each) do
|
|
548
573
|
@attributes = Chef::Node::Attribute.new(
|
|
@@ -1109,25 +1134,25 @@ describe Chef::Node::Attribute do
|
|
|
1109
1134
|
describe "when setting a component attribute to a new value" do
|
|
1110
1135
|
it "converts the input in to a VividMash tree (default)" do
|
|
1111
1136
|
@attributes.default = {}
|
|
1112
|
-
@attributes.default
|
|
1137
|
+
@attributes.default["foo"] = "bar"
|
|
1113
1138
|
expect(@attributes.merged_attributes[:foo]).to eq("bar")
|
|
1114
1139
|
end
|
|
1115
1140
|
|
|
1116
1141
|
it "converts the input in to a VividMash tree (normal)" do
|
|
1117
1142
|
@attributes.normal = {}
|
|
1118
|
-
@attributes.normal
|
|
1143
|
+
@attributes.normal["foo"] = "bar"
|
|
1119
1144
|
expect(@attributes.merged_attributes[:foo]).to eq("bar")
|
|
1120
1145
|
end
|
|
1121
1146
|
|
|
1122
1147
|
it "converts the input in to a VividMash tree (override)" do
|
|
1123
1148
|
@attributes.override = {}
|
|
1124
|
-
@attributes.override
|
|
1149
|
+
@attributes.override["foo"] = "bar"
|
|
1125
1150
|
expect(@attributes.merged_attributes[:foo]).to eq("bar")
|
|
1126
1151
|
end
|
|
1127
1152
|
|
|
1128
1153
|
it "converts the input in to a VividMash tree (automatic)" do
|
|
1129
1154
|
@attributes.automatic = {}
|
|
1130
|
-
@attributes.automatic
|
|
1155
|
+
@attributes.automatic["foo"] = "bar"
|
|
1131
1156
|
expect(@attributes.merged_attributes[:foo]).to eq("bar")
|
|
1132
1157
|
end
|
|
1133
1158
|
end
|
|
@@ -1170,11 +1195,6 @@ describe Chef::Node::Attribute do
|
|
|
1170
1195
|
it "raises an error when using []=" do
|
|
1171
1196
|
expect { @attributes[:new_key] = "new value" }.to raise_error(Chef::Exceptions::ImmutableAttributeModification)
|
|
1172
1197
|
end
|
|
1173
|
-
|
|
1174
|
-
it "raises an error when using `attr=value`" do
|
|
1175
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
1176
|
-
expect { @attributes.new_key = "new value" }.to raise_error(Chef::Exceptions::ImmutableAttributeModification)
|
|
1177
|
-
end
|
|
1178
1198
|
end
|
|
1179
1199
|
|
|
1180
1200
|
describe "deeply converting values" do
|
|
@@ -1241,4 +1261,16 @@ describe Chef::Node::Attribute do
|
|
|
1241
1261
|
@attributes.default["foo"]["bar"]["baz"] = "quux"
|
|
1242
1262
|
end
|
|
1243
1263
|
end
|
|
1264
|
+
|
|
1265
|
+
describe "frozen immutable strings" do
|
|
1266
|
+
it "strings in hashes should be frozen" do
|
|
1267
|
+
@attributes.default["foo"]["bar"]["baz"] = "fizz"
|
|
1268
|
+
expect { @attributes["foo"]["bar"]["baz"] << "buzz" }.to raise_error(RuntimeError, "can't modify frozen String")
|
|
1269
|
+
end
|
|
1270
|
+
|
|
1271
|
+
it "strings in arrays should be frozen" do
|
|
1272
|
+
@attributes.default["foo"]["bar"] = [ "fizz" ]
|
|
1273
|
+
expect { @attributes["foo"]["bar"][0] << "buzz" }.to raise_error(RuntimeError, "can't modify frozen String")
|
|
1274
|
+
end
|
|
1275
|
+
end
|
|
1244
1276
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Daniel DeLeo (<dan@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2012-
|
|
3
|
+
# Copyright:: Copyright 2012-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -78,7 +78,58 @@ describe Chef::Node::ImmutableMash do
|
|
|
78
78
|
it "should allow mutation" do
|
|
79
79
|
expect { @copy["m"] = "m" }.not_to raise_error
|
|
80
80
|
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
describe "dup" do
|
|
84
|
+
before do
|
|
85
|
+
@copy = @immutable_mash.dup
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
it "converts an immutable mash to a new mutable hash" do
|
|
89
|
+
expect(@copy).to be_instance_of(Mash)
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
it "converts an immutable nested mash to a new mutable hash" do
|
|
93
|
+
expect(@copy["top_level_4"]["level2"]).to be_instance_of(Mash)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "converts an immutable nested array to a new mutable array" do
|
|
97
|
+
expect(@copy["top_level_2"]).to be_instance_of(Array)
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
it "should create a mash with the same content" do
|
|
101
|
+
expect(@copy).to eq(@immutable_mash)
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "should allow mutation" do
|
|
105
|
+
expect { @copy["m"] = "m" }.not_to raise_error
|
|
106
|
+
end
|
|
107
|
+
end
|
|
81
108
|
|
|
109
|
+
describe "to_h" do
|
|
110
|
+
before do
|
|
111
|
+
@copy = @immutable_mash.to_h
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
it "converts an immutable mash to a new mutable hash" do
|
|
115
|
+
expect(@copy).to be_instance_of(Hash)
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
it "converts an immutable nested mash to a new mutable hash" do
|
|
119
|
+
expect(@copy["top_level_4"]["level2"]).to be_instance_of(Hash)
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it "converts an immutable nested array to a new mutable array" do
|
|
123
|
+
expect(@copy["top_level_2"]).to be_instance_of(Array)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it "should create a mash with the same content" do
|
|
127
|
+
expect(@copy).to eq(@immutable_mash)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it "should allow mutation" do
|
|
131
|
+
expect { @copy["m"] = "m" }.not_to raise_error
|
|
132
|
+
end
|
|
82
133
|
end
|
|
83
134
|
|
|
84
135
|
[
|
|
@@ -198,6 +249,58 @@ describe Chef::Node::ImmutableArray do
|
|
|
198
249
|
end
|
|
199
250
|
end
|
|
200
251
|
|
|
252
|
+
describe "dup" do
|
|
253
|
+
before do
|
|
254
|
+
@copy = @immutable_nested_array.dup
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
it "converts an immutable array to a new mutable array" do
|
|
258
|
+
expect(@copy).to be_instance_of(Array)
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
it "converts an immutable nested array to a new mutable array" do
|
|
262
|
+
expect(@copy[1]).to be_instance_of(Array)
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
it "converts an immutable nested mash to a new mutable hash" do
|
|
266
|
+
expect(@copy[2]).to be_instance_of(Mash)
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
it "should create an array with the same content" do
|
|
270
|
+
expect(@copy).to eq(@immutable_nested_array)
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
it "should allow mutation" do
|
|
274
|
+
expect { @copy << "m" }.not_to raise_error
|
|
275
|
+
end
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
describe "to_array" do
|
|
279
|
+
before do
|
|
280
|
+
@copy = @immutable_nested_array.to_array
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
it "converts an immutable array to a new mutable array" do
|
|
284
|
+
expect(@copy).to be_instance_of(Array)
|
|
285
|
+
end
|
|
286
|
+
|
|
287
|
+
it "converts an immutable nested array to a new mutable array" do
|
|
288
|
+
expect(@copy[1]).to be_instance_of(Array)
|
|
289
|
+
end
|
|
290
|
+
|
|
291
|
+
it "converts an immutable nested mash to a new mutable hash" do
|
|
292
|
+
expect(@copy[2]).to be_instance_of(Hash)
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
it "should create an array with the same content" do
|
|
296
|
+
expect(@copy).to eq(@immutable_nested_array)
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
it "should allow mutation" do
|
|
300
|
+
expect { @copy << "m" }.not_to raise_error
|
|
301
|
+
end
|
|
302
|
+
end
|
|
303
|
+
|
|
201
304
|
describe "#[]" do
|
|
202
305
|
it "works with array slices" do
|
|
203
306
|
expect(@immutable_array[1, 2]).to eql(%w{bar baz})
|
data/spec/unit/node_map_spec.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Lamont Granquist (<lamont@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2014-
|
|
3
|
+
# Copyright:: Copyright 2014-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -145,26 +145,4 @@ describe Chef::NodeMap do
|
|
|
145
145
|
end
|
|
146
146
|
end
|
|
147
147
|
|
|
148
|
-
describe "resource back-compat testing" do
|
|
149
|
-
before :each do
|
|
150
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
151
|
-
end
|
|
152
|
-
|
|
153
|
-
it "should handle :on_platforms => :all" do
|
|
154
|
-
node_map.set(:chef_gem, :foo, :on_platforms => :all)
|
|
155
|
-
allow(node).to receive(:[]).with(:platform).and_return("windows")
|
|
156
|
-
expect(node_map.get(node, :chef_gem)).to eql(:foo)
|
|
157
|
-
end
|
|
158
|
-
it "should handle :on_platforms => [ 'windows' ]" do
|
|
159
|
-
node_map.set(:dsc_script, :foo, :on_platforms => [ "windows" ])
|
|
160
|
-
allow(node).to receive(:[]).with(:platform).and_return("windows")
|
|
161
|
-
expect(node_map.get(node, :dsc_script)).to eql(:foo)
|
|
162
|
-
end
|
|
163
|
-
it "should handle :on_platform => :all" do
|
|
164
|
-
node_map.set(:link, :foo, :on_platform => :all)
|
|
165
|
-
allow(node).to receive(:[]).with(:platform).and_return("windows")
|
|
166
|
-
expect(node_map.get(node, :link)).to eql(:foo)
|
|
167
|
-
end
|
|
168
|
-
end
|
|
169
|
-
|
|
170
148
|
end
|
data/spec/unit/node_spec.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2008-
|
|
3
|
+
# Copyright:: Copyright 2008-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -238,43 +238,25 @@ describe Chef::Node do
|
|
|
238
238
|
expect(node["battles"]["people"].attribute?("snozzberry")).to eq(false)
|
|
239
239
|
end
|
|
240
240
|
|
|
241
|
-
it "does not allow you to set an attribute via method_missing" do
|
|
242
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
243
|
-
expect { node.sunshine = "is bright" }.to raise_error(Chef::Exceptions::ImmutableAttributeModification)
|
|
244
|
-
end
|
|
245
|
-
|
|
246
241
|
it "does not allow modification of node attributes via hash methods" do
|
|
247
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
248
242
|
node.default["h4sh"] = { foo: "bar" }
|
|
249
243
|
expect { node["h4sh"].delete("foo") }.to raise_error(Chef::Exceptions::ImmutableAttributeModification)
|
|
250
|
-
expect { node.h4sh.delete("foo") }.to raise_error(Chef::Exceptions::ImmutableAttributeModification)
|
|
251
244
|
end
|
|
252
245
|
|
|
253
246
|
it "does not allow modification of node attributes via array methods" do
|
|
254
247
|
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
255
248
|
node.default["array"] = []
|
|
256
249
|
expect { node["array"] << "boom" }.to raise_error(Chef::Exceptions::ImmutableAttributeModification)
|
|
257
|
-
expect { node.array << "boom" }.to raise_error(Chef::Exceptions::ImmutableAttributeModification)
|
|
258
250
|
end
|
|
259
251
|
|
|
260
252
|
it "returns merged immutable attributes for arrays" do
|
|
261
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
262
253
|
node.default["array"] = []
|
|
263
254
|
expect( node["array"].class ).to eql(Chef::Node::ImmutableArray)
|
|
264
|
-
expect( node.array.class ).to eql(Chef::Node::ImmutableArray)
|
|
265
255
|
end
|
|
266
256
|
|
|
267
257
|
it "returns merged immutable attributes for hashes" do
|
|
268
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
269
258
|
node.default["h4sh"] = {}
|
|
270
259
|
expect( node["h4sh"].class ).to eql(Chef::Node::ImmutableMash)
|
|
271
|
-
expect( node.h4sh.class ).to eql(Chef::Node::ImmutableMash)
|
|
272
|
-
end
|
|
273
|
-
|
|
274
|
-
it "should allow you get get an attribute via method_missing" do
|
|
275
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
276
|
-
node.default.sunshine = "is bright"
|
|
277
|
-
expect(node.sunshine).to eql("is bright")
|
|
278
260
|
end
|
|
279
261
|
|
|
280
262
|
describe "normal attributes" do
|
|
@@ -283,12 +265,6 @@ describe Chef::Node do
|
|
|
283
265
|
expect(node[:snoopy][:is_a_puppy]).to eq(true)
|
|
284
266
|
end
|
|
285
267
|
|
|
286
|
-
it "should allow you to set an attribute with set_unless with method_missing but emit a deprecation warning" do
|
|
287
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
288
|
-
node.normal_unless.snoopy.is_a_puppy = false
|
|
289
|
-
expect(node[:snoopy][:is_a_puppy]).to eq(false)
|
|
290
|
-
end
|
|
291
|
-
|
|
292
268
|
it "should allow you to set an attribute with set_unless" do
|
|
293
269
|
node.normal_unless[:snoopy][:is_a_puppy] = false
|
|
294
270
|
expect(node[:snoopy][:is_a_puppy]).to eq(false)
|
|
@@ -321,12 +297,6 @@ describe Chef::Node do
|
|
|
321
297
|
expect(node[:snoopy][:is_a_puppy]).to eq(true)
|
|
322
298
|
end
|
|
323
299
|
|
|
324
|
-
it "auto-vivifies attributes created via method syntax" do
|
|
325
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
326
|
-
node.normal.fuu.bahrr.baz = "qux"
|
|
327
|
-
expect(node.fuu.bahrr.baz).to eq("qux")
|
|
328
|
-
end
|
|
329
|
-
|
|
330
300
|
it "should let you use tag as a convience method for the tags attribute" do
|
|
331
301
|
node.normal["tags"] = %w{one two}
|
|
332
302
|
node.tag("three", "four")
|
|
@@ -407,12 +377,6 @@ describe Chef::Node do
|
|
|
407
377
|
expect(node["a"]["r1"]["g"]["u"]).to eql("u1")
|
|
408
378
|
end
|
|
409
379
|
|
|
410
|
-
it "auto-vivifies attributes created via method syntax" do
|
|
411
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
412
|
-
node.default.fuu.bahrr.baz = "qux"
|
|
413
|
-
expect(node.fuu.bahrr.baz).to eq("qux")
|
|
414
|
-
end
|
|
415
|
-
|
|
416
380
|
it "default_unless correctly resets the deep merge cache" do
|
|
417
381
|
node.normal["tags"] = [] # this sets our top-level breadcrumb
|
|
418
382
|
node.default_unless["foo"]["bar"] = "NK-19V"
|
|
@@ -469,12 +433,6 @@ describe Chef::Node do
|
|
|
469
433
|
node.override[:snoopy][:is_a_puppy] = true
|
|
470
434
|
expect(node[:snoopy][:is_a_puppy]).to eq(true)
|
|
471
435
|
end
|
|
472
|
-
|
|
473
|
-
it "auto-vivifies attributes created via method syntax" do
|
|
474
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
475
|
-
node.override.fuu.bahrr.baz = "qux"
|
|
476
|
-
expect(node.fuu.bahrr.baz).to eq("qux")
|
|
477
|
-
end
|
|
478
436
|
end
|
|
479
437
|
|
|
480
438
|
describe "globally deleting attributes" do
|
|
@@ -811,10 +769,9 @@ describe Chef::Node do
|
|
|
811
769
|
#
|
|
812
770
|
describe "deep merge attribute cache edge conditions" do
|
|
813
771
|
it "does not error with complicated attribute substitution" do
|
|
814
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
815
772
|
node.default["chef_attribute_hell"]["attr1"] = "attribute1"
|
|
816
|
-
node.default["chef_attribute_hell"]["attr2"] = "#{node
|
|
817
|
-
expect { node.default["chef_attribute_hell"]["attr3"] = "#{node
|
|
773
|
+
node.default["chef_attribute_hell"]["attr2"] = "#{node[:chef_attribute_hell][:attr1]}/attr2"
|
|
774
|
+
expect { node.default["chef_attribute_hell"]["attr3"] = "#{node[:chef_attribute_hell][:attr2]}/attr3" }.not_to raise_error
|
|
818
775
|
end
|
|
819
776
|
|
|
820
777
|
it "caches both strings and symbols correctly" do
|
|
@@ -829,7 +786,7 @@ describe Chef::Node do
|
|
|
829
786
|
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
830
787
|
node.default["passenger"]["version"] = "4.0.57"
|
|
831
788
|
node.default["passenger"]["root_path"] = "passenger-#{node['passenger']['version']}"
|
|
832
|
-
node.default["passenger"]["root_path_2"] = "passenger-#{node
|
|
789
|
+
node.default["passenger"]["root_path_2"] = "passenger-#{node[:passenger]['version']}"
|
|
833
790
|
expect(node["passenger"]["root_path_2"]).to eql("passenger-4.0.57")
|
|
834
791
|
expect(node[:passenger]["root_path_2"]).to eql("passenger-4.0.57")
|
|
835
792
|
end
|
|
@@ -841,8 +798,8 @@ describe Chef::Node do
|
|
|
841
798
|
end
|
|
842
799
|
|
|
843
800
|
it "should allow you to iterate over attributes with each_attribute" do
|
|
844
|
-
node.default
|
|
845
|
-
node.default
|
|
801
|
+
node.default["sunshine"] = "is bright"
|
|
802
|
+
node.default["canada"] = "is a nice place"
|
|
846
803
|
seen_attributes = Hash.new
|
|
847
804
|
node.each_attribute do |a, v|
|
|
848
805
|
seen_attributes[a] = v
|
|
@@ -1609,6 +1566,78 @@ describe Chef::Node do
|
|
|
1609
1566
|
end
|
|
1610
1567
|
end
|
|
1611
1568
|
|
|
1569
|
+
context "with blacklisted attributes configured" do
|
|
1570
|
+
it "should only save non-blacklisted attributes (and subattributes)" do
|
|
1571
|
+
Chef::Config[:automatic_attribute_blacklist] = [
|
|
1572
|
+
["filesystem", "/dev/disk0s2"],
|
|
1573
|
+
"network/interfaces/eth0",
|
|
1574
|
+
]
|
|
1575
|
+
|
|
1576
|
+
data = {
|
|
1577
|
+
"automatic" => {
|
|
1578
|
+
"filesystem" => {
|
|
1579
|
+
"/dev/disk0s2" => { "size" => "10mb" },
|
|
1580
|
+
"map - autohome" => { "size" => "10mb" },
|
|
1581
|
+
},
|
|
1582
|
+
"network" => {
|
|
1583
|
+
"interfaces" => {
|
|
1584
|
+
"eth0" => {},
|
|
1585
|
+
"eth1" => {},
|
|
1586
|
+
},
|
|
1587
|
+
},
|
|
1588
|
+
},
|
|
1589
|
+
"default" => {}, "normal" => {}, "override" => {}
|
|
1590
|
+
}
|
|
1591
|
+
|
|
1592
|
+
selected_data = {
|
|
1593
|
+
"automatic" => {
|
|
1594
|
+
"filesystem" => {
|
|
1595
|
+
"map - autohome" => { "size" => "10mb" },
|
|
1596
|
+
},
|
|
1597
|
+
"network" => {
|
|
1598
|
+
"interfaces" => {
|
|
1599
|
+
"eth1" => {},
|
|
1600
|
+
},
|
|
1601
|
+
},
|
|
1602
|
+
},
|
|
1603
|
+
"default" => {}, "normal" => {}, "override" => {}
|
|
1604
|
+
}
|
|
1605
|
+
node.name("picky-monkey")
|
|
1606
|
+
allow(node).to receive(:for_json).and_return(data)
|
|
1607
|
+
expect(@rest).to receive(:put).with("nodes/picky-monkey", selected_data).and_return("foo")
|
|
1608
|
+
node.save
|
|
1609
|
+
end
|
|
1610
|
+
|
|
1611
|
+
it "should save all attributes if the blacklist is empty" do
|
|
1612
|
+
Chef::Config[:automatic_attribute_blacklist] = []
|
|
1613
|
+
|
|
1614
|
+
data = {
|
|
1615
|
+
"automatic" => {
|
|
1616
|
+
"filesystem" => {
|
|
1617
|
+
"/dev/disk0s2" => { "size" => "10mb" },
|
|
1618
|
+
"map - autohome" => { "size" => "10mb" },
|
|
1619
|
+
},
|
|
1620
|
+
},
|
|
1621
|
+
"default" => {}, "normal" => {}, "override" => {}
|
|
1622
|
+
}
|
|
1623
|
+
|
|
1624
|
+
selected_data = {
|
|
1625
|
+
"automatic" => {
|
|
1626
|
+
"filesystem" => {
|
|
1627
|
+
"/dev/disk0s2" => { "size" => "10mb" },
|
|
1628
|
+
"map - autohome" => { "size" => "10mb" },
|
|
1629
|
+
},
|
|
1630
|
+
},
|
|
1631
|
+
"default" => {}, "normal" => {}, "override" => {}
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1634
|
+
node.name("picky-monkey")
|
|
1635
|
+
allow(node).to receive(:for_json).and_return(data)
|
|
1636
|
+
expect(@rest).to receive(:put).with("nodes/picky-monkey", selected_data).and_return("foo")
|
|
1637
|
+
node.save
|
|
1638
|
+
end
|
|
1639
|
+
end
|
|
1640
|
+
|
|
1612
1641
|
context "when policyfile attributes are present" do
|
|
1613
1642
|
|
|
1614
1643
|
before do
|
|
@@ -1657,55 +1686,9 @@ describe Chef::Node do
|
|
|
1657
1686
|
|
|
1658
1687
|
end
|
|
1659
1688
|
|
|
1660
|
-
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
# server one major version back, policyfiles were beta when we
|
|
1664
|
-
# added the policyfile attributes to the node JSON, therefore
|
|
1665
|
-
# policyfile users need to be on 12.3 minimum when upgrading Chef
|
|
1666
|
-
# Client to 13+
|
|
1667
|
-
it "lets the 400 pass through", chef: ">= 13" do
|
|
1668
|
-
expect { node.save }.to raise_error(http_exception)
|
|
1669
|
-
end
|
|
1670
|
-
|
|
1671
|
-
end
|
|
1672
|
-
|
|
1673
|
-
context "when the node exists" do
|
|
1674
|
-
|
|
1675
|
-
it "falls back to saving without policyfile attributes" do
|
|
1676
|
-
expect(@rest).to receive(:put).with("nodes/example-node", node.for_json).and_raise(http_exception)
|
|
1677
|
-
expect(@rest).to receive(:put).with("nodes/example-node", trimmed_node).and_return(@node)
|
|
1678
|
-
expect { node.save }.to_not raise_error
|
|
1679
|
-
end
|
|
1680
|
-
|
|
1681
|
-
end
|
|
1682
|
-
|
|
1683
|
-
context "when the node doesn't exist" do
|
|
1684
|
-
|
|
1685
|
-
let(:response_404) do
|
|
1686
|
-
Net::HTTPResponse.send(:response_class, "404").new("1.0", "404", "Not Found")
|
|
1687
|
-
end
|
|
1688
|
-
|
|
1689
|
-
let(:http_exception_404) do
|
|
1690
|
-
begin
|
|
1691
|
-
response_404.error!
|
|
1692
|
-
rescue => e
|
|
1693
|
-
e
|
|
1694
|
-
end
|
|
1695
|
-
end
|
|
1696
|
-
|
|
1697
|
-
it "falls back to saving without policyfile attributes" do
|
|
1698
|
-
expect(@rest).to receive(:put).with("nodes/example-node", node.for_json).and_raise(http_exception)
|
|
1699
|
-
expect(@rest).to receive(:put).with("nodes/example-node", trimmed_node).and_raise(http_exception_404)
|
|
1700
|
-
expect(@rest).to receive(:post).with("nodes", trimmed_node).and_return(@node)
|
|
1701
|
-
node.save
|
|
1702
|
-
end
|
|
1703
|
-
|
|
1704
|
-
it "creates the node without policyfile attributes" do
|
|
1705
|
-
expect(@rest).to receive(:post).with("nodes", node.for_json).and_raise(http_exception)
|
|
1706
|
-
expect(@rest).to receive(:post).with("nodes", trimmed_node).and_return(@node)
|
|
1707
|
-
node.create
|
|
1708
|
-
end
|
|
1689
|
+
it "lets the 400 pass through" do
|
|
1690
|
+
expect(@rest).to receive(:put).and_raise(http_exception)
|
|
1691
|
+
expect { node.save }.to raise_error(http_exception)
|
|
1709
1692
|
end
|
|
1710
1693
|
|
|
1711
1694
|
end
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Daniel DeLeo (<dan@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2014-
|
|
3
|
+
# Copyright:: Copyright 2014-2017, Chef Software Inc.
|
|
4
4
|
# License:: Apache License, Version 2.0
|
|
5
5
|
#
|
|
6
6
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -34,11 +34,7 @@ describe Chef::PolicyBuilder::ExpandNodeObject do
|
|
|
34
34
|
expect(policy_builder).to respond_to(:node)
|
|
35
35
|
end
|
|
36
36
|
|
|
37
|
-
it "
|
|
38
|
-
expect(policy_builder).to respond_to(:load_node)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
it "has removed the deprecated #load_node method", chef: ">= 13" do
|
|
37
|
+
it "has removed the deprecated #load_node method" do
|
|
42
38
|
expect(policy_builder).to_not respond_to(:load_node)
|
|
43
39
|
end
|
|
44
40
|
|
|
@@ -106,27 +102,6 @@ describe Chef::PolicyBuilder::ExpandNodeObject do
|
|
|
106
102
|
|
|
107
103
|
end
|
|
108
104
|
|
|
109
|
-
context "deprecated #load_node method" do
|
|
110
|
-
|
|
111
|
-
let(:node) do
|
|
112
|
-
node = Chef::Node.new
|
|
113
|
-
node.name(node_name)
|
|
114
|
-
node.run_list(["recipe[a::default]", "recipe[b::server]"])
|
|
115
|
-
node
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
before do
|
|
119
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
120
|
-
expect(Chef::Node).to receive(:find_or_create).with(node_name).and_return(node)
|
|
121
|
-
policy_builder.load_node
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
it "loads the node" do
|
|
125
|
-
expect(policy_builder.node).to eq(node)
|
|
126
|
-
end
|
|
127
|
-
|
|
128
|
-
end
|
|
129
|
-
|
|
130
105
|
context "once the node has been loaded" do
|
|
131
106
|
let(:node) do
|
|
132
107
|
node = Chef::Node.new
|