chef 16.5.64 → 16.8.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +6 -14
- data/README.md +1 -1
- data/Rakefile +21 -14
- data/chef-universal-mingw32.gemspec +1 -1
- data/chef.gemspec +3 -2
- data/lib/chef/application.rb +2 -2
- data/lib/chef/application/base.rb +1 -1
- data/lib/chef/application/client.rb +7 -2
- data/lib/chef/application/knife.rb +1 -1
- data/lib/chef/application/solo.rb +1 -1
- data/lib/chef/chef_fs/chef_fs_data_store.rb +1 -1
- data/lib/chef/chef_fs/data_handler/cookbook_data_handler.rb +1 -1
- data/lib/chef/chef_fs/file_pattern.rb +1 -1
- data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
- data/lib/chef/client.rb +6 -32
- data/lib/chef/compliance/default_attributes.rb +89 -0
- data/lib/chef/compliance/fetcher/automate.rb +69 -0
- data/lib/chef/compliance/fetcher/chef_server.rb +134 -0
- data/lib/chef/compliance/reporter/automate.rb +202 -0
- data/lib/chef/compliance/reporter/chef_server_automate.rb +94 -0
- data/lib/chef/compliance/reporter/compliance_enforcer.rb +20 -0
- data/lib/chef/compliance/reporter/json_file.rb +19 -0
- data/lib/chef/compliance/runner.rb +261 -0
- data/lib/chef/cookbook/gem_installer.rb +1 -1
- data/lib/chef/cookbook_manifest.rb +2 -1
- data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
- data/lib/chef/cookbook_version.rb +2 -5
- data/lib/chef/data_collector.rb +1 -1
- data/lib/chef/encrypted_data_bag_item/assertions.rb +1 -1
- data/lib/chef/environment.rb +1 -1
- data/lib/chef/event_loggers/windows_eventlog.rb +1 -1
- data/lib/chef/exceptions.rb +5 -1
- data/lib/chef/file_access_control/windows.rb +1 -4
- data/lib/chef/file_content_management/tempfile.rb +1 -1
- data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +2 -2
- data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +5 -5
- data/lib/chef/formatters/indentable_output_stream.rb +2 -2
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +28 -39
- data/lib/chef/http.rb +2 -12
- data/lib/chef/http/basic_client.rb +1 -1
- data/lib/chef/http/http_request.rb +1 -1
- data/lib/chef/http/socketless_chef_zero_client.rb +1 -1
- data/lib/chef/http/ssl_policies.rb +6 -0
- data/lib/chef/json_compat.rb +2 -7
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife/bootstrap.rb +2 -1
- data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +2 -2
- data/lib/chef/knife/bootstrap/train_connector.rb +1 -1
- data/lib/chef/knife/config_show.rb +1 -1
- data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
- data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
- data/lib/chef/knife/core/ui.rb +5 -2
- data/lib/chef/knife/core/windows_bootstrap_context.rb +7 -4
- data/lib/chef/knife/node_policy_set.rb +2 -2
- data/lib/chef/knife/node_run_list_add.rb +1 -1
- data/lib/chef/knife/node_run_list_remove.rb +1 -1
- data/lib/chef/knife/node_run_list_set.rb +1 -1
- data/lib/chef/knife/role_env_run_list_add.rb +1 -1
- data/lib/chef/knife/role_env_run_list_set.rb +1 -1
- data/lib/chef/knife/role_run_list_add.rb +1 -1
- data/lib/chef/knife/role_run_list_set.rb +1 -1
- data/lib/chef/knife/search.rb +0 -1
- data/lib/chef/knife/ssh.rb +5 -3
- data/lib/chef/knife/tag_create.rb +1 -1
- data/lib/chef/knife/tag_delete.rb +1 -1
- data/lib/chef/local_mode.rb +1 -1
- data/lib/chef/mixin/convert_to_class_name.rb +0 -56
- data/lib/chef/mixin/openssl_helper.rb +1 -1
- data/lib/chef/mixin/powershell_exec.rb +24 -10
- data/lib/chef/mixin/powershell_out.rb +12 -5
- data/lib/chef/mixin/properties.rb +2 -0
- data/lib/chef/mixin/template.rb +1 -1
- data/lib/chef/mixin/unformatter.rb +1 -1
- data/lib/chef/mixin/uris.rb +3 -1
- data/lib/chef/node/attribute_collections.rb +2 -6
- data/lib/chef/node/mixin/immutablize_hash.rb +2 -0
- data/lib/chef/node_map.rb +2 -2
- data/lib/chef/platform/query_helpers.rb +4 -4
- data/lib/chef/policy_builder/dynamic.rb +2 -0
- data/lib/chef/powershell.rb +10 -4
- data/lib/chef/property.rb +1 -1
- data/lib/chef/provider.rb +1 -1
- data/lib/chef/provider/cron.rb +2 -13
- data/lib/chef/provider/dsc_resource.rb +12 -24
- data/lib/chef/provider/dsc_script.rb +16 -20
- data/lib/chef/provider/file.rb +1 -1
- data/lib/chef/provider/git.rb +5 -5
- data/lib/chef/provider/group.rb +14 -6
- data/lib/chef/provider/group/windows.rb +12 -1
- data/lib/chef/provider/ifconfig.rb +8 -8
- data/lib/chef/provider/ifconfig/debian.rb +38 -22
- data/lib/chef/provider/ifconfig/redhat.rb +54 -18
- data/lib/chef/provider/launchd.rb +1 -11
- data/lib/chef/provider/link.rb +0 -9
- data/lib/chef/provider/mount.rb +18 -1
- data/lib/chef/provider/mount/linux.rb +4 -0
- data/lib/chef/provider/mount/mount.rb +41 -43
- data/lib/chef/provider/package.rb +3 -0
- data/lib/chef/provider/package/apt.rb +1 -1
- data/lib/chef/provider/package/chocolatey.rb +6 -6
- data/lib/chef/provider/package/dpkg.rb +3 -12
- data/lib/chef/provider/package/freebsd/base.rb +3 -2
- data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
- data/lib/chef/provider/package/homebrew.rb +1 -1
- data/lib/chef/provider/package/ips.rb +1 -1
- data/lib/chef/provider/package/powershell.rb +2 -3
- data/lib/chef/provider/package/rubygems.rb +1 -1
- data/lib/chef/provider/package/snap.rb +1 -3
- data/lib/chef/provider/package/solaris.rb +0 -2
- data/lib/chef/provider/package/yum/rpm_utils.rb +1 -1
- data/lib/chef/provider/package/zypper.rb +98 -71
- data/lib/chef/provider/powershell_script.rb +12 -1
- data/lib/chef/provider/registry_key.rb +4 -3
- data/lib/chef/provider/route.rb +2 -2
- data/lib/chef/provider/service/debian.rb +2 -1
- data/lib/chef/provider/service/redhat.rb +1 -1
- data/lib/chef/provider/user.rb +17 -9
- data/lib/chef/provider/user/aix.rb +1 -1
- data/lib/chef/provider/user/dscl.rb +2 -2
- data/lib/chef/provider/user/mac.rb +14 -6
- data/lib/chef/provider/user/solaris.rb +1 -1
- data/lib/chef/provider/user/windows.rb +10 -3
- data/lib/chef/providers.rb +0 -3
- data/lib/chef/pwsh.rb +71 -0
- data/lib/chef/resource.rb +1 -1
- data/lib/chef/resource/apt_repository.rb +6 -5
- data/lib/chef/resource/bash.rb +119 -1
- data/lib/chef/resource/batch.rb +1 -1
- data/lib/chef/resource/breakpoint.rb +3 -1
- data/lib/chef/resource/build_essential.rb +5 -8
- data/lib/chef/resource/chef_client_config.rb +313 -0
- data/lib/chef/resource/chef_client_cron.rb +5 -5
- data/lib/chef/resource/chef_client_scheduled_task.rb +4 -4
- data/lib/chef/resource/chef_client_systemd_timer.rb +5 -5
- data/lib/chef/resource/chef_handler.rb +1 -0
- data/lib/chef/resource/chef_sleep.rb +1 -1
- data/lib/chef/resource/cron/_cron_shared.rb +1 -0
- data/lib/chef/resource/cron/cron_d.rb +2 -2
- data/lib/chef/resource/csh.rb +2 -2
- data/lib/chef/resource/dsc_script.rb +8 -1
- data/lib/chef/resource/execute.rb +6 -4
- data/lib/chef/resource/file.rb +2 -2
- data/lib/chef/resource/homebrew_update.rb +4 -1
- data/lib/chef/resource/hostname.rb +5 -5
- data/lib/chef/resource/ifconfig.rb +52 -5
- data/lib/chef/resource/kernel_module.rb +1 -1
- data/lib/chef/resource/ksh.rb +3 -3
- data/lib/chef/resource/launchd.rb +15 -15
- data/lib/chef/resource/lwrp_base.rb +3 -5
- data/lib/chef/resource/mount.rb +8 -2
- data/lib/chef/resource/perl.rb +2 -2
- data/lib/chef/resource/plist.rb +2 -6
- data/lib/chef/resource/powershell_package_source.rb +19 -18
- data/lib/chef/resource/powershell_script.rb +14 -11
- data/lib/chef/resource/python.rb +2 -2
- data/lib/chef/resource/registry_key.rb +93 -2
- data/lib/chef/resource/route.rb +1 -1
- data/lib/chef/resource/ruby.rb +2 -2
- data/lib/chef/resource/scm/_scm.rb +2 -1
- data/lib/chef/resource/scm/git.rb +82 -1
- data/lib/chef/resource/scm/subversion.rb +12 -0
- data/lib/chef/resource/script.rb +2 -2
- data/lib/chef/resource/solaris_package.rb +0 -2
- data/lib/chef/resource/sudo.rb +1 -1
- data/lib/chef/resource/support/client.erb +64 -0
- data/lib/chef/resource/systemd_unit.rb +42 -1
- data/lib/chef/resource/template.rb +2 -2
- data/lib/chef/resource/windows_ad_join.rb +9 -9
- data/lib/chef/resource/windows_audit_policy.rb +26 -24
- data/lib/chef/resource/windows_certificate.rb +13 -7
- data/lib/chef/resource/windows_dfs_server.rb +7 -4
- data/lib/chef/resource/windows_env.rb +173 -0
- data/lib/chef/resource/windows_feature.rb +2 -0
- data/lib/chef/resource/windows_firewall_profile.rb +7 -12
- data/lib/chef/resource/windows_firewall_rule.rb +9 -11
- data/lib/chef/resource/windows_font.rb +1 -1
- data/lib/chef/resource/windows_package.rb +1 -0
- data/lib/chef/resource/windows_path.rb +38 -0
- data/lib/chef/resource/windows_security_policy.rb +5 -5
- data/lib/chef/resource/windows_service.rb +108 -0
- data/lib/chef/resource/windows_share.rb +18 -18
- data/lib/chef/resource/windows_task.rb +629 -28
- data/lib/chef/resource/windows_workgroup.rb +6 -4
- data/lib/chef/resource/yum_repository.rb +1 -1
- data/lib/chef/resource_collection/resource_set.rb +2 -6
- data/lib/chef/resource_inspector.rb +77 -75
- data/lib/chef/resource_reporter.rb +0 -2
- data/lib/chef/resources.rb +1 -0
- data/lib/chef/run_lock.rb +2 -2
- data/lib/chef/search/query.rb +3 -1
- data/lib/chef/server_api.rb +0 -4
- data/lib/chef/shell/ext.rb +1 -1
- data/lib/chef/util/backup.rb +1 -1
- data/lib/chef/util/dsc/configuration_generator.rb +52 -11
- data/lib/chef/util/dsc/lcm_output_parser.rb +4 -7
- data/lib/chef/util/dsc/local_configuration_manager.rb +18 -15
- data/lib/chef/util/dsc/resource_store.rb +5 -11
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api/file.rb +4 -0
- data/lib/chef/win32/file.rb +1 -1
- data/lib/chef/win32/security/sid.rb +1 -1
- data/lib/chef/win32/unicode.rb +1 -1
- data/spec/functional/mixin/powershell_out_spec.rb +11 -3
- data/spec/functional/resource/apt_package_spec.rb +4 -6
- data/spec/functional/resource/chocolatey_package_spec.rb +3 -3
- data/spec/functional/resource/cron_spec.rb +3 -3
- data/spec/functional/resource/dsc_script_spec.rb +6 -9
- data/spec/functional/resource/mount_spec.rb +10 -2
- data/spec/functional/resource/powershell_package_source_spec.rb +107 -0
- data/spec/functional/resource/powershell_script_spec.rb +57 -14
- data/spec/functional/resource/windows_certificate_spec.rb +10 -6
- data/spec/functional/resource/windows_firewall_rule_spec.rb +93 -0
- data/spec/functional/resource/windows_package_spec.rb +36 -10
- data/spec/functional/resource/windows_share_spec.rb +103 -0
- data/spec/functional/resource/windows_task_spec.rb +2 -3
- data/spec/functional/resource/zypper_package_spec.rb +11 -0
- data/spec/integration/client/client_spec.rb +2 -1
- data/spec/integration/compliance/compliance_spec.rb +81 -0
- data/spec/integration/knife/client_key_create_spec.rb +1 -1
- data/spec/integration/knife/node_create_spec.rb +1 -1
- data/spec/integration/knife/node_environment_set_spec.rb +1 -1
- data/spec/integration/knife/node_run_list_add_spec.rb +4 -4
- data/spec/integration/knife/node_run_list_remove_spec.rb +1 -1
- data/spec/integration/knife/node_run_list_set_spec.rb +1 -1
- data/spec/integration/knife/node_show_spec.rb +1 -1
- data/spec/integration/recipes/notifies_spec.rb +1 -1
- data/spec/integration/recipes/provider_choice.rb +2 -2
- data/spec/integration/recipes/recipe_dsl_spec.rb +1 -0
- data/spec/spec_helper.rb +3 -4
- data/spec/support/lib/chef/resource/cat.rb +1 -1
- data/spec/support/lib/chef/resource/one_two_three_four.rb +1 -1
- data/spec/support/mock/platform.rb +24 -16
- data/spec/support/platform_helpers.rb +11 -4
- data/spec/support/shared/unit/knife_shared.rb +1 -1
- data/spec/support/shared/unit/script_resource.rb +4 -4
- data/spec/support/shared/unit/windows_script_resource.rb +1 -1
- data/spec/unit/chef_fs/config_spec.rb +1 -1
- data/spec/unit/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
- data/spec/unit/client_spec.rb +17 -0
- data/spec/unit/compliance/fetcher/automate_spec.rb +134 -0
- data/spec/unit/compliance/fetcher/chef_server_spec.rb +93 -0
- data/spec/unit/compliance/reporter/automate_spec.rb +427 -0
- data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +177 -0
- data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +48 -0
- data/spec/unit/compliance/runner_spec.rb +140 -0
- data/spec/unit/data_collector_spec.rb +0 -4
- data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +11 -11
- data/spec/unit/http/ssl_policies_spec.rb +11 -0
- data/spec/unit/knife/client_create_spec.rb +2 -2
- data/spec/unit/knife/configure_client_spec.rb +5 -5
- data/spec/unit/knife/configure_spec.rb +3 -3
- data/spec/unit/knife/cookbook_delete_spec.rb +2 -2
- data/spec/unit/knife/cookbook_download_spec.rb +2 -2
- data/spec/unit/knife/cookbook_list_spec.rb +2 -2
- data/spec/unit/knife/cookbook_metadata_spec.rb +3 -3
- data/spec/unit/knife/core/node_editor_spec.rb +1 -1
- data/spec/unit/knife/environment_compare_spec.rb +3 -3
- data/spec/unit/knife/supermarket_download_spec.rb +8 -8
- data/spec/unit/knife/supermarket_list_spec.rb +3 -3
- data/spec/unit/knife/supermarket_search_spec.rb +1 -1
- data/spec/unit/knife/tag_create_spec.rb +1 -1
- data/spec/unit/knife/tag_delete_spec.rb +1 -1
- data/spec/unit/knife/user_create_spec.rb +1 -1
- data/spec/unit/mixin/powershell_exec_spec.rb +41 -4
- data/spec/unit/mixin/powershell_out_spec.rb +14 -0
- data/spec/unit/mixin/which.rb +1 -1
- data/spec/unit/platform/query_helpers_spec.rb +11 -12
- data/spec/unit/provider/dsc_resource_spec.rb +10 -27
- data/spec/unit/provider/dsc_script_spec.rb +1 -1
- data/spec/unit/provider/group/windows_spec.rb +6 -0
- data/spec/unit/provider/group_spec.rb +1 -1
- data/spec/unit/provider/mount/linux_spec.rb +10 -0
- data/spec/unit/provider/mount/mount_spec.rb +21 -10
- data/spec/unit/provider/mount/solaris_spec.rb +1 -1
- data/spec/unit/provider/mount/windows_spec.rb +1 -0
- data/spec/unit/provider/mount_spec.rb +31 -0
- data/spec/unit/provider/package/chocolatey_spec.rb +1 -2
- data/spec/unit/provider/package/powershell_spec.rb +87 -95
- data/spec/unit/provider/package/zypper_spec.rb +0 -25
- data/spec/unit/provider/package_spec.rb +2 -2
- data/spec/unit/provider/powershell_script_spec.rb +11 -0
- data/spec/unit/provider/subversion_spec.rb +0 -3
- data/spec/unit/provider/systemd_unit_spec.rb +1 -1
- data/spec/unit/provider/user_spec.rb +7 -1
- data/spec/unit/provider/windows_env_spec.rb +18 -34
- data/spec/unit/provider/windows_path_spec.rb +6 -11
- data/spec/unit/provider/windows_task_spec.rb +7 -6
- data/spec/unit/resource/breakpoint_spec.rb +1 -1
- data/spec/unit/resource/build_essential_spec.rb +0 -12
- data/spec/unit/resource/chef_client_config_spec.rb +137 -0
- data/spec/unit/resource/ifconfig_spec.rb +2 -10
- data/spec/unit/resource/mount_spec.rb +18 -5
- data/spec/unit/resource/powershell_package_source_spec.rb +20 -20
- data/spec/unit/resource/powershell_script_spec.rb +4 -74
- data/spec/unit/resource/service_spec.rb +2 -2
- data/spec/unit/resource/solaris_package_spec.rb +8 -10
- data/spec/unit/resource/windows_certificate_spec.rb +12 -0
- data/spec/unit/resource_inspector_spec.rb +3 -3
- data/spec/unit/shell_spec.rb +2 -2
- data/spec/unit/util/dsc/configuration_generator_spec.rb +79 -0
- data/spec/unit/util/dsc/local_configuration_manager_spec.rb +27 -35
- data/tasks/rspec.rb +1 -1
- metadata +47 -24
- data/lib/chef/monkey_patches/net_http.rb +0 -22
- data/lib/chef/provider/windows_env.rb +0 -210
- data/lib/chef/provider/windows_path.rb +0 -61
- data/lib/chef/provider/windows_task.rb +0 -631
- data/lib/chef/util/powershell/cmdlet.rb +0 -175
- data/lib/chef/util/powershell/cmdlet_result.rb +0 -61
- data/spec/functional/util/powershell/cmdlet_spec.rb +0 -111
- data/spec/support/mock/constant.rb +0 -52
- data/spec/unit/monkey_patches/uri_spec.rb +0 -34
- data/spec/unit/provider_resolver_spec.rb +0 -885
- data/spec/unit/resource/data/InstallHistory_with_CLT.plist +0 -92
- data/spec/unit/resource/data/InstallHistory_without_CLT.plist +0 -38
- data/spec/unit/util/powershell/cmdlet_spec.rb +0 -106
@@ -90,19 +90,11 @@ describe Chef::Resource::Ifconfig do
|
|
90
90
|
it_should_behave_like "being a platform based on RedHat", "redhat", "4.0"
|
91
91
|
end
|
92
92
|
|
93
|
-
describe "when it is
|
94
|
-
it_should_behave_like "being a platform based on an old Debian", "debian", "6.0"
|
95
|
-
end
|
96
|
-
|
97
|
-
describe "when it is a new Debian platform" do
|
93
|
+
describe "when it is a Debian platform" do
|
98
94
|
it_should_behave_like "being a platform based on a recent Debian", "debian", "7.0"
|
99
95
|
end
|
100
96
|
|
101
|
-
describe "when it is
|
102
|
-
it_should_behave_like "being a platform based on an old Debian", "ubuntu", "11.04"
|
103
|
-
end
|
104
|
-
|
105
|
-
describe "when it is a new Ubuntu platform" do
|
97
|
+
describe "when it is a Ubuntu platform" do
|
106
98
|
it_should_behave_like "being a platform based on a recent Debian", "ubuntu", "11.10"
|
107
99
|
end
|
108
100
|
|
@@ -49,9 +49,18 @@ describe Chef::Resource::Mount do
|
|
49
49
|
expect(resource.mount_point).to eql("U:")
|
50
50
|
end
|
51
51
|
|
52
|
+
it "splits strings passed to the mount_point property" do
|
53
|
+
resource.mount_point "U:"
|
54
|
+
expect(resource.mount_point).to eql("U:")
|
55
|
+
end
|
56
|
+
|
57
|
+
it "strips trailing slashes from mount_point values" do
|
58
|
+
resource.mount_point "//192.168.11.102/Share/backup/"
|
59
|
+
expect(resource.mount_point).to eql("//192.168.11.102/Share/backup")
|
60
|
+
end
|
61
|
+
|
52
62
|
it "raises error when mount_point property is not set" do
|
53
|
-
resource.mount_point nil
|
54
|
-
expect { resource.mounted("poop") }.to raise_error(ArgumentError)
|
63
|
+
expect { resource.mount_point nil }.to raise_error(Chef::Exceptions::ValidationFailed, "Property mount_point must be one of: String! You passed nil.")
|
55
64
|
end
|
56
65
|
|
57
66
|
it "sets fsck_device to '-' by default" do
|
@@ -88,12 +97,17 @@ describe Chef::Resource::Mount do
|
|
88
97
|
|
89
98
|
it "allows options to be sent as a string, and convert to array" do
|
90
99
|
resource.options "rw,noexec"
|
91
|
-
expect(resource.options).to
|
100
|
+
expect(resource.options).to eql(%w{rw noexec})
|
101
|
+
end
|
102
|
+
|
103
|
+
it "strips whitespace around options in a comma deliminated string" do
|
104
|
+
resource.options "rw, noexec"
|
105
|
+
expect(resource.options).to eql(%w{rw noexec})
|
92
106
|
end
|
93
107
|
|
94
108
|
it "allows options property as an array" do
|
95
109
|
resource.options %w{ro nosuid}
|
96
|
-
expect(resource.options).to
|
110
|
+
expect(resource.options).to eql(%w{ro nosuid})
|
97
111
|
end
|
98
112
|
|
99
113
|
it "allows options to be sent as a delayed evaluator" do
|
@@ -103,7 +117,6 @@ describe Chef::Resource::Mount do
|
|
103
117
|
|
104
118
|
it "allows options to be sent as a delayed evaluator, and convert to array" do
|
105
119
|
resource.options Chef::DelayedEvaluator.new { "rw,noexec" }
|
106
|
-
expect(resource.options).to be_a_kind_of(Array)
|
107
120
|
expect(resource.options).to eql(%w{rw noexec})
|
108
121
|
end
|
109
122
|
|
@@ -87,58 +87,58 @@ describe Chef::Resource::PowershellPackageSource do
|
|
87
87
|
|
88
88
|
context "#register" do
|
89
89
|
it "builds a minimal command" do
|
90
|
-
expect(provider.build_ps_repository_command("Register", resource)).to eql("Register-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted'")
|
90
|
+
expect(provider.build_ps_repository_command("Register", resource)).to eql("Register-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' | Out-Null")
|
91
91
|
end
|
92
92
|
|
93
93
|
it "builds a command with trusted set to true" do
|
94
94
|
resource.trusted(true)
|
95
|
-
expect(provider.build_ps_repository_command("Register", resource)).to eql("Register-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Trusted'")
|
95
|
+
expect(provider.build_ps_repository_command("Register", resource)).to eql("Register-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Trusted' | Out-Null")
|
96
96
|
end
|
97
97
|
|
98
98
|
it "builds a command with a publish location" do
|
99
99
|
resource.publish_location("https://mygallery.company.co/api/v2/package")
|
100
|
-
expect(provider.build_ps_repository_command("Register", resource)).to eql("Register-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' -PublishLocation 'https://mygallery.company.co/api/v2/package'")
|
100
|
+
expect(provider.build_ps_repository_command("Register", resource)).to eql("Register-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' -PublishLocation 'https://mygallery.company.co/api/v2/package' | Out-Null")
|
101
101
|
end
|
102
102
|
|
103
103
|
it "builds a command with a script source location" do
|
104
104
|
resource.script_source_location("https://mygallery.company.co/api/v2/scripts")
|
105
|
-
expect(provider.build_ps_repository_command("Register", resource)).to eql("Register-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' -ScriptSourceLocation 'https://mygallery.company.co/api/v2/scripts'")
|
105
|
+
expect(provider.build_ps_repository_command("Register", resource)).to eql("Register-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' -ScriptSourceLocation 'https://mygallery.company.co/api/v2/scripts' | Out-Null")
|
106
106
|
end
|
107
107
|
|
108
108
|
it "builds a command with a script publish location" do
|
109
109
|
resource.script_publish_location("https://mygallery.company.co/api/v2/scripts/package")
|
110
|
-
expect(provider.build_ps_repository_command("Register", resource)).to eql("Register-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' -ScriptPublishLocation 'https://mygallery.company.co/api/v2/scripts/package'")
|
110
|
+
expect(provider.build_ps_repository_command("Register", resource)).to eql("Register-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' -ScriptPublishLocation 'https://mygallery.company.co/api/v2/scripts/package' | Out-Null")
|
111
111
|
end
|
112
112
|
end
|
113
113
|
|
114
114
|
context "#set" do
|
115
115
|
it "builds a minimal command" do
|
116
|
-
expect(provider.build_ps_repository_command("Set", resource)).to eql("Set-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted'")
|
116
|
+
expect(provider.build_ps_repository_command("Set", resource)).to eql("Set-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' | Out-Null")
|
117
117
|
end
|
118
118
|
|
119
119
|
it "builds a command to change the url" do
|
120
120
|
resource.url("https://othergallery.company.co/api/v2/")
|
121
|
-
expect(provider.build_ps_repository_command("Set", resource)).to eql("Set-PSRepository -Name 'MyGallery' -SourceLocation 'https://othergallery.company.co/api/v2/' -InstallationPolicy 'Untrusted'")
|
121
|
+
expect(provider.build_ps_repository_command("Set", resource)).to eql("Set-PSRepository -Name 'MyGallery' -SourceLocation 'https://othergallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' | Out-Null")
|
122
122
|
end
|
123
123
|
|
124
124
|
it "builds a command with trusted set to true" do
|
125
125
|
resource.trusted(true)
|
126
|
-
expect(provider.build_ps_repository_command("Set", resource)).to eql("Set-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Trusted'")
|
126
|
+
expect(provider.build_ps_repository_command("Set", resource)).to eql("Set-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Trusted' | Out-Null")
|
127
127
|
end
|
128
128
|
|
129
129
|
it "builds a command with a publish location" do
|
130
130
|
resource.publish_location("https://mygallery.company.co/api/v2/package")
|
131
|
-
expect(provider.build_ps_repository_command("Set", resource)).to eql("Set-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' -PublishLocation 'https://mygallery.company.co/api/v2/package'")
|
131
|
+
expect(provider.build_ps_repository_command("Set", resource)).to eql("Set-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' -PublishLocation 'https://mygallery.company.co/api/v2/package' | Out-Null")
|
132
132
|
end
|
133
133
|
|
134
134
|
it "builds a command with a script source location" do
|
135
135
|
resource.script_source_location("https://mygallery.company.co/api/v2/scripts")
|
136
|
-
expect(provider.build_ps_repository_command("Set", resource)).to eql("Set-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' -ScriptSourceLocation 'https://mygallery.company.co/api/v2/scripts'")
|
136
|
+
expect(provider.build_ps_repository_command("Set", resource)).to eql("Set-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' -ScriptSourceLocation 'https://mygallery.company.co/api/v2/scripts' | Out-Null")
|
137
137
|
end
|
138
138
|
|
139
139
|
it "builds a command with a script publish location" do
|
140
140
|
resource.script_publish_location("https://mygallery.company.co/api/v2/scripts/package")
|
141
|
-
expect(provider.build_ps_repository_command("Set", resource)).to eql("Set-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' -ScriptPublishLocation 'https://mygallery.company.co/api/v2/scripts/package'")
|
141
|
+
expect(provider.build_ps_repository_command("Set", resource)).to eql("Set-PSRepository -Name 'MyGallery' -SourceLocation 'https://mygallery.company.co/api/v2/' -InstallationPolicy 'Untrusted' -ScriptPublishLocation 'https://mygallery.company.co/api/v2/scripts/package' | Out-Null")
|
142
142
|
end
|
143
143
|
end
|
144
144
|
end
|
@@ -151,42 +151,42 @@ describe Chef::Resource::PowershellPackageSource do
|
|
151
151
|
|
152
152
|
context "#register" do
|
153
153
|
it "builds a minimal command" do
|
154
|
-
expect(provider.build_package_source_command("Register", resource)).to eql("Register-PackageSource -Name 'NuGet' -Location 'http://nuget.org/api/v2/' -Trusted:$false -ProviderName 'NuGet'")
|
154
|
+
expect(provider.build_package_source_command("Register", resource)).to eql("Register-PackageSource -Name 'NuGet' -Location 'http://nuget.org/api/v2/' -Trusted:$false -ProviderName 'NuGet' | Out-Null")
|
155
155
|
end
|
156
156
|
|
157
157
|
it "builds a command with trusted set to true" do
|
158
158
|
resource.trusted(true)
|
159
|
-
expect(provider.build_package_source_command("Register", resource)).to eql("Register-PackageSource -Name 'NuGet' -Location 'http://nuget.org/api/v2/' -Trusted:$true -ProviderName 'NuGet'")
|
159
|
+
expect(provider.build_package_source_command("Register", resource)).to eql("Register-PackageSource -Name 'NuGet' -Location 'http://nuget.org/api/v2/' -Trusted:$true -ProviderName 'NuGet' | Out-Null")
|
160
160
|
end
|
161
161
|
|
162
162
|
it "builds a command with a different provider" do
|
163
163
|
resource.source_name("choco")
|
164
164
|
resource.url("https://chocolatey.org/api/v2/")
|
165
165
|
resource.provider_name("chocolatey")
|
166
|
-
expect(provider.build_package_source_command("Register", resource)).to eql("Register-PackageSource -Name 'choco' -Location 'https://chocolatey.org/api/v2/' -Trusted:$false -ProviderName 'chocolatey'")
|
166
|
+
expect(provider.build_package_source_command("Register", resource)).to eql("Register-PackageSource -Name 'choco' -Location 'https://chocolatey.org/api/v2/' -Trusted:$false -ProviderName 'chocolatey' | Out-Null")
|
167
167
|
end
|
168
168
|
end
|
169
169
|
|
170
170
|
context "#set" do
|
171
171
|
it "builds a minimal command" do
|
172
|
-
expect(provider.build_package_source_command("Set", resource)).to eql("Set-PackageSource -Name 'NuGet' -Location 'http://nuget.org/api/v2/' -Trusted:$false -ProviderName 'NuGet'")
|
172
|
+
expect(provider.build_package_source_command("Set", resource)).to eql("Set-PackageSource -Name 'NuGet' -Location 'http://nuget.org/api/v2/' -Trusted:$false -ProviderName 'NuGet' | Out-Null")
|
173
173
|
end
|
174
174
|
|
175
175
|
it "builds a command to change the url" do
|
176
176
|
resource.url("https://nuget.company.co/api/v2/")
|
177
|
-
expect(provider.build_package_source_command("Set", resource)).to eql("Set-PackageSource -Name 'NuGet' -Location 'https://nuget.company.co/api/v2/' -Trusted:$false -ProviderName 'NuGet'")
|
177
|
+
expect(provider.build_package_source_command("Set", resource)).to eql("Set-PackageSource -Name 'NuGet' -Location 'https://nuget.company.co/api/v2/' -Trusted:$false -ProviderName 'NuGet' | Out-Null")
|
178
178
|
end
|
179
179
|
|
180
180
|
it "builds a command with trusted set to true" do
|
181
181
|
resource.trusted(true)
|
182
|
-
expect(provider.build_package_source_command("Set", resource)).to eql("Set-PackageSource -Name 'NuGet' -Location 'http://nuget.org/api/v2/' -Trusted:$true -ProviderName 'NuGet'")
|
182
|
+
expect(provider.build_package_source_command("Set", resource)).to eql("Set-PackageSource -Name 'NuGet' -Location 'http://nuget.org/api/v2/' -Trusted:$true -ProviderName 'NuGet' | Out-Null")
|
183
183
|
end
|
184
184
|
|
185
185
|
it "builds a command with a different provider" do
|
186
186
|
resource.source_name("choco")
|
187
187
|
resource.url("https://chocolatey.org/api/v2/")
|
188
188
|
resource.provider_name("chocolatey")
|
189
|
-
expect(provider.build_package_source_command("Set", resource)).to eql("Set-PackageSource -Name 'choco' -Location 'https://chocolatey.org/api/v2/' -Trusted:$false -ProviderName 'chocolatey'")
|
189
|
+
expect(provider.build_package_source_command("Set", resource)).to eql("Set-PackageSource -Name 'choco' -Location 'https://chocolatey.org/api/v2/' -Trusted:$false -ProviderName 'chocolatey' | Out-Null")
|
190
190
|
end
|
191
191
|
end
|
192
192
|
end
|
@@ -205,13 +205,13 @@ describe Chef::Resource::PowershellPackageSource do
|
|
205
205
|
|
206
206
|
describe "#package_source_exists?" do
|
207
207
|
it "returns true if it exists" do
|
208
|
-
allow(provider).to receive(:
|
208
|
+
allow(provider).to receive(:powershell_exec!).with("(Get-PackageSource -Name 'MyGallery' -ErrorAction SilentlyContinue).Name").and_return(double("powershell_exec!", result: "MyGallery\r\n"))
|
209
209
|
resource.source_name("MyGallery")
|
210
210
|
expect(provider.package_source_exists?).to eql(true)
|
211
211
|
end
|
212
212
|
|
213
213
|
it "returns false if it doesn't exist" do
|
214
|
-
allow(provider).to receive(:
|
214
|
+
allow(provider).to receive(:powershell_exec!).with("(Get-PackageSource -Name 'MyGallery' -ErrorAction SilentlyContinue).Name").and_return(double("powershell_exec!", result: ""))
|
215
215
|
resource.source_name("MyGallery")
|
216
216
|
expect(provider.package_source_exists?).to eql(false)
|
217
217
|
end
|
@@ -47,81 +47,11 @@ describe Chef::Resource::PowershellScript do
|
|
47
47
|
expect(resource.convert_boolean_return).to eq(false)
|
48
48
|
end
|
49
49
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
allow(resource).to receive(:updated).and_return(true)
|
54
|
-
end
|
50
|
+
it "inherits exactly the :cwd, :domain, :environment, :group, :password, :path, :user, :umask, :architecture, :elevated, :interpreter properties from a parent resource class" do
|
51
|
+
inherited_difference = Chef::Resource::PowershellScript.guard_inherited_attributes -
|
52
|
+
%i{cwd domain environment group password path user umask architecture elevated interpreter}
|
55
53
|
|
56
|
-
|
57
|
-
inherited_difference = Chef::Resource::PowershellScript.guard_inherited_attributes -
|
58
|
-
%i{cwd environment group path user umask architecture elevated}
|
59
|
-
|
60
|
-
expect(inherited_difference).to eq([])
|
61
|
-
end
|
62
|
-
|
63
|
-
it "allows guard interpreter to be set to Chef::Resource::Script" do
|
64
|
-
resource.guard_interpreter(:script)
|
65
|
-
allow_any_instance_of(Chef::GuardInterpreter::ResourceGuardInterpreter).to receive(:evaluate_action).and_return(false)
|
66
|
-
resource.only_if("echo hi")
|
67
|
-
end
|
68
|
-
|
69
|
-
it "allows guard interpreter to be set to Chef::Resource::Bash derived from Chef::Resource::Script" do
|
70
|
-
resource.guard_interpreter(:bash)
|
71
|
-
allow_any_instance_of(Chef::GuardInterpreter::ResourceGuardInterpreter).to receive(:evaluate_action).and_return(false)
|
72
|
-
resource.only_if("echo hi")
|
73
|
-
end
|
74
|
-
|
75
|
-
it "allows guard interpreter to be set to Chef::Resource::PowershellScript derived indirectly from Chef::Resource::Script" do
|
76
|
-
resource.guard_interpreter(:powershell_script)
|
77
|
-
allow_any_instance_of(Chef::GuardInterpreter::ResourceGuardInterpreter).to receive(:evaluate_action).and_return(false)
|
78
|
-
resource.only_if("echo hi")
|
79
|
-
end
|
80
|
-
|
81
|
-
it "enables convert_boolean_return by default for guards in the context of powershell_script when no guard params are specified" do
|
82
|
-
allow_any_instance_of(Chef::GuardInterpreter::ResourceGuardInterpreter).to receive(:evaluate_action).and_return(true)
|
83
|
-
allow_any_instance_of(Chef::GuardInterpreter::ResourceGuardInterpreter).to receive(:block_from_attributes).with(
|
84
|
-
{ convert_boolean_return: true, code: "$true" }
|
85
|
-
).and_return(Proc.new {})
|
86
|
-
resource.only_if("$true")
|
87
|
-
end
|
88
|
-
|
89
|
-
it "enables convert_boolean_return by default for guards in non-Chef::Resource::Script derived resources when no guard params are specified" do
|
90
|
-
node = Chef::Node.new
|
91
|
-
run_context = Chef::RunContext.new(node, nil, nil)
|
92
|
-
file_resource = Chef::Resource::File.new("idontexist", run_context)
|
93
|
-
file_resource.guard_interpreter :powershell_script
|
94
|
-
|
95
|
-
allow_any_instance_of(Chef::GuardInterpreter::ResourceGuardInterpreter).to receive(:block_from_attributes).with(
|
96
|
-
{ convert_boolean_return: true, code: "$true" }
|
97
|
-
).and_return(Proc.new {})
|
98
|
-
resource.only_if("$true")
|
99
|
-
end
|
100
|
-
|
101
|
-
it "enables convert_boolean_return by default for guards in the context of powershell_script when guard params are specified" do
|
102
|
-
guard_parameters = { cwd: "/etc/chef", architecture: :x86_64 }
|
103
|
-
allow_any_instance_of(Chef::GuardInterpreter::ResourceGuardInterpreter).to receive(:block_from_attributes).with(
|
104
|
-
{ convert_boolean_return: true, code: "$true" }.merge(guard_parameters)
|
105
|
-
).and_return(Proc.new {})
|
106
|
-
resource.only_if("$true", guard_parameters)
|
107
|
-
end
|
108
|
-
|
109
|
-
it "passes convert_boolean_return as true if it was specified as true in a guard parameter" do
|
110
|
-
guard_parameters = { cwd: "/etc/chef", convert_boolean_return: true, architecture: :x86_64 }
|
111
|
-
allow_any_instance_of(Chef::GuardInterpreter::ResourceGuardInterpreter).to receive(:block_from_attributes).with(
|
112
|
-
{ convert_boolean_return: true, code: "$true" }.merge(guard_parameters)
|
113
|
-
).and_return(Proc.new {})
|
114
|
-
resource.only_if("$true", guard_parameters)
|
115
|
-
end
|
116
|
-
|
117
|
-
it "passes convert_boolean_return as false if it was specified as true in a guard parameter" do
|
118
|
-
other_guard_parameters = { cwd: "/etc/chef", architecture: :x86_64 }
|
119
|
-
parameters_with_boolean_disabled = other_guard_parameters.merge({ convert_boolean_return: false, code: "$true" })
|
120
|
-
allow_any_instance_of(Chef::GuardInterpreter::ResourceGuardInterpreter).to receive(:block_from_attributes).with(
|
121
|
-
parameters_with_boolean_disabled
|
122
|
-
).and_return(Proc.new {})
|
123
|
-
resource.only_if("$true", parameters_with_boolean_disabled)
|
124
|
-
end
|
54
|
+
expect(inherited_difference).to eq([])
|
125
55
|
end
|
126
56
|
|
127
57
|
context "as a script running in Windows-based scripting language" do
|
@@ -62,7 +62,7 @@ describe Chef::Resource::Service do
|
|
62
62
|
|
63
63
|
it "does not accept a regexp for the service pattern" do
|
64
64
|
expect do
|
65
|
-
resource.pattern
|
65
|
+
resource.pattern(/.*/)
|
66
66
|
end.to raise_error(ArgumentError)
|
67
67
|
end
|
68
68
|
|
@@ -89,7 +89,7 @@ describe Chef::Resource::Service do
|
|
89
89
|
|
90
90
|
it "does not accept a regexp for the init_command property" do
|
91
91
|
expect do
|
92
|
-
resource.init_command
|
92
|
+
resource.init_command(/.*/)
|
93
93
|
end.to raise_error(ArgumentError)
|
94
94
|
end
|
95
95
|
|
@@ -21,16 +21,14 @@ require "support/shared/unit/resource/static_provider_resolution"
|
|
21
21
|
|
22
22
|
describe Chef::Resource::SolarisPackage, "initialize" do
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
)
|
33
|
-
end
|
24
|
+
static_provider_resolution(
|
25
|
+
resource: Chef::Resource::SolarisPackage,
|
26
|
+
provider: Chef::Provider::Package::Solaris,
|
27
|
+
name: :solaris_package,
|
28
|
+
action: :install,
|
29
|
+
os: "solaris2",
|
30
|
+
platform_family: "solaris2"
|
31
|
+
)
|
34
32
|
|
35
33
|
let(:resource) { Chef::Resource::SolarisPackage.new("foo") }
|
36
34
|
|
@@ -80,4 +80,16 @@ describe Chef::Resource::WindowsCertificate do
|
|
80
80
|
resource.store_name "MY"
|
81
81
|
expect { resource.action :create }.not_to raise_error
|
82
82
|
end
|
83
|
+
|
84
|
+
it "the exportable property defaults to false" do
|
85
|
+
expect(resource.exportable).to be false
|
86
|
+
end
|
87
|
+
|
88
|
+
it "doesn't raise error if exportable option is passed" do
|
89
|
+
resource.pfx_password "chef$123"
|
90
|
+
resource.source "C:\\certs\\test-cert.pfx"
|
91
|
+
resource.store_name "MY"
|
92
|
+
resource.exportable true
|
93
|
+
expect { resource.action :create }.not_to raise_error
|
94
|
+
end
|
83
95
|
end
|
@@ -33,9 +33,9 @@ class DummyResource < Chef::Resource
|
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
|
-
describe ResourceInspector do
|
36
|
+
describe Chef::ResourceInspector do
|
37
37
|
describe "inspecting a resource" do
|
38
|
-
subject { ResourceInspector.extract_resource(DummyResource, false) }
|
38
|
+
subject { Chef::ResourceInspector.extract_resource(DummyResource, false) }
|
39
39
|
|
40
40
|
it "returns a hash with required data" do
|
41
41
|
expect(subject[:description]).to eq "A dummy resource"
|
@@ -50,7 +50,7 @@ describe ResourceInspector do
|
|
50
50
|
end
|
51
51
|
|
52
52
|
context "including built in properties" do
|
53
|
-
subject { ResourceInspector.extract_resource(DummyResource, true) }
|
53
|
+
subject { Chef::ResourceInspector.extract_resource(DummyResource, true) }
|
54
54
|
it "returns many properties" do
|
55
55
|
expect(subject[:properties].count).to be > 1
|
56
56
|
expect(subject[:properties].map { |n| n[:name] }).to include(:name, :first, :sensitive)
|
data/spec/unit/shell_spec.rb
CHANGED
@@ -150,8 +150,8 @@ describe Shell do
|
|
150
150
|
end
|
151
151
|
|
152
152
|
it "creates a help banner with the command descriptions" do
|
153
|
-
expect(@chef_object.help_banner).to match(/^\|\ Command
|
154
|
-
expect(@chef_object.help_banner).to match(/^\|\ rspec_method
|
153
|
+
expect(@chef_object.help_banner).to match(/^\|\ Command\s+\|\ Description\s*$/)
|
154
|
+
expect(@chef_object.help_banner).to match(/^\|\ rspec_method\s+\|\ rspecin\'\s*$/)
|
155
155
|
end
|
156
156
|
end
|
157
157
|
|
@@ -25,6 +25,85 @@ describe Chef::Util::DSC::ConfigurationGenerator do
|
|
25
25
|
Chef::Util::DSC::ConfigurationGenerator.new(node, "tmp")
|
26
26
|
end
|
27
27
|
|
28
|
+
describe "#validate_switch_name!" do
|
29
|
+
it "should not raise an error if a name contains all upper case letters" do
|
30
|
+
conf_man.send(:validate_switch_name!, "HELLO")
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should not raise an error if the name contains all lower case letters" do
|
34
|
+
conf_man.send(:validate_switch_name!, "hello")
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should not raise an error if no special characters are used except _" do
|
38
|
+
conf_man.send(:validate_switch_name!, "hello_world")
|
39
|
+
end
|
40
|
+
|
41
|
+
%w{! @ # $ % ^ & * & * ( ) - = + \{ \} . ? < > \\ /}.each do |sym|
|
42
|
+
it "raises an ArgumentError if configuration name contains #{sym}" do
|
43
|
+
expect do
|
44
|
+
conf_man.send(:validate_switch_name!, "Hello#{sym}")
|
45
|
+
end.to raise_error(ArgumentError)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe "#escape_parameter_value" do
|
51
|
+
# Is this list really complete?
|
52
|
+
%w{` " # '}.each do |c|
|
53
|
+
it "escapes #{c}" do
|
54
|
+
expect(conf_man.send(:escape_parameter_value, "stuff #{c}")).to eql("stuff `#{c}")
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
it "does not do anything to a string without special characters" do
|
59
|
+
expect(conf_man.send(:escape_parameter_value, "stuff")).to eql("stuff")
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe "#escape_string_parameter_value" do
|
64
|
+
it "surrounds a string with ''" do
|
65
|
+
expect(conf_man.send(:escape_string_parameter_value, "stuff")).to eql("'stuff'")
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
describe "#command_switches_string" do
|
70
|
+
it "raises an ArgumentError if the key is not a symbol" do
|
71
|
+
expect do
|
72
|
+
conf_man.send(:command_switches_string, { "foo" => "bar" })
|
73
|
+
end.to raise_error(ArgumentError)
|
74
|
+
end
|
75
|
+
|
76
|
+
it "does not allow invalid switch names" do
|
77
|
+
expect do
|
78
|
+
conf_man.send(:command_switches_string, { foo!: "bar" })
|
79
|
+
end.to raise_error(ArgumentError)
|
80
|
+
end
|
81
|
+
|
82
|
+
it "ignores switches with a false value" do
|
83
|
+
expect(conf_man.send(:command_switches_string, { foo: false })).to eql("")
|
84
|
+
end
|
85
|
+
|
86
|
+
it "should correctly handle a value type of string" do
|
87
|
+
expect(conf_man.send(:command_switches_string, { foo: "bar" })).to eql("-foo 'bar'")
|
88
|
+
end
|
89
|
+
|
90
|
+
it "should correctly handle a value type of string even when it is 0 length" do
|
91
|
+
expect(conf_man.send(:command_switches_string, { foo: "" })).to eql("-foo ''")
|
92
|
+
end
|
93
|
+
|
94
|
+
it "should not quote integers" do
|
95
|
+
expect(conf_man.send(:command_switches_string, { foo: 1 })).to eql("-foo 1")
|
96
|
+
end
|
97
|
+
|
98
|
+
it "should not quote floats" do
|
99
|
+
expect(conf_man.send(:command_switches_string, { foo: 1.0 })).to eql("-foo 1.0")
|
100
|
+
end
|
101
|
+
|
102
|
+
it "has just the switch when the value is true" do
|
103
|
+
expect(conf_man.send(:command_switches_string, { foo: true })).to eql("-foo")
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
28
107
|
describe "#validate_configuration_name!" do
|
29
108
|
it "should not raise an error if a name contains all upper case letters" do
|
30
109
|
conf_man.send(:validate_configuration_name!, "HELLO")
|