chef 16.0.275-universal-mingw32 → 16.2.50-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 +3 -1
- data/README.md +3 -3
- data/Rakefile +15 -1
- data/chef.gemspec +3 -3
- data/distro/powershell/chef/chef.psm1 +3 -3
- data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
- data/lib/chef/application/apply.rb +2 -2
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/application/client.rb +1 -1
- data/lib/chef/application/exit_code.rb +2 -2
- data/lib/chef/application/windows_service_manager.rb +1 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +3 -3
- data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
- data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
- data/lib/chef/chef_fs/path_utils.rb +4 -4
- data/lib/chef/cookbook/chefignore.rb +1 -1
- data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
- data/lib/chef/cookbook/metadata.rb +2 -2
- data/lib/chef/cookbook_loader.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +1 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +7 -7
- data/lib/chef/data_bag.rb +4 -4
- data/lib/chef/data_collector.rb +1 -1
- data/lib/chef/data_collector/error_handlers.rb +1 -1
- data/lib/chef/decorator/lazy_array.rb +2 -2
- data/lib/chef/deprecated.rb +5 -1
- data/lib/chef/digester.rb +4 -4
- data/lib/chef/dsl/declare_resource.rb +1 -1
- data/lib/chef/dsl/platform_introspection.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
- data/lib/chef/file_access_control.rb +1 -1
- data/lib/chef/formatters/base.rb +1 -1
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
- data/lib/chef/http.rb +18 -3
- data/lib/chef/http/decompressor.rb +1 -1
- data/lib/chef/http/http_request.rb +1 -1
- data/lib/chef/http/json_output.rb +1 -1
- data/lib/chef/http/ssl_policies.rb +18 -0
- data/lib/chef/json_compat.rb +1 -1
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +2 -2
- data/lib/chef/knife/bootstrap.rb +13 -16
- data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
- data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
- data/lib/chef/knife/client_bulk_delete.rb +1 -1
- data/lib/chef/knife/config_get.rb +1 -1
- data/lib/chef/knife/config_use_profile.rb +15 -5
- data/lib/chef/knife/cookbook_delete.rb +1 -1
- data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
- data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
- data/lib/chef/knife/core/node_presenter.rb +1 -1
- data/lib/chef/knife/core/status_presenter.rb +1 -1
- data/lib/chef/knife/core/subcommand_loader.rb +1 -1
- data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -3
- data/lib/chef/knife/data_bag_create.rb +1 -1
- data/lib/chef/knife/key_create_base.rb +1 -1
- data/lib/chef/knife/key_edit_base.rb +1 -1
- data/lib/chef/knife/node_bulk_delete.rb +1 -1
- data/lib/chef/knife/node_run_list_remove.rb +1 -1
- data/lib/chef/knife/role_bulk_delete.rb +1 -1
- data/lib/chef/knife/ssh.rb +2 -2
- data/lib/chef/knife/supermarket_share.rb +1 -1
- data/lib/chef/knife/supermarket_unshare.rb +1 -1
- data/lib/chef/knife/{user_invite_recind.rb → user_invite_rescind.rb} +6 -6
- data/lib/chef/log.rb +1 -1
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/mixin/checksum.rb +0 -1
- data/lib/chef/mixin/create_path.rb +8 -8
- data/lib/chef/mixin/openssl_helper.rb +4 -4
- data/lib/chef/mixin/properties.rb +4 -2
- data/lib/chef/mixin/securable.rb +2 -2
- data/lib/chef/mixin/shell_out.rb +1 -1
- data/lib/chef/node/attribute.rb +2 -2
- data/lib/chef/node/immutable_collections.rb +1 -1
- data/lib/chef/node/mixin/deep_merge_cache.rb +7 -7
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/powershell.rb +1 -1
- data/lib/chef/property.rb +2 -2
- data/lib/chef/provider.rb +3 -3
- data/lib/chef/provider/batch.rb +3 -10
- data/lib/chef/provider/cron.rb +2 -14
- data/lib/chef/provider/directory.rb +1 -1
- data/lib/chef/provider/execute.rb +2 -1
- data/lib/chef/provider/file.rb +1 -1
- data/lib/chef/provider/group/dscl.rb +2 -2
- data/lib/chef/provider/group/windows.rb +1 -1
- data/lib/chef/provider/ifconfig.rb +7 -7
- data/lib/chef/provider/launchd.rb +28 -32
- data/lib/chef/provider/mount/aix.rb +1 -1
- data/lib/chef/provider/mount/windows.rb +2 -2
- data/lib/chef/provider/noop.rb +1 -1
- data/lib/chef/provider/package/cab.rb +1 -1
- data/lib/chef/provider/package/chocolatey.rb +1 -1
- data/lib/chef/provider/package/dpkg.rb +1 -1
- data/lib/chef/provider/package/openbsd.rb +1 -1
- data/lib/chef/provider/package/portage.rb +3 -2
- data/lib/chef/provider/package/powershell.rb +6 -2
- data/lib/chef/provider/package/rubygems.rb +3 -3
- data/lib/chef/provider/package/snap.rb +96 -27
- data/lib/chef/provider/package/windows.rb +2 -2
- data/lib/chef/provider/package/windows/msi.rb +3 -3
- data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
- data/lib/chef/provider/package/yum.rb +1 -1
- data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
- data/lib/chef/provider/powershell_script.rb +11 -15
- data/lib/chef/provider/remote_directory.rb +2 -2
- data/lib/chef/provider/remote_file/http.rb +4 -1
- data/lib/chef/provider/script.rb +4 -75
- data/lib/chef/provider/service/arch.rb +2 -2
- data/lib/chef/provider/service/debian.rb +2 -2
- data/lib/chef/provider/service/macosx.rb +13 -2
- data/lib/chef/provider/service/openbsd.rb +4 -4
- data/lib/chef/provider/service/redhat.rb +1 -1
- data/lib/chef/provider/service/simple.rb +3 -3
- data/lib/chef/provider/service/upstart.rb +1 -1
- data/lib/chef/provider/service/windows.rb +1 -1
- data/lib/chef/provider/subversion.rb +2 -2
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +6 -6
- data/lib/chef/provider/user/linux.rb +3 -3
- data/lib/chef/provider/user/mac.rb +15 -11
- data/lib/chef/provider/windows_script.rb +87 -25
- data/lib/chef/provider/windows_task.rb +5 -3
- data/lib/chef/provider/zypper_repository.rb +30 -10
- data/lib/chef/resource.rb +25 -14
- data/lib/chef/resource/alternatives.rb +1 -1
- data/lib/chef/resource/apt_package.rb +1 -1
- data/lib/chef/resource/archive_file.rb +28 -8
- data/lib/chef/resource/bash.rb +0 -1
- data/lib/chef/resource/batch.rb +4 -2
- data/lib/chef/resource/chef_client_scheduled_task.rb +13 -1
- data/lib/chef/resource/chef_gem.rb +57 -21
- data/lib/chef/resource/chef_handler.rb +2 -2
- data/lib/chef/resource/chef_vault_secret.rb +1 -1
- data/lib/chef/resource/cron/_cron_shared.rb +98 -0
- data/lib/chef/resource/cron/cron.rb +46 -0
- data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
- data/lib/chef/resource/cron_access.rb +11 -3
- data/lib/chef/resource/csh.rb +0 -1
- data/lib/chef/resource/dmg_package.rb +1 -1
- data/lib/chef/resource/execute.rb +478 -8
- data/lib/chef/resource/file.rb +10 -8
- data/lib/chef/resource/freebsd_package.rb +1 -1
- data/lib/chef/resource/gem_package.rb +35 -2
- data/lib/chef/resource/helpers/cron_validations.rb +6 -3
- data/lib/chef/resource/homebrew_package.rb +30 -1
- data/lib/chef/resource/homebrew_update.rb +107 -0
- data/lib/chef/resource/hostname.rb +7 -20
- data/lib/chef/resource/kernel_module.rb +14 -1
- data/lib/chef/resource/launchd.rb +4 -4
- data/lib/chef/resource/locale.rb +3 -3
- data/lib/chef/resource/macos_userdefaults.rb +14 -9
- data/lib/chef/resource/mount.rb +1 -1
- data/lib/chef/resource/msu_package.rb +1 -1
- data/lib/chef/resource/perl.rb +0 -1
- data/lib/chef/resource/plist.rb +23 -4
- data/lib/chef/resource/powershell_script.rb +4 -2
- data/lib/chef/resource/python.rb +0 -1
- data/lib/chef/resource/remote_file.rb +26 -10
- data/lib/chef/resource/ruby.rb +0 -1
- data/lib/chef/resource/scm/git.rb +1 -1
- data/lib/chef/resource/ssh_known_hosts_entry.rb +15 -0
- data/lib/chef/resource/sudo.rb +29 -2
- data/lib/chef/resource/swap_file.rb +17 -0
- data/lib/chef/resource/template.rb +1 -1
- data/lib/chef/resource/timezone.rb +15 -0
- data/lib/chef/resource/windows_ad_join.rb +30 -1
- data/lib/chef/resource/windows_audit_policy.rb +227 -0
- data/lib/chef/resource/windows_auto_run.rb +11 -0
- data/lib/chef/resource/windows_certificate.rb +27 -1
- data/lib/chef/resource/windows_dfs_server.rb +1 -1
- data/lib/chef/resource/windows_firewall_rule.rb +2 -2
- data/lib/chef/resource/windows_font.rb +3 -3
- data/lib/chef/resource/windows_package.rb +3 -3
- data/lib/chef/resource/windows_pagefile.rb +2 -2
- data/lib/chef/resource/windows_printer.rb +1 -1
- data/lib/chef/resource/windows_script.rb +2 -16
- data/lib/chef/resource/windows_security_policy.rb +47 -16
- data/lib/chef/resource/windows_share.rb +2 -2
- data/lib/chef/resource/windows_shortcut.rb +1 -2
- data/lib/chef/resource/windows_task.rb +21 -21
- data/lib/chef/resource/windows_user_privilege.rb +45 -3
- data/lib/chef/resource/yum_repository.rb +9 -9
- data/lib/chef/resource_inspector.rb +4 -3
- data/lib/chef/resources.rb +4 -2
- data/lib/chef/run_context/cookbook_compiler.rb +1 -1
- data/lib/chef/search/query.rb +1 -1
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/util/diff.rb +2 -2
- data/lib/chef/util/dsc/lcm_output_parser.rb +3 -3
- data/lib/chef/util/windows/net_user.rb +1 -1
- data/lib/chef/util/windows/volume.rb +1 -1
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api.rb +2 -2
- data/lib/chef/win32/api/error.rb +3 -1
- data/lib/chef/win32/api/file.rb +18 -18
- data/lib/chef/win32/api/net.rb +1 -0
- data/lib/chef/win32/file.rb +1 -1
- data/lib/chef/win32/mutex.rb +1 -1
- data/lib/chef/win32/net.rb +1 -0
- data/lib/chef/win32/process.rb +2 -2
- data/lib/chef/win32/registry.rb +2 -2
- data/lib/chef/win32/security.rb +1 -1
- data/lib/chef/win32/security/sid.rb +4 -4
- data/spec/data/lwrp/providers/buck_passer.rb +1 -1
- data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
- data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
- data/spec/functional/resource/cron_spec.rb +10 -0
- data/spec/functional/resource/dnf_package_spec.rb +2 -2
- data/spec/functional/resource/git_spec.rb +6 -6
- data/spec/functional/resource/launchd_spec.rb +232 -0
- data/spec/functional/resource/remote_file_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_task_spec.rb +12 -12
- data/spec/integration/knife/config_use_profile_spec.rb +55 -2
- data/spec/support/chef_helpers.rb +1 -1
- data/spec/support/platform_helpers.rb +1 -1
- data/spec/support/platforms/win32/spec_service.rb +1 -1
- data/spec/support/shared/functional/execute_resource.rb +1 -1
- data/spec/support/shared/functional/file_resource.rb +1 -1
- data/spec/support/shared/functional/windows_script.rb +1 -1
- data/spec/support/shared/unit/execute_resource.rb +1 -1
- data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
- data/spec/unit/application_spec.rb +7 -0
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/http/ssl_policies_spec.rb +20 -0
- data/spec/unit/knife/bootstrap_spec.rb +2 -2
- data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
- data/spec/unit/knife/role_env_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_env_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_env_run_list_set_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_add_spec.rb +6 -6
- data/spec/unit/knife/role_run_list_clear_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_remove_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_replace_spec.rb +4 -4
- data/spec/unit/knife/role_run_list_set_spec.rb +4 -4
- data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
- data/spec/unit/mixin/user_context_spec.rb +1 -9
- data/spec/unit/node/attribute_spec.rb +1 -1
- data/spec/unit/property_spec.rb +1 -1
- data/spec/unit/provider/batch_spec.rb +130 -0
- data/spec/unit/provider/cron_spec.rb +9 -49
- data/spec/unit/provider/git_spec.rb +3 -3
- data/spec/unit/provider/group/groupadd_spec.rb +1 -1
- data/spec/unit/provider/launchd_spec.rb +8 -50
- data/spec/unit/provider/osx_profile_spec.rb +2 -2
- data/spec/unit/provider/package/msu_spec.rb +3 -3
- data/spec/unit/provider/package/portage_spec.rb +2 -2
- data/spec/unit/provider/package/powershell_spec.rb +96 -87
- data/spec/unit/provider/package/snap_spec.rb +1 -1
- data/spec/unit/provider/powershell_script_spec.rb +3 -45
- data/spec/unit/provider/script_spec.rb +20 -110
- data/spec/unit/provider/service/gentoo_service_spec.rb +1 -1
- data/spec/unit/provider/zypper_repository_spec.rb +60 -10
- data/spec/unit/provider_resolver_spec.rb +9 -9
- data/spec/unit/resource/archive_file_spec.rb +11 -2
- data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
- data/spec/unit/resource/cron_spec.rb +2 -2
- data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
- data/spec/unit/resource/homebrew_update_spec.rb +30 -0
- data/spec/unit/resource/powershell_script_spec.rb +10 -15
- data/spec/unit/resource/timezone_spec.rb +1 -1
- data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
- data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
- data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
- data/spec/unit/resource/windows_package_spec.rb +10 -0
- data/spec/unit/resource/windows_task_spec.rb +1 -1
- data/spec/unit/resource/windows_uac_spec.rb +2 -2
- data/spec/unit/resource/yum_repository_spec.rb +21 -21
- data/spec/unit/resource_spec.rb +67 -1
- data/spec/unit/run_context_spec.rb +1 -1
- data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
- data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
- data/spec/unit/win32/registry_spec.rb +1 -1
- metadata +24 -23
- data/lib/chef/resource/cron.rb +0 -157
@@ -27,7 +27,7 @@ Chef::Log.level(Chef::Config.log_level)
|
|
27
27
|
Chef::Config.solo(false)
|
28
28
|
|
29
29
|
def sha256_checksum(path)
|
30
|
-
OpenSSL::Digest
|
30
|
+
OpenSSL::Digest.hexdigest("SHA256", File.read(path))
|
31
31
|
end
|
32
32
|
|
33
33
|
# extracted from Ruby < 2.5 to return a unique temp file name without creating it
|
@@ -108,7 +108,7 @@ def mac_osx?
|
|
108
108
|
if File.exists? "/usr/bin/sw_vers"
|
109
109
|
result = ShellHelpers.shell_out("/usr/bin/sw_vers")
|
110
110
|
result.stdout.each_line do |line|
|
111
|
-
if
|
111
|
+
if /^ProductName:\sMac OS X.*$/.match?(line)
|
112
112
|
return true
|
113
113
|
end
|
114
114
|
end
|
@@ -58,7 +58,7 @@ shared_context "a command that can be executed as an alternate user" do
|
|
58
58
|
include Chef::Mixin::ShellOut
|
59
59
|
|
60
60
|
before do
|
61
|
-
shell_out!("icacls \"#{script_output_dir.
|
61
|
+
shell_out!("icacls \"#{script_output_dir.tr("/", '\\')}\" /grant \"authenticated users:(F)\"")
|
62
62
|
end
|
63
63
|
|
64
64
|
after do
|
@@ -370,7 +370,7 @@ shared_examples_for "a configured file resource" do
|
|
370
370
|
Chef::Config[:ssl_verify_mode] = :verify_none
|
371
371
|
end
|
372
372
|
|
373
|
-
|
373
|
+
# note the stripping of the drive letter from the tmpdir on windows
|
374
374
|
let(:backup_glob) { File.join(CHEF_SPEC_BACKUP_PATH, test_file_dir.sub(/^([A-Za-z]:)/, ""), "#{file_base}*") }
|
375
375
|
|
376
376
|
# Most tests update the resource, but a few do not. We need to test that the
|
@@ -146,7 +146,7 @@ shared_context Chef::Resource::WindowsScript do
|
|
146
146
|
shared_examples_for "a script whose file system location cannot be accessed by other non-admin users" do
|
147
147
|
let(:ruby_access_command) { file_access_command }
|
148
148
|
it "generates a script in the local file system that prevents read access to other non-admin users" do
|
149
|
-
shell_out!(access_command,
|
149
|
+
shell_out!(access_command, user: windows_nonadmin_user, password: windows_nonadmin_user_password, returns: [access_denied_sentinel])
|
150
150
|
end
|
151
151
|
end
|
152
152
|
|
@@ -75,7 +75,7 @@ shared_examples_for "an execute resource" do
|
|
75
75
|
end
|
76
76
|
|
77
77
|
it "the old path property (that never worked) is not supported in chef >= 13" do
|
78
|
-
expect
|
78
|
+
expect(@resource).not_to respond_to(:path)
|
79
79
|
end
|
80
80
|
|
81
81
|
it "should accept an integer for the return code" do
|
@@ -106,25 +106,25 @@ shared_examples_for "a useradd-based user provider" do |supported_useradd_option
|
|
106
106
|
|
107
107
|
describe "when the resource has a different home directory and supports home directory management" do
|
108
108
|
before do
|
109
|
-
@new_resource.home "/
|
109
|
+
@new_resource.home "/banana"
|
110
110
|
@new_resource.manage_home true
|
111
111
|
end
|
112
112
|
|
113
113
|
it "should set -m -d /homedir" do
|
114
|
-
expect(provider.universal_options).to eq(%w{-d /
|
114
|
+
expect(provider.universal_options).to eq(%w{-d /banana})
|
115
115
|
expect(provider.usermod_options).to eq(%w{-m})
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
119
119
|
describe "when the resource has a different home directory and supports home directory management (using real attributes)" do
|
120
120
|
before do
|
121
|
-
@new_resource.home("/
|
121
|
+
@new_resource.home("/banana")
|
122
122
|
@new_resource.manage_home true
|
123
123
|
@new_resource.non_unique false
|
124
124
|
end
|
125
125
|
|
126
126
|
it "should set -m -d /homedir" do
|
127
|
-
expect(provider.universal_options).to eq(%w{-d /
|
127
|
+
expect(provider.universal_options).to eq(%w{-d /banana})
|
128
128
|
expect(provider.usermod_options).to eq(%w{-m})
|
129
129
|
end
|
130
130
|
end
|
@@ -94,6 +94,13 @@ describe Chef::Application do
|
|
94
94
|
end
|
95
95
|
end
|
96
96
|
|
97
|
+
describe "when enforce_license is set to false" do
|
98
|
+
it "should not check the license acceptance" do
|
99
|
+
expect(@app).to_not receive(:check_license_acceptance)
|
100
|
+
@app.run(enforce_license: false)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
97
104
|
it "should run the actual application" do
|
98
105
|
expect(@app).to receive(:run_application).and_return(true)
|
99
106
|
@app.run
|
data/spec/unit/data_bag_spec.rb
CHANGED
@@ -243,7 +243,7 @@ describe Chef::DataBag do
|
|
243
243
|
|
244
244
|
expect do
|
245
245
|
Chef::DataBag.load("foo")
|
246
|
-
end.to raise_error Chef::Exceptions::InvalidDataBagPath, "Data bag path '/var/chef/data_bags'
|
246
|
+
end.to raise_error Chef::Exceptions::InvalidDataBagPath, "Data bag path '/var/chef/data_bags' not found. Please create this directory."
|
247
247
|
end
|
248
248
|
|
249
249
|
end
|
@@ -166,4 +166,24 @@ describe "HTTP SSL Policy" do
|
|
166
166
|
end
|
167
167
|
|
168
168
|
end
|
169
|
+
|
170
|
+
describe Chef::HTTP::VerifyPeerSSLPolicy do
|
171
|
+
|
172
|
+
let(:ssl_policy) { Chef::HTTP::VerifyPeerSSLPolicy.new(unconfigured_http_client) }
|
173
|
+
|
174
|
+
it "sets the OpenSSL verify mode to verify_peer" do
|
175
|
+
expect(http_client.verify_mode).to eq(OpenSSL::SSL::VERIFY_PEER)
|
176
|
+
end
|
177
|
+
|
178
|
+
end
|
179
|
+
|
180
|
+
describe Chef::HTTP::VerifyNoneSSLPolicy do
|
181
|
+
|
182
|
+
let(:ssl_policy) { Chef::HTTP::VerifyNoneSSLPolicy.new(unconfigured_http_client) }
|
183
|
+
|
184
|
+
it "sets the OpenSSL verify mode to verify_peer" do
|
185
|
+
expect(http_client.verify_mode).to eq(OpenSSL::SSL::VERIFY_NONE)
|
186
|
+
end
|
187
|
+
|
188
|
+
end
|
169
189
|
end
|
@@ -1729,8 +1729,8 @@ describe Chef::Knife::Bootstrap do
|
|
1729
1729
|
allow(vault_handler_mock).to receive(:doing_chef_vault?).and_return false
|
1730
1730
|
end
|
1731
1731
|
|
1732
|
-
it "shows a message" do
|
1733
|
-
expect(knife.ui).to receive(:
|
1732
|
+
it "shows a warning message" do
|
1733
|
+
expect(knife.ui).to receive(:warn).twice
|
1734
1734
|
knife.register_client
|
1735
1735
|
end
|
1736
1736
|
end
|
@@ -181,6 +181,12 @@ describe Chef::Knife::Core::WindowsBootstrapContext do
|
|
181
181
|
end
|
182
182
|
end
|
183
183
|
|
184
|
+
describe "#start_chef" do
|
185
|
+
it "returns the expected string" do
|
186
|
+
expect(bootstrap_context.start_chef).to match(%r{SET \"PATH=%SystemRoot%\\system32;%SystemRoot%;%SystemRoot%\\System32\\Wbem;%SYSTEMROOT%\\System32\\WindowsPowerShell\\v1.0\\;C:\\ruby\\bin;C:\/opscode\/chef\\bin;C:\/opscode\/chef\\embedded\\bin\;%PATH%\"\n})
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
184
190
|
describe "msi_url" do
|
185
191
|
context "when msi_url config option is not set" do
|
186
192
|
let(:config) { { channel: "stable" } }
|
@@ -211,7 +217,7 @@ describe Chef::Knife::Core::WindowsBootstrapContext do
|
|
211
217
|
let(:custom_url) { "file://something" }
|
212
218
|
let(:config) { { msi_url: custom_url, install: true } }
|
213
219
|
|
214
|
-
it "returns the
|
220
|
+
it "returns the overridden url" do
|
215
221
|
expect(bootstrap_context.msi_url).to eq(custom_url)
|
216
222
|
end
|
217
223
|
|
@@ -21,8 +21,8 @@ require "spec_helper"
|
|
21
21
|
|
22
22
|
describe Chef::Knife::RoleEnvRunListAdd do
|
23
23
|
before(:each) do
|
24
|
-
# Chef::Config[:role_name] = "websimian"
|
25
|
-
# Chef::Config[:env_name] = "QA"
|
24
|
+
# Chef::Config[:role_name] = "websimian"
|
25
|
+
# Chef::Config[:env_name] = "QA"
|
26
26
|
@knife = Chef::Knife::RoleEnvRunListAdd.new
|
27
27
|
@knife.config = {
|
28
28
|
after: nil,
|
@@ -36,10 +36,10 @@ describe Chef::Knife::RoleEnvRunListAdd do
|
|
36
36
|
|
37
37
|
describe "run" do
|
38
38
|
|
39
|
-
# it "should display all the things" do
|
40
|
-
# @knife.run
|
41
|
-
# @role.to_json.should == 'show all the things'
|
42
|
-
# end
|
39
|
+
# it "should display all the things" do
|
40
|
+
# @knife.run
|
41
|
+
# @role.to_json.should == 'show all the things'
|
42
|
+
# end
|
43
43
|
|
44
44
|
it "should have an empty default run list" do
|
45
45
|
@knife.run
|
@@ -44,10 +44,10 @@ describe Chef::Knife::RoleEnvRunListClear do
|
|
44
44
|
|
45
45
|
describe "run" do
|
46
46
|
|
47
|
-
# it "should display all the things" do
|
48
|
-
# @knife.run
|
49
|
-
# @role.to_json.should == 'show all the things'
|
50
|
-
# end
|
47
|
+
# it "should display all the things" do
|
48
|
+
# @knife.run
|
49
|
+
# @role.to_json.should == 'show all the things'
|
50
|
+
# end
|
51
51
|
|
52
52
|
it "should load the node" do
|
53
53
|
expect(Chef::Role).to receive(:load).with("will").and_return(@role)
|
@@ -44,10 +44,10 @@ describe Chef::Knife::RoleEnvRunListRemove do
|
|
44
44
|
|
45
45
|
describe "run" do
|
46
46
|
|
47
|
-
# it "should display all the things" do
|
48
|
-
# @knife.run
|
49
|
-
# @role.to_json.should == 'show all the things'
|
50
|
-
# end
|
47
|
+
# it "should display all the things" do
|
48
|
+
# @knife.run
|
49
|
+
# @role.to_json.should == 'show all the things'
|
50
|
+
# end
|
51
51
|
|
52
52
|
it "should load the node" do
|
53
53
|
expect(Chef::Role).to receive(:load).with("will").and_return(@role)
|
@@ -44,10 +44,10 @@ describe Chef::Knife::RoleEnvRunListReplace do
|
|
44
44
|
|
45
45
|
describe "run" do
|
46
46
|
|
47
|
-
# it "should display all the things" do
|
48
|
-
# @knife.run
|
49
|
-
# @role.to_json.should == 'show all the things'
|
50
|
-
# end
|
47
|
+
# it "should display all the things" do
|
48
|
+
# @knife.run
|
49
|
+
# @role.to_json.should == 'show all the things'
|
50
|
+
# end
|
51
51
|
|
52
52
|
it "should load the node" do
|
53
53
|
expect(Chef::Role).to receive(:load).with("will").and_return(@role)
|
@@ -44,10 +44,10 @@ describe Chef::Knife::RoleEnvRunListSet do
|
|
44
44
|
|
45
45
|
describe "run" do
|
46
46
|
|
47
|
-
# it "should display all the things" do
|
48
|
-
# @knife.run
|
49
|
-
# @role.to_json.should == 'show all the things'
|
50
|
-
# end
|
47
|
+
# it "should display all the things" do
|
48
|
+
# @knife.run
|
49
|
+
# @role.to_json.should == 'show all the things'
|
50
|
+
# end
|
51
51
|
|
52
52
|
it "should load the node" do
|
53
53
|
expect(Chef::Role).to receive(:load).with("will").and_return(@role)
|
@@ -21,8 +21,8 @@ require "spec_helper"
|
|
21
21
|
|
22
22
|
describe Chef::Knife::RoleRunListAdd do
|
23
23
|
before(:each) do
|
24
|
-
# Chef::Config[:role_name] = "websimian"
|
25
|
-
# Chef::Config[:env_name] = "QA"
|
24
|
+
# Chef::Config[:role_name] = "websimian"
|
25
|
+
# Chef::Config[:env_name] = "QA"
|
26
26
|
@knife = Chef::Knife::RoleRunListAdd.new
|
27
27
|
@knife.config = {
|
28
28
|
after: nil,
|
@@ -36,10 +36,10 @@ describe Chef::Knife::RoleRunListAdd do
|
|
36
36
|
|
37
37
|
describe "run" do
|
38
38
|
|
39
|
-
# it "should display all the things" do
|
40
|
-
# @knife.run
|
41
|
-
# @role.to_json.should == 'show all the things'
|
42
|
-
# end
|
39
|
+
# it "should display all the things" do
|
40
|
+
# @knife.run
|
41
|
+
# @role.to_json.should == 'show all the things'
|
42
|
+
# end
|
43
43
|
|
44
44
|
it "should have a run list with the monkey role" do
|
45
45
|
@knife.run
|
@@ -43,10 +43,10 @@ describe Chef::Knife::RoleRunListClear do
|
|
43
43
|
|
44
44
|
describe "run" do
|
45
45
|
|
46
|
-
# it "should display all the things" do
|
47
|
-
# @knife.run
|
48
|
-
# @role.to_json.should == 'show all the things'
|
49
|
-
# end
|
46
|
+
# it "should display all the things" do
|
47
|
+
# @knife.run
|
48
|
+
# @role.to_json.should == 'show all the things'
|
49
|
+
# end
|
50
50
|
|
51
51
|
it "should load the node" do
|
52
52
|
expect(Chef::Role).to receive(:load).with("will").and_return(@role)
|
@@ -43,10 +43,10 @@ describe Chef::Knife::RoleRunListRemove do
|
|
43
43
|
|
44
44
|
describe "run" do
|
45
45
|
|
46
|
-
# it "should display all the things" do
|
47
|
-
# @knife.run
|
48
|
-
# @role.to_json.should == 'show all the things'
|
49
|
-
# end
|
46
|
+
# it "should display all the things" do
|
47
|
+
# @knife.run
|
48
|
+
# @role.to_json.should == 'show all the things'
|
49
|
+
# end
|
50
50
|
|
51
51
|
it "should load the node" do
|
52
52
|
expect(Chef::Role).to receive(:load).with("will").and_return(@role)
|
@@ -43,10 +43,10 @@ describe Chef::Knife::RoleRunListReplace do
|
|
43
43
|
|
44
44
|
describe "run" do
|
45
45
|
|
46
|
-
# it "should display all the things" do
|
47
|
-
# @knife.run
|
48
|
-
# @role.to_json.should == 'show all the things'
|
49
|
-
# end
|
46
|
+
# it "should display all the things" do
|
47
|
+
# @knife.run
|
48
|
+
# @role.to_json.should == 'show all the things'
|
49
|
+
# end
|
50
50
|
|
51
51
|
it "should load the node" do
|
52
52
|
expect(Chef::Role).to receive(:load).with("will").and_return(@role)
|
@@ -43,10 +43,10 @@ describe Chef::Knife::RoleRunListSet do
|
|
43
43
|
|
44
44
|
describe "run" do
|
45
45
|
|
46
|
-
# it "should display all the things" do
|
47
|
-
# @knife.run
|
48
|
-
# @role.to_json.should == 'show all the things'
|
49
|
-
# end
|
46
|
+
# it "should display all the things" do
|
47
|
+
# @knife.run
|
48
|
+
# @role.to_json.should == 'show all the things'
|
49
|
+
# end
|
50
50
|
|
51
51
|
it "should load the node" do
|
52
52
|
expect(Chef::Role).to receive(:load).with("will").and_return(@role)
|
@@ -488,7 +488,7 @@ describe Chef::Mixin::OpenSSLHelper do
|
|
488
488
|
@ca_cert.add_extension(ef.create_extension("keyUsage", "keyCertSign, cRLSign", true))
|
489
489
|
@ca_cert.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
|
490
490
|
@ca_cert.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
|
491
|
-
@ca_cert.sign(@ca_key, OpenSSL::Digest
|
491
|
+
@ca_cert.sign(@ca_key, OpenSSL::Digest.new("SHA256"))
|
492
492
|
|
493
493
|
@info_with_issuer = { "validity" => 365, "issuer" => @ca_cert }
|
494
494
|
@info_without_issuer = { "validity" => 365 }
|
@@ -614,7 +614,7 @@ describe Chef::Mixin::OpenSSLHelper do
|
|
614
614
|
@ca_cert.add_extension(ef.create_extension("keyUsage", "keyCertSign, cRLSign", true))
|
615
615
|
@ca_cert.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
|
616
616
|
@ca_cert.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
|
617
|
-
@ca_cert.sign(@ca_key, OpenSSL::Digest
|
617
|
+
@ca_cert.sign(@ca_key, OpenSSL::Digest.new("SHA256"))
|
618
618
|
|
619
619
|
@info = { "validity" => 8, "issuer" => @ca_cert }
|
620
620
|
end
|
@@ -684,7 +684,7 @@ describe Chef::Mixin::OpenSSLHelper do
|
|
684
684
|
@ca_cert.add_extension(ef.create_extension("keyUsage", "keyCertSign, cRLSign", true))
|
685
685
|
@ca_cert.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
|
686
686
|
@ca_cert.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
|
687
|
-
@ca_cert.sign(@ca_key, OpenSSL::Digest
|
687
|
+
@ca_cert.sign(@ca_key, OpenSSL::Digest.new("SHA256"))
|
688
688
|
|
689
689
|
@info = { "validity" => 8, "issuer" => @ca_cert }
|
690
690
|
|
@@ -765,7 +765,7 @@ describe Chef::Mixin::OpenSSLHelper do
|
|
765
765
|
@ca_cert.add_extension(ef.create_extension("keyUsage", "keyCertSign, cRLSign", true))
|
766
766
|
@ca_cert.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
|
767
767
|
@ca_cert.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
|
768
|
-
@ca_cert.sign(@ca_key, OpenSSL::Digest
|
768
|
+
@ca_cert.sign(@ca_key, OpenSSL::Digest.new("SHA256"))
|
769
769
|
|
770
770
|
@info = { "validity" => 8, "issuer" => @ca_cert }
|
771
771
|
|
@@ -77,17 +77,9 @@ describe "a class that mixes in user_context" do
|
|
77
77
|
end
|
78
78
|
|
79
79
|
context "when the block raises an exception" do
|
80
|
-
class UserContextTestException < RuntimeError
|
81
|
-
end
|
82
|
-
let(:block_parameter) { Proc.new { raise UserContextTextException } }
|
83
|
-
|
84
|
-
it "raises the exception raised by the block" do
|
85
|
-
expect { instance_with_user_context.with_context("kamilah", nil, "chef4life", &block_parameter) }.not_to raise_error(UserContextTestException)
|
86
|
-
end
|
87
|
-
|
88
80
|
it "closes the logon session so resources are not leaked" do
|
89
81
|
expect(logon_session).to receive(:close)
|
90
|
-
expect { instance_with_user_context.with_context("kamilah", nil, "chef4life"
|
82
|
+
expect { instance_with_user_context.with_context("kamilah", nil, "chef4life") { 1 / 0 } }.to raise_error(ZeroDivisionError)
|
91
83
|
end
|
92
84
|
end
|
93
85
|
end
|
@@ -382,7 +382,7 @@ describe Chef::Node::Attribute do
|
|
382
382
|
expect(@attributes["command"]["ps"]).to eq("ps -ef")
|
383
383
|
end
|
384
384
|
|
385
|
-
it "should return default data if it is not
|
385
|
+
it "should return default data if it is not overridden or in attribute data" do
|
386
386
|
expect(@attributes["music"]["mastodon"]).to eq("rocks")
|
387
387
|
end
|
388
388
|
|
data/spec/unit/property_spec.rb
CHANGED
@@ -121,7 +121,7 @@ describe "Chef::Resource.property" do
|
|
121
121
|
|
122
122
|
context "deprecated properties" do
|
123
123
|
it "does not create a deprecation warning on definition" do
|
124
|
-
expect { resource_class.class_eval { property :x, String, deprecated: 10 } }.not_to raise_error
|
124
|
+
expect { resource_class.class_eval { property :x, String, deprecated: 10 } }.not_to raise_error
|
125
125
|
end
|
126
126
|
|
127
127
|
with_property ":x, deprecated: 'a deprecated property'" do
|
@@ -0,0 +1,130 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Adam Jacob (adam@chef.io)
|
3
|
+
# Copyright:: Copyright 2009-2016, Opscode
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
|
19
|
+
require "spec_helper"
|
20
|
+
|
21
|
+
describe Chef::Provider::Batch do
|
22
|
+
let(:node) do
|
23
|
+
node = Chef::Node.new
|
24
|
+
node.default["kernel"] = {}
|
25
|
+
node.default["kernel"][:machine] = :x86_64.to_s
|
26
|
+
node
|
27
|
+
end
|
28
|
+
|
29
|
+
let(:events) { Chef::EventDispatch::Dispatcher.new }
|
30
|
+
|
31
|
+
let(:run_context) { Chef::RunContext.new(node, {}, events) }
|
32
|
+
|
33
|
+
let(:new_resource) do
|
34
|
+
new_resource = Chef::Resource::Batch.new("cmd.exe and conquer")
|
35
|
+
new_resource.code %q{echo "hello"}
|
36
|
+
new_resource
|
37
|
+
end
|
38
|
+
|
39
|
+
let(:provider) { Chef::Provider::Batch.new(new_resource, run_context) }
|
40
|
+
|
41
|
+
context "#grant_alternate_user_read_access" do
|
42
|
+
before do
|
43
|
+
allow(ChefUtils).to receive(:windows?).and_return(true)
|
44
|
+
stub_const("Chef::ReservedNames::Win32::API::Security::GENERIC_READ", 1)
|
45
|
+
stub_const("Chef::ReservedNames::Win32::API::Security::GENERIC_EXECUTE", 4)
|
46
|
+
stub_const("Chef::ReservedNames::Win32::Security", Class.new)
|
47
|
+
stub_const("Chef::ReservedNames::Win32::Security::SecurableObject", Class.new)
|
48
|
+
stub_const("Chef::ReservedNames::Win32::Security::SID", Class.new)
|
49
|
+
stub_const("Chef::ReservedNames::Win32::Security::ACE", Class.new)
|
50
|
+
stub_const("Chef::ReservedNames::Win32::Security::ACL", Class.new)
|
51
|
+
|
52
|
+
provider.singleton_class.send(:public, :grant_alternate_user_read_access)
|
53
|
+
end
|
54
|
+
|
55
|
+
context "when an alternate user is not specified" do
|
56
|
+
it "does not attempt to set the script file's security descriptor" do
|
57
|
+
expect(provider).to receive(:grant_alternate_user_read_access)
|
58
|
+
expect(Chef::ReservedNames::Win32::Security::SecurableObject).not_to receive(:new)
|
59
|
+
provider.grant_alternate_user_read_access("a fake path")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
context "when an alternate user is specified" do
|
64
|
+
let(:security_descriptor) { instance_double("Chef::ReservedNames::Win32::Security::SecurityDescriptor", dacl: []) }
|
65
|
+
let(:securable_object) { instance_double("Chef::ReservedNames::Win32::Security::SecurableObject", :security_descriptor => security_descriptor, :dacl= => nil) }
|
66
|
+
|
67
|
+
it "sets the script file's security descriptor" do
|
68
|
+
new_resource.user("toor")
|
69
|
+
expect(Chef::ReservedNames::Win32::Security::SecurableObject).to receive(:new).and_return(securable_object)
|
70
|
+
expect(Chef::ReservedNames::Win32::Security::SID).to receive(:from_account).and_return(nil)
|
71
|
+
expect(Chef::ReservedNames::Win32::Security::ACE).to receive(:access_allowed).and_return(nil)
|
72
|
+
expect(Chef::ReservedNames::Win32::Security::ACL).to receive(:create).and_return(nil)
|
73
|
+
expect(securable_object).to receive(:dacl=)
|
74
|
+
provider.grant_alternate_user_read_access("a fake path")
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "#with_temp_script_file" do
|
80
|
+
before do
|
81
|
+
provider.singleton_class.send(:public, :with_temp_script_file)
|
82
|
+
provider.singleton_class.send(:public, :script_file_path)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should put the contents of the script in the temp file" do
|
86
|
+
temp_file_contents = nil
|
87
|
+
|
88
|
+
provider.with_temp_script_file do
|
89
|
+
temp_file_contents = File.read(provider.script_file_path)
|
90
|
+
end
|
91
|
+
|
92
|
+
expect(temp_file_contents.strip).to eq(%q{echo "hello"})
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
describe "#command" do
|
97
|
+
let(:basepath) { "C:\\Windows\\system32" }
|
98
|
+
let(:interpreter) { File.join(basepath, "cmd.exe") }
|
99
|
+
|
100
|
+
before do
|
101
|
+
allow(provider).to receive(:basepath).and_return(basepath)
|
102
|
+
provider.singleton_class.send(:public, :with_temp_script_file)
|
103
|
+
provider.singleton_class.send(:public, :script_file_path)
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'should set the command to "interpreter" "tempfile"' do
|
107
|
+
command = nil
|
108
|
+
script_file_path = nil
|
109
|
+
provider.with_temp_script_file do
|
110
|
+
command = provider.command
|
111
|
+
script_file_path = provider.script_file_path
|
112
|
+
end
|
113
|
+
|
114
|
+
expect(command).to eq(%Q{"#{interpreter}" /c "#{script_file_path}"})
|
115
|
+
end
|
116
|
+
|
117
|
+
it "should set the command to 'interpreter flags tempfile'" do
|
118
|
+
new_resource.flags "/f"
|
119
|
+
|
120
|
+
command = nil
|
121
|
+
script_file_path = nil
|
122
|
+
provider.with_temp_script_file do
|
123
|
+
command = provider.command
|
124
|
+
script_file_path = provider.script_file_path
|
125
|
+
end
|
126
|
+
|
127
|
+
expect(command).to eq(%Q{"#{interpreter}" /f /c "#{script_file_path}"})
|
128
|
+
end
|
129
|
+
end
|
130
|
+
end
|