chef 14.8.12-universal-mingw32 → 14.9.13-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/chef.gemspec +1 -1
- data/distro/ruby_bin_folder/msvcp140.dll +0 -0
- data/distro/ruby_bin_folder/vcruntime140.dll +0 -0
- data/lib/chef/api_client.rb +1 -1
- data/lib/chef/api_client/registration.rb +1 -1
- data/lib/chef/api_client_v1.rb +4 -4
- data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bag_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/data_bags_dir.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/nodes_dir.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +1 -1
- data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/chef_server/policy_group_entry.rb +2 -2
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_dir.rb +3 -3
- data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +4 -4
- data/lib/chef/client.rb +2 -2
- data/lib/chef/config_fetcher.rb +1 -1
- data/lib/chef/cookbook_uploader.rb +3 -3
- data/lib/chef/cookbook_version.rb +1 -1
- data/lib/chef/data_bag.rb +1 -1
- data/lib/chef/data_bag_item.rb +1 -1
- data/lib/chef/environment.rb +1 -1
- data/lib/chef/formatters/error_inspectors/cookbook_resolve_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/cookbook_sync_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +1 -1
- data/lib/chef/formatters/error_inspectors/run_list_expansion_error_inspector.rb +1 -1
- data/lib/chef/http.rb +3 -3
- data/lib/chef/key.rb +1 -1
- data/lib/chef/knife.rb +1 -1
- data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
- data/lib/chef/knife/cookbook_delete.rb +1 -1
- data/lib/chef/knife/cookbook_upload.rb +1 -1
- data/lib/chef/knife/data_bag_create.rb +1 -1
- data/lib/chef/knife/raw.rb +1 -1
- data/lib/chef/knife/search.rb +1 -1
- data/lib/chef/knife/supermarket_share.rb +1 -1
- data/lib/chef/knife/supermarket_unshare.rb +1 -1
- data/lib/chef/mixin/api_version_request_handling.rb +1 -1
- data/lib/chef/monkey_patches/net_http.rb +5 -1
- data/lib/chef/node.rb +4 -4
- data/lib/chef/node/mixin/immutablize_array.rb +5 -0
- data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
- data/lib/chef/org.rb +1 -1
- data/lib/chef/policy_builder/policyfile.rb +1 -1
- data/lib/chef/provider/apt_repository.rb +1 -1
- data/lib/chef/provider/group/windows.rb +1 -0
- data/lib/chef/provider/remote_file/content.rb +1 -1
- data/lib/chef/provider/windows_task.rb +2 -2
- data/lib/chef/resource/group.rb +4 -0
- data/lib/chef/resource/homebrew_cask.rb +8 -8
- data/lib/chef/resource/homebrew_tap.rb +6 -6
- data/lib/chef/resource/openssl_ec_private_key.rb +1 -1
- data/lib/chef/resource/openssl_x509_request.rb +1 -1
- data/lib/chef/resource/powershell_package_source.rb +11 -7
- data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
- data/lib/chef/resource/sysctl.rb +6 -6
- data/lib/chef/resource/timezone.rb +17 -1
- data/lib/chef/resource/windows_ad_join.rb +11 -1
- data/lib/chef/resource/windows_certificate.rb +7 -4
- data/lib/chef/resource/windows_printer.rb +3 -3
- data/lib/chef/resource/windows_task.rb +17 -8
- data/lib/chef/role.rb +1 -1
- data/lib/chef/run_list/run_list_expansion.rb +1 -1
- data/lib/chef/user.rb +1 -1
- data/lib/chef/user_v1.rb +4 -4
- data/lib/chef/util/windows/net_group.rb +6 -0
- data/lib/chef/version.rb +1 -1
- data/lib/chef/win32/api/net.rb +16 -0
- data/lib/chef/win32/net.rb +15 -0
- data/lib/chef/win32/version.rb +15 -15
- data/spec/functional/http/simple_spec.rb +10 -10
- data/spec/functional/resource/timezone_spec.rb +39 -0
- data/spec/functional/resource/windows_task_spec.rb +51 -7
- data/spec/integration/knife/client_create_spec.rb +1 -1
- data/spec/integration/knife/client_key_create_spec.rb +1 -1
- data/spec/integration/knife/cookbook_download_spec.rb +1 -1
- data/spec/integration/knife/cookbook_show_spec.rb +2 -2
- data/spec/integration/knife/data_bag_create_spec.rb +1 -1
- data/spec/integration/knife/environment_create_spec.rb +1 -1
- data/spec/integration/knife/node_create_spec.rb +1 -1
- data/spec/integration/knife/role_create_spec.rb +1 -1
- data/spec/support/shared/context/client.rb +1 -1
- data/spec/support/shared/unit/api_error_inspector.rb +5 -5
- data/spec/support/shared/unit/api_versioning.rb +2 -2
- data/spec/unit/api_client/registration_spec.rb +1 -1
- data/spec/unit/api_client_spec.rb +2 -2
- data/spec/unit/api_client_v1_spec.rb +3 -3
- data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +1 -1
- data/spec/unit/client_spec.rb +2 -2
- data/spec/unit/data_bag_item_spec.rb +1 -1
- data/spec/unit/data_bag_spec.rb +1 -1
- data/spec/unit/formatters/error_inspectors/cookbook_resolve_error_inspector_spec.rb +4 -4
- data/spec/unit/formatters/error_inspectors/run_list_expansion_error_inspector_spec.rb +2 -2
- data/spec/unit/knife/bootstrap/client_builder_spec.rb +1 -1
- data/spec/unit/knife/cookbook_delete_spec.rb +3 -3
- data/spec/unit/knife/data_bag_create_spec.rb +2 -2
- data/spec/unit/knife/supermarket_share_spec.rb +1 -1
- data/spec/unit/knife/supermarket_unshare_spec.rb +3 -3
- data/spec/unit/knife_spec.rb +7 -7
- data/spec/unit/mixin/api_version_request_handling_spec.rb +2 -2
- data/spec/unit/node_spec.rb +2 -2
- data/spec/unit/policy_builder/policyfile_spec.rb +2 -2
- data/spec/unit/provider/group/windows_spec.rb +15 -0
- data/spec/unit/provider/remote_file/content_spec.rb +2 -2
- data/spec/unit/resource/group_spec.rb +17 -0
- data/spec/unit/resource/powershell_package_source_spec.rb +2 -2
- data/spec/unit/resource/windows_certificate.rb +7 -0
- data/spec/unit/resource/windows_task_spec.rb +61 -20
- data/spec/unit/resource_reporter_spec.rb +7 -7
- data/spec/unit/user_v1_spec.rb +2 -2
- metadata +15 -6
@@ -0,0 +1,39 @@
|
|
1
|
+
#
|
2
|
+
# Author:: Gary Bright (<digitalgaz@hotmail.com>)
|
3
|
+
# Copyright:: Copyright 2011-2016, Chef Software Inc.
|
4
|
+
# License:: Apache License, Version 2.0
|
5
|
+
#
|
6
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
7
|
+
# you may not use this file except in compliance with the License.
|
8
|
+
# You may obtain a copy of the License at
|
9
|
+
#
|
10
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
11
|
+
#
|
12
|
+
# Unless required by applicable law or agreed to in writing, software
|
13
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
14
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
15
|
+
# See the License for the specific language governing permissions and
|
16
|
+
# limitations under the License.
|
17
|
+
#
|
18
|
+
require "spec_helper"
|
19
|
+
|
20
|
+
describe Chef::Resource::Timezone, :windows_only do
|
21
|
+
let(:timezone) { "GMT Standard Time" }
|
22
|
+
|
23
|
+
def timezone_resource
|
24
|
+
Chef::Resource::Timezone.new(timezone, run_context)
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "when a timezone is provided on windows" do
|
28
|
+
it "should set a timezone" do
|
29
|
+
timezone_resource.run_action(:set)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe "when a timezone is not provided on windows" do
|
34
|
+
let(:timezone) { nil }
|
35
|
+
it "raises an exception" do
|
36
|
+
expect { timezone_resource.run_action(:set) }.to raise_error(Chef::Exceptions::ValidationFailed)
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -1599,26 +1599,70 @@ describe Chef::Resource::WindowsTask, :windows_only do
|
|
1599
1599
|
end
|
1600
1600
|
|
1601
1601
|
context "when start_day is passed with frequency :onstart" do
|
1602
|
-
it "not raises error" do
|
1602
|
+
it "does not raises error" do
|
1603
1603
|
subject.frequency :onstart
|
1604
1604
|
subject.start_day "09/20/2017"
|
1605
1605
|
expect { subject.after_created }.not_to raise_error
|
1606
1606
|
end
|
1607
1607
|
end
|
1608
1608
|
|
1609
|
-
context "when a non
|
1609
|
+
context "when a non system user is passed without password" do
|
1610
1610
|
it "raises error" do
|
1611
|
-
subject.user "
|
1611
|
+
subject.user "USER"
|
1612
1612
|
subject.frequency :onstart
|
1613
|
-
expect { subject.after_created }.to raise_error(%q{
|
1613
|
+
expect { subject.after_created }.to raise_error(%q{Please provide a password or check if this task needs to be interactive! Valid passwordless users are: 'SYSTEM', 'NT AUTHORITY\SYSTEM', 'LOCAL SERVICE', 'NT AUTHORITY\LOCAL SERVICE', 'NETWORK SERVICE', 'NT AUTHORITY\NETWORK SERVICE', 'ADMINISTRATORS', 'BUILTIN\ADMINISTRATORS', 'USERS', 'BUILTIN\USERS', 'GUESTS', 'BUILTIN\GUESTS'})
|
1614
|
+
end
|
1615
|
+
it "does not raises error when task is interactive" do
|
1616
|
+
subject.user "USER"
|
1617
|
+
subject.frequency :onstart
|
1618
|
+
subject.interactive_enabled true
|
1619
|
+
expect { subject.after_created }.not_to raise_error
|
1614
1620
|
end
|
1615
1621
|
end
|
1616
1622
|
|
1617
|
-
context "when
|
1618
|
-
it "raises error" do
|
1623
|
+
context "when a system user is passed without password" do
|
1624
|
+
it "does not raises error" do
|
1625
|
+
subject.user "ADMINISTRATORS"
|
1626
|
+
subject.frequency :onstart
|
1627
|
+
expect { subject.after_created }.not_to raise_error
|
1628
|
+
end
|
1629
|
+
it "does not raises error when task is interactive" do
|
1630
|
+
subject.user "ADMINISTRATORS"
|
1631
|
+
subject.frequency :onstart
|
1632
|
+
subject.interactive_enabled true
|
1633
|
+
expect { subject.after_created }.not_to raise_error
|
1634
|
+
end
|
1635
|
+
end
|
1636
|
+
|
1637
|
+
context "when a non system user is passed with password" do
|
1638
|
+
it "does not raises error" do
|
1639
|
+
subject.user "USER"
|
1640
|
+
subject.password "XXXX"
|
1641
|
+
subject.frequency :onstart
|
1642
|
+
expect { subject.after_created }.not_to raise_error
|
1643
|
+
end
|
1644
|
+
it "does not raises error when task is interactive" do
|
1645
|
+
subject.user "USER"
|
1646
|
+
subject.password "XXXX"
|
1647
|
+
subject.frequency :onstart
|
1619
1648
|
subject.interactive_enabled true
|
1649
|
+
expect { subject.after_created }.not_to raise_error
|
1650
|
+
end
|
1651
|
+
end
|
1652
|
+
|
1653
|
+
context "when a system user is passed with password" do
|
1654
|
+
it "raises error" do
|
1655
|
+
subject.user "ADMINISTRATORS"
|
1656
|
+
subject.password "XXXX"
|
1620
1657
|
subject.frequency :onstart
|
1621
|
-
expect { subject.after_created }.to raise_error("
|
1658
|
+
expect { subject.after_created }.to raise_error("Password is not required for system users.")
|
1659
|
+
end
|
1660
|
+
it "raises error when task is interactive" do
|
1661
|
+
subject.user "ADMINISTRATORS"
|
1662
|
+
subject.password "XXXX"
|
1663
|
+
subject.frequency :onstart
|
1664
|
+
subject.interactive_enabled true
|
1665
|
+
expect { subject.after_created }.to raise_error("Password is not required for system users.")
|
1622
1666
|
end
|
1623
1667
|
end
|
1624
1668
|
|
@@ -44,7 +44,7 @@ EOM
|
|
44
44
|
it "refuses to add an existing client" do
|
45
45
|
pending "Knife client create must not blindly overwrite an existing client"
|
46
46
|
knife("client create -k bah").should_succeed stderr: out
|
47
|
-
expect { knife("client create -k bah") }.to raise_error(Net::
|
47
|
+
expect { knife("client create -k bah") }.to raise_error(Net::HTTPClientException)
|
48
48
|
end
|
49
49
|
|
50
50
|
it "saves the private key to a file" do
|
@@ -43,7 +43,7 @@ describe "knife client key create", :workstation do
|
|
43
43
|
|
44
44
|
it "refuses to add an already existing key" do
|
45
45
|
knife("client key create -k new bah")
|
46
|
-
expect { knife("client key create -k new bah") }.to raise_error(Net::
|
46
|
+
expect { knife("client key create -k new bah") }.to raise_error(Net::HTTPClientException)
|
47
47
|
end
|
48
48
|
|
49
49
|
it "saves the private key to a file" do
|
@@ -49,7 +49,7 @@ EOM
|
|
49
49
|
end
|
50
50
|
|
51
51
|
it "knife cookbook download with an unknown version raises an error" do
|
52
|
-
expect { knife("cookbook download -d #{tmpdir} x 1.0.0") }.to raise_error(Net::
|
52
|
+
expect { knife("cookbook download -d #{tmpdir} x 1.0.0") }.to raise_error(Net::HTTPClientException)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
@@ -138,11 +138,11 @@ EOM
|
|
138
138
|
end
|
139
139
|
|
140
140
|
it "knife cookbook show with a non-existent version displays an error" do
|
141
|
-
expect { knife("cookbook show x 1.0.1") }.to raise_error(Net::
|
141
|
+
expect { knife("cookbook show x 1.0.1") }.to raise_error(Net::HTTPClientException)
|
142
142
|
end
|
143
143
|
|
144
144
|
it "knife cookbook show with a non-existent cookbook displays an error" do
|
145
|
-
expect { knife("cookbook show y") }.to raise_error(Net::
|
145
|
+
expect { knife("cookbook show y") }.to raise_error(Net::HTTPClientException)
|
146
146
|
end
|
147
147
|
end
|
148
148
|
end
|
@@ -49,7 +49,7 @@ describe "knife data bag create", :workstation do
|
|
49
49
|
|
50
50
|
it "fails to add an existing item" do
|
51
51
|
knife("data bag create foo bar").should_succeed stdout: out, stderr: err
|
52
|
-
expect { knife("data bag create foo bar") }.to raise_error(Net::
|
52
|
+
expect { knife("data bag create foo bar") }.to raise_error(Net::HTTPClientException)
|
53
53
|
end
|
54
54
|
end
|
55
55
|
end
|
@@ -33,7 +33,7 @@ describe "knife environment create", :workstation do
|
|
33
33
|
it "refuses to add an existing environment" do
|
34
34
|
pending "Knife environment create must not blindly overwrite an existing environment"
|
35
35
|
knife("environment create bah").should_succeed out
|
36
|
-
expect { knife("environment create bah") }.to raise_error(Net::
|
36
|
+
expect { knife("environment create bah") }.to raise_error(Net::HTTPClientException)
|
37
37
|
end
|
38
38
|
|
39
39
|
end
|
@@ -39,7 +39,7 @@ describe "knife node create", :workstation do
|
|
39
39
|
it "refuses to add an existing node" do
|
40
40
|
pending "Knife node create must not blindly overwrite an existing node"
|
41
41
|
knife("node create bah").should_succeed out
|
42
|
-
expect { knife("node create bah") }.to raise_error(Net::
|
42
|
+
expect { knife("node create bah") }.to raise_error(Net::HTTPClientException)
|
43
43
|
end
|
44
44
|
|
45
45
|
end
|
@@ -33,7 +33,7 @@ describe "knife role create", :workstation do
|
|
33
33
|
it "refuses to add an existing role" do
|
34
34
|
pending "Knife role create must not blindly overwrite an existing role"
|
35
35
|
knife("role create bah").should_succeed out
|
36
|
-
expect { knife("role create bah") }.to raise_error(Net::
|
36
|
+
expect { knife("role create bah") }.to raise_error(Net::HTTPClientException)
|
37
37
|
end
|
38
38
|
|
39
39
|
end
|
@@ -142,7 +142,7 @@ shared_context "a client run" do
|
|
142
142
|
|
143
143
|
def stub_for_required_recipe
|
144
144
|
response = Net::HTTPNotFound.new("1.1", "404", "Not Found")
|
145
|
-
exception = Net::
|
145
|
+
exception = Net::HTTPClientException.new('404 "Not Found"', response)
|
146
146
|
expect(http_node_load).to receive(:get).with("required_recipe").and_raise(exception)
|
147
147
|
end
|
148
148
|
|
@@ -71,7 +71,7 @@ shared_examples_for "an api error inspector" do
|
|
71
71
|
@response_body = "synchronize the clock on your host"
|
72
72
|
@response = Net::HTTPUnauthorized.new("1.1", "401", "(response) unauthorized")
|
73
73
|
allow(@response).to receive(:body).and_return(@response_body)
|
74
|
-
@exception = Net::
|
74
|
+
@exception = Net::HTTPClientException.new("(exception) unauthorized", @response)
|
75
75
|
@inspector = described_class.new(@node_name, @exception, @config)
|
76
76
|
@inspector.add_explanation(@description)
|
77
77
|
end
|
@@ -87,7 +87,7 @@ shared_examples_for "an api error inspector" do
|
|
87
87
|
@response_body = "check your key and node name"
|
88
88
|
@response = Net::HTTPUnauthorized.new("1.1", "401", "(response) unauthorized")
|
89
89
|
allow(@response).to receive(:body).and_return(@response_body)
|
90
|
-
@exception = Net::
|
90
|
+
@exception = Net::HTTPClientException.new("(exception) unauthorized", @response)
|
91
91
|
@inspector = described_class.new(@node_name, @exception, @config)
|
92
92
|
@inspector.add_explanation(@description)
|
93
93
|
end
|
@@ -103,7 +103,7 @@ shared_examples_for "an api error inspector" do
|
|
103
103
|
@response_body = "forbidden"
|
104
104
|
@response = Net::HTTPForbidden.new("1.1", "403", "(response) forbidden")
|
105
105
|
allow(@response).to receive(:body).and_return(@response_body)
|
106
|
-
@exception = Net::
|
106
|
+
@exception = Net::HTTPClientException.new("(exception) forbidden", @response)
|
107
107
|
@inspector = described_class.new(@node_name, @exception, @config)
|
108
108
|
@inspector.add_explanation(@description)
|
109
109
|
end
|
@@ -119,7 +119,7 @@ shared_examples_for "an api error inspector" do
|
|
119
119
|
@response_body = "didn't like your data"
|
120
120
|
@response = Net::HTTPBadRequest.new("1.1", "400", "(response) bad request")
|
121
121
|
allow(@response).to receive(:body).and_return(@response_body)
|
122
|
-
@exception = Net::
|
122
|
+
@exception = Net::HTTPClientException.new("(exception) bad request", @response)
|
123
123
|
@inspector = described_class.new(@node_name, @exception, @config)
|
124
124
|
@inspector.add_explanation(@description)
|
125
125
|
end
|
@@ -135,7 +135,7 @@ shared_examples_for "an api error inspector" do
|
|
135
135
|
@response_body = "probably caused by a redirect to a get"
|
136
136
|
@response = Net::HTTPNotFound.new("1.1", "404", "(response) not found")
|
137
137
|
allow(@response).to receive(:body).and_return(@response_body)
|
138
|
-
@exception = Net::
|
138
|
+
@exception = Net::HTTPClientException.new("(exception) not found", @response)
|
139
139
|
@inspector = described_class.new(@node_name, @exception, @config)
|
140
140
|
@inspector.add_explanation(@description)
|
141
141
|
end
|
@@ -20,7 +20,7 @@ require "chef/exceptions"
|
|
20
20
|
|
21
21
|
shared_examples_for "version handling" do
|
22
22
|
let(:response_406) { OpenStruct.new(code: "406") }
|
23
|
-
let(:exception_406) { Net::
|
23
|
+
let(:exception_406) { Net::HTTPClientException.new("406 Not Acceptable", response_406) }
|
24
24
|
|
25
25
|
before do
|
26
26
|
allow(rest_v1).to receive(http_verb).and_raise(exception_406)
|
@@ -39,7 +39,7 @@ end # version handling
|
|
39
39
|
|
40
40
|
shared_examples_for "user and client reregister" do
|
41
41
|
let(:response_406) { OpenStruct.new(code: "406") }
|
42
|
-
let(:exception_406) { Net::
|
42
|
+
let(:exception_406) { Net::HTTPClientException.new("406 Not Acceptable", response_406) }
|
43
43
|
let(:generic_exception) { Exception.new }
|
44
44
|
let(:min_version) { "2" }
|
45
45
|
let(:max_version) { "5" }
|
@@ -61,7 +61,7 @@ describe Chef::ApiClient::Registration do
|
|
61
61
|
end
|
62
62
|
|
63
63
|
let(:response_409) { Net::HTTPConflict.new("1.1", "409", "Conflict") }
|
64
|
-
let(:exception_409) { Net::
|
64
|
+
let(:exception_409) { Net::HTTPClientException.new("409 conflict", response_409) }
|
65
65
|
|
66
66
|
let(:generated_private_key_pem) { IO.read(File.expand_path("ssl/private_key.pem", CHEF_SPEC_DATA)) }
|
67
67
|
let(:generated_private_key) { OpenSSL::PKey::RSA.new(generated_private_key_pem) }
|
@@ -280,13 +280,13 @@ describe Chef::ApiClient do
|
|
280
280
|
context "and the client does not exist on the server" do
|
281
281
|
before do
|
282
282
|
@a_404_response = Net::HTTPNotFound.new("404 not found and such", nil, nil)
|
283
|
-
@a_404_exception = Net::
|
283
|
+
@a_404_exception = Net::HTTPClientException.new("404 not found exception", @a_404_response)
|
284
284
|
|
285
285
|
expect(@http_client).to receive(:get).with("clients/lost-my-key").and_raise(@a_404_exception)
|
286
286
|
end
|
287
287
|
|
288
288
|
it "raises a 404 error" do
|
289
|
-
expect { Chef::ApiClient.reregister("lost-my-key") }.to raise_error(Net::
|
289
|
+
expect { Chef::ApiClient.reregister("lost-my-key") }.to raise_error(Net::HTTPClientException)
|
290
290
|
end
|
291
291
|
end
|
292
292
|
|
@@ -312,20 +312,20 @@ describe Chef::ApiClientV1 do
|
|
312
312
|
context "and the client does not exist on the server" do
|
313
313
|
before do
|
314
314
|
@a_404_response = Net::HTTPNotFound.new("404 not found and such", nil, nil)
|
315
|
-
@a_404_exception = Net::
|
315
|
+
@a_404_exception = Net::HTTPClientException.new("404 not found exception", @a_404_response)
|
316
316
|
|
317
317
|
expect(@http_client).to receive(:get).with("clients/lost-my-key").and_raise(@a_404_exception)
|
318
318
|
end
|
319
319
|
|
320
320
|
it "raises a 404 error" do
|
321
|
-
expect { Chef::ApiClientV1.reregister("lost-my-key") }.to raise_error(Net::
|
321
|
+
expect { Chef::ApiClientV1.reregister("lost-my-key") }.to raise_error(Net::HTTPClientException)
|
322
322
|
end
|
323
323
|
end
|
324
324
|
end
|
325
325
|
|
326
326
|
describe "Versioned API Interactions" do
|
327
327
|
let(:response_406) { OpenStruct.new(code: "406") }
|
328
|
-
let(:exception_406) { Net::
|
328
|
+
let(:exception_406) { Net::HTTPClientException.new("406 Not Acceptable", response_406) }
|
329
329
|
let(:payload) do
|
330
330
|
{
|
331
331
|
name: "some_name",
|
@@ -29,7 +29,7 @@ describe Chef::ChefFS::FileSystem::OperationFailedError do
|
|
29
29
|
response_body = '{"error":["Invalid key test in request body"]}'
|
30
30
|
allow(@response).to receive(:code).and_return("400")
|
31
31
|
allow(@response).to receive(:body).and_return(response_body)
|
32
|
-
exception = Net::
|
32
|
+
exception = Net::HTTPClientException.new("(exception) unauthorized", @response)
|
33
33
|
expect do
|
34
34
|
raise Chef::ChefFS::FileSystem::OperationFailedError.new(:write, self, exception), error_message
|
35
35
|
end.to raise_error(Chef::ChefFS::FileSystem::OperationFailedError, "#{error_message} cause: #{response_body}")
|
data/spec/unit/client_spec.rb
CHANGED
@@ -38,7 +38,7 @@ describe Chef::Client do
|
|
38
38
|
end
|
39
39
|
|
40
40
|
it "runs ohai with only the minimum required plugins" do
|
41
|
-
expected_filter = %w{fqdn machinename hostname platform platform_version ohai_time os os_version}
|
41
|
+
expected_filter = %w{fqdn machinename hostname platform platform_version ohai_time os os_version init_package}
|
42
42
|
expect(ohai_system).to receive(:all_plugins).with(expected_filter)
|
43
43
|
client.run_ohai
|
44
44
|
end
|
@@ -441,7 +441,7 @@ EOM
|
|
441
441
|
|
442
442
|
context "when required_recipe returns 404" do
|
443
443
|
let(:http_response) { Net::HTTPNotFound.new("1.1", "404", "Not Found") }
|
444
|
-
let(:http_exception) { Net::
|
444
|
+
let(:http_exception) { Net::HTTPClientException.new('404 "Not Found"', http_response) }
|
445
445
|
|
446
446
|
before(:each) do
|
447
447
|
expect(rest).to receive(:get).with("required_recipe").and_raise(http_exception)
|
@@ -298,7 +298,7 @@ describe Chef::DataBagItem do
|
|
298
298
|
|
299
299
|
it "should create if the item is not found" do
|
300
300
|
exception = double("404 error", code: "404")
|
301
|
-
expect(server).to receive(:put).and_raise(Net::
|
301
|
+
expect(server).to receive(:put).and_raise(Net::HTTPClientException.new("foo", exception))
|
302
302
|
expect(server).to receive(:post).with("data/books", data_bag_item)
|
303
303
|
data_bag_item.save
|
304
304
|
end
|
data/spec/unit/data_bag_spec.rb
CHANGED
@@ -89,7 +89,7 @@ describe Chef::DataBag do
|
|
89
89
|
|
90
90
|
it "should silently proceed when the data bag already exists" do
|
91
91
|
exception = double("409 error", code: "409")
|
92
|
-
expect(@rest).to receive(:post).and_raise(Net::
|
92
|
+
expect(@rest).to receive(:post).and_raise(Net::HTTPClientException.new("foo", exception))
|
93
93
|
@data_bag.save
|
94
94
|
end
|
95
95
|
|
@@ -35,7 +35,7 @@ describe Chef::Formatters::ErrorInspectors::CookbookResolveErrorInspector do
|
|
35
35
|
@response_body = %q({"error": [{"message": "gtfo"}])
|
36
36
|
@response = Net::HTTPForbidden.new("1.1", "403", "(response) forbidden")
|
37
37
|
allow(@response).to receive(:body).and_return(@response_body)
|
38
|
-
@exception = Net::
|
38
|
+
@exception = Net::HTTPClientException.new("(exception) forbidden", @response)
|
39
39
|
|
40
40
|
@inspector = Chef::Formatters::ErrorInspectors::CookbookResolveErrorInspector.new(@expanded_run_list, @exception)
|
41
41
|
@inspector.add_explanation(@description)
|
@@ -56,7 +56,7 @@ describe Chef::Formatters::ErrorInspectors::CookbookResolveErrorInspector do
|
|
56
56
|
@response_body = "{\"error\":[\"{\\\"non_existent_cookbooks\\\":[\\\"apache2\\\"],\\\"cookbooks_with_no_versions\\\":[\\\"users\\\"],\\\"message\\\":\\\"Run list contains invalid items: no such cookbook nope.\\\"}\"]}"
|
57
57
|
@response = Net::HTTPPreconditionFailed.new("1.1", "412", "(response) unauthorized")
|
58
58
|
allow(@response).to receive(:body).and_return(@response_body)
|
59
|
-
@exception = Net::
|
59
|
+
@exception = Net::HTTPClientException.new("(exception) precondition failed", @response)
|
60
60
|
|
61
61
|
@inspector = Chef::Formatters::ErrorInspectors::CookbookResolveErrorInspector.new(@expanded_run_list, @exception)
|
62
62
|
@inspector.add_explanation(@description)
|
@@ -84,7 +84,7 @@ describe Chef::Formatters::ErrorInspectors::CookbookResolveErrorInspector do
|
|
84
84
|
@response_body = "{\"error\":[{\"non_existent_cookbooks\":[],\"cookbooks_with_no_versions\":[],\"message\":\"unable to solve dependencies in alotted time.\"}]}"
|
85
85
|
@response = Net::HTTPPreconditionFailed.new("1.1", "412", "(response) unauthorized")
|
86
86
|
allow(@response).to receive(:body).and_return(@response_body)
|
87
|
-
@exception = Net::
|
87
|
+
@exception = Net::HTTPClientException.new("(exception) precondition failed", @response)
|
88
88
|
|
89
89
|
@inspector = Chef::Formatters::ErrorInspectors::CookbookResolveErrorInspector.new(@expanded_run_list, @exception)
|
90
90
|
@inspector.add_explanation(@description)
|
@@ -107,7 +107,7 @@ describe Chef::Formatters::ErrorInspectors::CookbookResolveErrorInspector do
|
|
107
107
|
@response_body = "{\"error\":[{\"non_existent_cookbooks\":[\"apache2\"],\"cookbooks_with_no_versions\":[\"users\"],\"message\":\"Run list contains invalid items: no such cookbook nope.\"}]}"
|
108
108
|
@response = Net::HTTPPreconditionFailed.new("1.1", "412", "(response) unauthorized")
|
109
109
|
allow(@response).to receive(:body).and_return(@response_body)
|
110
|
-
@exception = Net::
|
110
|
+
@exception = Net::HTTPClientException.new("(exception) precondition failed", @response)
|
111
111
|
|
112
112
|
@inspector = Chef::Formatters::ErrorInspectors::CookbookResolveErrorInspector.new(@expanded_run_list, @exception)
|
113
113
|
@inspector.add_explanation(@description)
|
@@ -55,7 +55,7 @@ describe Chef::Formatters::ErrorInspectors::RunListExpansionErrorInspector do
|
|
55
55
|
@response_body = "forbidden"
|
56
56
|
@response = Net::HTTPForbidden.new("1.1", "403", "(response) forbidden")
|
57
57
|
allow(@response).to receive(:body).and_return(@response_body)
|
58
|
-
@exception = Net::
|
58
|
+
@exception = Net::HTTPClientException.new("(exception) forbidden", @response)
|
59
59
|
@inspector = Chef::Formatters::ErrorInspectors::RunListExpansionErrorInspector.new(@node, @exception)
|
60
60
|
allow(@inspector).to receive(:config).and_return(node_name: "unit-test.example.com")
|
61
61
|
|
@@ -73,7 +73,7 @@ describe Chef::Formatters::ErrorInspectors::RunListExpansionErrorInspector do
|
|
73
73
|
@response_body = "check your key and node name"
|
74
74
|
@response = Net::HTTPUnauthorized.new("1.1", "401", "(response) unauthorized")
|
75
75
|
allow(@response).to receive(:body).and_return(@response_body)
|
76
|
-
@exception = Net::
|
76
|
+
@exception = Net::HTTPClientException.new("(exception) unauthorized", @response)
|
77
77
|
|
78
78
|
@inspector = Chef::Formatters::ErrorInspectors::RunListExpansionErrorInspector.new(@node, @exception)
|
79
79
|
allow(@inspector).to receive(:config).and_return(node_name: "unit-test.example.com",
|
@@ -42,7 +42,7 @@ describe Chef::Knife::Bootstrap::ClientBuilder do
|
|
42
42
|
|
43
43
|
context "#sanity_check!" do
|
44
44
|
let(:response_404) { OpenStruct.new(code: "404") }
|
45
|
-
let(:exception_404) { Net::
|
45
|
+
let(:exception_404) { Net::HTTPClientException.new("404 not found", response_404) }
|
46
46
|
|
47
47
|
context "in cases where the prompting fails" do
|
48
48
|
before do
|
@@ -139,15 +139,15 @@ describe Chef::Knife::CookbookDelete do
|
|
139
139
|
end
|
140
140
|
|
141
141
|
it "should raise if an error other than HTTP 404 is returned" do
|
142
|
-
exception = Net::
|
142
|
+
exception = Net::HTTPClientException.new("500 Internal Server Error", "500")
|
143
143
|
expect(@rest_mock).to receive(:get).and_raise(exception)
|
144
|
-
expect { @knife.available_versions }.to raise_error Net::
|
144
|
+
expect { @knife.available_versions }.to raise_error Net::HTTPClientException
|
145
145
|
end
|
146
146
|
|
147
147
|
describe "if the cookbook can't be found" do
|
148
148
|
before(:each) do
|
149
149
|
expect(@rest_mock).to receive(:get)
|
150
|
-
.and_raise(Net::
|
150
|
+
.and_raise(Net::HTTPClientException.new("404 Not Found", "404"))
|
151
151
|
end
|
152
152
|
|
153
153
|
it "should print an error" do
|