chef 12.0.3-x86-mingw32 → 12.1.0.rc.0-x86-mingw32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +4 -1
- data/README.md +42 -18
- data/distro/common/html/_sources/ctl_chef_client.txt +1 -1
- data/distro/common/html/_sources/ctl_chef_server.txt +53 -35
- data/distro/common/html/_sources/ctl_chef_solo.txt +1 -1
- data/distro/common/html/_sources/knife_bootstrap.txt +1 -1
- data/distro/common/html/_sources/knife_cookbook_site.txt +1 -1
- data/distro/common/html/_sources/knife_data_bag.txt +4 -4
- data/distro/common/html/_sources/knife_status.txt +1 -1
- data/distro/common/html/_static/searchtools.js +1 -1
- data/distro/common/html/ctl_chef_client.html +55 -7
- data/distro/common/html/ctl_chef_server.html +84 -41
- data/distro/common/html/ctl_chef_shell.html +45 -1
- data/distro/common/html/ctl_chef_solo.html +51 -5
- data/distro/common/html/index.html +2 -2
- data/distro/common/html/knife.html +1 -1
- data/distro/common/html/knife_bootstrap.html +30 -10
- data/distro/common/html/knife_cookbook_site.html +2 -0
- data/distro/common/html/knife_data_bag.html +4 -4
- data/distro/common/html/knife_node.html +2 -2
- data/distro/common/html/knife_raw.html +1 -1
- data/distro/common/html/knife_role.html +1 -1
- data/distro/common/html/knife_search.html +3 -3
- data/distro/common/html/knife_status.html +4 -0
- data/distro/common/html/searchindex.js +1 -1
- data/distro/common/man/man1/chef-shell.1 +72 -1
- data/distro/common/man/man1/knife-bootstrap.1 +71 -63
- data/distro/common/man/man1/knife-client.1 +1 -1
- data/distro/common/man/man1/knife-configure.1 +1 -1
- data/distro/common/man/man1/knife-cookbook-site.1 +4 -1
- data/distro/common/man/man1/knife-cookbook.1 +1 -1
- data/distro/common/man/man1/knife-data-bag.1 +5 -5
- data/distro/common/man/man1/knife-delete.1 +1 -1
- data/distro/common/man/man1/knife-deps.1 +1 -1
- data/distro/common/man/man1/knife-diff.1 +1 -1
- data/distro/common/man/man1/knife-download.1 +1 -1
- data/distro/common/man/man1/knife-edit.1 +1 -1
- data/distro/common/man/man1/knife-environment.1 +1 -1
- data/distro/common/man/man1/knife-exec.1 +1 -1
- data/distro/common/man/man1/knife-index-rebuild.1 +1 -1
- data/distro/common/man/man1/knife-list.1 +1 -1
- data/distro/common/man/man1/knife-node.1 +3 -3
- data/distro/common/man/man1/knife-raw.1 +2 -2
- data/distro/common/man/man1/knife-recipe-list.1 +1 -1
- data/distro/common/man/man1/knife-role.1 +2 -2
- data/distro/common/man/man1/knife-search.1 +4 -4
- data/distro/common/man/man1/knife-serve.1 +1 -1
- data/distro/common/man/man1/knife-show.1 +1 -1
- data/distro/common/man/man1/knife-ssh.1 +1 -1
- data/distro/common/man/man1/knife-ssl-check.1 +1 -1
- data/distro/common/man/man1/knife-ssl-fetch.1 +1 -1
- data/distro/common/man/man1/knife-status.1 +1 -1
- data/distro/common/man/man1/knife-tag.1 +1 -1
- data/distro/common/man/man1/knife-upload.1 +1 -1
- data/distro/common/man/man1/knife-user.1 +1 -1
- data/distro/common/man/man1/knife-xargs.1 +1 -1
- data/distro/common/man/man1/knife.1 +1 -1
- data/distro/common/man/man8/chef-apply.8 +86 -0
- data/distro/common/man/man8/chef-client.8 +76 -5
- data/distro/common/man/man8/chef-solo.8 +79 -6
- data/distro/common/markdown/man1/knife-bootstrap.mkd +1 -1
- data/distro/common/markdown/man1/knife-cookbook-site.mkd +1 -1
- data/distro/common/markdown/man1/knife-data-bag.mkd +1 -1
- data/distro/common/markdown/man1/knife-environment.mkd +1 -1
- data/distro/common/markdown/man1/knife.mkd +1 -1
- data/lib/chef.rb +0 -7
- data/lib/chef/api_client.rb +10 -2
- data/lib/chef/api_client/registration.rb +7 -9
- data/lib/chef/application.rb +28 -12
- data/lib/chef/application/apply.rb +17 -1
- data/lib/chef/application/client.rb +74 -6
- data/lib/chef/application/knife.rb +1 -2
- data/lib/chef/application/solo.rb +30 -0
- data/lib/chef/application/windows_service.rb +1 -0
- data/lib/chef/application/windows_service_manager.rb +8 -2
- data/lib/chef/applications.rb +0 -1
- data/lib/chef/audit/audit_event_proxy.rb +93 -0
- data/lib/chef/audit/audit_reporter.rb +169 -0
- data/lib/chef/audit/control_group_data.rb +140 -0
- data/lib/chef/audit/rspec_formatter.rb +37 -0
- data/lib/chef/audit/runner.rb +178 -0
- data/lib/chef/chef_fs/chef_fs_data_store.rb +11 -2
- data/lib/chef/chef_fs/config.rb +25 -4
- data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +15 -0
- data/lib/chef/chef_fs/data_handler/user_data_handler.rb +1 -0
- data/lib/chef/chef_fs/file_system.rb +1 -1
- data/lib/chef/chef_fs/file_system/base_fs_dir.rb +5 -0
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_cookbook_entry.rb +3 -2
- data/lib/chef/{shef/ext.rb → chef_fs/file_system/chef_repository_file_system_policies_dir.rb} +22 -3
- data/lib/chef/chef_fs/file_system/chef_repository_file_system_root_dir.rb +4 -0
- data/lib/chef/client.rb +81 -52
- data/lib/chef/config.rb +35 -3
- data/lib/chef/cookbook/metadata.rb +3 -3
- data/lib/chef/cookbook_manifest.rb +275 -0
- data/lib/chef/cookbook_site_streaming_uploader.rb +24 -23
- data/lib/chef/cookbook_uploader.rb +11 -2
- data/lib/chef/cookbook_version.rb +71 -194
- data/lib/chef/data_bag.rb +5 -2
- data/lib/chef/data_bag_item.rb +6 -3
- data/lib/chef/deprecation/warnings.rb +5 -4
- data/lib/chef/dsl/audit.rb +51 -0
- data/lib/chef/dsl/include_recipe.rb +2 -3
- data/lib/chef/dsl/reboot_pending.rb +1 -1
- data/lib/chef/dsl/recipe.rb +49 -31
- data/lib/chef/encrypted_data_bag_item/assertions.rb +0 -3
- data/lib/chef/environment.rb +5 -2
- data/lib/chef/event_dispatch/base.rb +36 -1
- data/lib/chef/event_dispatch/dispatcher.rb +3 -5
- data/lib/chef/exceptions.rb +61 -2
- data/lib/chef/file_access_control/unix.rb +12 -0
- data/lib/chef/file_access_control/windows.rb +14 -0
- data/lib/chef/formatters/doc.rb +47 -1
- data/{spec/unit/monkey_patches/string_spec.rb → lib/chef/guard_interpreter.rb} +11 -16
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +3 -2
- data/lib/chef/http.rb +1 -2
- data/lib/chef/knife.rb +5 -3
- data/lib/chef/knife/bootstrap.rb +84 -15
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +165 -0
- data/lib/chef/knife/bootstrap/client_builder.rb +190 -0
- data/lib/chef/knife/bootstrap/{README.md → templates/README.md} +0 -0
- data/lib/chef/knife/bootstrap/{archlinux-gems.erb → templates/archlinux-gems.erb} +9 -0
- data/lib/chef/knife/bootstrap/{chef-aix.erb → templates/chef-aix.erb} +9 -0
- data/lib/chef/knife/bootstrap/{chef-full.erb → templates/chef-full.erb} +10 -1
- data/lib/chef/knife/client_create.rb +8 -7
- data/lib/chef/knife/cookbook_site_download.rb +1 -1
- data/lib/chef/knife/cookbook_site_install.rb +1 -1
- data/lib/chef/knife/cookbook_site_list.rb +1 -1
- data/lib/chef/knife/cookbook_site_search.rb +1 -1
- data/lib/chef/knife/cookbook_site_share.rb +39 -28
- data/lib/chef/knife/cookbook_site_show.rb +3 -3
- data/lib/chef/knife/cookbook_site_unshare.rb +1 -1
- data/lib/chef/knife/cookbook_test.rb +1 -0
- data/lib/chef/knife/cookbook_upload.rb +13 -8
- data/lib/chef/knife/core/bootstrap_context.rb +14 -3
- data/lib/chef/knife/core/generic_presenter.rb +5 -2
- data/lib/chef/knife/core/object_loader.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +24 -0
- data/lib/chef/knife/core/ui.rb +9 -1
- data/lib/chef/knife/node_run_list_remove.rb +11 -3
- data/lib/chef/knife/raw.rb +14 -3
- data/lib/chef/knife/role_env_run_list_add.rb +86 -0
- data/lib/chef/knife/role_env_run_list_clear.rb +55 -0
- data/lib/chef/knife/role_env_run_list_remove.rb +57 -0
- data/lib/chef/knife/role_env_run_list_replace.rb +59 -0
- data/lib/chef/knife/role_env_run_list_set.rb +70 -0
- data/lib/chef/knife/role_run_list_add.rb +86 -0
- data/lib/chef/knife/role_run_list_clear.rb +55 -0
- data/lib/chef/knife/role_run_list_remove.rb +57 -0
- data/lib/chef/knife/role_run_list_replace.rb +59 -0
- data/lib/chef/knife/role_run_list_set.rb +70 -0
- data/lib/chef/knife/search.rb +4 -4
- data/lib/chef/knife/serve.rb +3 -0
- data/lib/chef/knife/ssh.rb +1 -1
- data/lib/chef/knife/ssl_check.rb +2 -2
- data/lib/chef/knife/ssl_fetch.rb +14 -1
- data/lib/chef/log.rb +10 -1
- data/lib/chef/mixin/command.rb +1 -1
- data/lib/chef/mixin/command/windows.rb +1 -5
- data/lib/chef/mixin/get_source_from_package.rb +1 -0
- data/lib/chef/mixin/params_validate.rb +2 -2
- data/lib/chef/mixin/securable.rb +1 -7
- data/lib/chef/mixin/shell_out.rb +7 -1
- data/lib/chef/mixin/template.rb +2 -14
- data/lib/chef/mixin/why_run.rb +1 -1
- data/lib/chef/monkey_patches/net_http.rb +4 -0
- data/lib/chef/monologger.rb +0 -2
- data/lib/chef/node.rb +5 -2
- data/lib/chef/node/attribute.rb +11 -9
- data/lib/chef/node/attribute_collections.rb +8 -12
- data/lib/chef/node/immutable_collections.rb +4 -10
- data/lib/chef/org.rb +148 -0
- data/lib/chef/platform/provider_mapping.rb +3 -2
- data/lib/chef/platform/provider_priority_map.rb +2 -0
- data/lib/chef/platform/query_helpers.rb +0 -3
- data/lib/chef/policy_builder/policyfile.rb +51 -8
- data/lib/chef/provider/deploy.rb +1 -2
- data/lib/chef/provider/directory.rb +3 -3
- data/lib/chef/provider/dsc_script.rb +13 -7
- data/lib/chef/provider/env.rb +8 -8
- data/lib/chef/provider/execute.rb +55 -36
- data/lib/chef/provider/file.rb +8 -0
- data/lib/chef/provider/group.rb +2 -0
- data/lib/chef/provider/group/dscl.rb +3 -4
- data/lib/chef/provider/ifconfig.rb +25 -25
- data/lib/chef/provider/ifconfig/aix.rb +25 -27
- data/lib/chef/provider/lwrp_base.rb +1 -1
- data/lib/chef/provider/mount.rb +2 -2
- data/lib/chef/provider/mount/mount.rb +3 -4
- data/lib/chef/provider/mount/solaris.rb +1 -1
- data/lib/chef/provider/package.rb +297 -48
- data/lib/chef/provider/package/aix.rb +25 -30
- data/lib/chef/provider/package/apt.rb +63 -19
- data/lib/chef/provider/package/dpkg.rb +15 -16
- data/lib/chef/provider/package/macports.rb +7 -7
- data/lib/chef/provider/package/openbsd.rb +107 -0
- data/lib/chef/provider/package/pacman.rb +13 -15
- data/lib/chef/provider/package/portage.rb +3 -4
- data/lib/chef/provider/package/rpm.rb +28 -17
- data/lib/chef/provider/package/rubygems.rb +9 -9
- data/lib/chef/provider/package/solaris.rb +17 -21
- data/lib/chef/provider/package/windows/msi.rb +1 -1
- data/lib/chef/provider/package/yum-dump.py +2 -2
- data/lib/chef/provider/package/yum.rb +117 -51
- data/lib/chef/provider/package/zypper.rb +17 -18
- data/lib/chef/provider/powershell_script.rb +4 -4
- data/lib/chef/provider/registry_key.rb +2 -2
- data/lib/chef/provider/remote_directory.rb +1 -1
- data/lib/chef/provider/script.rb +25 -16
- data/lib/chef/provider/service.rb +1 -1
- data/lib/chef/provider/service/freebsd.rb +1 -1
- data/lib/chef/provider/service/openbsd.rb +216 -0
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +99 -1
- data/lib/chef/provider/user.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +19 -4
- data/lib/chef/providers.rb +2 -0
- data/lib/chef/recipe.rb +11 -5
- data/lib/chef/request_id.rb +1 -1
- data/lib/chef/resource.rb +839 -444
- data/lib/chef/resource/chef_gem.rb +20 -3
- data/lib/chef/resource/conditional.rb +3 -14
- data/lib/chef/resource/dsc_script.rb +14 -0
- data/lib/chef/resource/execute.rb +14 -7
- data/lib/chef/resource/file.rb +14 -0
- data/lib/chef/resource/file/verification.rb +122 -0
- data/lib/chef/resource/ips_package.rb +1 -1
- data/lib/chef/resource/lwrp_base.rb +2 -11
- data/lib/chef/resource/macports_package.rb +2 -1
- data/lib/chef/resource/openbsd_package.rb +51 -0
- data/lib/chef/resource/package.rb +2 -2
- data/lib/chef/resource/paludis_package.rb +1 -1
- data/lib/chef/resource/reboot.rb +1 -1
- data/lib/chef/resource/remote_file.rb +1 -0
- data/lib/chef/resource/rpm_package.rb +9 -0
- data/lib/chef/resource/script.rb +11 -0
- data/lib/chef/resource/template.rb +2 -3
- data/lib/chef/resource/windows_package.rb +1 -1
- data/lib/chef/resource/windows_service.rb +18 -0
- data/lib/chef/resource_builder.rb +137 -0
- data/lib/chef/resource_definition.rb +1 -1
- data/lib/chef/resource_reporter.rb +1 -1
- data/lib/chef/resources.rb +1 -0
- data/lib/chef/role.rb +17 -4
- data/lib/chef/run_context.rb +10 -6
- data/lib/chef/search/query.rb +66 -87
- data/lib/chef/shell/ext.rb +2 -2
- data/lib/chef/util/diff.rb +1 -4
- data/lib/chef/util/dsc/configuration_generator.rb +30 -6
- data/lib/chef/util/dsc/lcm_output_parser.rb +7 -3
- data/lib/chef/util/dsc/local_configuration_manager.rb +8 -8
- data/lib/chef/util/file_edit.rb +2 -2
- data/lib/chef/util/path_helper.rb +1 -4
- data/lib/chef/util/windows/net_use.rb +3 -3
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +1 -0
- data/lib/chef/win32/api/security.rb +26 -0
- data/lib/chef/win32/file.rb +21 -0
- data/lib/chef/win32/security.rb +46 -0
- data/lib/chef/win32/security/token.rb +8 -0
- data/lib/chef/win32/version.rb +0 -4
- data/spec/data/recipes.tgz +0 -0
- data/spec/functional/application_spec.rb +1 -1
- data/spec/functional/audit/rspec_formatter_spec.rb +54 -0
- data/spec/functional/audit/runner_spec.rb +137 -0
- data/spec/functional/dsl/reboot_pending_spec.rb +10 -10
- data/spec/functional/dsl/registry_helper_spec.rb +6 -6
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +5 -5
- data/spec/functional/file_content_management/deploy_strategies_spec.rb +12 -21
- data/spec/functional/http/simple_spec.rb +1 -1
- data/spec/functional/knife/cookbook_delete_spec.rb +24 -24
- data/spec/functional/knife/exec_spec.rb +2 -4
- data/spec/functional/knife/smoke_test.rb +1 -1
- data/spec/functional/knife/ssh_spec.rb +23 -23
- data/spec/functional/provider/remote_file/cache_control_data_spec.rb +8 -8
- data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +2 -2
- data/spec/functional/rebooter_spec.rb +1 -1
- data/spec/functional/resource/aix_service_spec.rb +3 -0
- data/spec/functional/resource/aixinit_service_spec.rb +3 -3
- data/spec/functional/resource/bash_spec.rb +88 -0
- data/spec/functional/resource/deploy_revision_spec.rb +99 -100
- data/spec/functional/resource/env_spec.rb +3 -3
- data/spec/functional/resource/execute_spec.rb +97 -63
- data/spec/functional/resource/file_spec.rb +7 -7
- data/spec/functional/resource/git_spec.rb +13 -13
- data/spec/functional/resource/group_spec.rb +28 -25
- data/spec/functional/resource/ifconfig_spec.rb +2 -2
- data/spec/functional/resource/link_spec.rb +77 -78
- data/spec/functional/resource/mount_spec.rb +5 -5
- data/spec/functional/resource/ohai_spec.rb +1 -1
- data/spec/functional/resource/package_spec.rb +22 -22
- data/spec/functional/resource/powershell_spec.rb +57 -42
- data/spec/functional/resource/reboot_spec.rb +2 -2
- data/spec/functional/resource/registry_spec.rb +91 -91
- data/spec/functional/resource/remote_directory_spec.rb +19 -19
- data/spec/functional/resource/remote_file_spec.rb +18 -18
- data/spec/functional/resource/template_spec.rb +4 -4
- data/spec/functional/resource/user/dscl_spec.rb +4 -4
- data/spec/functional/resource/user/useradd_spec.rb +64 -51
- data/spec/functional/resource/windows_service_spec.rb +98 -0
- data/spec/functional/run_lock_spec.rb +9 -9
- data/spec/functional/shell_spec.rb +3 -3
- data/spec/functional/tiny_server_spec.rb +12 -12
- data/spec/functional/util/path_helper_spec.rb +1 -1
- data/spec/functional/version_spec.rb +1 -1
- data/spec/functional/win32/registry_helper_spec.rb +125 -125
- data/spec/functional/win32/security_spec.rb +65 -2
- data/spec/functional/win32/service_manager_spec.rb +30 -84
- data/spec/functional/win32/versions_spec.rb +6 -6
- data/spec/integration/client/client_spec.rb +102 -9
- data/spec/integration/knife/chef_fs_data_store_spec.rb +12 -8
- data/spec/integration/knife/common_options_spec.rb +3 -3
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +2 -2
- data/spec/integration/knife/deps_spec.rb +4 -4
- data/spec/integration/knife/diff_spec.rb +6 -6
- data/spec/integration/knife/download_spec.rb +6 -6
- data/spec/integration/knife/list_spec.rb +2 -2
- data/spec/integration/knife/raw_spec.rb +5 -5
- data/spec/integration/knife/serve_spec.rb +3 -3
- data/spec/integration/knife/show_spec.rb +3 -3
- data/spec/integration/knife/upload_spec.rb +18 -18
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
- data/spec/integration/solo/solo_spec.rb +11 -12
- data/spec/spec_helper.rb +27 -15
- data/spec/stress/win32/file_spec.rb +4 -4
- data/spec/stress/win32/security_spec.rb +4 -4
- data/spec/support/chef_helpers.rb +3 -3
- data/spec/support/matchers/leak.rb +2 -2
- data/spec/support/mock/platform.rb +1 -1
- data/spec/support/pedant/Gemfile +3 -0
- data/spec/support/pedant/pedant_config.rb +9 -2
- data/spec/support/pedant/run_pedant.rb +15 -16
- data/spec/support/platform_helpers.rb +8 -12
- data/spec/support/shared/functional/directory_resource.rb +13 -13
- data/spec/support/shared/functional/file_resource.rb +83 -83
- data/spec/support/shared/functional/http.rb +1 -1
- data/spec/support/shared/functional/securable_resource.rb +64 -64
- data/spec/support/shared/functional/securable_resource_with_reporting.rb +43 -41
- data/spec/support/shared/functional/win32_service.rb +60 -0
- data/spec/support/shared/functional/windows_script.rb +8 -8
- data/spec/support/shared/integration/knife_support.rb +8 -5
- data/spec/support/shared/matchers/exit_with_code.rb +6 -2
- data/spec/support/shared/unit/api_error_inspector.rb +8 -8
- data/spec/support/shared/unit/execute_resource.rb +24 -20
- data/spec/support/shared/unit/file_system_support.rb +2 -2
- data/spec/support/shared/unit/platform_introspector.rb +21 -21
- data/spec/support/shared/unit/provider/file.rb +239 -210
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +69 -69
- data/spec/support/shared/unit/script_resource.rb +40 -32
- data/spec/support/shared/unit/windows_script_resource.rb +8 -8
- data/spec/unit/api_client/registration_spec.rb +47 -47
- data/spec/unit/api_client_spec.rb +107 -69
- data/spec/unit/application/apply_spec.rb +31 -15
- data/spec/unit/application/client_spec.rb +146 -45
- data/spec/unit/application/knife_spec.rb +31 -31
- data/spec/unit/application/solo_spec.rb +59 -43
- data/spec/unit/application_spec.rb +109 -74
- data/spec/unit/audit/audit_event_proxy_spec.rb +311 -0
- data/spec/unit/audit/audit_reporter_spec.rb +393 -0
- data/spec/unit/audit/control_group_data_spec.rb +478 -0
- data/{lib/chef/monkey_patches/file.rb → spec/unit/audit/rspec_formatter_spec.rb} +11 -8
- data/spec/unit/audit/runner_spec.rb +135 -0
- data/spec/unit/chef_fs/config_spec.rb +52 -0
- data/spec/unit/chef_fs/diff_spec.rb +12 -12
- data/spec/unit/chef_fs/file_pattern_spec.rb +276 -277
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +6 -6
- data/spec/unit/chef_fs/file_system_spec.rb +26 -13
- data/spec/unit/chef_fs/parallelizer.rb +87 -87
- data/spec/unit/chef_spec.rb +1 -1
- data/spec/unit/client_spec.rb +263 -97
- data/spec/unit/config_fetcher_spec.rb +13 -13
- data/spec/unit/config_spec.rb +105 -66
- data/spec/unit/cookbook/chefignore_spec.rb +6 -6
- data/spec/unit/cookbook/cookbook_version_loader_spec.rb +3 -3
- data/spec/unit/cookbook/metadata_spec.rb +149 -149
- data/spec/unit/cookbook/syntax_check_spec.rb +36 -31
- data/spec/unit/cookbook_loader_spec.rb +62 -58
- data/spec/unit/cookbook_manifest_spec.rb +141 -468
- data/spec/unit/cookbook_site_streaming_uploader_spec.rb +27 -27
- data/spec/unit/cookbook_spec.rb +15 -15
- data/spec/unit/cookbook_uploader_spec.rb +37 -3
- data/spec/unit/cookbook_version_file_specificity_spec.rb +554 -0
- data/spec/unit/cookbook_version_spec.rb +98 -240
- data/spec/unit/daemon_spec.rb +31 -31
- data/spec/unit/data_bag_item_spec.rb +121 -89
- data/spec/unit/data_bag_spec.rb +35 -35
- data/spec/unit/deprecation_spec.rb +27 -14
- data/spec/unit/digester_spec.rb +3 -3
- data/spec/unit/dsl/audit_spec.rb +43 -0
- data/spec/unit/dsl/data_query_spec.rb +1 -1
- data/spec/unit/dsl/platform_introspection_spec.rb +14 -14
- data/spec/unit/dsl/reboot_pending_spec.rb +18 -18
- data/spec/unit/dsl/regsitry_helper_spec.rb +6 -6
- data/spec/unit/encrypted_data_bag_item_spec.rb +58 -82
- data/spec/unit/environment_spec.rb +105 -105
- data/spec/unit/exceptions_spec.rb +47 -1
- data/spec/unit/file_access_control_spec.rb +62 -56
- data/spec/unit/file_cache_spec.rb +11 -11
- data/spec/unit/file_content_management/deploy/cp_spec.rb +2 -2
- data/spec/unit/file_content_management/deploy/mv_unix_spec.rb +10 -10
- data/spec/unit/file_content_management/deploy/mv_windows_spec.rb +23 -23
- data/spec/unit/formatters/error_inspectors/compile_error_inspector_spec.rb +14 -14
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +12 -12
- data/spec/unit/formatters/error_inspectors/cookbook_sync_error_inspector_spec.rb +1 -1
- data/spec/unit/formatters/error_inspectors/resource_failure_inspector_spec.rb +16 -16
- data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +4 -4
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +103 -13
- data/spec/unit/guard_interpreter_spec.rb +41 -0
- data/spec/unit/handler/json_file_spec.rb +10 -10
- data/spec/unit/handler_spec.rb +39 -39
- data/spec/unit/http/basic_client_spec.rb +3 -3
- data/spec/unit/http/http_request_spec.rb +10 -10
- data/spec/unit/http/simple_spec.rb +3 -3
- data/spec/unit/http/ssl_policies_spec.rb +15 -15
- data/spec/unit/http/validate_content_length_spec.rb +18 -13
- data/spec/unit/http_spec.rb +16 -9
- data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +153 -0
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +178 -0
- data/spec/unit/knife/bootstrap_spec.rb +144 -91
- data/spec/unit/knife/client_bulk_delete_spec.rb +24 -24
- data/spec/unit/knife/client_create_spec.rb +57 -43
- data/spec/unit/knife/client_delete_spec.rb +15 -15
- data/spec/unit/knife/client_edit_spec.rb +4 -4
- data/spec/unit/knife/client_list_spec.rb +2 -2
- data/spec/unit/knife/client_reregister_spec.rb +9 -9
- data/spec/unit/knife/configure_client_spec.rb +20 -20
- data/spec/unit/knife/configure_spec.rb +85 -85
- data/spec/unit/knife/cookbook_bulk_delete_spec.rb +15 -15
- data/spec/unit/knife/cookbook_create_spec.rb +59 -59
- data/spec/unit/knife/cookbook_delete_spec.rb +49 -49
- data/spec/unit/knife/cookbook_download_spec.rb +56 -56
- data/spec/unit/knife/cookbook_list_spec.rb +9 -9
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +8 -8
- data/spec/unit/knife/cookbook_metadata_spec.rb +44 -44
- data/spec/unit/knife/cookbook_show_spec.rb +29 -29
- data/spec/unit/knife/cookbook_site_download_spec.rb +26 -26
- data/spec/unit/knife/cookbook_site_install_spec.rb +5 -1
- data/spec/unit/knife/cookbook_site_share_spec.rb +68 -59
- data/spec/unit/knife/cookbook_site_unshare_spec.rb +15 -15
- data/spec/unit/knife/cookbook_test_spec.rb +16 -16
- data/spec/unit/knife/cookbook_upload_spec.rb +105 -71
- data/spec/unit/knife/core/bootstrap_context_spec.rb +37 -22
- data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +36 -36
- data/spec/unit/knife/core/object_loader_spec.rb +3 -3
- data/spec/unit/knife/core/subcommand_loader_spec.rb +107 -33
- data/spec/unit/knife/core/ui_spec.rb +84 -72
- data/spec/unit/knife/data_bag_from_file_spec.rb +1 -1
- data/spec/unit/knife/environment_compare_spec.rb +12 -12
- data/spec/unit/knife/environment_create_spec.rb +16 -16
- data/spec/unit/knife/environment_delete_spec.rb +14 -14
- data/spec/unit/knife/environment_edit_spec.rb +15 -15
- data/spec/unit/knife/environment_from_file_spec.rb +17 -17
- data/spec/unit/knife/environment_list_spec.rb +7 -7
- data/spec/unit/knife/environment_show_spec.rb +10 -10
- data/spec/unit/knife/index_rebuild_spec.rb +17 -17
- data/spec/unit/knife/knife_help.rb +24 -24
- data/spec/unit/knife/node_bulk_delete_spec.rb +14 -14
- data/spec/unit/knife/node_delete_spec.rb +11 -11
- data/spec/unit/knife/node_edit_spec.rb +17 -17
- data/spec/unit/knife/node_environment_set_spec.rb +12 -12
- data/spec/unit/knife/node_from_file_spec.rb +8 -8
- data/spec/unit/knife/node_list_spec.rb +9 -9
- data/spec/unit/knife/node_run_list_add_spec.rb +29 -29
- data/spec/unit/knife/node_run_list_remove_spec.rb +28 -13
- data/spec/unit/knife/node_run_list_set_spec.rb +27 -27
- data/spec/unit/knife/raw_spec.rb +43 -0
- data/spec/unit/knife/role_bulk_delete_spec.rb +12 -12
- data/spec/unit/knife/role_create_spec.rb +12 -12
- data/spec/unit/knife/role_delete_spec.rb +10 -10
- data/spec/unit/knife/role_edit_spec.rb +13 -13
- data/spec/unit/knife/role_env_run_list_add_spec.rb +217 -0
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +100 -0
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +108 -0
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +108 -0
- data/spec/unit/knife/role_env_run_list_set_spec.rb +102 -0
- data/spec/unit/knife/role_from_file_spec.rb +10 -10
- data/spec/unit/knife/role_list_spec.rb +7 -7
- data/spec/unit/knife/role_run_list_add_spec.rb +179 -0
- data/spec/unit/knife/role_run_list_clear_spec.rb +90 -0
- data/spec/unit/knife/role_run_list_remove_spec.rb +98 -0
- data/spec/unit/knife/role_run_list_replace_spec.rb +101 -0
- data/spec/unit/knife/role_run_list_set_spec.rb +92 -0
- data/spec/unit/knife/ssh_spec.rb +66 -66
- data/spec/unit/knife/ssl_check_spec.rb +27 -27
- data/spec/unit/knife/ssl_fetch_spec.rb +45 -12
- data/spec/unit/knife/status_spec.rb +5 -5
- data/spec/unit/knife/tag_create_spec.rb +5 -5
- data/spec/unit/knife/tag_delete_spec.rb +6 -6
- data/spec/unit/knife/tag_list_spec.rb +4 -4
- data/spec/unit/knife/user_create_spec.rb +18 -18
- data/spec/unit/knife/user_delete_spec.rb +4 -4
- data/spec/unit/knife/user_edit_spec.rb +7 -7
- data/spec/unit/knife/user_list_spec.rb +2 -2
- data/spec/unit/knife/user_reregister_spec.rb +10 -10
- data/spec/unit/knife/user_show_spec.rb +5 -5
- data/spec/unit/knife_spec.rb +36 -36
- data/spec/unit/lwrp_spec.rb +63 -39
- data/spec/unit/mash_spec.rb +6 -6
- data/spec/unit/mixin/checksum_spec.rb +2 -2
- data/spec/unit/mixin/command_spec.rb +13 -13
- data/spec/unit/mixin/convert_to_class_name_spec.rb +6 -6
- data/spec/unit/mixin/deep_merge_spec.rb +49 -49
- data/spec/unit/mixin/deprecation_spec.rb +5 -5
- data/spec/unit/mixin/enforce_ownership_and_permissions_spec.rb +14 -14
- data/spec/unit/mixin/homebrew_user_spec.rb +3 -3
- data/spec/unit/mixin/params_validate_spec.rb +71 -71
- data/spec/unit/mixin/path_sanity_spec.rb +14 -14
- data/spec/unit/mixin/securable_spec.rb +177 -177
- data/spec/unit/mixin/shell_out_spec.rb +56 -27
- data/spec/unit/mixin/template_spec.rb +31 -31
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +5 -5
- data/spec/unit/mixin/xml_escape_spec.rb +7 -7
- data/spec/unit/monkey_patches/uri_spec.rb +1 -1
- data/spec/unit/monologger_spec.rb +3 -3
- data/spec/unit/node/attribute_spec.rb +185 -136
- data/spec/unit/node/immutable_collections_spec.rb +22 -22
- data/spec/unit/node_spec.rb +210 -179
- data/spec/unit/org_spec.rb +196 -0
- data/spec/unit/platform/query_helpers_spec.rb +5 -5
- data/spec/unit/platform_spec.rb +46 -46
- data/spec/unit/policy_builder/expand_node_object_spec.rb +17 -18
- data/spec/unit/policy_builder/policyfile_spec.rb +159 -71
- data/spec/unit/provider/directory_spec.rb +5 -5
- data/spec/unit/provider/dsc_script_spec.rb +6 -6
- data/spec/unit/provider/env_spec.rb +27 -14
- data/spec/unit/provider/execute_spec.rb +139 -68
- data/spec/unit/provider/file/content_spec.rb +8 -8
- data/spec/unit/provider/git_spec.rb +10 -5
- data/spec/unit/provider/group/dscl_spec.rb +8 -11
- data/spec/unit/provider/group_spec.rb +13 -13
- data/spec/unit/provider/ifconfig/aix_spec.rb +3 -2
- data/spec/unit/provider/ifconfig/debian_spec.rb +19 -19
- data/spec/unit/provider/ifconfig_spec.rb +2 -2
- data/spec/unit/provider/mdadm_spec.rb +2 -2
- data/spec/unit/provider/mount/aix_spec.rb +5 -5
- data/spec/unit/provider/mount/mount_spec.rb +22 -22
- data/spec/unit/provider/mount/solaris_spec.rb +20 -20
- data/spec/unit/provider/package/aix_spec.rb +23 -22
- data/spec/unit/provider/package/apt_spec.rb +23 -4
- data/spec/unit/provider/package/dpkg_spec.rb +14 -15
- data/spec/unit/provider/package/freebsd/pkgng_spec.rb +1 -1
- data/spec/unit/provider/package/freebsd/port_spec.rb +1 -1
- data/spec/unit/provider/package/ips_spec.rb +1 -2
- data/spec/unit/provider/package/macports_spec.rb +14 -14
- data/spec/unit/provider/package/openbsd_spec.rb +66 -0
- data/spec/unit/provider/package/pacman_spec.rb +15 -14
- data/spec/unit/provider/package/portage_spec.rb +11 -11
- data/spec/unit/provider/package/rpm_spec.rb +132 -84
- data/spec/unit/provider/package/rubygems_spec.rb +54 -25
- data/spec/unit/provider/package/solaris_spec.rb +22 -25
- data/spec/unit/provider/package/yum_spec.rb +237 -36
- data/spec/unit/provider/package/zypper_spec.rb +9 -12
- data/spec/unit/provider/package_spec.rb +276 -2
- data/spec/unit/provider/package_spec.rbe +0 -0
- data/spec/unit/provider/remote_directory_spec.rb +25 -25
- data/spec/unit/provider/remote_file/ftp_spec.rb +3 -3
- data/spec/unit/provider/route_spec.rb +3 -3
- data/spec/unit/provider/script_spec.rb +61 -43
- data/spec/unit/provider/service/aix_service_spec.rb +5 -5
- data/spec/unit/provider/service/arch_service_spec.rb +5 -5
- data/spec/unit/provider/service/debian_service_spec.rb +8 -8
- data/spec/unit/provider/service/freebsd_service_spec.rb +16 -2
- data/spec/unit/provider/service/gentoo_service_spec.rb +8 -8
- data/spec/unit/provider/service/init_service_spec.rb +5 -5
- data/spec/unit/provider/service/insserv_service_spec.rb +2 -2
- data/spec/unit/provider/service/invokercd_service_spec.rb +5 -5
- data/spec/unit/provider/service/macosx_spec.rb +7 -7
- data/spec/unit/provider/service/openbsd_service_spec.rb +543 -0
- data/spec/unit/provider/service/redhat_spec.rb +4 -4
- data/spec/unit/provider/service/simple_service_spec.rb +2 -2
- data/spec/unit/provider/service/solaris_smf_service_spec.rb +14 -14
- data/spec/unit/provider/service/systemd_service_spec.rb +15 -7
- data/spec/unit/provider/service/upstart_service_spec.rb +4 -4
- data/spec/unit/provider/service/windows_spec.rb +119 -25
- data/spec/unit/provider/service_spec.rb +1 -1
- data/spec/unit/provider/user/dscl_spec.rb +38 -30
- data/spec/unit/provider/user_spec.rb +1 -1
- data/spec/unit/provider_resolver_spec.rb +7 -7
- data/spec/unit/provider_spec.rb +23 -23
- data/spec/unit/recipe_spec.rb +194 -83
- data/spec/unit/registry_helper_spec.rb +143 -143
- data/spec/unit/resource/chef_gem_spec.rb +117 -3
- data/spec/unit/resource/conditional_action_not_nothing_spec.rb +2 -2
- data/spec/unit/resource/conditional_spec.rb +56 -15
- data/spec/unit/resource/deploy_spec.rb +2 -2
- data/spec/unit/resource/dsc_script_spec.rb +32 -0
- data/spec/unit/resource/execute_spec.rb +4 -0
- data/spec/unit/resource/file/verification_spec.rb +111 -0
- data/spec/unit/resource/file_spec.rb +14 -0
- data/spec/unit/resource/openbsd_package_spec.rb +49 -0
- data/spec/unit/resource/remote_file_spec.rb +12 -12
- data/spec/unit/resource/resource_notification_spec.rb +18 -18
- data/spec/unit/resource/rpm_package_spec.rb +12 -0
- data/spec/unit/resource/scm_spec.rb +4 -4
- data/spec/unit/resource/script_spec.rb +3 -5
- data/spec/unit/resource/subversion_spec.rb +1 -1
- data/spec/unit/resource_builder_spec.rb +1 -0
- data/spec/unit/resource_collection/resource_list_spec.rb +2 -2
- data/spec/unit/resource_collection/resource_set_spec.rb +3 -3
- data/spec/unit/resource_collection/stepable_iterator_spec.rb +24 -24
- data/spec/unit/resource_collection_spec.rb +52 -52
- data/spec/unit/resource_definition_spec.rb +1 -1
- data/spec/unit/resource_reporter_spec.rb +118 -118
- data/spec/unit/resource_spec.rb +131 -125
- data/spec/unit/rest/auth_credentials_spec.rb +73 -73
- data/spec/unit/rest_spec.rb +12 -12
- data/spec/unit/role_spec.rb +85 -84
- data/spec/unit/run_context/cookbook_compiler_spec.rb +18 -18
- data/spec/unit/run_context_spec.rb +39 -68
- data/spec/unit/run_list/run_list_expansion_spec.rb +21 -21
- data/spec/unit/run_list/run_list_item_spec.rb +28 -28
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +14 -14
- data/spec/unit/run_list_spec.rb +55 -55
- data/spec/unit/run_lock_spec.rb +14 -14
- data/spec/unit/run_status_spec.rb +24 -24
- data/spec/unit/scan_access_control_spec.rb +23 -23
- data/spec/unit/search/query_spec.rb +54 -66
- data/spec/unit/shell/model_wrapper_spec.rb +13 -13
- data/spec/unit/shell/shell_ext_spec.rb +32 -32
- data/spec/unit/shell/shell_session_spec.rb +24 -24
- data/spec/unit/shell_out_spec.rb +4 -4
- data/spec/unit/shell_spec.rb +27 -27
- data/spec/unit/user_spec.rb +50 -50
- data/spec/unit/util/backup_spec.rb +32 -32
- data/spec/unit/util/diff_spec.rb +31 -31
- data/spec/unit/util/dsc/configuration_generator_spec.rb +38 -16
- data/spec/unit/util/dsc/lcm_output_parser_spec.rb +21 -26
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +10 -10
- data/spec/unit/util/editor_spec.rb +10 -10
- data/spec/unit/util/file_edit_spec.rb +10 -10
- data/spec/unit/util/path_helper_spec.rb +38 -46
- data/spec/unit/util/powershell/cmdlet_spec.rb +9 -9
- data/spec/unit/util/selinux_spec.rb +30 -30
- data/spec/unit/util/threaded_job_queue_spec.rb +6 -6
- data/spec/unit/version/platform_spec.rb +5 -5
- data/spec/unit/version_class_spec.rb +15 -15
- data/spec/unit/version_constraint/platform_spec.rb +7 -7
- data/spec/unit/version_constraint_spec.rb +43 -43
- data/spec/unit/windows_service_spec.rb +15 -15
- data/spec/unit/workstation_config_loader_spec.rb +2 -2
- data/tasks/rspec.rb +16 -18
- metadata +126 -49
- data/bin/shef +0 -35
- data/lib/chef/application/agent.rb +0 -18
- data/lib/chef/monkey_patches/fileutils.rb +0 -65
- data/lib/chef/monkey_patches/numeric.rb +0 -15
- data/lib/chef/monkey_patches/object.rb +0 -9
- data/lib/chef/monkey_patches/pathname.rb +0 -32
- data/lib/chef/monkey_patches/regexp.rb +0 -34
- data/lib/chef/monkey_patches/securerandom.rb +0 -44
- data/lib/chef/monkey_patches/string.rb +0 -49
- data/lib/chef/monkey_patches/tempfile.rb +0 -64
- data/lib/chef/monkey_patches/uri.rb +0 -70
@@ -43,67 +43,67 @@ end
|
|
43
43
|
# this is all getting a bit stupid, CHEF-4802 cut to remove all this
|
44
44
|
def setup_normal_file
|
45
45
|
[ resource_path, normalized_path, windows_path].each do |path|
|
46
|
-
File.
|
47
|
-
File.
|
48
|
-
File.
|
49
|
-
File.
|
50
|
-
File.
|
51
|
-
file_symlink_class.
|
52
|
-
File.
|
46
|
+
allow(File).to receive(:file?).with(path).and_return(true)
|
47
|
+
allow(File).to receive(:exists?).with(path).and_return(true)
|
48
|
+
allow(File).to receive(:exist?).with(path).and_return(true)
|
49
|
+
allow(File).to receive(:directory?).with(path).and_return(false)
|
50
|
+
allow(File).to receive(:writable?).with(path).and_return(true)
|
51
|
+
allow(file_symlink_class).to receive(:symlink?).with(path).and_return(false)
|
52
|
+
allow(File).to receive(:realpath?).with(path).and_return(normalized_path)
|
53
53
|
end
|
54
|
-
File.
|
54
|
+
allow(File).to receive(:directory?).with(enclosing_directory).and_return(true)
|
55
55
|
end
|
56
56
|
|
57
57
|
def setup_missing_file
|
58
58
|
[ resource_path, normalized_path, windows_path].each do |path|
|
59
|
-
File.
|
60
|
-
File.
|
61
|
-
File.
|
62
|
-
File.
|
63
|
-
File.
|
64
|
-
File.
|
65
|
-
file_symlink_class.
|
59
|
+
allow(File).to receive(:file?).with(path).and_return(false)
|
60
|
+
allow(File).to receive(:realpath?).with(path).and_return(resource_path)
|
61
|
+
allow(File).to receive(:exists?).with(path).and_return(false)
|
62
|
+
allow(File).to receive(:exist?).with(path).and_return(false)
|
63
|
+
allow(File).to receive(:directory?).with(path).and_return(false)
|
64
|
+
allow(File).to receive(:writable?).with(path).and_return(false)
|
65
|
+
allow(file_symlink_class).to receive(:symlink?).with(path).and_return(false)
|
66
66
|
end
|
67
|
-
File.
|
67
|
+
allow(File).to receive(:directory?).with(enclosing_directory).and_return(true)
|
68
68
|
end
|
69
69
|
|
70
70
|
def setup_symlink
|
71
71
|
[ resource_path, normalized_path, windows_path].each do |path|
|
72
|
-
File.
|
73
|
-
File.
|
74
|
-
File.
|
75
|
-
File.
|
76
|
-
File.
|
77
|
-
File.
|
78
|
-
file_symlink_class.
|
72
|
+
allow(File).to receive(:file?).with(path).and_return(true)
|
73
|
+
allow(File).to receive(:realpath?).with(path).and_return(normalized_path)
|
74
|
+
allow(File).to receive(:exists?).with(path).and_return(true)
|
75
|
+
allow(File).to receive(:exist?).with(path).and_return(true)
|
76
|
+
allow(File).to receive(:directory?).with(path).and_return(false)
|
77
|
+
allow(File).to receive(:writable?).with(path).and_return(true)
|
78
|
+
allow(file_symlink_class).to receive(:symlink?).with(path).and_return(true)
|
79
79
|
end
|
80
|
-
File.
|
80
|
+
allow(File).to receive(:directory?).with(enclosing_directory).and_return(true)
|
81
81
|
end
|
82
82
|
|
83
83
|
def setup_unwritable_file
|
84
84
|
[ resource_path, normalized_path, windows_path].each do |path|
|
85
|
-
File.
|
86
|
-
File.
|
87
|
-
File.
|
88
|
-
File.
|
89
|
-
File.
|
90
|
-
File.
|
91
|
-
file_symlink_class.
|
85
|
+
allow(File).to receive(:file?).with(path).and_return(false)
|
86
|
+
allow(File).to receive(:realpath?).with(path).and_raise(Errno::ENOENT)
|
87
|
+
allow(File).to receive(:exists?).with(path).and_return(true)
|
88
|
+
allow(File).to receive(:exist?).with(path).and_return(true)
|
89
|
+
allow(File).to receive(:directory?).with(path).and_return(false)
|
90
|
+
allow(File).to receive(:writable?).with(path).and_return(false)
|
91
|
+
allow(file_symlink_class).to receive(:symlink?).with(path).and_return(false)
|
92
92
|
end
|
93
|
-
File.
|
93
|
+
allow(File).to receive(:directory?).with(enclosing_directory).and_return(true)
|
94
94
|
end
|
95
95
|
|
96
96
|
def setup_missing_enclosing_directory
|
97
97
|
[ resource_path, normalized_path, windows_path].each do |path|
|
98
|
-
File.
|
99
|
-
File.
|
100
|
-
File.
|
101
|
-
File.
|
102
|
-
File.
|
103
|
-
File.
|
104
|
-
file_symlink_class.
|
98
|
+
allow(File).to receive(:file?).with(path).and_return(false)
|
99
|
+
allow(File).to receive(:realpath?).with(path).and_raise(Errno::ENOENT)
|
100
|
+
allow(File).to receive(:exists?).with(path).and_return(false)
|
101
|
+
allow(File).to receive(:exist?).with(path).and_return(false)
|
102
|
+
allow(File).to receive(:directory?).with(path).and_return(false)
|
103
|
+
allow(File).to receive(:writable?).with(path).and_return(false)
|
104
|
+
allow(file_symlink_class).to receive(:symlink?).with(path).and_return(false)
|
105
105
|
end
|
106
|
-
File.
|
106
|
+
allow(File).to receive(:directory?).with(enclosing_directory).and_return(false)
|
107
107
|
end
|
108
108
|
|
109
109
|
# A File subclass that we use as a replacement for Tempfile. Some versions of
|
@@ -136,9 +136,9 @@ shared_examples_for Chef::Provider::File do
|
|
136
136
|
end
|
137
137
|
|
138
138
|
before(:each) do
|
139
|
-
content.
|
140
|
-
File.
|
141
|
-
File.
|
139
|
+
allow(content).to receive(:tempfile).and_return(tempfile)
|
140
|
+
allow(File).to receive(:exist?).with(tempfile.path).and_call_original
|
141
|
+
allow(File).to receive(:exists?).with(tempfile.path).and_call_original
|
142
142
|
end
|
143
143
|
|
144
144
|
after do
|
@@ -147,15 +147,15 @@ shared_examples_for Chef::Provider::File do
|
|
147
147
|
end
|
148
148
|
|
149
149
|
it "should return a #{described_class}" do
|
150
|
-
provider.
|
150
|
+
expect(provider).to be_a_kind_of(described_class)
|
151
151
|
end
|
152
152
|
|
153
153
|
it "should store the resource passed to new as new_resource" do
|
154
|
-
provider.new_resource.
|
154
|
+
expect(provider.new_resource).to eql(resource)
|
155
155
|
end
|
156
156
|
|
157
157
|
it "should store the node passed to new as node" do
|
158
|
-
provider.node.
|
158
|
+
expect(provider.node).to eql(node)
|
159
159
|
end
|
160
160
|
|
161
161
|
context "when loading the current resource" do
|
@@ -167,15 +167,15 @@ shared_examples_for Chef::Provider::File do
|
|
167
167
|
#
|
168
168
|
it "should not try to load the content when the file is present" do
|
169
169
|
setup_normal_file
|
170
|
-
provider.
|
171
|
-
provider.
|
170
|
+
expect(provider).not_to receive(:tempfile)
|
171
|
+
expect(provider).not_to receive(:content)
|
172
172
|
provider.load_current_resource
|
173
173
|
end
|
174
174
|
|
175
175
|
it "should not try to load the content when the file is missing" do
|
176
176
|
setup_missing_file
|
177
|
-
provider.
|
178
|
-
provider.
|
177
|
+
expect(provider).not_to receive(:tempfile)
|
178
|
+
expect(provider).not_to receive(:content)
|
179
179
|
provider.load_current_resource
|
180
180
|
end
|
181
181
|
end
|
@@ -189,33 +189,33 @@ shared_examples_for Chef::Provider::File do
|
|
189
189
|
|
190
190
|
it "should load a current resource based on the one specified at construction" do
|
191
191
|
provider.load_current_resource
|
192
|
-
provider.current_resource.
|
192
|
+
expect(provider.current_resource).to be_a_kind_of(Chef::Resource::File)
|
193
193
|
end
|
194
194
|
|
195
195
|
it "the loaded current_resource name should be the same as the resource name" do
|
196
196
|
provider.load_current_resource
|
197
|
-
provider.current_resource.name.
|
197
|
+
expect(provider.current_resource.name).to eql(resource.name)
|
198
198
|
end
|
199
199
|
|
200
200
|
it "the loaded current_resource path should be the same as the resoure path" do
|
201
201
|
provider.load_current_resource
|
202
|
-
provider.current_resource.path.
|
202
|
+
expect(provider.current_resource.path).to eql(resource.path)
|
203
203
|
end
|
204
204
|
|
205
205
|
it "the loaded current_resource content should be nil" do
|
206
206
|
provider.load_current_resource
|
207
|
-
provider.current_resource.content.
|
207
|
+
expect(provider.current_resource.content).to eql(nil)
|
208
208
|
end
|
209
209
|
|
210
210
|
it "it should call checksum if we are managing content" do
|
211
|
-
provider.
|
212
|
-
provider.
|
211
|
+
expect(provider).to receive(:managing_content?).at_least(:once).and_return(true)
|
212
|
+
expect(provider).to receive(:checksum).with(resource.path).and_return(tempfile_sha256)
|
213
213
|
provider.load_current_resource
|
214
214
|
end
|
215
215
|
|
216
216
|
it "it should not call checksum if we are not managing content" do
|
217
|
-
provider.
|
218
|
-
provider.
|
217
|
+
expect(provider).to receive(:managing_content?).at_least(:once).and_return(false)
|
218
|
+
expect(provider).not_to receive(:checksum)
|
219
219
|
provider.load_current_resource
|
220
220
|
end
|
221
221
|
end
|
@@ -227,27 +227,27 @@ shared_examples_for Chef::Provider::File do
|
|
227
227
|
|
228
228
|
it "the current_resource should be a Chef::Resource::File" do
|
229
229
|
provider.load_current_resource
|
230
|
-
provider.current_resource.
|
230
|
+
expect(provider.current_resource).to be_a_kind_of(Chef::Resource::File)
|
231
231
|
end
|
232
232
|
|
233
233
|
it "the current_resource name should be the same as the resource name" do
|
234
234
|
provider.load_current_resource
|
235
|
-
provider.current_resource.name.
|
235
|
+
expect(provider.current_resource.name).to eql(resource.name)
|
236
236
|
end
|
237
237
|
|
238
238
|
it "the current_resource path should be the same as the resource path" do
|
239
239
|
provider.load_current_resource
|
240
|
-
provider.current_resource.path.
|
240
|
+
expect(provider.current_resource.path).to eql(resource.path)
|
241
241
|
end
|
242
242
|
|
243
243
|
it "the loaded current_resource content should be nil" do
|
244
244
|
provider.load_current_resource
|
245
|
-
provider.current_resource.content.
|
245
|
+
expect(provider.current_resource.content).to eql(nil)
|
246
246
|
end
|
247
247
|
|
248
248
|
it "it should not call checksum if we are not managing content" do
|
249
|
-
provider.
|
250
|
-
provider.
|
249
|
+
expect(provider).not_to receive(:managing_content?)
|
250
|
+
expect(provider).not_to receive(:checksum)
|
251
251
|
provider.load_current_resource
|
252
252
|
end
|
253
253
|
end
|
@@ -255,14 +255,14 @@ shared_examples_for Chef::Provider::File do
|
|
255
255
|
context "examining file security metadata on Unix with a file that exists" do
|
256
256
|
before do
|
257
257
|
# fake that we're on unix even if we're on windows
|
258
|
-
Chef::Platform.
|
258
|
+
allow(Chef::Platform).to receive(:windows?).and_return(false)
|
259
259
|
# mock up the filesystem to behave like unix
|
260
260
|
setup_normal_file
|
261
261
|
stat_struct = double("::File.stat", :mode => 0600, :uid => 0, :gid => 0, :mtime => 10000)
|
262
262
|
resource_real_path = File.realpath(resource.path)
|
263
|
-
File.
|
264
|
-
Etc.
|
265
|
-
Etc.
|
263
|
+
expect(File).to receive(:stat).with(resource_real_path).at_least(:once).and_return(stat_struct)
|
264
|
+
allow(Etc).to receive(:getgrgid).with(0).and_return(double("Group Ent", :name => "wheel"))
|
265
|
+
allow(Etc).to receive(:getpwuid).with(0).and_return(double("User Ent", :name => "root"))
|
266
266
|
end
|
267
267
|
|
268
268
|
context "when the new_resource does not specify any state" do
|
@@ -271,15 +271,15 @@ shared_examples_for Chef::Provider::File do
|
|
271
271
|
end
|
272
272
|
|
273
273
|
it "should load the permissions into the current_resource" do
|
274
|
-
provider.current_resource.mode.
|
275
|
-
provider.current_resource.owner.
|
276
|
-
provider.current_resource.group.
|
274
|
+
expect(provider.current_resource.mode).to eq("0600")
|
275
|
+
expect(provider.current_resource.owner).to eq("root")
|
276
|
+
expect(provider.current_resource.group).to eq("wheel")
|
277
277
|
end
|
278
278
|
|
279
279
|
it "should not set the new_resource permissions" do
|
280
|
-
provider.new_resource.group.
|
281
|
-
provider.new_resource.owner.
|
282
|
-
provider.new_resource.mode.
|
280
|
+
expect(provider.new_resource.group).to be_nil
|
281
|
+
expect(provider.new_resource.owner).to be_nil
|
282
|
+
expect(provider.new_resource.mode).to be_nil
|
283
283
|
end
|
284
284
|
end
|
285
285
|
|
@@ -293,15 +293,15 @@ shared_examples_for Chef::Provider::File do
|
|
293
293
|
|
294
294
|
it "should load the permissions into the current_resource as numbers" do
|
295
295
|
# Mode is always loaded as string for reporting purposes.
|
296
|
-
provider.current_resource.mode.
|
297
|
-
provider.current_resource.owner.
|
298
|
-
provider.current_resource.group.
|
296
|
+
expect(provider.current_resource.mode).to eq("0600")
|
297
|
+
expect(provider.current_resource.owner).to eq(0)
|
298
|
+
expect(provider.current_resource.group).to eq(0)
|
299
299
|
end
|
300
300
|
|
301
301
|
it "should not set the new_resource permissions" do
|
302
|
-
provider.new_resource.group.
|
303
|
-
provider.new_resource.owner.
|
304
|
-
provider.new_resource.mode.
|
302
|
+
expect(provider.new_resource.group).to eq(1)
|
303
|
+
expect(provider.new_resource.owner).to eq(1)
|
304
|
+
expect(provider.new_resource.mode).to eq(0644)
|
305
305
|
end
|
306
306
|
end
|
307
307
|
|
@@ -314,15 +314,15 @@ shared_examples_for Chef::Provider::File do
|
|
314
314
|
end
|
315
315
|
|
316
316
|
it "should load the permissions into the current_resource as symbols" do
|
317
|
-
provider.current_resource.mode.
|
318
|
-
provider.current_resource.owner.
|
319
|
-
provider.current_resource.group.
|
317
|
+
expect(provider.current_resource.mode).to eq("0600")
|
318
|
+
expect(provider.current_resource.owner).to eq("root")
|
319
|
+
expect(provider.current_resource.group).to eq("wheel")
|
320
320
|
end
|
321
321
|
|
322
322
|
it "should not set the new_resource permissions" do
|
323
|
-
provider.new_resource.group.
|
324
|
-
provider.new_resource.owner.
|
325
|
-
provider.new_resource.mode.
|
323
|
+
expect(provider.new_resource.group).to eq("seattlehiphop")
|
324
|
+
expect(provider.new_resource.owner).to eq("macklemore")
|
325
|
+
expect(provider.new_resource.mode).to eq("0321")
|
326
326
|
end
|
327
327
|
end
|
328
328
|
|
@@ -331,7 +331,7 @@ shared_examples_for Chef::Provider::File do
|
|
331
331
|
context "examining file security metadata on Unix with a file that does not exist" do
|
332
332
|
before do
|
333
333
|
# fake that we're on unix even if we're on windows
|
334
|
-
Chef::Platform.
|
334
|
+
allow(Chef::Platform).to receive(:windows?).and_return(false)
|
335
335
|
setup_missing_file
|
336
336
|
end
|
337
337
|
|
@@ -341,15 +341,15 @@ shared_examples_for Chef::Provider::File do
|
|
341
341
|
end
|
342
342
|
|
343
343
|
it "the current_resource permissions should be nil" do
|
344
|
-
provider.current_resource.mode.
|
345
|
-
provider.current_resource.owner.
|
346
|
-
provider.current_resource.group.
|
344
|
+
expect(provider.current_resource.mode).to be_nil
|
345
|
+
expect(provider.current_resource.owner).to be_nil
|
346
|
+
expect(provider.current_resource.group).to be_nil
|
347
347
|
end
|
348
348
|
|
349
349
|
it "should not set the new_resource permissions" do
|
350
|
-
provider.new_resource.group.
|
351
|
-
provider.new_resource.owner.
|
352
|
-
provider.new_resource.mode.
|
350
|
+
expect(provider.new_resource.group).to be_nil
|
351
|
+
expect(provider.new_resource.owner).to be_nil
|
352
|
+
expect(provider.new_resource.mode).to be_nil
|
353
353
|
end
|
354
354
|
end
|
355
355
|
|
@@ -362,15 +362,15 @@ shared_examples_for Chef::Provider::File do
|
|
362
362
|
end
|
363
363
|
|
364
364
|
it "the current_resource permissions should be nil" do
|
365
|
-
provider.current_resource.mode.
|
366
|
-
provider.current_resource.owner.
|
367
|
-
provider.current_resource.group.
|
365
|
+
expect(provider.current_resource.mode).to be_nil
|
366
|
+
expect(provider.current_resource.owner).to be_nil
|
367
|
+
expect(provider.current_resource.group).to be_nil
|
368
368
|
end
|
369
369
|
|
370
370
|
it "should not set the new_resource permissions" do
|
371
|
-
provider.new_resource.group.
|
372
|
-
provider.new_resource.owner.
|
373
|
-
provider.new_resource.mode.
|
371
|
+
expect(provider.new_resource.group).to eq(51948)
|
372
|
+
expect(provider.new_resource.owner).to eq(63945)
|
373
|
+
expect(provider.new_resource.mode).to eq(0123)
|
374
374
|
end
|
375
375
|
end
|
376
376
|
end
|
@@ -380,35 +380,35 @@ shared_examples_for Chef::Provider::File do
|
|
380
380
|
|
381
381
|
before do
|
382
382
|
# fake that we're on unix even if we're on windows
|
383
|
-
Chef::Platform.
|
383
|
+
allow(Chef::Platform).to receive(:windows?).and_return(false)
|
384
384
|
# mock up the filesystem to behave like unix
|
385
385
|
setup_normal_file
|
386
386
|
stat_struct = double("::File.stat", :mode => 0600, :uid => 0, :gid => 0, :mtime => 10000)
|
387
387
|
resource_real_path = File.realpath(resource.path)
|
388
|
-
File.
|
389
|
-
Etc.
|
390
|
-
Etc.
|
388
|
+
allow(File).to receive(:stat).with(resource_real_path).and_return(stat_struct)
|
389
|
+
allow(Etc).to receive(:getgrgid).with(0).and_return(double("Group Ent", :name => "wheel"))
|
390
|
+
allow(Etc).to receive(:getpwuid).with(0).and_return(double("User Ent", :name => "root"))
|
391
391
|
provider.send(:load_resource_attributes_from_file, resource)
|
392
392
|
end
|
393
393
|
|
394
394
|
it "new_resource should record the new permission information" do
|
395
|
-
provider.new_resource.group.
|
396
|
-
provider.new_resource.owner.
|
397
|
-
provider.new_resource.mode.
|
395
|
+
expect(provider.new_resource.group).to eq("wheel")
|
396
|
+
expect(provider.new_resource.owner).to eq("root")
|
397
|
+
expect(provider.new_resource.mode).to eq("0600")
|
398
398
|
end
|
399
399
|
end
|
400
400
|
|
401
401
|
context "when reporting security metadata on windows" do
|
402
402
|
it "records the file owner" do
|
403
|
-
|
403
|
+
skip
|
404
404
|
end
|
405
405
|
|
406
406
|
it "records rights for each user in the ACL" do
|
407
|
-
|
407
|
+
skip
|
408
408
|
end
|
409
409
|
|
410
410
|
it "records deny_rights for each user in the ACL" do
|
411
|
-
|
411
|
+
skip
|
412
412
|
end
|
413
413
|
end
|
414
414
|
|
@@ -419,12 +419,12 @@ shared_examples_for Chef::Provider::File do
|
|
419
419
|
[:create, :create_if_missing, :touch].each do |action|
|
420
420
|
context "action #{action}" do
|
421
421
|
it "raises EnclosingDirectoryDoesNotExist" do
|
422
|
-
|
422
|
+
expect {provider.run_action(action)}.to raise_error(Chef::Exceptions::EnclosingDirectoryDoesNotExist)
|
423
423
|
end
|
424
424
|
|
425
425
|
it "does not raise an exception in why-run mode" do
|
426
426
|
Chef::Config[:why_run] = true
|
427
|
-
|
427
|
+
expect {provider.run_action(action)}.not_to raise_error
|
428
428
|
Chef::Config[:why_run] = false
|
429
429
|
end
|
430
430
|
end
|
@@ -435,12 +435,12 @@ shared_examples_for Chef::Provider::File do
|
|
435
435
|
before { setup_unwritable_file }
|
436
436
|
|
437
437
|
it "action delete raises InsufficientPermissions" do
|
438
|
-
|
438
|
+
expect {provider.run_action(:delete)}.to raise_error(Chef::Exceptions::InsufficientPermissions)
|
439
439
|
end
|
440
440
|
|
441
441
|
it "action delete also raises InsufficientPermissions in why-run mode" do
|
442
442
|
Chef::Config[:why_run] = true
|
443
|
-
|
443
|
+
expect {provider.run_action(:delete)}.to raise_error(Chef::Exceptions::InsufficientPermissions)
|
444
444
|
Chef::Config[:why_run] = false
|
445
445
|
end
|
446
446
|
end
|
@@ -449,30 +449,60 @@ shared_examples_for Chef::Provider::File do
|
|
449
449
|
context "action create" do
|
450
450
|
it "should create the file, update its contents and then set the acls on the file" do
|
451
451
|
setup_missing_file
|
452
|
-
provider.
|
453
|
-
provider.
|
454
|
-
provider.
|
455
|
-
provider.
|
452
|
+
expect(provider).to receive(:do_create_file)
|
453
|
+
expect(provider).to receive(:do_contents_changes)
|
454
|
+
expect(provider).to receive(:do_acl_changes)
|
455
|
+
expect(provider).to receive(:load_resource_attributes_from_file)
|
456
456
|
provider.run_action(:create)
|
457
457
|
end
|
458
458
|
|
459
|
+
context "do_validate_content" do
|
460
|
+
before { setup_normal_file }
|
461
|
+
|
462
|
+
let(:tempfile) {
|
463
|
+
t = double('Tempfile', :path => "/tmp/foo-bar-baz", :closed? => true)
|
464
|
+
allow(content).to receive(:tempfile).and_return(t)
|
465
|
+
t
|
466
|
+
}
|
467
|
+
|
468
|
+
let(:verification) { double("Verification") }
|
469
|
+
|
470
|
+
context "with user-supplied verifications" do
|
471
|
+
it "calls #verify on each verification with tempfile path" do
|
472
|
+
allow(Chef::Resource::File::Verification).to receive(:new).and_return(verification)
|
473
|
+
provider.new_resource.verify "true"
|
474
|
+
provider.new_resource.verify "true"
|
475
|
+
expect(verification).to receive(:verify).with(tempfile.path).twice.and_return(true)
|
476
|
+
provider.send(:do_validate_content)
|
477
|
+
end
|
478
|
+
|
479
|
+
it "raises an exception if any verification fails" do
|
480
|
+
provider.new_resource.verify "true"
|
481
|
+
provider.new_resource.verify "false"
|
482
|
+
allow(verification).to receive(:verify).with("true").and_return(true)
|
483
|
+
allow(verification).to receive(:verify).with("false").and_return(false)
|
484
|
+
expect{provider.send(:do_validate_content)}.to raise_error(Chef::Exceptions::ValidationFailed)
|
485
|
+
end
|
486
|
+
end
|
487
|
+
end
|
488
|
+
|
459
489
|
context "do_create_file" do
|
460
490
|
context "when the file exists" do
|
461
491
|
before { setup_normal_file }
|
462
492
|
it "should not create the file" do
|
463
493
|
provider.load_current_resource
|
464
|
-
provider.deployment_strategy.
|
494
|
+
expect(provider.deployment_strategy).not_to receive(:create).with(resource_path)
|
465
495
|
provider.send(:do_create_file)
|
466
|
-
provider.send(:needs_creating?).
|
496
|
+
expect(provider.send(:needs_creating?)).to eq(false)
|
467
497
|
end
|
468
498
|
end
|
469
499
|
context "when the file does not exist" do
|
470
500
|
before { setup_missing_file }
|
471
501
|
it "should create the file" do
|
472
502
|
provider.load_current_resource
|
473
|
-
provider.deployment_strategy.
|
503
|
+
expect(provider.deployment_strategy).to receive(:create).with(resource_path)
|
474
504
|
provider.send(:do_create_file)
|
475
|
-
provider.send(:needs_creating?).
|
505
|
+
expect(provider.send(:needs_creating?)).to eq(true)
|
476
506
|
end
|
477
507
|
end
|
478
508
|
end
|
@@ -483,10 +513,10 @@ shared_examples_for Chef::Provider::File do
|
|
483
513
|
setup_normal_file
|
484
514
|
provider.load_current_resource
|
485
515
|
tempfile = double('Tempfile', :path => "/tmp/foo-bar-baz")
|
486
|
-
content.
|
487
|
-
File.
|
488
|
-
tempfile.
|
489
|
-
tempfile.
|
516
|
+
allow(content).to receive(:tempfile).and_return(tempfile)
|
517
|
+
expect(File).to receive(:exists?).with("/tmp/foo-bar-baz").and_return(true)
|
518
|
+
expect(tempfile).to receive(:close).once
|
519
|
+
expect(tempfile).to receive(:unlink).once
|
490
520
|
end
|
491
521
|
|
492
522
|
context "when the contents have changed" do
|
@@ -494,64 +524,64 @@ shared_examples_for Chef::Provider::File do
|
|
494
524
|
let(:tempfile_sha256) { "42971f0ddce0cb20cf7660a123ffa1a1543beb2f1e7cd9d65858764a27f3201d" }
|
495
525
|
let(:diff_for_reporting) { "+++\n---\n+foo\n-bar\n" }
|
496
526
|
before do
|
497
|
-
provider.
|
527
|
+
allow(provider).to receive(:contents_changed?).and_return(true)
|
498
528
|
diff = double('Diff', :for_output => ['+++','---','+foo','-bar'],
|
499
529
|
:for_reporting => diff_for_reporting )
|
500
|
-
diff.
|
501
|
-
provider.
|
502
|
-
provider.
|
503
|
-
provider.
|
504
|
-
provider.
|
505
|
-
provider.deployment_strategy.
|
530
|
+
allow(diff).to receive(:diff).with(resource_path, tempfile_path).and_return(true)
|
531
|
+
expect(provider).to receive(:diff).at_least(:once).and_return(diff)
|
532
|
+
expect(provider).to receive(:managing_content?).at_least(:once).and_return(true)
|
533
|
+
expect(provider).to receive(:checksum).with(tempfile_path).and_return(tempfile_sha256)
|
534
|
+
expect(provider).to receive(:checksum).with(resource_path).and_return(tempfile_sha256)
|
535
|
+
expect(provider.deployment_strategy).to receive(:deploy).with(tempfile_path, normalized_path)
|
506
536
|
end
|
507
537
|
context "when the file was created" do
|
508
|
-
before { provider.
|
538
|
+
before { expect(provider).to receive(:needs_creating?).at_least(:once).and_return(true) }
|
509
539
|
it "does not backup the file and does not produce a diff for reporting" do
|
510
|
-
provider.
|
540
|
+
expect(provider).not_to receive(:do_backup)
|
511
541
|
provider.send(:do_contents_changes)
|
512
|
-
resource.diff.
|
542
|
+
expect(resource.diff).to be_nil
|
513
543
|
end
|
514
544
|
end
|
515
545
|
context "when the file was not created" do
|
516
|
-
before { provider.
|
546
|
+
before { expect(provider).to receive(:needs_creating?).at_least(:once).and_return(false) }
|
517
547
|
it "backs up the file and produces a diff for reporting" do
|
518
|
-
provider.
|
548
|
+
expect(provider).to receive(:do_backup)
|
519
549
|
provider.send(:do_contents_changes)
|
520
|
-
resource.diff.
|
550
|
+
expect(resource.diff).to eq(diff_for_reporting)
|
521
551
|
end
|
522
552
|
end
|
523
553
|
end
|
524
554
|
|
525
555
|
it "does nothing when the contents have not changed" do
|
526
|
-
provider.
|
527
|
-
provider.
|
556
|
+
allow(provider).to receive(:contents_changed?).and_return(false)
|
557
|
+
expect(provider).not_to receive(:diff)
|
528
558
|
provider.send(:do_contents_changes)
|
529
559
|
end
|
530
560
|
end
|
531
561
|
|
532
562
|
it "does nothing when there is no content to deploy (tempfile returned from contents is nil)" do
|
533
|
-
provider.send(:content).
|
534
|
-
provider.
|
535
|
-
|
563
|
+
expect(provider.send(:content)).to receive(:tempfile).at_least(:once).and_return(nil)
|
564
|
+
expect(provider).not_to receive(:diff)
|
565
|
+
expect{ provider.send(:do_contents_changes) }.not_to raise_error
|
536
566
|
end
|
537
567
|
|
538
568
|
it "raises an exception when the content object returns a tempfile with a nil path" do
|
539
569
|
tempfile = double('Tempfile', :path => nil)
|
540
|
-
provider.send(:content).
|
541
|
-
|
570
|
+
expect(provider.send(:content)).to receive(:tempfile).at_least(:once).and_return(tempfile)
|
571
|
+
expect{ provider.send(:do_contents_changes) }.to raise_error
|
542
572
|
end
|
543
573
|
|
544
574
|
it "raises an exception when the content object returns a tempfile that does not exist" do
|
545
575
|
tempfile = double('Tempfile', :path => "/tmp/foo-bar-baz")
|
546
|
-
provider.send(:content).
|
547
|
-
File.
|
548
|
-
|
576
|
+
expect(provider.send(:content)).to receive(:tempfile).at_least(:once).and_return(tempfile)
|
577
|
+
expect(File).to receive(:exists?).with("/tmp/foo-bar-baz").and_return(false)
|
578
|
+
expect{ provider.send(:do_contents_changes) }.to raise_error
|
549
579
|
end
|
550
580
|
end
|
551
581
|
|
552
582
|
context "do_acl_changes" do
|
553
583
|
it "needs tests" do
|
554
|
-
|
584
|
+
skip
|
555
585
|
end
|
556
586
|
end
|
557
587
|
|
@@ -560,11 +590,11 @@ shared_examples_for Chef::Provider::File do
|
|
560
590
|
before do
|
561
591
|
setup_normal_file
|
562
592
|
provider.load_current_resource
|
563
|
-
provider.
|
593
|
+
allow(provider).to receive(:resource_updated?).and_return(true)
|
564
594
|
end
|
565
595
|
|
566
596
|
it "should check for selinux_enabled? by default" do
|
567
|
-
provider.
|
597
|
+
expect(provider).to receive(:selinux_enabled?)
|
568
598
|
provider.send(:do_selinux)
|
569
599
|
end
|
570
600
|
|
@@ -580,27 +610,27 @@ shared_examples_for Chef::Provider::File do
|
|
580
610
|
|
581
611
|
context "when selinux is enabled on the system" do
|
582
612
|
before do
|
583
|
-
provider.
|
613
|
+
expect(provider).to receive(:selinux_enabled?).and_return(true)
|
584
614
|
end
|
585
615
|
|
586
616
|
it "restores security context on the file" do
|
587
|
-
provider.
|
617
|
+
expect(provider).to receive(:restore_security_context).with(normalized_path, false)
|
588
618
|
provider.send(:do_selinux)
|
589
619
|
end
|
590
620
|
|
591
621
|
it "restores security context recursively when told so" do
|
592
|
-
provider.
|
622
|
+
expect(provider).to receive(:restore_security_context).with(normalized_path, true)
|
593
623
|
provider.send(:do_selinux, true)
|
594
624
|
end
|
595
625
|
end
|
596
626
|
|
597
627
|
context "when selinux is disabled on the system" do
|
598
628
|
before do
|
599
|
-
provider.
|
629
|
+
expect(provider).to receive(:selinux_enabled?).and_return(false)
|
600
630
|
end
|
601
631
|
|
602
632
|
it "should not restore security context" do
|
603
|
-
provider.
|
633
|
+
expect(provider).not_to receive(:restore_security_context)
|
604
634
|
provider.send(:do_selinux)
|
605
635
|
end
|
606
636
|
end
|
@@ -617,7 +647,7 @@ shared_examples_for Chef::Provider::File do
|
|
617
647
|
end
|
618
648
|
|
619
649
|
it "should not check for selinux_enabled?" do
|
620
|
-
provider.
|
650
|
+
expect(provider).not_to receive(:selinux_enabled?)
|
621
651
|
provider.send(:do_selinux)
|
622
652
|
end
|
623
653
|
end
|
@@ -625,11 +655,11 @@ shared_examples_for Chef::Provider::File do
|
|
625
655
|
|
626
656
|
context "when resource is not updated" do
|
627
657
|
before do
|
628
|
-
provider.
|
658
|
+
allow(provider).to receive(:resource_updated?).and_return(false)
|
629
659
|
end
|
630
660
|
|
631
661
|
it "should not check for selinux_enabled?" do
|
632
|
-
provider.
|
662
|
+
expect(provider).not_to receive(:selinux_enabled?)
|
633
663
|
provider.send(:do_selinux)
|
634
664
|
end
|
635
665
|
end
|
@@ -643,29 +673,29 @@ shared_examples_for Chef::Provider::File do
|
|
643
673
|
context "when the file is not a symlink" do
|
644
674
|
before { setup_normal_file }
|
645
675
|
it "should backup and delete the file and be updated by the last action" do
|
646
|
-
provider.
|
647
|
-
File.
|
676
|
+
expect(provider).to receive(:do_backup).at_least(:once).and_return(true)
|
677
|
+
expect(File).to receive(:delete).with(resource_path).and_return(true)
|
648
678
|
provider.run_action(:delete)
|
649
|
-
resource.
|
679
|
+
expect(resource).to be_updated_by_last_action
|
650
680
|
end
|
651
681
|
end
|
652
682
|
context "when the file is a symlink" do
|
653
683
|
before { setup_symlink }
|
654
684
|
it "should not backup the symlink" do
|
655
|
-
provider.
|
656
|
-
File.
|
685
|
+
expect(provider).not_to receive(:do_backup)
|
686
|
+
expect(File).to receive(:delete).with(resource_path).and_return(true)
|
657
687
|
provider.run_action(:delete)
|
658
|
-
resource.
|
688
|
+
expect(resource).to be_updated_by_last_action
|
659
689
|
end
|
660
690
|
end
|
661
691
|
end
|
662
692
|
context "when the file is not writable" do
|
663
693
|
before { setup_unwritable_file }
|
664
694
|
it "should not try to backup or delete the file, and should not be updated by last action" do
|
665
|
-
provider.
|
666
|
-
File.
|
667
|
-
|
668
|
-
resource.
|
695
|
+
expect(provider).not_to receive(:do_backup)
|
696
|
+
expect(File).not_to receive(:delete)
|
697
|
+
expect { provider.run_action(:delete) }.to raise_error()
|
698
|
+
expect(resource).not_to be_updated_by_last_action
|
669
699
|
end
|
670
700
|
end
|
671
701
|
end
|
@@ -674,10 +704,10 @@ shared_examples_for Chef::Provider::File do
|
|
674
704
|
before { setup_missing_file }
|
675
705
|
|
676
706
|
it "should not try to backup or delete the file, and should not be updated by last action" do
|
677
|
-
provider.
|
678
|
-
File.
|
679
|
-
|
680
|
-
resource.
|
707
|
+
expect(provider).not_to receive(:do_backup)
|
708
|
+
expect(File).not_to receive(:delete)
|
709
|
+
expect { provider.run_action(:delete) }.not_to raise_error
|
710
|
+
expect(resource).not_to be_updated_by_last_action
|
681
711
|
end
|
682
712
|
end
|
683
713
|
end
|
@@ -686,19 +716,19 @@ shared_examples_for Chef::Provider::File do
|
|
686
716
|
context "when the file does not exist" do
|
687
717
|
before { setup_missing_file }
|
688
718
|
it "should update the atime/mtime on action_touch" do
|
689
|
-
File.
|
690
|
-
provider.
|
719
|
+
expect(File).to receive(:utime).once
|
720
|
+
expect(provider).to receive(:action_create)
|
691
721
|
provider.run_action(:touch)
|
692
|
-
resource.
|
722
|
+
expect(resource).to be_updated_by_last_action
|
693
723
|
end
|
694
724
|
end
|
695
725
|
context "when the file exists" do
|
696
726
|
before { setup_normal_file }
|
697
727
|
it "should update the atime/mtime on action_touch" do
|
698
|
-
File.
|
699
|
-
provider.
|
728
|
+
expect(File).to receive(:utime).once
|
729
|
+
expect(provider).to receive(:action_create)
|
700
730
|
provider.run_action(:touch)
|
701
|
-
resource.
|
731
|
+
expect(resource).to be_updated_by_last_action
|
702
732
|
end
|
703
733
|
end
|
704
734
|
end
|
@@ -707,7 +737,7 @@ shared_examples_for Chef::Provider::File do
|
|
707
737
|
context "when the file does not exist" do
|
708
738
|
before { setup_missing_file }
|
709
739
|
it "should call action_create" do
|
710
|
-
provider.
|
740
|
+
expect(provider).to receive(:action_create)
|
711
741
|
provider.run_action(:create_if_missing)
|
712
742
|
end
|
713
743
|
end
|
@@ -715,7 +745,7 @@ shared_examples_for Chef::Provider::File do
|
|
715
745
|
context "when the file exists" do
|
716
746
|
before { setup_normal_file }
|
717
747
|
it "should not call action_create" do
|
718
|
-
provider.
|
748
|
+
expect(provider).not_to receive(:action_create)
|
719
749
|
provider.run_action(:create_if_missing)
|
720
750
|
end
|
721
751
|
end
|
@@ -728,27 +758,27 @@ shared_examples_for "a file provider with content field" do
|
|
728
758
|
context "when testing managing_content?" do
|
729
759
|
it "should be false when creating a file without content" do
|
730
760
|
provider.action = :create
|
731
|
-
resource.
|
732
|
-
resource.
|
733
|
-
expect(provider.send(:managing_content?)).to
|
761
|
+
allow(resource).to receive(:content).and_return(nil)
|
762
|
+
allow(resource).to receive(:checksum).and_return(nil)
|
763
|
+
expect(provider.send(:managing_content?)).to be_falsey
|
734
764
|
end
|
735
765
|
it "should be true when creating a file with content" do
|
736
766
|
provider.action = :create
|
737
|
-
resource.
|
738
|
-
resource.
|
739
|
-
expect(provider.send(:managing_content?)).to
|
767
|
+
allow(resource).to receive(:content).and_return("flurbleblobbleblooble")
|
768
|
+
allow(resource).to receive(:checksum).and_return(nil)
|
769
|
+
expect(provider.send(:managing_content?)).to be_truthy
|
740
770
|
end
|
741
771
|
it "should be true when checksum is set on the content (no matter how crazy)" do
|
742
772
|
provider.action = :create_if_missing
|
743
|
-
resource.
|
744
|
-
resource.
|
745
|
-
expect(provider.send(:managing_content?)).to
|
773
|
+
allow(resource).to receive(:checksum).and_return("1234123234234234")
|
774
|
+
allow(resource).to receive(:content).and_return(nil)
|
775
|
+
expect(provider.send(:managing_content?)).to be_truthy
|
746
776
|
end
|
747
777
|
it "should be false when action is create_if_missing" do
|
748
778
|
provider.action = :create_if_missing
|
749
|
-
resource.
|
750
|
-
resource.
|
751
|
-
expect(provider.send(:managing_content?)).to
|
779
|
+
allow(resource).to receive(:content).and_return("flurbleblobbleblooble")
|
780
|
+
allow(resource).to receive(:checksum).and_return(nil)
|
781
|
+
expect(provider.send(:managing_content?)).to be_falsey
|
752
782
|
end
|
753
783
|
end
|
754
784
|
end
|
@@ -757,32 +787,31 @@ shared_examples_for "a file provider with source field" do
|
|
757
787
|
context "when testing managing_content?" do
|
758
788
|
it "should be false when creating a file without content" do
|
759
789
|
provider.action = :create
|
760
|
-
resource.
|
761
|
-
resource.
|
762
|
-
resource.
|
763
|
-
expect(provider.send(:managing_content?)).to
|
790
|
+
allow(resource).to receive(:content).and_return(nil)
|
791
|
+
allow(resource).to receive(:source).and_return(nil)
|
792
|
+
allow(resource).to receive(:checksum).and_return(nil)
|
793
|
+
expect(provider.send(:managing_content?)).to be_falsey
|
764
794
|
end
|
765
795
|
it "should be true when creating a file with content" do
|
766
796
|
provider.action = :create
|
767
|
-
resource.
|
768
|
-
resource.
|
769
|
-
resource.
|
770
|
-
expect(provider.send(:managing_content?)).to
|
797
|
+
allow(resource).to receive(:content).and_return(nil)
|
798
|
+
allow(resource).to receive(:source).and_return("http://somewhere.com/something.php")
|
799
|
+
allow(resource).to receive(:checksum).and_return(nil)
|
800
|
+
expect(provider.send(:managing_content?)).to be_truthy
|
771
801
|
end
|
772
802
|
it "should be true when checksum is set on the content (no matter how crazy)" do
|
773
803
|
provider.action = :create_if_missing
|
774
|
-
resource.
|
775
|
-
resource.
|
776
|
-
resource.
|
777
|
-
expect(provider.send(:managing_content?)).to
|
804
|
+
allow(resource).to receive(:content).and_return(nil)
|
805
|
+
allow(resource).to receive(:source).and_return(nil)
|
806
|
+
allow(resource).to receive(:checksum).and_return("1234123234234234")
|
807
|
+
expect(provider.send(:managing_content?)).to be_truthy
|
778
808
|
end
|
779
809
|
it "should be false when action is create_if_missing" do
|
780
810
|
provider.action = :create_if_missing
|
781
|
-
resource.
|
782
|
-
resource.
|
783
|
-
resource.
|
784
|
-
expect(provider.send(:managing_content?)).to
|
811
|
+
allow(resource).to receive(:content).and_return(nil)
|
812
|
+
allow(resource).to receive(:source).and_return("http://somewhere.com/something.php")
|
813
|
+
allow(resource).to receive(:checksum).and_return(nil)
|
814
|
+
expect(provider.send(:managing_content?)).to be_falsey
|
785
815
|
end
|
786
816
|
end
|
787
817
|
end
|
788
|
-
|