chef 16.3.38-universal-mingw32 → 16.5.64-universal-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/Gemfile +1 -1
- data/Rakefile +2 -2
- data/bin/knife +1 -1
- data/chef-universal-mingw32.gemspec +0 -1
- data/chef.gemspec +2 -1
- data/distro/templates/powershell/chef/chef.psm1.erb +18 -18
- data/ext/win32-eventlog/Rakefile +2 -2
- data/ext/win32-eventlog/chef-log.man.erb +4 -4
- data/lib/chef/action_collection.rb +4 -0
- data/lib/chef/api_client/registration.rb +2 -2
- data/lib/chef/application.rb +19 -17
- data/lib/chef/application/apply.rb +17 -12
- data/lib/chef/application/base.rb +26 -23
- data/lib/chef/application/client.rb +10 -4
- data/lib/chef/application/exit_code.rb +13 -4
- data/lib/chef/application/knife.rb +22 -11
- data/lib/chef/application/solo.rb +2 -1
- data/lib/chef/application/windows_service.rb +39 -39
- data/lib/chef/application/windows_service_manager.rb +6 -6
- data/lib/chef/chef_class.rb +0 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
- data/lib/chef/chef_fs/knife.rb +2 -2
- data/lib/chef/chef_fs/parallelizer.rb +0 -1
- data/lib/chef/client.rb +21 -22
- data/lib/chef/cookbook/cookbook_version_loader.rb +1 -1
- data/lib/chef/cookbook/synchronizer.rb +2 -2
- data/lib/chef/cookbook_site_streaming_uploader.rb +13 -11
- data/lib/chef/cookbook_uploader.rb +1 -1
- data/lib/chef/data_collector.rb +6 -5
- data/lib/chef/data_collector/config_validation.rb +22 -13
- data/lib/chef/data_collector/run_end_message.rb +13 -3
- data/lib/chef/data_collector/run_start_message.rb +1 -1
- data/lib/chef/deprecated.rb +1 -1
- data/lib/chef/deprecation/warnings.rb +2 -2
- data/lib/chef/digester.rb +2 -2
- data/lib/chef/dsl/chef_vault.rb +1 -1
- data/lib/chef/dsl/data_query.rb +2 -2
- data/lib/chef/dsl/platform_introspection.rb +9 -9
- data/lib/chef/encrypted_data_bag_item.rb +3 -4
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +3 -3
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +3 -3
- data/lib/chef/environment.rb +4 -4
- data/lib/chef/event_loggers/windows_eventlog.rb +2 -2
- data/lib/chef/exceptions.rb +5 -5
- data/lib/chef/file_access_control/windows.rb +5 -1
- data/lib/chef/file_content_management/tempfile.rb +9 -9
- data/lib/chef/formatters/doc.rb +7 -6
- data/lib/chef/formatters/error_inspectors/api_error_formatting.rb +6 -5
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +3 -3
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +9 -9
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +3 -3
- data/lib/chef/formatters/minimal.rb +5 -4
- data/lib/chef/handler.rb +2 -0
- data/lib/chef/http.rb +15 -13
- data/lib/chef/http/auth_credentials.rb +5 -1
- data/lib/chef/http/authenticator.rb +3 -1
- data/lib/chef/http/basic_client.rb +4 -2
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +7 -5
- data/lib/chef/http/socketless_chef_zero_client.rb +5 -2
- data/lib/chef/http/ssl_policies.rb +1 -1
- data/lib/chef/json_compat.rb +2 -2
- data/lib/chef/knife.rb +4 -4
- data/lib/chef/knife/bootstrap.rb +18 -16
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +3 -3
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +7 -7
- data/lib/chef/knife/client_create.rb +3 -3
- data/lib/chef/knife/config_get.rb +8 -97
- data/lib/chef/knife/config_get_profile.rb +9 -9
- data/lib/chef/knife/config_list.rb +139 -0
- data/lib/chef/knife/config_list_profiles.rb +8 -98
- data/lib/chef/knife/config_show.rb +127 -0
- data/lib/chef/knife/config_use.rb +61 -0
- data/lib/chef/knife/config_use_profile.rb +9 -24
- data/lib/chef/knife/configure.rb +4 -2
- data/lib/chef/knife/cookbook_download.rb +1 -1
- data/lib/chef/knife/cookbook_metadata.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +23 -23
- data/lib/chef/knife/core/bootstrap_context.rb +2 -2
- data/lib/chef/knife/core/generic_presenter.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +2 -2
- data/lib/chef/knife/core/object_loader.rb +1 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +42 -34
- data/lib/chef/knife/delete.rb +15 -15
- data/lib/chef/knife/exec.rb +4 -4
- data/lib/chef/knife/node_show.rb +2 -2
- data/lib/chef/knife/serve.rb +3 -3
- data/lib/chef/knife/ssh.rb +22 -7
- data/lib/chef/knife/ssl_check.rb +3 -3
- data/lib/chef/knife/status.rb +2 -2
- data/lib/chef/knife/user_create.rb +2 -2
- data/lib/chef/knife/xargs.rb +19 -19
- data/lib/chef/knife/yaml_convert.rb +1 -1
- data/lib/chef/local_mode.rb +2 -2
- data/lib/chef/log/syslog.rb +2 -2
- data/lib/chef/log/winevt.rb +2 -2
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/deep_merge.rb +35 -18
- data/lib/chef/mixin/openssl_helper.rb +4 -5
- data/lib/chef/mixin/shell_out.rb +1 -1
- data/lib/chef/mixin/template.rb +2 -2
- data/lib/chef/mixin/uris.rb +2 -2
- data/lib/chef/mixin/versioned_api.rb +1 -2
- data/lib/chef/mixin/which.rb +1 -1
- data/lib/chef/monkey_patches/net_http.rb +4 -4
- data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
- data/lib/chef/node/attribute.rb +2 -4
- data/lib/chef/node_map.rb +2 -2
- data/lib/chef/platform/service_helpers.rb +1 -1
- data/lib/chef/policy_builder/policyfile.rb +2 -2
- data/lib/chef/property.rb +1 -1
- data/lib/chef/provider.rb +0 -4
- data/lib/chef/provider/cron/unix.rb +0 -2
- data/lib/chef/provider/file.rb +2 -2
- data/lib/chef/provider/git.rb +5 -5
- data/lib/chef/provider/group.rb +0 -2
- data/lib/chef/provider/group/suse.rb +5 -5
- data/lib/chef/provider/ifconfig.rb +1 -4
- data/lib/chef/provider/launchd.rb +2 -2
- data/lib/chef/provider/mount.rb +0 -2
- data/lib/chef/provider/mount/linux.rb +63 -0
- data/lib/chef/provider/package.rb +0 -2
- data/lib/chef/provider/package/rubygems.rb +22 -19
- data/lib/chef/provider/package/snap.rb +1 -2
- data/lib/chef/provider/package/windows.rb +2 -2
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +12 -10
- data/lib/chef/provider/package/zypper.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +21 -5
- data/lib/chef/provider/remote_file/content.rb +3 -0
- data/lib/chef/provider/remote_file/ftp.rb +6 -4
- data/lib/chef/provider/remote_file/sftp.rb +6 -4
- data/lib/chef/provider/route.rb +2 -6
- data/lib/chef/provider/service/arch.rb +1 -1
- data/lib/chef/provider/service/debian.rb +1 -1
- data/lib/chef/provider/service/gentoo.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +4 -4
- data/lib/chef/provider/service/openbsd.rb +1 -4
- data/lib/chef/provider/service/redhat.rb +2 -2
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +10 -10
- data/lib/chef/provider/systemd_unit.rb +0 -2
- data/lib/chef/provider/template/content.rb +1 -0
- data/lib/chef/provider/template_finder.rb +2 -10
- data/lib/chef/provider/user/dscl.rb +5 -5
- data/lib/chef/provider/user/mac.rb +10 -10
- data/lib/chef/provider/windows_task.rb +1 -5
- data/lib/chef/provider/zypper_repository.rb +2 -3
- data/lib/chef/provider_resolver.rb +1 -1
- data/lib/chef/providers.rb +1 -1
- data/lib/chef/recipe.rb +2 -2
- data/lib/chef/resource.rb +7 -11
- data/lib/chef/resource/apt_repository.rb +2 -11
- data/lib/chef/resource/bff_package.rb +22 -0
- data/lib/chef/resource/breakpoint.rb +57 -2
- data/lib/chef/resource/build_essential.rb +1 -1
- data/lib/chef/resource/cab_package.rb +29 -0
- data/lib/chef/resource/chef_client_cron.rb +32 -25
- data/lib/chef/resource/chef_client_launchd.rb +194 -0
- data/lib/chef/resource/chef_client_scheduled_task.rb +21 -18
- data/lib/chef/resource/chef_client_systemd_timer.rb +26 -19
- data/lib/chef/resource/chef_client_trusted_certificate.rb +101 -0
- data/lib/chef/resource/chef_gem.rb +10 -10
- data/lib/chef/resource/chef_handler.rb +148 -4
- data/lib/chef/resource/chef_sleep.rb +2 -2
- data/lib/chef/resource/chef_vault_secret.rb +14 -14
- data/lib/chef/resource/cookbook_file.rb +2 -2
- data/lib/chef/resource/cron/cron_d.rb +0 -1
- data/lib/chef/resource/dnf_package.rb +2 -2
- data/lib/chef/resource/dsc_resource.rb +0 -1
- data/lib/chef/resource/dsc_script.rb +2 -2
- data/lib/chef/resource/execute.rb +8 -9
- data/lib/chef/resource/file.rb +4 -4
- data/lib/chef/resource/gem_package.rb +5 -5
- data/lib/chef/resource/homebrew_package.rb +3 -3
- data/lib/chef/resource/homebrew_update.rb +7 -7
- data/lib/chef/resource/hostname.rb +19 -19
- data/lib/chef/resource/launchd.rb +2 -1
- data/lib/chef/resource/locale.rb +2 -2
- data/lib/chef/resource/macos_userdefaults.rb +3 -3
- data/lib/chef/resource/notify_group.rb +0 -1
- data/lib/chef/resource/ohai.rb +46 -3
- data/lib/chef/resource/ohai_hint.rb +33 -0
- data/lib/chef/resource/openssl_dhparam.rb +29 -5
- data/lib/chef/resource/openssl_ec_private_key.rb +8 -3
- data/lib/chef/resource/openssl_ec_public_key.rb +4 -2
- data/lib/chef/resource/openssl_rsa_private_key.rb +8 -3
- data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
- data/lib/chef/resource/openssl_x509_certificate.rb +38 -35
- data/lib/chef/resource/openssl_x509_crl.rb +21 -10
- data/lib/chef/resource/openssl_x509_request.rb +37 -36
- data/lib/chef/resource/osx_profile.rb +292 -6
- data/lib/chef/resource/plist.rb +1 -1
- data/lib/chef/resource/powershell_package_source.rb +6 -6
- data/lib/chef/resource/powershell_script.rb +24 -30
- data/lib/chef/resource/reboot.rb +2 -2
- data/lib/chef/resource/remote_file.rb +3 -3
- data/lib/chef/resource/rhsm_register.rb +22 -10
- data/lib/chef/resource/ruby_block.rb +2 -2
- data/lib/chef/resource/scm/subversion.rb +2 -2
- data/lib/chef/resource/service.rb +3 -3
- data/lib/chef/resource/ssh_known_hosts_entry.rb +2 -2
- data/lib/chef/resource/sudo.rb +1 -1
- data/lib/chef/resource/support/cron.d.erb +1 -1
- data/lib/chef/resource/support/cron_access.erb +1 -1
- data/lib/chef/resource/support/sudoer.erb +1 -1
- data/lib/chef/resource/support/ulimit.erb +1 -1
- data/lib/chef/resource/sysctl.rb +6 -10
- data/lib/chef/resource/systemd_unit.rb +2 -2
- data/lib/chef/resource/template.rb +2 -2
- data/lib/chef/resource/timezone.rb +112 -73
- data/lib/chef/resource/windows_ad_join.rb +12 -3
- data/lib/chef/resource/windows_audit_policy.rb +3 -0
- data/lib/chef/resource/windows_auto_run.rb +2 -0
- data/lib/chef/resource/windows_certificate.rb +8 -4
- data/lib/chef/resource/windows_dfs_folder.rb +2 -0
- data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
- data/lib/chef/resource/windows_dfs_server.rb +2 -0
- data/lib/chef/resource/windows_dns_record.rb +10 -7
- data/lib/chef/resource/windows_dns_zone.rb +12 -7
- data/lib/chef/resource/windows_feature.rb +2 -0
- data/lib/chef/resource/windows_feature_dism.rb +10 -0
- data/lib/chef/resource/windows_feature_powershell.rb +14 -2
- data/lib/chef/resource/windows_firewall_profile.rb +24 -20
- data/lib/chef/resource/windows_firewall_rule.rb +5 -3
- data/lib/chef/resource/windows_font.rb +3 -1
- data/lib/chef/resource/windows_package.rb +28 -5
- data/lib/chef/resource/windows_pagefile.rb +4 -0
- data/lib/chef/resource/windows_printer.rb +22 -21
- data/lib/chef/resource/windows_printer_port.rb +20 -17
- data/lib/chef/resource/windows_security_policy.rb +2 -0
- data/lib/chef/resource/windows_share.rb +5 -3
- data/lib/chef/resource/windows_shortcut.rb +2 -0
- data/lib/chef/resource/windows_uac.rb +2 -0
- data/lib/chef/resource/windows_user_privilege.rb +54 -53
- data/lib/chef/resource/windows_workgroup.rb +5 -6
- data/lib/chef/resource/yum_package.rb +2 -2
- data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
- data/lib/chef/resources.rb +3 -1
- data/lib/chef/role.rb +2 -2
- data/lib/chef/run_context.rb +2 -2
- data/lib/chef/run_context/cookbook_compiler.rb +21 -21
- data/lib/chef/run_lock.rb +2 -2
- data/lib/chef/run_status.rb +2 -6
- data/lib/chef/search/query.rb +4 -5
- data/lib/chef/server_api_versions.rb +4 -0
- data/lib/chef/shell.rb +32 -27
- data/lib/chef/shell/ext.rb +11 -11
- data/lib/chef/shell/shell_session.rb +2 -2
- data/lib/chef/train_transport.rb +5 -104
- data/lib/chef/util/backup.rb +1 -1
- data/lib/chef/util/diff.rb +14 -14
- data/lib/chef/util/powershell/cmdlet.rb +4 -2
- data/lib/chef/util/powershell/ps_credential.rb +18 -14
- data/lib/chef/util/threaded_job_queue.rb +0 -2
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/crypto.rb +1 -1
- data/lib/chef/win32/file.rb +2 -2
- data/lib/chef/win32/file/version_info.rb +5 -5
- data/lib/chef/win32/registry.rb +1 -2
- data/spec/data/shef-config.rb +1 -1
- data/spec/data/ssl/chef-rspec.cert +15 -15
- data/spec/functional/event_loggers/windows_eventlog_spec.rb +6 -5
- data/spec/functional/resource/aix_service_spec.rb +2 -2
- data/spec/functional/resource/aixinit_service_spec.rb +8 -8
- data/spec/functional/resource/bff_spec.rb +2 -2
- data/spec/functional/resource/cookbook_file_spec.rb +1 -1
- data/spec/functional/resource/dsc_resource_spec.rb +1 -1
- data/spec/functional/resource/dsc_script_spec.rb +0 -1
- data/spec/functional/resource/group_spec.rb +6 -6
- data/spec/functional/resource/insserv_spec.rb +5 -5
- data/spec/functional/resource/link_spec.rb +20 -20
- data/spec/functional/resource/powershell_script_spec.rb +4 -4
- data/spec/functional/resource/rpm_spec.rb +2 -2
- data/spec/functional/resource/user/dscl_spec.rb +1 -1
- data/spec/functional/resource/user/mac_user_spec.rb +1 -1
- data/spec/functional/resource/windows_certificate_spec.rb +3 -3
- data/spec/functional/resource/windows_font_spec.rb +49 -0
- data/spec/functional/resource/windows_security_policy_spec.rb +0 -3
- data/spec/functional/resource/windows_task_spec.rb +13 -13
- data/spec/functional/run_lock_spec.rb +24 -24
- data/spec/functional/version_spec.rb +3 -3
- data/spec/functional/win32/registry_spec.rb +8 -8
- data/spec/functional/win32/service_manager_spec.rb +1 -1
- data/spec/integration/client/client_spec.rb +4 -4
- data/spec/integration/client/exit_code_spec.rb +3 -2
- data/spec/integration/client/ipv6_spec.rb +1 -1
- data/spec/integration/knife/common_options_spec.rb +12 -12
- data/spec/integration/knife/config_list_spec.rb +220 -0
- data/spec/integration/knife/config_show_spec.rb +192 -0
- data/spec/integration/knife/config_use_spec.rb +198 -0
- data/spec/integration/knife/cookbook_api_ipv6_spec.rb +1 -1
- data/spec/integration/knife/diff_spec.rb +3 -1
- data/spec/integration/knife/download_spec.rb +3 -1
- data/spec/integration/knife/serve_spec.rb +5 -5
- data/spec/integration/knife/upload_spec.rb +3 -1
- data/spec/integration/ohai/ohai_spec.rb +61 -0
- data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
- data/spec/integration/recipes/remote_directory.rb +1 -1
- data/spec/integration/solo/solo_spec.rb +5 -5
- data/spec/spec_helper.rb +12 -9
- data/spec/stress/win32/file_spec.rb +1 -1
- data/spec/support/chef_helpers.rb +2 -2
- data/spec/support/matchers/leak.rb +2 -2
- data/spec/support/platform_helpers.rb +17 -35
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/shared/functional/directory_resource.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +20 -20
- data/spec/support/shared/functional/securable_resource.rb +108 -27
- data/spec/support/shared/functional/win32_service.rb +2 -2
- data/spec/support/shared/functional/windows_script.rb +3 -3
- data/spec/support/shared/integration/integration_helper.rb +22 -52
- data/spec/support/shared/unit/application_dot_d.rb +5 -3
- data/spec/support/shared/unit/script_resource.rb +6 -20
- data/spec/support/shared/unit/windows_script_resource.rb +15 -28
- data/spec/tiny_server.rb +0 -1
- data/spec/unit/application/client_spec.rb +2 -2
- data/spec/unit/application/exit_code_spec.rb +10 -0
- data/spec/unit/application_spec.rb +4 -6
- data/spec/unit/chef_fs/parallelizer_spec.rb +5 -1
- data/spec/unit/chef_fs/path_util_spec.rb +1 -1
- data/spec/unit/cookbook/synchronizer_spec.rb +2 -2
- data/spec/unit/cookbook_spec.rb +2 -2
- data/spec/unit/data_collector/config_validation_spec.rb +208 -0
- data/spec/unit/data_collector_spec.rb +28 -113
- data/spec/unit/dsl/declare_resource_spec.rb +1 -1
- data/spec/unit/environment_spec.rb +7 -7
- data/spec/unit/file_access_control_spec.rb +1 -1
- data/spec/unit/http/api_versions_spec.rb +19 -1
- data/spec/unit/knife/bootstrap_spec.rb +20 -20
- data/spec/unit/knife/cookbook_download_spec.rb +4 -4
- data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
- data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
- data/spec/unit/knife/core/ui_spec.rb +1 -0
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
- data/spec/unit/knife/ssh_spec.rb +2 -2
- data/spec/unit/knife/supermarket_share_spec.rb +1 -1
- data/spec/unit/lwrp_spec.rb +3 -3
- data/spec/unit/mixin/deep_merge_spec.rb +15 -0
- data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
- data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
- data/spec/unit/mixin/securable_spec.rb +2 -2
- data/spec/unit/mixin/template_spec.rb +30 -30
- data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
- data/spec/unit/node/immutable_collections_spec.rb +8 -4
- data/spec/unit/node_spec.rb +5 -5
- data/spec/unit/provider/mount/linux_spec.rb +97 -0
- data/spec/unit/provider/package/chocolatey_spec.rb +1 -1
- data/spec/unit/provider/package/powershell_spec.rb +1 -1
- data/spec/unit/provider/package/rubygems_spec.rb +4 -1
- data/spec/unit/provider/powershell_script_spec.rb +11 -4
- data/spec/unit/provider/remote_directory_spec.rb +9 -9
- data/spec/unit/provider/route_spec.rb +0 -2
- data/spec/unit/provider/service/arch_service_spec.rb +3 -2
- data/spec/unit/provider/service/debian_service_spec.rb +1 -1
- data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
- data/spec/unit/provider/service/macosx_spec.rb +3 -3
- data/spec/unit/provider/service/redhat_spec.rb +2 -2
- data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
- data/spec/unit/provider_resolver_spec.rb +6 -6
- data/spec/unit/recipe_spec.rb +1 -1
- data/spec/unit/resource/batch_spec.rb +6 -6
- data/spec/unit/resource/chef_client_cron_spec.rb +35 -14
- data/spec/unit/resource/chef_client_launchd_spec.rb +127 -0
- data/spec/unit/resource/chef_client_systemd_timer_spec.rb +36 -1
- data/spec/unit/resource/chef_client_trusted_certificate_spec.rb +54 -0
- data/spec/unit/resource/execute_spec.rb +113 -118
- data/spec/unit/resource/launchd_spec.rb +8 -0
- data/spec/unit/resource/osx_profile_spec.rb +299 -0
- data/spec/unit/resource/powershell_script_spec.rb +11 -29
- data/spec/unit/resource/rhsm_register_spec.rb +56 -18
- data/spec/unit/resource/script_spec.rb +6 -1
- data/spec/unit/resource/timezone_spec.rb +63 -0
- data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
- data/spec/unit/resource/windows_uac_spec.rb +1 -1
- data/spec/unit/resource/windows_user_privilege_spec.rb +55 -0
- data/spec/unit/role_spec.rb +11 -11
- data/spec/unit/run_lock_spec.rb +5 -1
- data/spec/unit/runner_spec.rb +1 -2
- data/spec/unit/server_api_spec.rb +43 -16
- data/spec/unit/shell/shell_ext_spec.rb +46 -3
- data/spec/unit/shell/shell_session_spec.rb +35 -64
- data/spec/unit/shell_spec.rb +16 -19
- data/spec/unit/train_transport_spec.rb +14 -13
- data/spec/unit/util/selinux_spec.rb +2 -0
- data/tasks/rspec.rb +1 -3
- metadata +42 -33
- data/lib/chef/dist.rb +0 -68
- data/lib/chef/provider/osx_profile.rb +0 -255
- data/spec/integration/knife/config_get_profile_spec.rb +0 -113
- data/spec/integration/knife/config_get_spec.rb +0 -191
- data/spec/integration/knife/config_list_profiles_spec.rb +0 -218
- data/spec/integration/knife/config_use_profile_spec.rb +0 -154
- data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -20,7 +20,7 @@ require "spec_helper"
|
|
20
20
|
|
21
21
|
describe Chef::Resource::PowershellScript do
|
22
22
|
|
23
|
-
|
23
|
+
let(:resource) do
|
24
24
|
node = Chef::Node.new
|
25
25
|
|
26
26
|
node.default["kernel"] = {}
|
@@ -29,26 +29,25 @@ describe Chef::Resource::PowershellScript do
|
|
29
29
|
|
30
30
|
run_context = Chef::RunContext.new(node, nil, nil)
|
31
31
|
|
32
|
-
|
32
|
+
Chef::Resource::PowershellScript.new("powershell_unit_test", run_context)
|
33
33
|
end
|
34
34
|
|
35
35
|
it "creates a new Chef::Resource::PowershellScript" do
|
36
|
-
expect(
|
36
|
+
expect(resource).to be_a_kind_of(Chef::Resource::PowershellScript)
|
37
37
|
end
|
38
38
|
|
39
39
|
it "sets convert_boolean_return to false by default" do
|
40
|
-
expect(
|
40
|
+
expect(resource.convert_boolean_return).to eq(false)
|
41
41
|
end
|
42
42
|
|
43
43
|
it "returns the value for convert_boolean_return that was set" do
|
44
|
-
|
45
|
-
expect(
|
46
|
-
|
47
|
-
expect(
|
44
|
+
resource.convert_boolean_return true
|
45
|
+
expect(resource.convert_boolean_return).to eq(true)
|
46
|
+
resource.convert_boolean_return false
|
47
|
+
expect(resource.convert_boolean_return).to eq(false)
|
48
48
|
end
|
49
49
|
|
50
50
|
context "when using guards" do
|
51
|
-
let(:resource) { @resource }
|
52
51
|
before(:each) do
|
53
52
|
allow(resource).to receive(:run_action)
|
54
53
|
allow(resource).to receive(:updated).and_return(true)
|
@@ -126,28 +125,11 @@ describe Chef::Resource::PowershellScript do
|
|
126
125
|
end
|
127
126
|
|
128
127
|
context "as a script running in Windows-based scripting language" do
|
129
|
-
let(:
|
130
|
-
let(:resource_instance_name ) {
|
128
|
+
let(:windows_script_resource) { resource }
|
129
|
+
let(:resource_instance_name ) { resource.command }
|
131
130
|
let(:resource_name) { :powershell_script }
|
132
131
|
let(:interpreter_file_name) { "powershell.exe" }
|
133
|
-
before do
|
134
|
-
allow(@resource).to receive(:default_flags).and_return(nil)
|
135
|
-
end
|
136
|
-
it_behaves_like "a Windows script resource"
|
137
|
-
end
|
138
|
-
|
139
|
-
describe "#flags" do
|
140
|
-
let(:resource) { @resource }
|
141
|
-
|
142
|
-
it "appends user's flags to the defaults" do
|
143
|
-
flags = %q{-Lunch "tacos"}
|
144
|
-
resource.flags = flags
|
145
132
|
|
146
|
-
|
147
|
-
end
|
148
|
-
|
149
|
-
it "uses the defaults when user doesn't provide flags" do
|
150
|
-
expect(resource.flags).to eq(resource.default_flags)
|
151
|
-
end
|
133
|
+
it_behaves_like "a Windows script resource"
|
152
134
|
end
|
153
135
|
end
|
@@ -41,23 +41,34 @@ describe Chef::Resource::RhsmRegister do
|
|
41
41
|
end
|
42
42
|
|
43
43
|
describe "#katello_cert_rpm_installed?" do
|
44
|
-
let(:cmd) { double("cmd") }
|
45
|
-
|
46
|
-
before do
|
47
|
-
allow(Mixlib::ShellOut).to receive(:new).and_return(cmd)
|
48
|
-
allow(cmd).to receive(:run_command)
|
49
|
-
end
|
50
|
-
|
51
44
|
context "when the output contains katello-ca-consumer" do
|
45
|
+
let(:with_katello) { double("shell_out", stdout: <<~RPM) }
|
46
|
+
libevent-2.0.21-4.el7.x86_64
|
47
|
+
gettext-libs-0.19.8.1-3.el7.x86_64
|
48
|
+
yum-metadata-parser-1.1.4-10.el7.x86_64
|
49
|
+
pyliblzma-0.5.3-11.el7.x86_64
|
50
|
+
python-IPy-0.75-6.el7.noarch
|
51
|
+
grubby-8.28-26.el7.x86_64
|
52
|
+
fipscheck-lib-1.4.1-6.el7.x86_64
|
53
|
+
centos-logos-70.0.6-3.el7.centos.noarch
|
54
|
+
nss-tools-3.44.0-7.el7_7.x86_64
|
55
|
+
katello-ca-consumer-somehostname-1.0-1.el7.x86_64
|
56
|
+
rpm-4.11.3-43.el7.x86_64
|
57
|
+
gpgme-1.3.2-5.el7.x86_64
|
58
|
+
libnfsidmap-0.25-19.el7.x86_64
|
59
|
+
RPM
|
60
|
+
|
52
61
|
it "returns true" do
|
53
|
-
allow(
|
62
|
+
allow(provider).to receive(:shell_out).and_return(with_katello)
|
54
63
|
expect(provider.katello_cert_rpm_installed?).to eq(true)
|
55
64
|
end
|
56
65
|
end
|
57
66
|
|
58
67
|
context "when the output does not contain katello-ca-consumer" do
|
68
|
+
let(:without_katello) { double("shell_out", stdout: "") }
|
69
|
+
|
59
70
|
it "returns false" do
|
60
|
-
allow(
|
71
|
+
allow(provider).to receive(:shell_out).and_return(without_katello)
|
61
72
|
expect(provider.katello_cert_rpm_installed?).to eq(false)
|
62
73
|
end
|
63
74
|
end
|
@@ -89,6 +100,22 @@ describe Chef::Resource::RhsmRegister do
|
|
89
100
|
end
|
90
101
|
end
|
91
102
|
|
103
|
+
context "when a system_name is provided" do
|
104
|
+
it "returns a command containing the system name" do
|
105
|
+
allow(resource).to receive(:organization).and_return("myorg")
|
106
|
+
allow(resource).to receive(:system_name).and_return("myname")
|
107
|
+
expect(provider.register_command).to match("--name=myname")
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
context "when a system_name is not provided" do
|
112
|
+
it "returns a command containing the system name" do
|
113
|
+
allow(resource).to receive(:organization).and_return("myorg")
|
114
|
+
allow(resource).to receive(:system_name).and_return(nil)
|
115
|
+
expect(provider.register_command).not_to match("--name")
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
92
119
|
context "when auto_attach is true" do
|
93
120
|
it "does not return a command with --auto-attach since it is not supported with activation keys" do
|
94
121
|
allow(resource).to receive(:organization).and_return("myorg")
|
@@ -124,6 +151,20 @@ describe Chef::Resource::RhsmRegister do
|
|
124
151
|
end
|
125
152
|
end
|
126
153
|
|
154
|
+
context "when a system_name is provided" do
|
155
|
+
it "returns a command containing the system name" do
|
156
|
+
allow(resource).to receive(:system_name).and_return("myname")
|
157
|
+
expect(provider.register_command).to match("--name=myname")
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
context "when a system_name is not provided" do
|
162
|
+
it "returns a command containing the system name" do
|
163
|
+
allow(resource).to receive(:system_name).and_return(nil)
|
164
|
+
expect(provider.register_command).not_to match("--name")
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
127
168
|
context "when auto_attach is nil" do
|
128
169
|
it "returns a command that does not contain --auto-attach" do
|
129
170
|
allow(resource).to receive(:auto_attach).and_return(nil)
|
@@ -204,23 +245,20 @@ describe Chef::Resource::RhsmRegister do
|
|
204
245
|
end
|
205
246
|
|
206
247
|
describe "#registered_with_rhsm?" do
|
207
|
-
let(:cmd) { double("cmd") }
|
208
|
-
|
209
|
-
before do
|
210
|
-
allow(Mixlib::ShellOut).to receive(:new).and_return(cmd)
|
211
|
-
allow(cmd).to receive(:run_command)
|
212
|
-
end
|
213
|
-
|
214
248
|
context "when the status is Unknown" do
|
249
|
+
let(:unknown_status) { double("shell_out", stdout: "Overall Status: Unknown") }
|
250
|
+
|
215
251
|
it "returns false" do
|
216
|
-
allow(
|
252
|
+
allow(provider).to receive(:shell_out).and_return(unknown_status)
|
217
253
|
expect(provider.registered_with_rhsm?).to eq(false)
|
218
254
|
end
|
219
255
|
end
|
220
256
|
|
221
257
|
context "when the status is anything else" do
|
258
|
+
let(:known_status) { double("shell_out", stdout: "Overall Status: Insufficient") }
|
259
|
+
|
222
260
|
it "returns true" do
|
223
|
-
allow(
|
261
|
+
allow(provider).to receive(:shell_out).and_return(known_status)
|
224
262
|
expect(provider.registered_with_rhsm?).to eq(true)
|
225
263
|
end
|
226
264
|
end
|
@@ -21,9 +21,14 @@ require "spec_helper"
|
|
21
21
|
|
22
22
|
describe Chef::Resource::Script do
|
23
23
|
let(:resource_instance_name) { "fakey_fakerton" }
|
24
|
-
let(:script_resource) { Chef::Resource::Script.new(resource_instance_name) }
|
25
24
|
let(:resource_name) { :script }
|
26
25
|
|
26
|
+
let(:script_resource) do
|
27
|
+
run_context = Chef::RunContext.new(Chef::Node.new, nil, nil)
|
28
|
+
|
29
|
+
Chef::Resource::Script.new(resource_instance_name, run_context)
|
30
|
+
end
|
31
|
+
|
27
32
|
it "sets the default action as :run" do
|
28
33
|
expect(script_resource.action).to eql([:run])
|
29
34
|
end
|
@@ -20,6 +20,31 @@ require "spec_helper"
|
|
20
20
|
describe Chef::Resource::Timezone do
|
21
21
|
let(:resource) { Chef::Resource::Timezone.new("fakey_fakerton") }
|
22
22
|
|
23
|
+
let(:shellout_tzutil) do
|
24
|
+
double("shell_out", stdout: "UTC\n", exitstatus: 0, error?: false)
|
25
|
+
end
|
26
|
+
|
27
|
+
# note: This weird indention is correct
|
28
|
+
let(:shellout_timedatectl) do
|
29
|
+
double("shell_out", exitstatus: 0, error?: false, stdout: <<-OUTPUT)
|
30
|
+
Local time: Tue 2020-08-18 20:55:05 UTC
|
31
|
+
Universal time: Tue 2020-08-18 20:55:05 UTC
|
32
|
+
RTC time: Tue 2020-08-18 20:55:05
|
33
|
+
Time zone: Etc/UTC (UTC, +0000)
|
34
|
+
System clock synchronized: yes
|
35
|
+
systemd-timesyncd.service active: yes
|
36
|
+
RTC in local TZ: no
|
37
|
+
OUTPUT
|
38
|
+
end
|
39
|
+
|
40
|
+
let(:shellout_systemsetup_fail) do
|
41
|
+
double("shell_out!", stdout: "You need administrator access to run this tool... exiting!", exitstatus: 0, error?: false) # yes it's a non-error exit
|
42
|
+
end
|
43
|
+
|
44
|
+
let(:shellout_systemsetup) do
|
45
|
+
double("shell_out!", stdout: "Time Zone: UTC", exitstatus: 0, error?: false)
|
46
|
+
end
|
47
|
+
|
23
48
|
it "sets resource name as :timezone" do
|
24
49
|
expect(resource.resource_name).to eql(:timezone)
|
25
50
|
end
|
@@ -36,4 +61,42 @@ describe Chef::Resource::Timezone do
|
|
36
61
|
expect { resource.action :set }.not_to raise_error
|
37
62
|
expect { resource.action :unset }.to raise_error(Chef::Exceptions::ValidationFailed)
|
38
63
|
end
|
64
|
+
|
65
|
+
describe "#current_macos_tz" do
|
66
|
+
context "with admin privs" do
|
67
|
+
it "returns the TZ" do
|
68
|
+
expect(resource).to receive(:shell_out!).and_return(shellout_systemsetup)
|
69
|
+
expect(resource.current_macos_tz).to eql("UTC")
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
context "without admin privs" do
|
74
|
+
it "returns the TZ" do
|
75
|
+
expect(resource).to receive(:shell_out!).and_return(shellout_systemsetup_fail)
|
76
|
+
expect { resource.current_macos_tz }.to raise_error(RuntimeError, "The timezone resource requires administrative privileges to run on macOS hosts!")
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
describe "#current_systemd_tz" do
|
82
|
+
it "returns the TZ" do
|
83
|
+
expect(resource).to receive(:shell_out).and_return(shellout_timedatectl)
|
84
|
+
expect(resource.current_systemd_tz).to eql("Etc/UTC")
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
describe "#current_windows_tz" do
|
89
|
+
it "returns the TZ" do
|
90
|
+
expect(resource).to receive(:shell_out).and_return(shellout_tzutil)
|
91
|
+
expect(resource.current_windows_tz).to eql("UTC")
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
describe "#current_rhel_tz" do
|
96
|
+
it "returns the TZ" do
|
97
|
+
allow(File).to receive(:exist?).with("/etc/sysconfig/clock").and_return true
|
98
|
+
expect(File).to receive(:read).with("/etc/sysconfig/clock").and_return 'ZONE="UTC"'
|
99
|
+
expect(resource.current_rhel_tz).to eql("UTC")
|
100
|
+
end
|
101
|
+
end
|
39
102
|
end
|
@@ -22,6 +22,7 @@ describe Chef::Resource::WindowsFeaturePowershell do
|
|
22
22
|
let(:events) { Chef::EventDispatch::Dispatcher.new }
|
23
23
|
let(:run_context) { Chef::RunContext.new(node, {}, events) }
|
24
24
|
let(:resource) { Chef::Resource::WindowsFeaturePowershell.new(%w{SNMP DHCP}, run_context) }
|
25
|
+
let(:provider) { resource.provider_for_action(:install) }
|
25
26
|
|
26
27
|
it "sets resource name as :windows_feature_powershell" do
|
27
28
|
expect(resource.resource_name).to eql(:windows_feature_powershell)
|
@@ -35,10 +36,6 @@ describe Chef::Resource::WindowsFeaturePowershell do
|
|
35
36
|
expect(resource.feature_name).to eql(%w{snmp dhcp})
|
36
37
|
end
|
37
38
|
|
38
|
-
it "sets the default action as :install" do
|
39
|
-
expect(resource.action).to eql([:install])
|
40
|
-
end
|
41
|
-
|
42
39
|
it "supports :delete, :install, :remove actions" do
|
43
40
|
expect { resource.action :delete }.not_to raise_error
|
44
41
|
expect { resource.action :install }.not_to raise_error
|
@@ -54,4 +51,33 @@ describe Chef::Resource::WindowsFeaturePowershell do
|
|
54
51
|
resource.feature_name "SNMP"
|
55
52
|
expect(resource.feature_name).to eql(["snmp"])
|
56
53
|
end
|
54
|
+
|
55
|
+
it "install a single feature" do
|
56
|
+
resource.feature_name "snmp"
|
57
|
+
expect { resource.action :install }.not_to raise_error
|
58
|
+
end
|
59
|
+
|
60
|
+
it "install multi feature" do
|
61
|
+
resource.feature_name "SNMP, DHCP"
|
62
|
+
expect { resource.action :install }.not_to raise_error
|
63
|
+
end
|
64
|
+
|
65
|
+
it "does not attempt to install features that have been removed" do
|
66
|
+
node.default["powershell_features_cache"] ||= {}
|
67
|
+
node.default["powershell_features_cache"]["disabled"] = ["dhcp"]
|
68
|
+
node.default["powershell_features_cache"]["removed"] = ["snmp"]
|
69
|
+
resource.feature_name "dhcp, snmp"
|
70
|
+
|
71
|
+
expect(provider.features_to_install).to eq(["dhcp"])
|
72
|
+
end
|
73
|
+
|
74
|
+
it "attempts to install features that have been removed when source is set" do
|
75
|
+
node.default["powershell_features_cache"] ||= {}
|
76
|
+
node.default["powershell_features_cache"]["disabled"] = ["dhcp"]
|
77
|
+
node.default["powershell_features_cache"]["removed"] = ["snmp"]
|
78
|
+
resource.feature_name "dhcp, snmp"
|
79
|
+
resource.source 'D:\\sources\\sxs'
|
80
|
+
|
81
|
+
expect(provider.features_to_install).to eq(%w{dhcp snmp})
|
82
|
+
end
|
57
83
|
end
|
@@ -44,7 +44,7 @@ describe Chef::Resource::WindowsUac do
|
|
44
44
|
expect { resource.consent_behavior_users :bogus }.to raise_error(ArgumentError)
|
45
45
|
end
|
46
46
|
|
47
|
-
it "sets the default action as :
|
47
|
+
it "sets the default action as :configure" do
|
48
48
|
expect(resource.action).to eql([:configure])
|
49
49
|
end
|
50
50
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
#
|
2
|
+
# Copyright:: Copyright (c) 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::Resource::WindowsUserPrivilege do
|
21
|
+
let(:resource) { Chef::Resource::WindowsUserPrivilege.new("fakey_fakerton") }
|
22
|
+
|
23
|
+
it "sets resource name as :windows_user_privilege" do
|
24
|
+
expect(resource.resource_name).to eql(:windows_user_privilege)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "the principal property is the name_property" do
|
28
|
+
expect(resource.principal).to eql("fakey_fakerton")
|
29
|
+
end
|
30
|
+
|
31
|
+
it "the users property coerces to an array" do
|
32
|
+
resource.users "Administrator"
|
33
|
+
expect(resource.users).to eql(["Administrator"])
|
34
|
+
end
|
35
|
+
|
36
|
+
it "the privilege property coerces to an array" do
|
37
|
+
resource.privilege "SeDenyRemoteInteractiveLogonRight"
|
38
|
+
expect(resource.privilege).to eql(["SeDenyRemoteInteractiveLogonRight"])
|
39
|
+
end
|
40
|
+
|
41
|
+
it "the privilege property validates inputs against the allowed list of privs" do
|
42
|
+
expect { resource.privilege "invalidPriv" }.to raise_error(Chef::Exceptions::ValidationFailed)
|
43
|
+
end
|
44
|
+
|
45
|
+
it "sets the default action as :add" do
|
46
|
+
expect(resource.action).to eql([:add])
|
47
|
+
end
|
48
|
+
|
49
|
+
it "supports :add, :set, :clear, :remove actions" do
|
50
|
+
expect { resource.action :add }.not_to raise_error
|
51
|
+
expect { resource.action :set }.not_to raise_error
|
52
|
+
expect { resource.action :clear }.not_to raise_error
|
53
|
+
expect { resource.action :remove }.not_to raise_error
|
54
|
+
end
|
55
|
+
end
|
data/spec/unit/role_spec.rb
CHANGED
@@ -259,7 +259,7 @@ describe Chef::Role do
|
|
259
259
|
it "should return a Chef::Role object from JSON" do
|
260
260
|
expect(Dir).to receive(:glob).and_return(["#{Chef::Config[:role_path]}/memes", "#{Chef::Config[:role_path]}/memes/lolcat.json"])
|
261
261
|
file_path = File.join(Chef::Config[:role_path], "memes/lolcat.json")
|
262
|
-
expect(File).to receive(:
|
262
|
+
expect(File).to receive(:exist?).with(file_path).exactly(1).times.and_return(true)
|
263
263
|
expect(IO).to receive(:read).with(file_path).and_return('{"name": "ceiling_cat", "json_class": "Chef::Role" }')
|
264
264
|
expect(@role).to be_a_kind_of(Chef::Role)
|
265
265
|
@role.class.from_disk("lolcat")
|
@@ -268,7 +268,7 @@ describe Chef::Role do
|
|
268
268
|
it "should return a Chef::Role object from a Ruby DSL" do
|
269
269
|
expect(Dir).to receive(:glob).and_return(["#{Chef::Config[:role_path]}/memes", "#{Chef::Config[:role_path]}/memes/lolcat.rb"])
|
270
270
|
rb_path = File.join(Chef::Config[:role_path], "memes/lolcat.rb")
|
271
|
-
expect(File).to receive(:
|
271
|
+
expect(File).to receive(:exist?).with(rb_path).exactly(1).times.and_return(true)
|
272
272
|
expect(File).to receive(:readable?).with(rb_path).exactly(1).times.and_return(true)
|
273
273
|
expect(File).to receive(:file?).with(rb_path).exactly(1).times.and_return(true)
|
274
274
|
expect(IO).to receive(:read).with(rb_path).and_return(ROLE_DSL)
|
@@ -280,8 +280,8 @@ describe Chef::Role do
|
|
280
280
|
expect(Dir).to receive(:glob).and_return(["#{Chef::Config[:role_path]}/memes", "#{Chef::Config[:role_path]}/memes/lolcat.json", "#{Chef::Config[:role_path]}/memes/lolcat.rb"])
|
281
281
|
js_path = File.join(Chef::Config[:role_path], "memes/lolcat.json")
|
282
282
|
rb_path = File.join(Chef::Config[:role_path], "memes/lolcat.rb")
|
283
|
-
expect(File).to receive(:
|
284
|
-
expect(File).not_to receive(:
|
283
|
+
expect(File).to receive(:exist?).with(js_path).exactly(1).times.and_return(true)
|
284
|
+
expect(File).not_to receive(:exist?).with(rb_path)
|
285
285
|
expect(IO).to receive(:read).with(js_path).and_return('{"name": "ceiling_cat", "json_class": "Chef::Role" }')
|
286
286
|
expect(@role).to be_a_kind_of(Chef::Role)
|
287
287
|
@role.class.from_disk("lolcat")
|
@@ -289,19 +289,19 @@ describe Chef::Role do
|
|
289
289
|
|
290
290
|
it "should raise an exception if the file does not exist" do
|
291
291
|
expect(Dir).to receive(:glob).and_return(["#{Chef::Config[:role_path]}/meme.rb"])
|
292
|
-
expect(File).not_to receive(:
|
292
|
+
expect(File).not_to receive(:exist?)
|
293
293
|
expect { @role.class.from_disk("lolcat") }.to raise_error(Chef::Exceptions::RoleNotFound)
|
294
294
|
end
|
295
295
|
|
296
296
|
it "should raise an exception if two files exist with the same name" do
|
297
297
|
expect(Dir).to receive(:glob).and_return(["#{Chef::Config[:role_path]}/memes/lolcat.rb", "#{Chef::Config[:role_path]}/lolcat.rb"])
|
298
|
-
expect(File).not_to receive(:
|
298
|
+
expect(File).not_to receive(:exist?)
|
299
299
|
expect { @role.class.from_disk("lolcat") }.to raise_error(Chef::Exceptions::DuplicateRole)
|
300
300
|
end
|
301
301
|
|
302
302
|
it "should not raise an exception if two files exist with a similar name" do
|
303
303
|
expect(Dir).to receive(:glob).and_return(["#{Chef::Config[:role_path]}/memes/lolcat.rb", "#{Chef::Config[:role_path]}/super_lolcat.rb"])
|
304
|
-
expect(File).to receive(:
|
304
|
+
expect(File).to receive(:exist?).with("#{Chef::Config[:role_path]}/memes/lolcat.rb").and_return(true)
|
305
305
|
allow_any_instance_of(Chef::Role).to receive(:from_file).with("#{Chef::Config[:role_path]}/memes/lolcat.rb")
|
306
306
|
expect { @role.class.from_disk("lolcat") }.not_to raise_error
|
307
307
|
end
|
@@ -317,7 +317,7 @@ describe Chef::Role do
|
|
317
317
|
|
318
318
|
it "should return a Chef::Role object from JSON" do
|
319
319
|
expect(Dir).to receive(:glob).with(File.join(root, "**", "**")).exactly(1).times.and_return(["#{root}/lolcat.json"])
|
320
|
-
expect(File).to receive(:
|
320
|
+
expect(File).to receive(:exist?).with("#{root}/lolcat.json").exactly(1).times.and_return(true)
|
321
321
|
expect(IO).to receive(:read).with("#{root}/lolcat.json").and_return('{"name": "ceiling_cat", "json_class": "Chef::Role" }')
|
322
322
|
expect(@role).to be_a_kind_of(Chef::Role)
|
323
323
|
@role.class.from_disk("lolcat")
|
@@ -326,7 +326,7 @@ describe Chef::Role do
|
|
326
326
|
it "should return a Chef::Role object from JSON when role is in the second path" do
|
327
327
|
expect(Dir).to receive(:glob).with(File.join(root, "**", "**")).exactly(1).times.and_return([])
|
328
328
|
expect(Dir).to receive(:glob).with(File.join("#{root}/path2", "**", "**")).exactly(1).times.and_return(["#{root}/path2/lolcat.json"])
|
329
|
-
expect(File).to receive(:
|
329
|
+
expect(File).to receive(:exist?).with("#{root}/path2/lolcat.json").exactly(1).times.and_return(true)
|
330
330
|
expect(IO).to receive(:read).with("#{root}/path2/lolcat.json").and_return('{"name": "ceiling_cat", "json_class": "Chef::Role" }')
|
331
331
|
expect(@role).to be_a_kind_of(Chef::Role)
|
332
332
|
@role.class.from_disk("lolcat")
|
@@ -334,7 +334,7 @@ describe Chef::Role do
|
|
334
334
|
|
335
335
|
it "should return a Chef::Role object from a Ruby DSL" do
|
336
336
|
expect(Dir).to receive(:glob).with(File.join(root, "**", "**")).exactly(1).times.and_return(["#{root}/lolcat.rb"])
|
337
|
-
expect(File).to receive(:
|
337
|
+
expect(File).to receive(:exist?).with("#{root}/lolcat.rb").exactly(1).times.and_return(true)
|
338
338
|
expect(File).to receive(:readable?).with("#{root}/lolcat.rb").and_return(true)
|
339
339
|
expect(File).to receive(:file?).with("#{root}/lolcat.rb").and_return(true)
|
340
340
|
expect(IO).to receive(:read).with("#{root}/lolcat.rb").exactly(1).times.and_return(ROLE_DSL)
|
@@ -345,7 +345,7 @@ describe Chef::Role do
|
|
345
345
|
it "should return a Chef::Role object from a Ruby DSL when role is in the second path" do
|
346
346
|
expect(Dir).to receive(:glob).with(File.join(root, "**", "**")).exactly(1).times.and_return([])
|
347
347
|
expect(Dir).to receive(:glob).with(File.join("#{root}/path2", "**", "**")).exactly(1).times.and_return(["#{root}/path2/lolcat.rb"])
|
348
|
-
expect(File).to receive(:
|
348
|
+
expect(File).to receive(:exist?).with("#{root}/path2/lolcat.rb").exactly(1).times.and_return(true)
|
349
349
|
expect(File).to receive(:readable?).with("#{root}/path2/lolcat.rb").and_return(true)
|
350
350
|
expect(File).to receive(:file?).with("#{root}/path2/lolcat.rb").and_return(true)
|
351
351
|
expect(IO).to receive(:read).with("#{root}/path2/lolcat.rb").exactly(1).times.and_return(ROLE_DSL)
|