chef 14.8.12-universal-mingw32 → 14.9.13-universal-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- 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
|