chef 12.4.0-universal-mingw32 → 12.4.1-universal-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/chef/api_client.rb +31 -129
- data/lib/chef/api_client_v1.rb +325 -0
- data/lib/chef/chef_class.rb +15 -7
- data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +2 -2
- data/lib/chef/dsl/resources.rb +6 -4
- data/lib/chef/exceptions.rb +2 -2
- data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +2 -1
- data/lib/chef/knife/bootstrap/templates/chef-full.erb +4 -4
- data/lib/chef/knife/client_bulk_delete.rb +2 -2
- data/lib/chef/knife/client_create.rb +4 -4
- data/lib/chef/knife/client_delete.rb +3 -3
- data/lib/chef/knife/client_edit.rb +10 -2
- data/lib/chef/knife/client_list.rb +2 -2
- data/lib/chef/knife/client_reregister.rb +2 -2
- data/lib/chef/knife/client_show.rb +2 -2
- data/lib/chef/knife/osc_user_create.rb +3 -3
- data/lib/chef/knife/osc_user_delete.rb +2 -2
- data/lib/chef/knife/osc_user_edit.rb +3 -3
- data/lib/chef/knife/osc_user_list.rb +2 -2
- data/lib/chef/knife/osc_user_reregister.rb +2 -2
- data/lib/chef/knife/osc_user_show.rb +2 -2
- data/lib/chef/knife/user_create.rb +3 -3
- data/lib/chef/knife/user_delete.rb +4 -4
- data/lib/chef/knife/user_edit.rb +3 -3
- data/lib/chef/knife/user_list.rb +2 -2
- data/lib/chef/knife/user_reregister.rb +2 -2
- data/lib/chef/knife/user_show.rb +2 -2
- data/lib/chef/node_map.rb +14 -18
- data/lib/chef/platform/handler_map.rb +45 -0
- data/lib/chef/platform/priority_map.rb +19 -32
- data/lib/chef/platform/provider_handler_map.rb +29 -0
- data/lib/chef/platform/provider_mapping.rb +3 -2
- data/lib/chef/platform/resource_handler_map.rb +29 -0
- data/lib/chef/platform/resource_priority_map.rb +0 -6
- data/lib/chef/provider.rb +1 -1
- data/lib/chef/provider/dsc_resource.rb +2 -2
- data/lib/chef/provider/dsc_script.rb +1 -1
- data/lib/chef/provider/mount/aix.rb +1 -1
- data/lib/chef/provider/package.rb +0 -31
- data/lib/chef/provider/package/aix.rb +1 -0
- data/lib/chef/provider/package/apt.rb +1 -0
- data/lib/chef/provider/package/homebrew.rb +1 -0
- data/lib/chef/provider/package/ips.rb +1 -0
- data/lib/chef/provider/package/macports.rb +1 -0
- data/lib/chef/provider/package/openbsd.rb +1 -0
- data/lib/chef/provider/package/pacman.rb +1 -0
- data/lib/chef/provider/package/paludis.rb +1 -0
- data/lib/chef/provider/package/portage.rb +2 -0
- data/lib/chef/provider/package/smartos.rb +1 -0
- data/lib/chef/provider/package/solaris.rb +2 -0
- data/lib/chef/provider/package/yum.rb +1 -0
- data/lib/chef/provider/package/zypper.rb +1 -0
- data/lib/chef/provider/service.rb +4 -22
- data/lib/chef/provider/service/debian.rb +2 -0
- data/lib/chef/provider/service/insserv.rb +2 -0
- data/lib/chef/provider/service/invokercd.rb +2 -0
- data/lib/chef/provider/service/openbsd.rb +1 -1
- data/lib/chef/provider/service/redhat.rb +2 -0
- data/lib/chef/provider/service/upstart.rb +3 -0
- data/lib/chef/provider_resolver.rb +59 -53
- data/lib/chef/resource.rb +22 -73
- data/lib/chef/resource/dsc_script.rb +1 -1
- data/lib/chef/resource/ips_package.rb +1 -0
- data/lib/chef/resource/mount.rb +8 -0
- data/lib/chef/resource/openbsd_package.rb +0 -11
- data/lib/chef/resource/solaris_package.rb +1 -4
- data/lib/chef/resource_resolver.rb +54 -26
- data/lib/chef/run_list/versioned_recipe_list.rb +6 -5
- data/lib/chef/user.rb +52 -188
- data/lib/chef/user_v1.rb +335 -0
- data/lib/chef/version.rb +1 -1
- data/spec/data/trusted_certs/opscode.pem +53 -56
- data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +1 -1
- data/spec/functional/resource/package_spec.rb +0 -2
- data/spec/integration/recipes/recipe_dsl_spec.rb +661 -126
- data/spec/spec_helper.rb +19 -13
- data/spec/support/shared/unit/api_versioning.rb +2 -2
- data/spec/unit/api_client_spec.rb +22 -201
- data/spec/unit/api_client_v1_spec.rb +457 -0
- data/spec/unit/knife/client_bulk_delete_spec.rb +4 -4
- data/spec/unit/knife/client_create_spec.rb +1 -1
- data/spec/unit/knife/client_delete_spec.rb +3 -3
- data/spec/unit/knife/client_edit_spec.rb +14 -1
- data/spec/unit/knife/client_list_spec.rb +1 -1
- data/spec/unit/knife/client_reregister_spec.rb +2 -2
- data/spec/unit/knife/client_show_spec.rb +2 -2
- data/spec/unit/knife/osc_user_create_spec.rb +5 -5
- data/spec/unit/knife/osc_user_delete_spec.rb +1 -1
- data/spec/unit/knife/osc_user_edit_spec.rb +1 -1
- data/spec/unit/knife/osc_user_list_spec.rb +1 -1
- data/spec/unit/knife/osc_user_reregister_spec.rb +1 -1
- data/spec/unit/knife/osc_user_show_spec.rb +1 -1
- data/spec/unit/knife/user_create_spec.rb +1 -1
- data/spec/unit/knife/user_delete_spec.rb +2 -2
- data/spec/unit/knife/user_edit_spec.rb +2 -2
- data/spec/unit/knife/user_list_spec.rb +1 -1
- data/spec/unit/knife/user_reregister_spec.rb +1 -1
- data/spec/unit/knife/user_show_spec.rb +2 -2
- data/spec/unit/lwrp_spec.rb +146 -134
- data/spec/unit/node_map_spec.rb +12 -0
- data/spec/unit/platform_spec.rb +1 -1
- data/spec/unit/provider/deploy_spec.rb +1 -1
- data/spec/unit/provider/dsc_resource_spec.rb +3 -3
- data/spec/unit/provider/dsc_script_spec.rb +2 -2
- data/spec/unit/provider_resolver_spec.rb +170 -135
- data/spec/unit/recipe_spec.rb +3 -3
- data/spec/unit/resource/breakpoint_spec.rb +1 -1
- data/spec/unit/resource/cron_spec.rb +1 -1
- data/spec/unit/resource/directory_spec.rb +1 -1
- data/spec/unit/resource/dsc_resource_spec.rb +1 -1
- data/spec/unit/resource/dsc_script_spec.rb +2 -2
- data/spec/unit/resource/env_spec.rb +1 -1
- data/spec/unit/resource/erl_call_spec.rb +1 -1
- data/spec/unit/resource/file_spec.rb +1 -1
- data/spec/unit/resource/group_spec.rb +1 -1
- data/spec/unit/resource/link_spec.rb +1 -1
- data/spec/unit/resource/mdadm_spec.rb +1 -1
- data/spec/unit/resource/mount_spec.rb +1 -1
- data/spec/unit/resource/ohai_spec.rb +1 -1
- data/spec/unit/resource/registry_key_spec.rb +1 -1
- data/spec/unit/resource/route_spec.rb +1 -1
- data/spec/unit/resource/ruby_block_spec.rb +3 -3
- data/spec/unit/resource/user_spec.rb +1 -1
- data/spec/unit/resource/windows_service_spec.rb +1 -1
- data/spec/unit/resource_resolver_spec.rb +8 -4
- data/spec/unit/resource_spec.rb +89 -3
- data/spec/unit/run_list/versioned_recipe_list_spec.rb +115 -48
- data/spec/unit/user_spec.rb +97 -405
- data/spec/unit/user_v1_spec.rb +584 -0
- metadata +11 -6
- data/lib/chef/osc_user.rb +0 -194
- data/spec/unit/osc_user_spec.rb +0 -276
@@ -45,7 +45,7 @@ describe Chef::Knife::ClientBulkDelete do
|
|
45
45
|
clients = Hash.new
|
46
46
|
|
47
47
|
nonvalidator_client_names.each do |client_name|
|
48
|
-
client = Chef::
|
48
|
+
client = Chef::ApiClientV1.new()
|
49
49
|
client.name(client_name)
|
50
50
|
allow(client).to receive(:destroy).and_return(true)
|
51
51
|
clients[client_name] = client
|
@@ -59,7 +59,7 @@ describe Chef::Knife::ClientBulkDelete do
|
|
59
59
|
clients = Hash.new
|
60
60
|
|
61
61
|
validator_client_names.each do |validator_client_name|
|
62
|
-
validator_client = Chef::
|
62
|
+
validator_client = Chef::ApiClientV1.new()
|
63
63
|
validator_client.name(validator_client_name)
|
64
64
|
allow(validator_client).to receive(:validator).and_return(true)
|
65
65
|
allow(validator_client).to receive(:destroy).and_return(true)
|
@@ -75,7 +75,7 @@ describe Chef::Knife::ClientBulkDelete do
|
|
75
75
|
}
|
76
76
|
|
77
77
|
before(:each) do
|
78
|
-
allow(Chef::
|
78
|
+
allow(Chef::ApiClientV1).to receive(:list).and_return(clients)
|
79
79
|
end
|
80
80
|
|
81
81
|
describe "run" do
|
@@ -89,7 +89,7 @@ describe Chef::Knife::ClientBulkDelete do
|
|
89
89
|
|
90
90
|
describe "with any clients" do
|
91
91
|
it "should get the list of the clients" do
|
92
|
-
expect(Chef::
|
92
|
+
expect(Chef::ApiClientV1).to receive(:list)
|
93
93
|
knife.run
|
94
94
|
end
|
95
95
|
|
@@ -30,7 +30,7 @@ describe Chef::Knife::ClientDelete do
|
|
30
30
|
|
31
31
|
describe 'run' do
|
32
32
|
it 'should delete the client' do
|
33
|
-
expect(@knife).to receive(:delete_object).with(Chef::
|
33
|
+
expect(@knife).to receive(:delete_object).with(Chef::ApiClientV1, 'adam', 'client')
|
34
34
|
@knife.run
|
35
35
|
end
|
36
36
|
|
@@ -46,8 +46,8 @@ describe Chef::Knife::ClientDelete do
|
|
46
46
|
before(:each) do
|
47
47
|
allow(Chef::Knife::UI).to receive(:confirm).and_return(true)
|
48
48
|
allow(@knife).to receive(:confirm).and_return(true)
|
49
|
-
@client = Chef::
|
50
|
-
expect(Chef::
|
49
|
+
@client = Chef::ApiClientV1.new
|
50
|
+
expect(Chef::ApiClientV1).to receive(:load).and_return(@client)
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'should delete non-validator client if --delete-validators is not set' do
|
@@ -17,16 +17,29 @@
|
|
17
17
|
#
|
18
18
|
|
19
19
|
require 'spec_helper'
|
20
|
+
require 'chef/api_client_v1'
|
20
21
|
|
21
22
|
describe Chef::Knife::ClientEdit do
|
22
23
|
before(:each) do
|
23
24
|
@knife = Chef::Knife::ClientEdit.new
|
24
25
|
@knife.name_args = [ 'adam' ]
|
26
|
+
@knife.config[:disable_editing] = true
|
25
27
|
end
|
26
28
|
|
27
29
|
describe 'run' do
|
30
|
+
let(:data) {
|
31
|
+
{
|
32
|
+
"name" => "adam",
|
33
|
+
"validator" => false,
|
34
|
+
"admin" => false,
|
35
|
+
"chef_type" => "client",
|
36
|
+
"create_key" => true
|
37
|
+
}
|
38
|
+
}
|
39
|
+
|
28
40
|
it 'should edit the client' do
|
29
|
-
|
41
|
+
allow(Chef::ApiClientV1).to receive(:load).with('adam').and_return(data)
|
42
|
+
expect(@knife).to receive(:edit_data).with(data).and_return(data)
|
30
43
|
@knife.run
|
31
44
|
end
|
32
45
|
|
@@ -26,7 +26,7 @@ describe Chef::Knife::ClientList do
|
|
26
26
|
|
27
27
|
describe 'run' do
|
28
28
|
it 'should list the clients' do
|
29
|
-
expect(Chef::
|
29
|
+
expect(Chef::ApiClientV1).to receive(:list)
|
30
30
|
expect(@knife).to receive(:format_list_for_display)
|
31
31
|
@knife.run
|
32
32
|
end
|
@@ -41,7 +41,7 @@ describe Chef::Knife::ClientReregister do
|
|
41
41
|
|
42
42
|
context 'when not configured for file output' do
|
43
43
|
it 'reregisters the client and prints the key' do
|
44
|
-
expect(Chef::
|
44
|
+
expect(Chef::ApiClientV1).to receive(:reregister).with('adam').and_return(@client_mock)
|
45
45
|
@knife.run
|
46
46
|
expect(@stdout.string).to match( /foo_key/ )
|
47
47
|
end
|
@@ -49,7 +49,7 @@ describe Chef::Knife::ClientReregister do
|
|
49
49
|
|
50
50
|
context 'when configured for file output' do
|
51
51
|
it 'should write the private key to a file' do
|
52
|
-
expect(Chef::
|
52
|
+
expect(Chef::ApiClientV1).to receive(:reregister).with('adam').and_return(@client_mock)
|
53
53
|
|
54
54
|
@knife.config[:file] = '/tmp/monkeypants'
|
55
55
|
filehandle = StringIO.new
|
@@ -27,7 +27,7 @@ describe Chef::Knife::ClientShow do
|
|
27
27
|
|
28
28
|
describe 'run' do
|
29
29
|
it 'should list the client' do
|
30
|
-
expect(Chef::
|
30
|
+
expect(Chef::ApiClientV1).to receive(:load).with('adam').and_return(@client_mock)
|
31
31
|
expect(@knife).to receive(:format_for_display).with(@client_mock)
|
32
32
|
@knife.run
|
33
33
|
end
|
@@ -37,7 +37,7 @@ describe Chef::Knife::ClientShow do
|
|
37
37
|
@stdout = StringIO.new
|
38
38
|
allow(@knife.ui).to receive(:stdout).and_return(@stdout)
|
39
39
|
fake_client_contents = {"foo"=>"bar", "baz"=>"qux"}
|
40
|
-
expect(Chef::
|
40
|
+
expect(Chef::ApiClientV1).to receive(:load).with('adam').and_return(fake_client_contents)
|
41
41
|
@knife.run
|
42
42
|
expect(@stdout.string).to eql("{\n \"foo\": \"bar\",\n \"baz\": \"qux\"\n}\n")
|
43
43
|
end
|
@@ -36,19 +36,19 @@ describe Chef::Knife::OscUserCreate do
|
|
36
36
|
|
37
37
|
@knife.name_args = [ 'a_user' ]
|
38
38
|
@knife.config[:user_password] = "foobar"
|
39
|
-
@user = Chef::
|
39
|
+
@user = Chef::User.new
|
40
40
|
@user.name "a_user"
|
41
|
-
@user_with_private_key = Chef::
|
41
|
+
@user_with_private_key = Chef::User.new
|
42
42
|
@user_with_private_key.name "a_user"
|
43
43
|
@user_with_private_key.private_key 'private_key'
|
44
44
|
allow(@user).to receive(:create).and_return(@user_with_private_key)
|
45
|
-
allow(Chef::
|
46
|
-
allow(Chef::
|
45
|
+
allow(Chef::User).to receive(:new).and_return(@user)
|
46
|
+
allow(Chef::User).to receive(:from_hash).and_return(@user)
|
47
47
|
allow(@knife).to receive(:edit_data).and_return(@user.to_hash)
|
48
48
|
end
|
49
49
|
|
50
50
|
it "creates a new user" do
|
51
|
-
expect(Chef::
|
51
|
+
expect(Chef::User).to receive(:new).and_return(@user)
|
52
52
|
expect(@user).to receive(:create)
|
53
53
|
@knife.run
|
54
54
|
expect(@stderr.string).to match /created user.+a_user/i
|
@@ -38,7 +38,7 @@ describe Chef::Knife::OscUserEdit do
|
|
38
38
|
|
39
39
|
it 'loads and edits the user' do
|
40
40
|
data = { :name => "my_user" }
|
41
|
-
allow(Chef::
|
41
|
+
allow(Chef::User).to receive(:load).with("my_user").and_return(data)
|
42
42
|
expect(@knife).to receive(:edit_data).with(data).and_return(data)
|
43
43
|
@knife.run
|
44
44
|
end
|
@@ -29,7 +29,7 @@ describe Chef::Knife::OscUserReregister do
|
|
29
29
|
@knife = Chef::Knife::OscUserReregister.new
|
30
30
|
@knife.name_args = [ 'a_user' ]
|
31
31
|
@user_mock = double('user_mock', :private_key => "private_key")
|
32
|
-
allow(Chef::
|
32
|
+
allow(Chef::User).to receive(:load).and_return(@user_mock)
|
33
33
|
@stdout = StringIO.new
|
34
34
|
allow(@knife.ui).to receive(:stdout).and_return(@stdout)
|
35
35
|
end
|
@@ -32,7 +32,7 @@ describe Chef::Knife::OscUserShow do
|
|
32
32
|
end
|
33
33
|
|
34
34
|
it 'loads and displays the user' do
|
35
|
-
expect(Chef::
|
35
|
+
expect(Chef::User).to receive(:load).with('my_user').and_return(@user_mock)
|
36
36
|
expect(@knife).to receive(:format_for_display).with(@user_mock)
|
37
37
|
@knife.run
|
38
38
|
end
|
@@ -186,7 +186,7 @@ describe Chef::Knife::UserCreate do
|
|
186
186
|
|
187
187
|
context "when a private_key is returned" do
|
188
188
|
before do
|
189
|
-
allow(knife).to receive(:create_user_from_hash).and_return(Chef::
|
189
|
+
allow(knife).to receive(:create_user_from_hash).and_return(Chef::UserV1.from_hash(knife.user.to_hash.merge({"private_key" => "some_private_key"})))
|
190
190
|
end
|
191
191
|
|
192
192
|
context "when --file is passed" do
|
@@ -26,7 +26,7 @@ describe Chef::Knife::UserDelete do
|
|
26
26
|
before(:each) do
|
27
27
|
Chef::Knife::UserDelete.load_deps
|
28
28
|
knife.name_args = [ 'my_user' ]
|
29
|
-
allow(Chef::
|
29
|
+
allow(Chef::UserV1).to receive(:load).and_return(user)
|
30
30
|
allow(user).to receive(:username).and_return('my_user')
|
31
31
|
allow(knife.ui).to receive(:stderr).and_return(stdout)
|
32
32
|
allow(knife.ui).to receive(:stdout).and_return(stdout)
|
@@ -51,7 +51,7 @@ describe Chef::Knife::UserDelete do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'deletes the user' do
|
54
|
-
#expect(knife).to receive(:delete_object).with(Chef::
|
54
|
+
#expect(knife).to receive(:delete_object).with(Chef::UserV1, 'my_user')
|
55
55
|
expect(knife).to receive(:delete_object).with('my_user')
|
56
56
|
knife.run
|
57
57
|
end
|
@@ -36,7 +36,7 @@ describe Chef::Knife::UserEdit do
|
|
36
36
|
context "when the username field is not supported by the server" do
|
37
37
|
before do
|
38
38
|
allow(knife).to receive(:run_osc_11_user_edit).and_raise(SystemExit)
|
39
|
-
allow(Chef::
|
39
|
+
allow(Chef::UserV1).to receive(:load).and_return({"username" => nil})
|
40
40
|
end
|
41
41
|
|
42
42
|
it "displays the osc warning" do
|
@@ -52,7 +52,7 @@ describe Chef::Knife::UserEdit do
|
|
52
52
|
|
53
53
|
it 'loads and edits the user' do
|
54
54
|
data = { "username" => "my_user" }
|
55
|
-
allow(Chef::
|
55
|
+
allow(Chef::UserV1).to receive(:load).with("my_user").and_return(data)
|
56
56
|
expect(knife).to receive(:edit_data).with(data).and_return(data)
|
57
57
|
knife.run
|
58
58
|
end
|
@@ -26,7 +26,7 @@ describe Chef::Knife::UserReregister do
|
|
26
26
|
before do
|
27
27
|
Chef::Knife::UserReregister.load_deps
|
28
28
|
knife.name_args = [ 'a_user' ]
|
29
|
-
allow(Chef::
|
29
|
+
allow(Chef::UserV1).to receive(:load).and_return(user_mock)
|
30
30
|
allow(knife.ui).to receive(:stdout).and_return(stdout)
|
31
31
|
allow(knife.ui).to receive(:stderr).and_return(stdout)
|
32
32
|
allow(user_mock).to receive(:username).and_return('a_user')
|
@@ -35,7 +35,7 @@ describe Chef::Knife::UserShow do
|
|
35
35
|
context "when the username field is not supported by the server" do
|
36
36
|
before do
|
37
37
|
allow(knife).to receive(:run_osc_11_user_show).and_raise(SystemExit)
|
38
|
-
allow(Chef::
|
38
|
+
allow(Chef::UserV1).to receive(:load).with('my_user').and_return(user_mock)
|
39
39
|
allow(user_mock).to receive(:username).and_return(nil)
|
40
40
|
end
|
41
41
|
|
@@ -51,7 +51,7 @@ describe Chef::Knife::UserShow do
|
|
51
51
|
end
|
52
52
|
|
53
53
|
it 'loads and displays the user' do
|
54
|
-
expect(Chef::
|
54
|
+
expect(Chef::UserV1).to receive(:load).with('my_user').and_return(user_mock)
|
55
55
|
expect(knife).to receive(:format_for_display).with(user_mock)
|
56
56
|
knife.run
|
57
57
|
end
|
data/spec/unit/lwrp_spec.rb
CHANGED
@@ -163,7 +163,7 @@ describe "LWRP" do
|
|
163
163
|
it "Should load the old content, and not the new" do
|
164
164
|
resource = Chef::ResourceResolver.resolve(:lwrp_foo)
|
165
165
|
expect(resource).to eq @original_resource
|
166
|
-
expect(resource.default_action).to eq(:pass_buck)
|
166
|
+
expect(resource.default_action).to eq([:pass_buck])
|
167
167
|
expect(Chef.method_defined?(:method_created_by_override_lwrp_foo)).to be_falsey
|
168
168
|
end
|
169
169
|
end
|
@@ -177,10 +177,6 @@ describe "LWRP" do
|
|
177
177
|
end
|
178
178
|
end
|
179
179
|
|
180
|
-
it "should load the resource into a properly-named class and emit a warning when it is initialized" do
|
181
|
-
expect { Chef::Resource::LwrpFoo.new('hi') }.to raise_error(Chef::Exceptions::DeprecatedFeatureError)
|
182
|
-
end
|
183
|
-
|
184
180
|
it "should be resolvable with Chef::ResourceResolver.resolve(:lwrp_foo)" do
|
185
181
|
expect(Chef::ResourceResolver.resolve(:lwrp_foo, node: Chef::Node.new)).to eq(get_lwrp(:lwrp_foo))
|
186
182
|
end
|
@@ -202,7 +198,7 @@ describe "LWRP" do
|
|
202
198
|
end
|
203
199
|
|
204
200
|
it "should set the specified action as the default action" do
|
205
|
-
expect(get_lwrp(:lwrp_foo).new("blah").action).to eq(:pass_buck)
|
201
|
+
expect(get_lwrp(:lwrp_foo).new("blah").action).to eq([:pass_buck])
|
206
202
|
end
|
207
203
|
|
208
204
|
it "should create a method for each attribute" do
|
@@ -228,127 +224,6 @@ describe "LWRP" do
|
|
228
224
|
expect(cls.node[:penguin_name]).to eql("jackass")
|
229
225
|
end
|
230
226
|
|
231
|
-
context "resource class created" do
|
232
|
-
before do
|
233
|
-
@old_treat_deprecation_warnings_as_errors = Chef::Config[:treat_deprecation_warnings_as_errors]
|
234
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
235
|
-
end
|
236
|
-
after do
|
237
|
-
Chef::Config[:treat_deprecation_warnings_as_errors] = @old_treat_deprecation_warnings_as_errors
|
238
|
-
end
|
239
|
-
|
240
|
-
it "should load the resource into a properly-named class" do
|
241
|
-
expect(Chef::Resource::LwrpFoo).to be_kind_of(Class)
|
242
|
-
expect(Chef::Resource::LwrpFoo <= Chef::Resource::LWRPBase).to be_truthy
|
243
|
-
end
|
244
|
-
|
245
|
-
it "get_lwrp(:lwrp_foo).new is a Chef::Resource::LwrpFoo" do
|
246
|
-
lwrp = get_lwrp(:lwrp_foo).new('hi')
|
247
|
-
expect(lwrp.kind_of?(Chef::Resource::LwrpFoo)).to be_truthy
|
248
|
-
expect(lwrp.is_a?(Chef::Resource::LwrpFoo)).to be_truthy
|
249
|
-
expect(get_lwrp(:lwrp_foo) === lwrp).to be_truthy
|
250
|
-
expect(Chef::Resource::LwrpFoo === lwrp).to be_truthy
|
251
|
-
end
|
252
|
-
|
253
|
-
it "Chef::Resource::LwrpFoo.new is a get_lwrp(:lwrp_foo)" do
|
254
|
-
lwrp = Chef::Resource::LwrpFoo.new('hi')
|
255
|
-
expect(lwrp.kind_of?(get_lwrp(:lwrp_foo))).to be_truthy
|
256
|
-
expect(lwrp.is_a?(get_lwrp(:lwrp_foo))).to be_truthy
|
257
|
-
expect(get_lwrp(:lwrp_foo) === lwrp).to be_truthy
|
258
|
-
expect(Chef::Resource::LwrpFoo === lwrp).to be_truthy
|
259
|
-
end
|
260
|
-
|
261
|
-
it "works even if LwrpFoo exists in the top level" do
|
262
|
-
module ::LwrpFoo
|
263
|
-
end
|
264
|
-
expect(Chef::Resource::LwrpFoo).not_to eq(::LwrpFoo)
|
265
|
-
end
|
266
|
-
|
267
|
-
context "with a subclass of get_lwrp(:lwrp_foo)" do
|
268
|
-
let(:subclass) do
|
269
|
-
Class.new(get_lwrp(:lwrp_foo))
|
270
|
-
end
|
271
|
-
|
272
|
-
it "subclass.new is a subclass" do
|
273
|
-
lwrp = subclass.new('hi')
|
274
|
-
expect(lwrp.kind_of?(subclass)).to be_truthy
|
275
|
-
expect(lwrp.is_a?(subclass)).to be_truthy
|
276
|
-
expect(subclass === lwrp).to be_truthy
|
277
|
-
expect(lwrp.class === subclass)
|
278
|
-
end
|
279
|
-
it "subclass.new is a Chef::Resource::LwrpFoo" do
|
280
|
-
lwrp = subclass.new('hi')
|
281
|
-
expect(lwrp.kind_of?(Chef::Resource::LwrpFoo)).to be_truthy
|
282
|
-
expect(lwrp.is_a?(Chef::Resource::LwrpFoo)).to be_truthy
|
283
|
-
expect(Chef::Resource::LwrpFoo === lwrp).to be_truthy
|
284
|
-
expect(lwrp.class === Chef::Resource::LwrpFoo)
|
285
|
-
end
|
286
|
-
it "subclass.new is a get_lwrp(:lwrp_foo)" do
|
287
|
-
lwrp = subclass.new('hi')
|
288
|
-
expect(lwrp.kind_of?(get_lwrp(:lwrp_foo))).to be_truthy
|
289
|
-
expect(lwrp.is_a?(get_lwrp(:lwrp_foo))).to be_truthy
|
290
|
-
expect(get_lwrp(:lwrp_foo) === lwrp).to be_truthy
|
291
|
-
expect(lwrp.class === get_lwrp(:lwrp_foo))
|
292
|
-
end
|
293
|
-
it "Chef::Resource::LwrpFoo.new is *not* a subclass" do
|
294
|
-
lwrp = Chef::Resource::LwrpFoo.new('hi')
|
295
|
-
expect(lwrp.kind_of?(subclass)).to be_falsey
|
296
|
-
expect(lwrp.is_a?(subclass)).to be_falsey
|
297
|
-
expect(subclass === lwrp.class).to be_falsey
|
298
|
-
expect(subclass === Chef::Resource::LwrpFoo).to be_falsey
|
299
|
-
end
|
300
|
-
it "get_lwrp(:lwrp_foo).new is *not* a subclass" do
|
301
|
-
lwrp = get_lwrp(:lwrp_foo).new('hi')
|
302
|
-
expect(lwrp.kind_of?(subclass)).to be_falsey
|
303
|
-
expect(lwrp.is_a?(subclass)).to be_falsey
|
304
|
-
expect(subclass === lwrp.class).to be_falsey
|
305
|
-
expect(subclass === get_lwrp(:lwrp_foo)).to be_falsey
|
306
|
-
end
|
307
|
-
end
|
308
|
-
|
309
|
-
context "with a subclass of Chef::Resource::LwrpFoo" do
|
310
|
-
let(:subclass) do
|
311
|
-
Class.new(Chef::Resource::LwrpFoo)
|
312
|
-
end
|
313
|
-
|
314
|
-
it "subclass.new is a subclass" do
|
315
|
-
lwrp = subclass.new('hi')
|
316
|
-
expect(lwrp.kind_of?(subclass)).to be_truthy
|
317
|
-
expect(lwrp.is_a?(subclass)).to be_truthy
|
318
|
-
expect(subclass === lwrp).to be_truthy
|
319
|
-
expect(lwrp.class === subclass)
|
320
|
-
end
|
321
|
-
it "subclass.new is a Chef::Resource::LwrpFoo" do
|
322
|
-
lwrp = subclass.new('hi')
|
323
|
-
expect(lwrp.kind_of?(Chef::Resource::LwrpFoo)).to be_truthy
|
324
|
-
expect(lwrp.is_a?(Chef::Resource::LwrpFoo)).to be_truthy
|
325
|
-
expect(Chef::Resource::LwrpFoo === lwrp).to be_truthy
|
326
|
-
expect(lwrp.class === Chef::Resource::LwrpFoo)
|
327
|
-
end
|
328
|
-
it "subclass.new is a get_lwrp(:lwrp_foo)" do
|
329
|
-
lwrp = subclass.new('hi')
|
330
|
-
expect(lwrp.kind_of?(get_lwrp(:lwrp_foo))).to be_truthy
|
331
|
-
expect(lwrp.is_a?(get_lwrp(:lwrp_foo))).to be_truthy
|
332
|
-
expect(get_lwrp(:lwrp_foo) === lwrp).to be_truthy
|
333
|
-
expect(lwrp.class === get_lwrp(:lwrp_foo))
|
334
|
-
end
|
335
|
-
it "Chef::Resource::LwrpFoo.new is *not* a subclass" do
|
336
|
-
lwrp = Chef::Resource::LwrpFoo.new('hi')
|
337
|
-
expect(lwrp.kind_of?(subclass)).to be_falsey
|
338
|
-
expect(lwrp.is_a?(subclass)).to be_falsey
|
339
|
-
expect(subclass === lwrp.class).to be_falsey
|
340
|
-
expect(subclass === Chef::Resource::LwrpFoo).to be_falsey
|
341
|
-
end
|
342
|
-
it "get_lwrp(:lwrp_foo).new is *not* a subclass" do
|
343
|
-
lwrp = get_lwrp(:lwrp_foo).new('hi')
|
344
|
-
expect(lwrp.kind_of?(subclass)).to be_falsey
|
345
|
-
expect(lwrp.is_a?(subclass)).to be_falsey
|
346
|
-
expect(subclass === lwrp.class).to be_falsey
|
347
|
-
expect(subclass === get_lwrp(:lwrp_foo)).to be_falsey
|
348
|
-
end
|
349
|
-
end
|
350
|
-
end
|
351
|
-
|
352
227
|
context "resource_name" do
|
353
228
|
let(:klass) { Class.new(Chef::Resource::LWRPBase) }
|
354
229
|
|
@@ -419,7 +294,7 @@ describe "LWRP" do
|
|
419
294
|
end
|
420
295
|
|
421
296
|
it "delegates #default_action to the parent" do
|
422
|
-
expect(child.default_action).to eq(:eat)
|
297
|
+
expect(child.default_action).to eq([:eat])
|
423
298
|
end
|
424
299
|
end
|
425
300
|
|
@@ -436,7 +311,7 @@ describe "LWRP" do
|
|
436
311
|
end
|
437
312
|
|
438
313
|
it "does not delegate #default_action to the parent" do
|
439
|
-
expect(child.default_action).to eq(:dont_eat)
|
314
|
+
expect(child.default_action).to eq([:dont_eat])
|
440
315
|
end
|
441
316
|
end
|
442
317
|
|
@@ -564,7 +439,7 @@ describe "LWRP" do
|
|
564
439
|
end
|
565
440
|
|
566
441
|
it "sets itself as a provider for a resource of the same name" do
|
567
|
-
found_providers = Chef::Platform::
|
442
|
+
found_providers = Chef::Platform::ProviderHandlerMap.instance.list(node, :lwrp_buck_passer)
|
568
443
|
# we bypass the per-file loading to get the file to load each time,
|
569
444
|
# which creates the LWRP class repeatedly. New things get prepended to
|
570
445
|
# the list of providers.
|
@@ -576,7 +451,7 @@ describe "LWRP" do
|
|
576
451
|
let(:lwrp_cookbok_name) { "l_w_r_p" }
|
577
452
|
|
578
453
|
it "sets itself as a provider for a resource of the same name" do
|
579
|
-
found_providers = Chef::Platform::
|
454
|
+
found_providers = Chef::Platform::ProviderHandlerMap.instance.list(node, :l_w_r_p_buck_passer)
|
580
455
|
expect(found_providers.size).to eq(1)
|
581
456
|
expect(found_providers.last).to eq(get_lwrp_provider(:l_w_r_p_buck_passer))
|
582
457
|
end
|
@@ -587,10 +462,10 @@ describe "LWRP" do
|
|
587
462
|
let(:lwrp_cookbok_name) { "l-w-r-p" }
|
588
463
|
|
589
464
|
it "sets itself as a provider for a resource of the same name" do
|
590
|
-
incorrect_providers = Chef::Platform::
|
465
|
+
incorrect_providers = Chef::Platform::ProviderHandlerMap.instance.list(node, :'l-w-r-p_buck_passer')
|
591
466
|
expect(incorrect_providers).to eq([])
|
592
467
|
|
593
|
-
found_providers = Chef::Platform::
|
468
|
+
found_providers = Chef::Platform::ProviderHandlerMap.instance.list(node, :l_w_r_p_buck_passer)
|
594
469
|
expect(found_providers.first).to eq(get_lwrp_provider(:l_w_r_p_buck_passer))
|
595
470
|
end
|
596
471
|
end
|
@@ -704,7 +579,144 @@ describe "LWRP" do
|
|
704
579
|
end
|
705
580
|
|
706
581
|
end
|
707
|
-
|
708
582
|
end
|
709
583
|
|
584
|
+
context "resource class created" do
|
585
|
+
before(:context) do
|
586
|
+
@tmpdir = Dir.mktmpdir("lwrp_test")
|
587
|
+
resource_path = File.join(@tmpdir, "once.rb")
|
588
|
+
IO.write(resource_path, "default_action :create")
|
589
|
+
|
590
|
+
@old_treat_deprecation_warnings_as_errors = Chef::Config[:treat_deprecation_warnings_as_errors]
|
591
|
+
Chef::Config[:treat_deprecation_warnings_as_errors] = false
|
592
|
+
Chef::Resource::LWRPBase.build_from_file("lwrp", resource_path, nil)
|
593
|
+
end
|
594
|
+
|
595
|
+
after(:context) do
|
596
|
+
FileUtils.remove_entry @tmpdir
|
597
|
+
Chef::Config[:treat_deprecation_warnings_as_errors] = @old_treat_deprecation_warnings_as_errors
|
598
|
+
end
|
599
|
+
|
600
|
+
it "should load the resource into a properly-named class" do
|
601
|
+
expect(Chef::Resource::LwrpOnce).to be_kind_of(Class)
|
602
|
+
expect(Chef::Resource::LwrpOnce <= Chef::Resource::LWRPBase).to be_truthy
|
603
|
+
end
|
604
|
+
|
605
|
+
it "get_lwrp(:lwrp_once).new is a Chef::Resource::LwrpOnce" do
|
606
|
+
lwrp = get_lwrp(:lwrp_once).new('hi')
|
607
|
+
expect(lwrp.kind_of?(Chef::Resource::LwrpOnce)).to be_truthy
|
608
|
+
expect(lwrp.is_a?(Chef::Resource::LwrpOnce)).to be_truthy
|
609
|
+
expect(get_lwrp(:lwrp_once) === lwrp).to be_truthy
|
610
|
+
expect(Chef::Resource::LwrpOnce === lwrp).to be_truthy
|
611
|
+
end
|
612
|
+
|
613
|
+
it "Chef::Resource::LwrpOnce.new is a get_lwrp(:lwrp_once)" do
|
614
|
+
lwrp = Chef::Resource::LwrpOnce.new('hi')
|
615
|
+
expect(lwrp.kind_of?(get_lwrp(:lwrp_once))).to be_truthy
|
616
|
+
expect(lwrp.is_a?(get_lwrp(:lwrp_once))).to be_truthy
|
617
|
+
expect(get_lwrp(:lwrp_once) === lwrp).to be_truthy
|
618
|
+
expect(Chef::Resource::LwrpOnce === lwrp).to be_truthy
|
619
|
+
end
|
620
|
+
|
621
|
+
it "works even if LwrpOnce exists in the top level" do
|
622
|
+
module ::LwrpOnce
|
623
|
+
end
|
624
|
+
expect(Chef::Resource::LwrpOnce).not_to eq(::LwrpOnce)
|
625
|
+
end
|
626
|
+
|
627
|
+
it "allows monkey patching of the lwrp through Chef::Resource" do
|
628
|
+
monkey = Module.new do
|
629
|
+
def issue_3607
|
630
|
+
end
|
631
|
+
end
|
632
|
+
Chef::Resource::LwrpOnce.send(:include, monkey)
|
633
|
+
expect { get_lwrp(:lwrp_once).new("blah").issue_3607 }.not_to raise_error
|
634
|
+
end
|
635
|
+
|
636
|
+
context "with a subclass of get_lwrp(:lwrp_once)" do
|
637
|
+
let(:subclass) do
|
638
|
+
Class.new(get_lwrp(:lwrp_once))
|
639
|
+
end
|
640
|
+
|
641
|
+
it "subclass.new is a subclass" do
|
642
|
+
lwrp = subclass.new('hi')
|
643
|
+
expect(lwrp.kind_of?(subclass)).to be_truthy
|
644
|
+
expect(lwrp.is_a?(subclass)).to be_truthy
|
645
|
+
expect(subclass === lwrp).to be_truthy
|
646
|
+
expect(lwrp.class === subclass)
|
647
|
+
end
|
648
|
+
it "subclass.new is a Chef::Resource::LwrpOnce" do
|
649
|
+
lwrp = subclass.new('hi')
|
650
|
+
expect(lwrp.kind_of?(Chef::Resource::LwrpOnce)).to be_truthy
|
651
|
+
expect(lwrp.is_a?(Chef::Resource::LwrpOnce)).to be_truthy
|
652
|
+
expect(Chef::Resource::LwrpOnce === lwrp).to be_truthy
|
653
|
+
expect(lwrp.class === Chef::Resource::LwrpOnce)
|
654
|
+
end
|
655
|
+
it "subclass.new is a get_lwrp(:lwrp_once)" do
|
656
|
+
lwrp = subclass.new('hi')
|
657
|
+
expect(lwrp.kind_of?(get_lwrp(:lwrp_once))).to be_truthy
|
658
|
+
expect(lwrp.is_a?(get_lwrp(:lwrp_once))).to be_truthy
|
659
|
+
expect(get_lwrp(:lwrp_once) === lwrp).to be_truthy
|
660
|
+
expect(lwrp.class === get_lwrp(:lwrp_once))
|
661
|
+
end
|
662
|
+
it "Chef::Resource::LwrpOnce.new is *not* a subclass" do
|
663
|
+
lwrp = Chef::Resource::LwrpOnce.new('hi')
|
664
|
+
expect(lwrp.kind_of?(subclass)).to be_falsey
|
665
|
+
expect(lwrp.is_a?(subclass)).to be_falsey
|
666
|
+
expect(subclass === lwrp.class).to be_falsey
|
667
|
+
expect(subclass === Chef::Resource::LwrpOnce).to be_falsey
|
668
|
+
end
|
669
|
+
it "get_lwrp(:lwrp_once).new is *not* a subclass" do
|
670
|
+
lwrp = get_lwrp(:lwrp_once).new('hi')
|
671
|
+
expect(lwrp.kind_of?(subclass)).to be_falsey
|
672
|
+
expect(lwrp.is_a?(subclass)).to be_falsey
|
673
|
+
expect(subclass === lwrp.class).to be_falsey
|
674
|
+
expect(subclass === get_lwrp(:lwrp_once)).to be_falsey
|
675
|
+
end
|
676
|
+
end
|
677
|
+
|
678
|
+
context "with a subclass of Chef::Resource::LwrpOnce" do
|
679
|
+
let(:subclass) do
|
680
|
+
Class.new(Chef::Resource::LwrpOnce)
|
681
|
+
end
|
682
|
+
|
683
|
+
it "subclass.new is a subclass" do
|
684
|
+
lwrp = subclass.new('hi')
|
685
|
+
expect(lwrp.kind_of?(subclass)).to be_truthy
|
686
|
+
expect(lwrp.is_a?(subclass)).to be_truthy
|
687
|
+
expect(subclass === lwrp).to be_truthy
|
688
|
+
expect(lwrp.class === subclass)
|
689
|
+
end
|
690
|
+
it "subclass.new is a Chef::Resource::LwrpOnce" do
|
691
|
+
lwrp = subclass.new('hi')
|
692
|
+
expect(lwrp.kind_of?(Chef::Resource::LwrpOnce)).to be_truthy
|
693
|
+
expect(lwrp.is_a?(Chef::Resource::LwrpOnce)).to be_truthy
|
694
|
+
expect(Chef::Resource::LwrpOnce === lwrp).to be_truthy
|
695
|
+
expect(lwrp.class === Chef::Resource::LwrpOnce)
|
696
|
+
end
|
697
|
+
it "subclass.new is a get_lwrp(:lwrp_once)" do
|
698
|
+
lwrp = subclass.new('hi')
|
699
|
+
expect(lwrp.kind_of?(get_lwrp(:lwrp_once))).to be_truthy
|
700
|
+
expect(lwrp.is_a?(get_lwrp(:lwrp_once))).to be_truthy
|
701
|
+
expect(get_lwrp(:lwrp_once) === lwrp).to be_truthy
|
702
|
+
expect(lwrp.class === get_lwrp(:lwrp_once))
|
703
|
+
end
|
704
|
+
it "Chef::Resource::LwrpOnce.new is *not* a subclass" do
|
705
|
+
lwrp = Chef::Resource::LwrpOnce.new('hi')
|
706
|
+
expect(lwrp.kind_of?(subclass)).to be_falsey
|
707
|
+
expect(lwrp.is_a?(subclass)).to be_falsey
|
708
|
+
expect(subclass === lwrp.class).to be_falsey
|
709
|
+
expect(subclass === Chef::Resource::LwrpOnce).to be_falsey
|
710
|
+
end
|
711
|
+
it "get_lwrp(:lwrp_once).new is *not* a subclass" do
|
712
|
+
lwrp = get_lwrp(:lwrp_once).new('hi')
|
713
|
+
expect(lwrp.kind_of?(subclass)).to be_falsey
|
714
|
+
expect(lwrp.is_a?(subclass)).to be_falsey
|
715
|
+
expect(subclass === lwrp.class).to be_falsey
|
716
|
+
expect(subclass === get_lwrp(:lwrp_once)).to be_falsey
|
717
|
+
end
|
718
|
+
end
|
719
|
+
end
|
710
720
|
end
|
721
|
+
|
722
|
+
|