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
data/spec/unit/resource_spec.rb
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
# Author:: Christopher Walters (<cw@chef.io>)
|
|
4
4
|
# Author:: Tim Hinderliter (<tim@chef.io>)
|
|
5
5
|
# Author:: Seth Chisamore (<schisamo@chef.io>)
|
|
6
|
-
# Copyright:: Copyright 2008-
|
|
6
|
+
# Copyright:: Copyright 2008-2017, Chef Software Inc.
|
|
7
7
|
# License:: Apache License, Version 2.0
|
|
8
8
|
#
|
|
9
9
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -160,7 +160,7 @@ describe Chef::Resource do
|
|
|
160
160
|
end
|
|
161
161
|
|
|
162
162
|
it "describes its state" do
|
|
163
|
-
resource_state = file_resource.
|
|
163
|
+
resource_state = file_resource.state_for_resource_reporter
|
|
164
164
|
expect(resource_state.keys).to match_array([:checksum, :owner, :group, :mode])
|
|
165
165
|
expect(resource_state[:checksum]).to eq("abc123")
|
|
166
166
|
expect(resource_state[:owner]).to eq("root")
|
|
@@ -192,7 +192,6 @@ describe Chef::Resource do
|
|
|
192
192
|
describe "load_from" do
|
|
193
193
|
let(:prior_resource) do
|
|
194
194
|
prior_resource = Chef::Resource.new("funk")
|
|
195
|
-
prior_resource.supports(:funky => true)
|
|
196
195
|
prior_resource.source_line
|
|
197
196
|
prior_resource.allowed_actions << :funkytown
|
|
198
197
|
prior_resource.action(:funkytown)
|
|
@@ -205,7 +204,6 @@ describe Chef::Resource do
|
|
|
205
204
|
|
|
206
205
|
it "should load the attributes of a prior resource" do
|
|
207
206
|
resource.load_from(prior_resource)
|
|
208
|
-
expect(resource.supports).to eq({ :funky => true })
|
|
209
207
|
end
|
|
210
208
|
|
|
211
209
|
it "should not inherit the action from the prior resource" do
|
|
@@ -233,14 +231,6 @@ describe Chef::Resource do
|
|
|
233
231
|
end
|
|
234
232
|
end
|
|
235
233
|
|
|
236
|
-
describe "noop" do
|
|
237
|
-
it "should accept true or false for noop" do
|
|
238
|
-
expect { resource.noop true }.not_to raise_error
|
|
239
|
-
expect { resource.noop false }.not_to raise_error
|
|
240
|
-
expect { resource.noop "eat it" }.to raise_error(ArgumentError)
|
|
241
|
-
end
|
|
242
|
-
end
|
|
243
|
-
|
|
244
234
|
describe "notifies" do
|
|
245
235
|
it "should make notified resources appear in the actions hash" do
|
|
246
236
|
run_context.resource_collection << Chef::Resource::ZenMaster.new("coffee")
|
|
@@ -294,6 +284,23 @@ describe Chef::Resource do
|
|
|
294
284
|
resource.notifies :reload, run_context.resource_collection.find(:zen_master => "coffee, tea")
|
|
295
285
|
expect(resource.delayed_notifications.detect { |e| e.resource.name == "coffee, tea" && e.action == :reload }).not_to be_nil
|
|
296
286
|
end
|
|
287
|
+
|
|
288
|
+
it "notifies a resource without a name via a string name with brackets" do
|
|
289
|
+
run_context.resource_collection << Chef::Resource::ZenMaster.new("")
|
|
290
|
+
resource.notifies :reload, "zen_master[]"
|
|
291
|
+
end
|
|
292
|
+
|
|
293
|
+
it "notifies a resource without a name via a string name without brackets" do
|
|
294
|
+
run_context.resource_collection << Chef::Resource::ZenMaster.new("")
|
|
295
|
+
resource.notifies :reload, "zen_master"
|
|
296
|
+
expect(resource.delayed_notifications.first.resource).to eql("zen_master")
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
it "notifies a resource without a name via a hash name with an empty string" do
|
|
300
|
+
run_context.resource_collection << Chef::Resource::ZenMaster.new("")
|
|
301
|
+
resource.notifies :reload, zen_master: ""
|
|
302
|
+
expect(resource.delayed_notifications.first.resource).to eql(zen_master: "")
|
|
303
|
+
end
|
|
297
304
|
end
|
|
298
305
|
|
|
299
306
|
describe "subscribes" do
|
|
@@ -354,6 +361,24 @@ describe Chef::Resource do
|
|
|
354
361
|
end
|
|
355
362
|
end
|
|
356
363
|
|
|
364
|
+
describe "to_text" do
|
|
365
|
+
it "prints nice message" do
|
|
366
|
+
resource_class = Class.new(Chef::Resource) { property :foo, String }
|
|
367
|
+
resource = resource_class.new("sensitive_property_tests")
|
|
368
|
+
resource.foo = "some value"
|
|
369
|
+
expect(resource.to_text).to match(/foo "some value"/)
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
context "when property is sensitive" do
|
|
373
|
+
it "supresses that properties value" do
|
|
374
|
+
resource_class = Class.new(Chef::Resource) { property :foo, String, sensitive: true }
|
|
375
|
+
resource = resource_class.new("sensitive_property_tests")
|
|
376
|
+
resource.foo = "some value"
|
|
377
|
+
expect(resource.to_text).to match(/foo "\*sensitive value suppressed\*"/)
|
|
378
|
+
end
|
|
379
|
+
end
|
|
380
|
+
end
|
|
381
|
+
|
|
357
382
|
describe "self.resource_name" do
|
|
358
383
|
context "When resource_name is not set" do
|
|
359
384
|
it "and there are no provides lines, resource_name is nil" do
|
|
@@ -434,18 +459,6 @@ describe Chef::Resource do
|
|
|
434
459
|
end
|
|
435
460
|
end
|
|
436
461
|
|
|
437
|
-
describe "is" do
|
|
438
|
-
it "should return the arguments passed with 'is'" do
|
|
439
|
-
zm = Chef::Resource::ZenMaster.new("coffee")
|
|
440
|
-
expect(zm.is("one", "two", "three")).to eq(%w{one two three})
|
|
441
|
-
end
|
|
442
|
-
|
|
443
|
-
it "should allow arguments preceded by is to methods" do
|
|
444
|
-
resource.noop(resource.is(true))
|
|
445
|
-
expect(resource.noop).to eql(true)
|
|
446
|
-
end
|
|
447
|
-
end
|
|
448
|
-
|
|
449
462
|
describe "to_json" do
|
|
450
463
|
it "should serialize to json" do
|
|
451
464
|
json = resource.to_json
|
|
@@ -463,10 +476,10 @@ describe Chef::Resource do
|
|
|
463
476
|
let(:resource_class) { Class.new(Chef::Resource) { property :a, default: 1 } }
|
|
464
477
|
it "should include the default in the hash" do
|
|
465
478
|
expect(resource.to_hash.keys.sort).to eq([:a, :allowed_actions, :params, :provider, :updated,
|
|
466
|
-
:updated_by_last_action, :before,
|
|
467
|
-
:
|
|
468
|
-
:action, :
|
|
469
|
-
:default_guard_interpreter, :guard_interpreter
|
|
479
|
+
:updated_by_last_action, :before,
|
|
480
|
+
:name, :source_line,
|
|
481
|
+
:action, :elapsed_time,
|
|
482
|
+
:default_guard_interpreter, :guard_interpreter].sort)
|
|
470
483
|
expect(resource.to_hash[:name]).to eq "funk"
|
|
471
484
|
expect(resource.to_hash[:a]).to eq 1
|
|
472
485
|
end
|
|
@@ -475,10 +488,10 @@ describe Chef::Resource do
|
|
|
475
488
|
it "should convert to a hash" do
|
|
476
489
|
hash = resource.to_hash
|
|
477
490
|
expected_keys = [ :allowed_actions, :params, :provider, :updated,
|
|
478
|
-
:updated_by_last_action, :before,
|
|
479
|
-
:
|
|
480
|
-
:action, :
|
|
481
|
-
:default_guard_interpreter, :guard_interpreter
|
|
491
|
+
:updated_by_last_action, :before,
|
|
492
|
+
:name, :source_line,
|
|
493
|
+
:action, :elapsed_time,
|
|
494
|
+
:default_guard_interpreter, :guard_interpreter ]
|
|
482
495
|
expect(hash.keys - expected_keys).to eq([])
|
|
483
496
|
expect(expected_keys - hash.keys).to eq([])
|
|
484
497
|
expect(hash[:name]).to eql("funk")
|
|
@@ -488,24 +501,12 @@ describe Chef::Resource do
|
|
|
488
501
|
describe "self.json_create" do
|
|
489
502
|
it "should deserialize itself from json" do
|
|
490
503
|
json = Chef::JSONCompat.to_json(resource)
|
|
491
|
-
serialized_node = Chef::
|
|
504
|
+
serialized_node = Chef::Resource.from_json(json)
|
|
492
505
|
expect(serialized_node).to be_a_kind_of(Chef::Resource)
|
|
493
506
|
expect(serialized_node.name).to eql(resource.name)
|
|
494
507
|
end
|
|
495
508
|
end
|
|
496
509
|
|
|
497
|
-
describe "supports" do
|
|
498
|
-
it "should allow you to set what features this resource supports" do
|
|
499
|
-
support_hash = { :one => :two }
|
|
500
|
-
resource.supports(support_hash)
|
|
501
|
-
expect(resource.supports).to eql(support_hash)
|
|
502
|
-
end
|
|
503
|
-
|
|
504
|
-
it "should return the current value of supports" do
|
|
505
|
-
expect(resource.supports).to eq({})
|
|
506
|
-
end
|
|
507
|
-
end
|
|
508
|
-
|
|
509
510
|
describe "ignore_failure" do
|
|
510
511
|
it "should default to throwing an error if a provider fails for a resource" do
|
|
511
512
|
expect(resource.ignore_failure).to eq(false)
|
|
@@ -565,31 +566,18 @@ describe Chef::Resource do
|
|
|
565
566
|
expect { retriable_resource.run_action(:purr) }.to raise_error(RuntimeError)
|
|
566
567
|
expect(retriable_resource.retries).to eq(3)
|
|
567
568
|
end
|
|
568
|
-
end
|
|
569
|
-
|
|
570
|
-
describe "setting the base provider class for the resource" do
|
|
571
|
-
|
|
572
|
-
it "defaults to Chef::Provider for the base class" do
|
|
573
|
-
expect(Chef::Resource.provider_base).to eq(Chef::Provider)
|
|
574
|
-
end
|
|
575
569
|
|
|
576
|
-
it "
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
provider_base Chef::Provider::Package
|
|
580
|
-
end
|
|
570
|
+
it "should not rescue from non-StandardError exceptions" do
|
|
571
|
+
retriable_resource.retries(3)
|
|
572
|
+
retriable_resource.retry_delay(0) # No need to wait.
|
|
581
573
|
|
|
582
|
-
|
|
583
|
-
|
|
574
|
+
provider = Chef::Provider::SnakeOil.new(retriable_resource, run_context)
|
|
575
|
+
allow(Chef::Provider::SnakeOil).to receive(:new).and_return(provider)
|
|
576
|
+
allow(provider).to receive(:action_purr).and_raise(LoadError)
|
|
584
577
|
|
|
585
|
-
|
|
586
|
-
expect
|
|
587
|
-
class OverrideProviderBaseTest2 < Chef::Resource
|
|
588
|
-
provider_base Chef::Provider::Package
|
|
589
|
-
end
|
|
590
|
-
end.to raise_error(Chef::Exceptions::DeprecatedFeatureError)
|
|
578
|
+
expect(retriable_resource).not_to receive(:sleep)
|
|
579
|
+
expect { retriable_resource.run_action(:purr) }.to raise_error(LoadError)
|
|
591
580
|
end
|
|
592
|
-
|
|
593
581
|
end
|
|
594
582
|
|
|
595
583
|
it "runs an action by finding its provider, loading the current resource and then running the action" do
|
|
@@ -839,11 +827,7 @@ describe Chef::Resource do
|
|
|
839
827
|
snitch_var1 = snitch_var2 = 0
|
|
840
828
|
runner = Chef::Runner.new(run_context)
|
|
841
829
|
|
|
842
|
-
Chef::
|
|
843
|
-
Chef::Platform.set(
|
|
844
|
-
:resource => :cat,
|
|
845
|
-
:provider => Chef::Provider::SnakeOil
|
|
846
|
-
)
|
|
830
|
+
Chef::Provider::SnakeOil.provides :cat
|
|
847
831
|
|
|
848
832
|
resource1.only_if { snitch_var1 = 1 }
|
|
849
833
|
resource1.not_if { snitch_var2 = 2 }
|
|
@@ -163,9 +163,7 @@ describe Chef::RunContext::CookbookCompiler do
|
|
|
163
163
|
describe "event dispatch" do
|
|
164
164
|
let(:recipe) { "dependency1::default" }
|
|
165
165
|
let(:recipe_path) do
|
|
166
|
-
File.expand_path("../../../data/run_context/cookbooks/dependency1/recipes/default.rb", __FILE__)
|
|
167
|
-
path.gsub!(File::SEPARATOR, File::ALT_SEPARATOR) if File::ALT_SEPARATOR
|
|
168
|
-
end
|
|
166
|
+
File.expand_path("../../../data/run_context/cookbooks/dependency1/recipes/default.rb", __FILE__)
|
|
169
167
|
end
|
|
170
168
|
before do
|
|
171
169
|
node.run_list(recipe)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Stephen Delano (<stephen@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2010-
|
|
3
|
+
# Copyright:: Copyright 2010-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");
|
|
@@ -186,9 +186,12 @@ describe Chef::RunList::VersionedRecipeList do
|
|
|
186
186
|
end
|
|
187
187
|
end
|
|
188
188
|
|
|
189
|
-
context "with
|
|
190
|
-
|
|
191
|
-
|
|
189
|
+
context "with duplicate names" do
|
|
190
|
+
let(:fq_names) { list.with_duplicate_names }
|
|
191
|
+
let(:recipes) { %w{ foo bar::default } }
|
|
192
|
+
|
|
193
|
+
it "expands default recipes" do
|
|
194
|
+
expect(fq_names).to eq(%w{foo foo::default bar bar::default})
|
|
192
195
|
end
|
|
193
196
|
end
|
|
194
197
|
end
|
data/spec/unit/runner_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");
|
|
@@ -98,25 +98,6 @@ describe Chef::Runner do
|
|
|
98
98
|
run_context.resource_collection << first_resource
|
|
99
99
|
end
|
|
100
100
|
|
|
101
|
-
context "when we fall through to old Chef::Platform resolution" do
|
|
102
|
-
let(:provider_resolver) { Chef::ProviderResolver.new(node, first_resource, nil) }
|
|
103
|
-
before do
|
|
104
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
|
105
|
-
# set up old Chef::Platform resolution instead of provider_resolver
|
|
106
|
-
Chef::Platform.set(
|
|
107
|
-
:resource => :cat,
|
|
108
|
-
:provider => Chef::Provider::SnakeOil
|
|
109
|
-
)
|
|
110
|
-
allow(Chef::ProviderResolver).to receive(:new).and_return(provider_resolver)
|
|
111
|
-
allow(provider_resolver).to receive(:maybe_dynamic_provider_resolution).with(first_resource, anything()).and_return(nil)
|
|
112
|
-
end
|
|
113
|
-
|
|
114
|
-
it "should use the platform provider if it has one" do
|
|
115
|
-
expect(Chef::Platform).to receive(:find_provider_for_node).with(node, first_resource).and_call_original
|
|
116
|
-
runner.converge
|
|
117
|
-
end
|
|
118
|
-
end
|
|
119
|
-
|
|
120
101
|
context "when we are doing dynamic provider resolution" do
|
|
121
102
|
|
|
122
103
|
it "should pass each resource in the collection to a provider" do
|
|
@@ -141,25 +122,26 @@ describe Chef::Runner do
|
|
|
141
122
|
|
|
142
123
|
it "should raise exceptions as thrown by a provider" do
|
|
143
124
|
provider = Chef::Provider::SnakeOil.new(run_context.resource_collection[0], run_context)
|
|
144
|
-
|
|
145
|
-
|
|
125
|
+
expect(Chef::Provider::SnakeOil).to receive(:new).once.and_return(provider)
|
|
126
|
+
expect(provider).to receive(:action_sell).once.and_raise(ArgumentError)
|
|
146
127
|
expect { runner.converge }.to raise_error(ArgumentError)
|
|
147
128
|
end
|
|
148
129
|
|
|
149
130
|
it "should not raise exceptions thrown by providers if the resource has ignore_failure set to true" do
|
|
150
131
|
allow(run_context.resource_collection[0]).to receive(:ignore_failure).and_return(true)
|
|
151
132
|
provider = Chef::Provider::SnakeOil.new(run_context.resource_collection[0], run_context)
|
|
152
|
-
|
|
153
|
-
|
|
133
|
+
expect(Chef::Provider::SnakeOil).to receive(:new).once.and_return(provider)
|
|
134
|
+
expect(provider).to receive(:action_sell).once.and_raise(ArgumentError)
|
|
154
135
|
expect { runner.converge }.not_to raise_error
|
|
155
136
|
end
|
|
156
137
|
|
|
157
138
|
it "should retry with the specified delay if retries are specified" do
|
|
158
|
-
|
|
139
|
+
num_retries = 3
|
|
140
|
+
allow(run_context.resource_collection[0]).to receive(:retries).and_return(num_retries)
|
|
159
141
|
provider = Chef::Provider::SnakeOil.new(run_context.resource_collection[0], run_context)
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
expect(
|
|
142
|
+
expect(Chef::Provider::SnakeOil).to receive(:new).exactly(num_retries + 1).times.and_return(provider)
|
|
143
|
+
expect(provider).to receive(:action_sell).exactly(num_retries + 1).times.and_raise(ArgumentError)
|
|
144
|
+
expect(run_context.resource_collection[0]).to receive(:sleep).with(2).exactly(num_retries).times
|
|
163
145
|
expect { runner.converge }.to raise_error(ArgumentError)
|
|
164
146
|
end
|
|
165
147
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Adam Jacob (<adam@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2009-
|
|
3
|
+
# Copyright:: Copyright 2009-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");
|
|
@@ -24,7 +24,7 @@ describe Chef::Search::Query do
|
|
|
24
24
|
let(:query) { Chef::Search::Query.new }
|
|
25
25
|
|
|
26
26
|
shared_context "filtered search" do
|
|
27
|
-
let(:query_string) { "search/node?q=platform:rhel&
|
|
27
|
+
let(:query_string) { "search/node?q=platform:rhel&start=0" }
|
|
28
28
|
let(:server_url) { "https://api.opscode.com/organizations/opscode/nodes" }
|
|
29
29
|
let(:args) { { filter_key => filter_hash } }
|
|
30
30
|
let(:filter_hash) do
|
|
@@ -81,10 +81,10 @@ describe Chef::Search::Query do
|
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
describe "search" do
|
|
84
|
-
let(:query_string) { "search/node?q=platform:rhel&
|
|
85
|
-
let(:query_string_continue) { "search/node?q=platform:rhel&
|
|
86
|
-
let(:query_string_with_rows) { "search/node?q=platform:rhel&
|
|
87
|
-
let(:query_string_continue_with_rows) { "search/node?q=platform:rhel&
|
|
84
|
+
let(:query_string) { "search/node?q=platform:rhel&start=0" }
|
|
85
|
+
let(:query_string_continue) { "search/node?q=platform:rhel&start=4" }
|
|
86
|
+
let(:query_string_with_rows) { "search/node?q=platform:rhel&start=0&rows=4" }
|
|
87
|
+
let(:query_string_continue_with_rows) { "search/node?q=platform:rhel&start=4&rows=4" }
|
|
88
88
|
|
|
89
89
|
let(:response) do
|
|
90
90
|
{
|
|
@@ -178,27 +178,22 @@ describe Chef::Search::Query do
|
|
|
178
178
|
end
|
|
179
179
|
|
|
180
180
|
it "queries for every object of a type by default" do
|
|
181
|
-
expect(rest).to receive(:get).with("search/node?q=*:*&
|
|
181
|
+
expect(rest).to receive(:get).with("search/node?q=*:*&start=0").and_return(response)
|
|
182
182
|
query.search(:node)
|
|
183
183
|
end
|
|
184
184
|
|
|
185
185
|
it "allows a custom query" do
|
|
186
|
-
expect(rest).to receive(:get).with("search/node?q=platform:rhel&
|
|
186
|
+
expect(rest).to receive(:get).with("search/node?q=platform:rhel&start=0").and_return(response)
|
|
187
187
|
query.search(:node, "platform:rhel")
|
|
188
188
|
end
|
|
189
189
|
|
|
190
|
-
it "lets you set a sort order" do
|
|
191
|
-
expect(rest).to receive(:get).with("search/node?q=platform:rhel&sort=id%20desc&start=0").and_return(response)
|
|
192
|
-
query.search(:node, "platform:rhel", sort: "id desc")
|
|
193
|
-
end
|
|
194
|
-
|
|
195
190
|
it "lets you set a starting object" do
|
|
196
|
-
expect(rest).to receive(:get).with("search/node?q=platform:rhel&
|
|
191
|
+
expect(rest).to receive(:get).with("search/node?q=platform:rhel&start=2").and_return(response)
|
|
197
192
|
query.search(:node, "platform:rhel", start: 2)
|
|
198
193
|
end
|
|
199
194
|
|
|
200
195
|
it "lets you set how many rows to return" do
|
|
201
|
-
expect(rest).to receive(:get).with("search/node?q=platform:rhel&
|
|
196
|
+
expect(rest).to receive(:get).with("search/node?q=platform:rhel&start=0&rows=40").and_return(response)
|
|
202
197
|
query.search(:node, "platform:rhel", rows: 40)
|
|
203
198
|
end
|
|
204
199
|
|
|
@@ -223,7 +218,7 @@ describe Chef::Search::Query do
|
|
|
223
218
|
it "pages through the responses" do
|
|
224
219
|
@call_me = double("blocky")
|
|
225
220
|
response["rows"].each { |r| expect(@call_me).to receive(:do).with(Chef::Node.from_hash(r)) }
|
|
226
|
-
query.search(:node, "*:*",
|
|
221
|
+
query.search(:node, "*:*", start: 0, rows: 4) { |r| @call_me.do(r) }
|
|
227
222
|
end
|
|
228
223
|
|
|
229
224
|
it "sends multiple API requests when the server indicates there is more data" do
|
|
@@ -242,6 +237,27 @@ describe Chef::Search::Query do
|
|
|
242
237
|
end
|
|
243
238
|
end
|
|
244
239
|
|
|
240
|
+
it "fuzzifies node searches when fuzz is set" do
|
|
241
|
+
expect(rest).to receive(:get).with(
|
|
242
|
+
"search/node?q=tags:*free.messi*%20OR%20roles:*free.messi*%20OR%20fqdn:*free.messi*%20OR%20addresses:*free.messi*%20OR%20policy_name:*free.messi*%20OR%20policy_group:*free.messi*&start=0"
|
|
243
|
+
).and_return(response)
|
|
244
|
+
query.search(:node, "free.messi", fuzz: true)
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
it "does not fuzzify node searches when fuzz is not set" do
|
|
248
|
+
expect(rest).to receive(:get).with(
|
|
249
|
+
"search/node?q=free.messi&start=0"
|
|
250
|
+
).and_return(response)
|
|
251
|
+
query.search(:node, "free.messi")
|
|
252
|
+
end
|
|
253
|
+
|
|
254
|
+
it "does not fuzzify client searches" do
|
|
255
|
+
expect(rest).to receive(:get).with(
|
|
256
|
+
"search/client?q=messi&start=0"
|
|
257
|
+
).and_return(response)
|
|
258
|
+
query.search(:client, "messi", fuzz: true)
|
|
259
|
+
end
|
|
260
|
+
|
|
245
261
|
context "when :filter_result is provided as a result" do
|
|
246
262
|
include_context "filtered search" do
|
|
247
263
|
let(:filter_key) { :filter_result }
|
|
@@ -269,22 +285,4 @@ describe Chef::Search::Query do
|
|
|
269
285
|
end
|
|
270
286
|
end
|
|
271
287
|
|
|
272
|
-
describe "#partial_search" do
|
|
273
|
-
include_context "filtered search" do
|
|
274
|
-
let(:filter_key) { :keys }
|
|
275
|
-
|
|
276
|
-
it "emits a deprecation warning" do
|
|
277
|
-
# partial_search calls search, so we'll stub search to return empty
|
|
278
|
-
allow(query).to receive(:search).and_return( [ [], 0, 0 ] )
|
|
279
|
-
expect(Chef::Log).to receive(:warn).with(/DEPRECATED: The 'partial_search' API is deprecated/)
|
|
280
|
-
query.partial_search(:node, "platform:rhel", args)
|
|
281
|
-
end
|
|
282
|
-
|
|
283
|
-
it "returns an array of filtered hashes" do
|
|
284
|
-
expect(rest).to receive(:post).with(query_string, args[filter_key]).and_return(response)
|
|
285
|
-
results = query.partial_search(:node, "platform:rhel", args)
|
|
286
|
-
expect(results[0]).to match_array(response_rows)
|
|
287
|
-
end
|
|
288
|
-
end
|
|
289
|
-
end
|
|
290
288
|
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright:: Copyright 2017, Chef Software, Inc.
|
|
3
|
+
# License:: Apache License, Version 2.0
|
|
4
|
+
#
|
|
5
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
# you may not use this file except in compliance with the License.
|
|
7
|
+
# You may obtain a copy of the License at
|
|
8
|
+
#
|
|
9
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
#
|
|
11
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
# See the License for the specific language governing permissions and
|
|
15
|
+
# limitations under the License.
|
|
16
|
+
#
|
|
17
|
+
|
|
18
|
+
require "spec_helper"
|
|
19
|
+
|
|
20
|
+
describe Chef::ServerAPIVersions do
|
|
21
|
+
before do
|
|
22
|
+
Chef::ServerAPIVersions.instance.reset!
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe "#min_server_version" do
|
|
26
|
+
it "returns nil if no versions have been recorded" do
|
|
27
|
+
expect(Chef::ServerAPIVersions.instance.min_server_version).to be_nil
|
|
28
|
+
end
|
|
29
|
+
it "returns the correct value" do
|
|
30
|
+
Chef::ServerAPIVersions.instance.set_versions({ "min_version" => 0, "max_version" => 2 })
|
|
31
|
+
expect(Chef::ServerAPIVersions.instance.min_server_version).to eq(0)
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
describe "#max_server_version" do
|
|
36
|
+
it "returns nil if no versions have been recorded" do
|
|
37
|
+
expect(Chef::ServerAPIVersions.instance.max_server_version).to be_nil
|
|
38
|
+
end
|
|
39
|
+
it "returns the correct value" do
|
|
40
|
+
Chef::ServerAPIVersions.instance.set_versions({ "min_version" => 0, "max_version" => 2 })
|
|
41
|
+
expect(Chef::ServerAPIVersions.instance.max_server_version).to eq(2)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -77,6 +77,37 @@ describe Shell::ClientSession do
|
|
|
77
77
|
|
|
78
78
|
end
|
|
79
79
|
|
|
80
|
+
describe Shell::SoloSession do
|
|
81
|
+
before do
|
|
82
|
+
Chef::Config[:shell_config] = { :override_runlist => [Chef::RunList::RunListItem.new("shell::override")] }
|
|
83
|
+
@chef_rest = double("Chef::ServerAPI")
|
|
84
|
+
@session = Shell::SoloSession.instance
|
|
85
|
+
@node = Chef::Node.build("foo")
|
|
86
|
+
@session.node = @node
|
|
87
|
+
@client = double("Chef::Client.new",
|
|
88
|
+
:run_ohai => true,
|
|
89
|
+
:load_node => true,
|
|
90
|
+
:build_node => true,
|
|
91
|
+
:register => true,
|
|
92
|
+
:sync_cookbooks => {})
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
it "builds the node's run_context with the proper environment" do
|
|
96
|
+
@session.instance_variable_set(:@client, @client)
|
|
97
|
+
@expansion = Chef::RunList::RunListExpansion.new(@node.chef_environment, [])
|
|
98
|
+
|
|
99
|
+
expect(@node.run_list).to receive(:expand).with(@node.chef_environment).and_return(@expansion)
|
|
100
|
+
expect(Chef::ServerAPI).to receive(:new).with(Chef::Config[:chef_server_url]).and_return(@chef_rest)
|
|
101
|
+
@session.rebuild_context
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
it "passes the shell CLI args to the client" do
|
|
105
|
+
expect(Chef::Client).to receive(:new).with(nil, Chef::Config[:shell_config]).and_return(@client)
|
|
106
|
+
@session.send(:rebuild_node)
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|
|
110
|
+
|
|
80
111
|
describe Shell::StandAloneSession do
|
|
81
112
|
before do
|
|
82
113
|
Chef::Config[:shell_config] = { :override_runlist => [Chef::RunList::RunListItem.new("shell::override")] }
|
|
@@ -128,11 +159,11 @@ describe Shell::StandAloneSession do
|
|
|
128
159
|
|
|
129
160
|
end
|
|
130
161
|
|
|
131
|
-
describe Shell::
|
|
162
|
+
describe Shell::SoloLegacySession do
|
|
132
163
|
before do
|
|
133
164
|
Chef::Config[:shell_config] = { :override_runlist => [Chef::RunList::RunListItem.new("shell::override")] }
|
|
134
165
|
Chef::Config[:shell_solo] = true
|
|
135
|
-
@session = Shell::
|
|
166
|
+
@session = Shell::SoloLegacySession.instance
|
|
136
167
|
@node = Chef::Node.new
|
|
137
168
|
@events = Chef::EventDispatch::Dispatcher.new
|
|
138
169
|
@run_context = @session.run_context = Chef::RunContext.new(@node, {}, @events)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#
|
|
2
2
|
# Author:: Serdar Sutay (<serdar@chef.io>)
|
|
3
|
-
# Copyright:: Copyright 2013-
|
|
3
|
+
# Copyright:: Copyright 2013-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");
|
|
@@ -148,21 +148,10 @@ describe Chef::Util::Selinux do
|
|
|
148
148
|
end
|
|
149
149
|
|
|
150
150
|
describe "when restorecon doesn't exist on the system" do
|
|
151
|
-
before do
|
|
152
|
-
allow(File).to receive(:executable?) do |file_path|
|
|
153
|
-
expect(file_path.end_with?("restorecon")).to be_truthy
|
|
154
|
-
false
|
|
155
|
-
end
|
|
156
|
-
end
|
|
157
|
-
|
|
158
151
|
it "should log a warning message" do
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
log << message
|
|
162
|
-
end
|
|
163
|
-
|
|
152
|
+
allow(File).to receive(:executable?).with(/restorecon$/).and_return(false)
|
|
153
|
+
expect(Chef::Log).to receive(:warn).with(/Can not find 'restorecon' on the system. Skipping selinux security context restore./).at_least(:once)
|
|
164
154
|
@test_instance.restore_security_context(path)
|
|
165
|
-
expect(log).not_to be_empty
|
|
166
155
|
expect(File).not_to receive(:executable?)
|
|
167
156
|
@test_instance.restore_security_context(path)
|
|
168
157
|
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Author:: Aliasgar Batterywala (aliasgar.batterywala@msystechnologies.com)
|
|
3
|
+
# Copyright:: Copyright 2017, Chef Software Inc.
|
|
4
|
+
# License:: Apache License, Version 2.0
|
|
5
|
+
#
|
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
# you may not use this file except in compliance with the License.
|
|
8
|
+
# You may obtain a copy of the License at
|
|
9
|
+
#
|
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
#
|
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
# See the License for the specific language governing permissions and
|
|
16
|
+
# limitations under the License.
|
|
17
|
+
#
|
|
18
|
+
|
|
19
|
+
require "spec_helper"
|
|
20
|
+
if Chef::Platform.windows?
|
|
21
|
+
require "chef/win32/error"
|
|
22
|
+
require "chef/win32/api/error"
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe "Chef::Win32::Error", :windows_only do
|
|
26
|
+
describe "self.raise!" do
|
|
27
|
+
context "code is not passed to the raise! method" do
|
|
28
|
+
context "last error received is user_not_found" do
|
|
29
|
+
it "raises UserIDNotFound exception" do
|
|
30
|
+
expect(Chef::ReservedNames::Win32::Error).to receive(:get_last_error).and_return(
|
|
31
|
+
Chef::ReservedNames::Win32::API::Error::ERROR_USER_NOT_FOUND
|
|
32
|
+
)
|
|
33
|
+
expect(Chef::ReservedNames::Win32::Error).to receive_message_chain(:format_message, :strip)
|
|
34
|
+
expect { Chef::ReservedNames::Win32::Error.raise! }.to raise_error Chef::Exceptions::UserIDNotFound
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
context "last error received is not user_not_found" do
|
|
39
|
+
it "raises Win32APIError exception" do
|
|
40
|
+
expect(Chef::ReservedNames::Win32::Error).to receive(:get_last_error).and_return(
|
|
41
|
+
Chef::ReservedNames::Win32::API::Error::ERROR_BAD_USERNAME
|
|
42
|
+
)
|
|
43
|
+
expect(Chef::ReservedNames::Win32::Error).to receive_message_chain(:format_message, :strip).and_return("Bad Username")
|
|
44
|
+
expect { Chef::ReservedNames::Win32::Error.raise! }.to raise_error Chef::Exceptions::Win32APIError
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
context "code is passed to the raise! method" do
|
|
50
|
+
context "last error received is user_not_found" do
|
|
51
|
+
it "raises UserIDNotFound exception" do
|
|
52
|
+
expect(Chef::ReservedNames::Win32::Error).to_not receive(:get_last_error)
|
|
53
|
+
expect(Chef::ReservedNames::Win32::Error).to receive_message_chain(:format_message, :strip)
|
|
54
|
+
expect { Chef::ReservedNames::Win32::Error.raise! nil, Chef::ReservedNames::Win32::API::Error::ERROR_USER_NOT_FOUND }.to raise_error Chef::Exceptions::UserIDNotFound
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
context "last error received is not user_not_found" do
|
|
59
|
+
it "raises Win32APIError exception" do
|
|
60
|
+
expect(Chef::ReservedNames::Win32::Error).to_not receive(:get_last_error)
|
|
61
|
+
expect(Chef::ReservedNames::Win32::Error).to receive_message_chain(:format_message, :strip).and_return("Bad Username")
|
|
62
|
+
expect { Chef::ReservedNames::Win32::Error.raise! nil, Chef::ReservedNames::Win32::API::Error::ERROR_BAD_USERNAME }.to raise_error Chef::Exceptions::Win32APIError
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|