chef 12.4.0-universal-mingw32 → 12.4.1-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.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/lib/chef/api_client.rb +31 -129
  3. data/lib/chef/api_client_v1.rb +325 -0
  4. data/lib/chef/chef_class.rb +15 -7
  5. data/lib/chef/chef_fs/file_system/chef_server_root_dir.rb +2 -2
  6. data/lib/chef/dsl/resources.rb +6 -4
  7. data/lib/chef/exceptions.rb +2 -2
  8. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +2 -1
  9. data/lib/chef/knife/bootstrap/templates/chef-full.erb +4 -4
  10. data/lib/chef/knife/client_bulk_delete.rb +2 -2
  11. data/lib/chef/knife/client_create.rb +4 -4
  12. data/lib/chef/knife/client_delete.rb +3 -3
  13. data/lib/chef/knife/client_edit.rb +10 -2
  14. data/lib/chef/knife/client_list.rb +2 -2
  15. data/lib/chef/knife/client_reregister.rb +2 -2
  16. data/lib/chef/knife/client_show.rb +2 -2
  17. data/lib/chef/knife/osc_user_create.rb +3 -3
  18. data/lib/chef/knife/osc_user_delete.rb +2 -2
  19. data/lib/chef/knife/osc_user_edit.rb +3 -3
  20. data/lib/chef/knife/osc_user_list.rb +2 -2
  21. data/lib/chef/knife/osc_user_reregister.rb +2 -2
  22. data/lib/chef/knife/osc_user_show.rb +2 -2
  23. data/lib/chef/knife/user_create.rb +3 -3
  24. data/lib/chef/knife/user_delete.rb +4 -4
  25. data/lib/chef/knife/user_edit.rb +3 -3
  26. data/lib/chef/knife/user_list.rb +2 -2
  27. data/lib/chef/knife/user_reregister.rb +2 -2
  28. data/lib/chef/knife/user_show.rb +2 -2
  29. data/lib/chef/node_map.rb +14 -18
  30. data/lib/chef/platform/handler_map.rb +45 -0
  31. data/lib/chef/platform/priority_map.rb +19 -32
  32. data/lib/chef/platform/provider_handler_map.rb +29 -0
  33. data/lib/chef/platform/provider_mapping.rb +3 -2
  34. data/lib/chef/platform/resource_handler_map.rb +29 -0
  35. data/lib/chef/platform/resource_priority_map.rb +0 -6
  36. data/lib/chef/provider.rb +1 -1
  37. data/lib/chef/provider/dsc_resource.rb +2 -2
  38. data/lib/chef/provider/dsc_script.rb +1 -1
  39. data/lib/chef/provider/mount/aix.rb +1 -1
  40. data/lib/chef/provider/package.rb +0 -31
  41. data/lib/chef/provider/package/aix.rb +1 -0
  42. data/lib/chef/provider/package/apt.rb +1 -0
  43. data/lib/chef/provider/package/homebrew.rb +1 -0
  44. data/lib/chef/provider/package/ips.rb +1 -0
  45. data/lib/chef/provider/package/macports.rb +1 -0
  46. data/lib/chef/provider/package/openbsd.rb +1 -0
  47. data/lib/chef/provider/package/pacman.rb +1 -0
  48. data/lib/chef/provider/package/paludis.rb +1 -0
  49. data/lib/chef/provider/package/portage.rb +2 -0
  50. data/lib/chef/provider/package/smartos.rb +1 -0
  51. data/lib/chef/provider/package/solaris.rb +2 -0
  52. data/lib/chef/provider/package/yum.rb +1 -0
  53. data/lib/chef/provider/package/zypper.rb +1 -0
  54. data/lib/chef/provider/service.rb +4 -22
  55. data/lib/chef/provider/service/debian.rb +2 -0
  56. data/lib/chef/provider/service/insserv.rb +2 -0
  57. data/lib/chef/provider/service/invokercd.rb +2 -0
  58. data/lib/chef/provider/service/openbsd.rb +1 -1
  59. data/lib/chef/provider/service/redhat.rb +2 -0
  60. data/lib/chef/provider/service/upstart.rb +3 -0
  61. data/lib/chef/provider_resolver.rb +59 -53
  62. data/lib/chef/resource.rb +22 -73
  63. data/lib/chef/resource/dsc_script.rb +1 -1
  64. data/lib/chef/resource/ips_package.rb +1 -0
  65. data/lib/chef/resource/mount.rb +8 -0
  66. data/lib/chef/resource/openbsd_package.rb +0 -11
  67. data/lib/chef/resource/solaris_package.rb +1 -4
  68. data/lib/chef/resource_resolver.rb +54 -26
  69. data/lib/chef/run_list/versioned_recipe_list.rb +6 -5
  70. data/lib/chef/user.rb +52 -188
  71. data/lib/chef/user_v1.rb +335 -0
  72. data/lib/chef/version.rb +1 -1
  73. data/spec/data/trusted_certs/opscode.pem +53 -56
  74. data/spec/functional/provider/whyrun_safe_ruby_block_spec.rb +1 -1
  75. data/spec/functional/resource/package_spec.rb +0 -2
  76. data/spec/integration/recipes/recipe_dsl_spec.rb +661 -126
  77. data/spec/spec_helper.rb +19 -13
  78. data/spec/support/shared/unit/api_versioning.rb +2 -2
  79. data/spec/unit/api_client_spec.rb +22 -201
  80. data/spec/unit/api_client_v1_spec.rb +457 -0
  81. data/spec/unit/knife/client_bulk_delete_spec.rb +4 -4
  82. data/spec/unit/knife/client_create_spec.rb +1 -1
  83. data/spec/unit/knife/client_delete_spec.rb +3 -3
  84. data/spec/unit/knife/client_edit_spec.rb +14 -1
  85. data/spec/unit/knife/client_list_spec.rb +1 -1
  86. data/spec/unit/knife/client_reregister_spec.rb +2 -2
  87. data/spec/unit/knife/client_show_spec.rb +2 -2
  88. data/spec/unit/knife/osc_user_create_spec.rb +5 -5
  89. data/spec/unit/knife/osc_user_delete_spec.rb +1 -1
  90. data/spec/unit/knife/osc_user_edit_spec.rb +1 -1
  91. data/spec/unit/knife/osc_user_list_spec.rb +1 -1
  92. data/spec/unit/knife/osc_user_reregister_spec.rb +1 -1
  93. data/spec/unit/knife/osc_user_show_spec.rb +1 -1
  94. data/spec/unit/knife/user_create_spec.rb +1 -1
  95. data/spec/unit/knife/user_delete_spec.rb +2 -2
  96. data/spec/unit/knife/user_edit_spec.rb +2 -2
  97. data/spec/unit/knife/user_list_spec.rb +1 -1
  98. data/spec/unit/knife/user_reregister_spec.rb +1 -1
  99. data/spec/unit/knife/user_show_spec.rb +2 -2
  100. data/spec/unit/lwrp_spec.rb +146 -134
  101. data/spec/unit/node_map_spec.rb +12 -0
  102. data/spec/unit/platform_spec.rb +1 -1
  103. data/spec/unit/provider/deploy_spec.rb +1 -1
  104. data/spec/unit/provider/dsc_resource_spec.rb +3 -3
  105. data/spec/unit/provider/dsc_script_spec.rb +2 -2
  106. data/spec/unit/provider_resolver_spec.rb +170 -135
  107. data/spec/unit/recipe_spec.rb +3 -3
  108. data/spec/unit/resource/breakpoint_spec.rb +1 -1
  109. data/spec/unit/resource/cron_spec.rb +1 -1
  110. data/spec/unit/resource/directory_spec.rb +1 -1
  111. data/spec/unit/resource/dsc_resource_spec.rb +1 -1
  112. data/spec/unit/resource/dsc_script_spec.rb +2 -2
  113. data/spec/unit/resource/env_spec.rb +1 -1
  114. data/spec/unit/resource/erl_call_spec.rb +1 -1
  115. data/spec/unit/resource/file_spec.rb +1 -1
  116. data/spec/unit/resource/group_spec.rb +1 -1
  117. data/spec/unit/resource/link_spec.rb +1 -1
  118. data/spec/unit/resource/mdadm_spec.rb +1 -1
  119. data/spec/unit/resource/mount_spec.rb +1 -1
  120. data/spec/unit/resource/ohai_spec.rb +1 -1
  121. data/spec/unit/resource/registry_key_spec.rb +1 -1
  122. data/spec/unit/resource/route_spec.rb +1 -1
  123. data/spec/unit/resource/ruby_block_spec.rb +3 -3
  124. data/spec/unit/resource/user_spec.rb +1 -1
  125. data/spec/unit/resource/windows_service_spec.rb +1 -1
  126. data/spec/unit/resource_resolver_spec.rb +8 -4
  127. data/spec/unit/resource_spec.rb +89 -3
  128. data/spec/unit/run_list/versioned_recipe_list_spec.rb +115 -48
  129. data/spec/unit/user_spec.rb +97 -405
  130. data/spec/unit/user_v1_spec.rb +584 -0
  131. metadata +11 -6
  132. data/lib/chef/osc_user.rb +0 -194
  133. 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::ApiClient.new()
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::ApiClient.new()
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::ApiClient).to receive(:list).and_return(clients)
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::ApiClient).to receive(:list)
92
+ expect(Chef::ApiClientV1).to receive(:list)
93
93
  knife.run
94
94
  end
95
95
 
@@ -34,7 +34,7 @@ describe Chef::Knife::ClientCreate do
34
34
  end
35
35
 
36
36
  let(:client) do
37
- Chef::ApiClient.new
37
+ Chef::ApiClientV1.new
38
38
  end
39
39
 
40
40
  let(:knife) do
@@ -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::ApiClient, 'adam', 'client')
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::ApiClient.new
50
- expect(Chef::ApiClient).to receive(:load).and_return(@client)
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
- expect(@knife).to receive(:edit_object).with(Chef::ApiClient, 'adam')
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::ApiClient).to receive(:list)
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::ApiClient).to receive(:reregister).with('adam').and_return(@client_mock)
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::ApiClient).to receive(:reregister).with('adam').and_return(@client_mock)
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::ApiClient).to receive(:load).with('adam').and_return(@client_mock)
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::ApiClient).to receive(:load).with('adam').and_return(fake_client_contents)
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::OscUser.new
39
+ @user = Chef::User.new
40
40
  @user.name "a_user"
41
- @user_with_private_key = Chef::OscUser.new
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::OscUser).to receive(:new).and_return(@user)
46
- allow(Chef::OscUser).to receive(:from_hash).and_return(@user)
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::OscUser).to receive(:new).and_return(@user)
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
@@ -31,7 +31,7 @@ describe Chef::Knife::OscUserDelete do
31
31
  end
32
32
 
33
33
  it 'deletes the user' do
34
- expect(@knife).to receive(:delete_object).with(Chef::OscUser, 'my_user')
34
+ expect(@knife).to receive(:delete_object).with(Chef::User, 'my_user')
35
35
  @knife.run
36
36
  end
37
37
 
@@ -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::OscUser).to receive(:load).with("my_user").and_return(data)
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
@@ -30,7 +30,7 @@ describe Chef::Knife::OscUserList do
30
30
  end
31
31
 
32
32
  it 'lists the users' do
33
- expect(Chef::OscUser).to receive(:list)
33
+ expect(Chef::User).to receive(:list)
34
34
  expect(@knife).to receive(:format_list_for_display)
35
35
  @knife.run
36
36
  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::OscUser).to receive(:load).and_return(@user_mock)
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::OscUser).to receive(:load).with('my_user').and_return(@user_mock)
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::User.from_hash(knife.user.to_hash.merge({"private_key" => "some_private_key"})))
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::User).to receive(:load).and_return(user)
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::User, 'my_user')
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::User).to receive(:load).and_return({"username" => nil})
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::User).to receive(:load).with("my_user").and_return(data)
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
@@ -29,7 +29,7 @@ describe Chef::Knife::UserList do
29
29
  end
30
30
 
31
31
  it 'lists the users' do
32
- expect(Chef::User).to receive(:list)
32
+ expect(Chef::UserV1).to receive(:list)
33
33
  expect(knife).to receive(:format_list_for_display)
34
34
  knife.run
35
35
  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::User).to receive(:load).and_return(user_mock)
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::User).to receive(:load).with('my_user').and_return(user_mock)
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::User).to receive(:load).with('my_user').and_return(user_mock)
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
@@ -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::ProviderPriorityMap.instance.list_handlers(node, :lwrp_buck_passer)
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::ProviderPriorityMap.instance.list_handlers(node, :l_w_r_p_buck_passer)
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::ProviderPriorityMap.instance.list_handlers(node, :'l-w-r-p_buck_passer')
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::ProviderPriorityMap.instance.list_handlers(node, :l_w_r_p_buck_passer)
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
+