cheffish 4.0.0 → 4.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +8 -8
  3. data/Rakefile +24 -12
  4. data/cheffish.gemspec +15 -15
  5. data/lib/chef/resource/chef_acl.rb +63 -63
  6. data/lib/chef/resource/chef_client.rb +9 -9
  7. data/lib/chef/resource/chef_container.rb +9 -9
  8. data/lib/chef/resource/chef_data_bag.rb +9 -9
  9. data/lib/chef/resource/chef_data_bag_item.rb +27 -27
  10. data/lib/chef/resource/chef_environment.rb +21 -22
  11. data/lib/chef/resource/chef_group.rb +19 -19
  12. data/lib/chef/resource/chef_mirror.rb +32 -17
  13. data/lib/chef/resource/chef_node.rb +14 -14
  14. data/lib/chef/resource/chef_organization.rb +29 -30
  15. data/lib/chef/resource/chef_resolved_cookbooks.rb +7 -7
  16. data/lib/chef/resource/chef_role.rb +25 -22
  17. data/lib/chef/resource/chef_user.rb +13 -14
  18. data/lib/chef/resource/private_key.rb +24 -25
  19. data/lib/chef/resource/public_key.rb +6 -7
  20. data/lib/cheffish.rb +17 -17
  21. data/lib/cheffish/array_property.rb +2 -2
  22. data/lib/cheffish/base_properties.rb +3 -3
  23. data/lib/cheffish/base_resource.rb +8 -8
  24. data/lib/cheffish/basic_chef_client.rb +17 -17
  25. data/lib/cheffish/chef_actor_base.rb +8 -8
  26. data/lib/cheffish/chef_run.rb +7 -2
  27. data/lib/cheffish/chef_run_data.rb +2 -2
  28. data/lib/cheffish/chef_run_listener.rb +1 -1
  29. data/lib/cheffish/key_formatter.rb +16 -18
  30. data/lib/cheffish/merged_config.rb +5 -3
  31. data/lib/cheffish/node_properties.rb +11 -7
  32. data/lib/cheffish/recipe_dsl.rb +33 -34
  33. data/lib/cheffish/rspec.rb +3 -3
  34. data/lib/cheffish/rspec/chef_run_support.rb +13 -13
  35. data/lib/cheffish/rspec/matchers.rb +4 -4
  36. data/lib/cheffish/rspec/matchers/be_idempotent.rb +3 -3
  37. data/lib/cheffish/rspec/matchers/emit_no_warnings_or_errors.rb +3 -3
  38. data/lib/cheffish/rspec/matchers/have_updated.rb +3 -3
  39. data/lib/cheffish/rspec/recipe_run_wrapper.rb +8 -7
  40. data/lib/cheffish/rspec/repository_support.rb +6 -6
  41. data/lib/cheffish/server_api.rb +11 -11
  42. data/lib/cheffish/version.rb +1 -1
  43. data/spec/functional/fingerprint_spec.rb +12 -12
  44. data/spec/functional/merged_config_spec.rb +46 -6
  45. data/spec/functional/server_api_spec.rb +3 -3
  46. data/spec/integration/chef_acl_spec.rb +489 -489
  47. data/spec/integration/chef_client_spec.rb +39 -39
  48. data/spec/integration/chef_container_spec.rb +14 -14
  49. data/spec/integration/chef_data_bag_item_spec.rb +9 -9
  50. data/spec/integration/chef_group_spec.rb +219 -219
  51. data/spec/integration/chef_mirror_spec.rb +228 -228
  52. data/spec/integration/chef_node_spec.rb +511 -511
  53. data/spec/integration/chef_organization_spec.rb +126 -126
  54. data/spec/integration/chef_role_spec.rb +33 -33
  55. data/spec/integration/chef_user_spec.rb +37 -37
  56. data/spec/integration/private_key_spec.rb +154 -154
  57. data/spec/integration/recipe_dsl_spec.rb +10 -10
  58. data/spec/integration/rspec/converge_spec.rb +49 -49
  59. data/spec/support/key_support.rb +6 -6
  60. data/spec/support/spec_support.rb +3 -3
  61. data/spec/unit/get_private_key_spec.rb +19 -19
  62. data/spec/unit/recipe_run_wrapper_spec.rb +4 -4
  63. metadata +3 -3
@@ -1,50 +1,50 @@
1
- require 'support/spec_support'
2
- require 'cheffish/rspec/chef_run_support'
3
- require 'support/key_support'
4
- require 'chef/resource/chef_client'
1
+ require "support/spec_support"
2
+ require "cheffish/rspec/chef_run_support"
3
+ require "support/key_support"
4
+ require "chef/resource/chef_client"
5
5
 
6
- repo_path = Dir.mktmpdir('chef_repo')
6
+ repo_path = Dir.mktmpdir("chef_repo")
7
7
 
8
8
  describe Chef::Resource::ChefClient do
9
9
  extend Cheffish::RSpec::ChefRunSupport
10
10
 
11
- when_the_chef_12_server 'is in multi-org mode' do
12
- organization 'foo'
11
+ when_the_chef_12_server "is in multi-org mode" do
12
+ organization "foo"
13
13
 
14
14
  before :each do
15
- Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url, '/organizations/foo').to_s
15
+ Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url, "/organizations/foo").to_s
16
16
  end
17
17
 
18
- context 'and is empty' do
19
- context 'and we have a private key with a path' do
18
+ context "and is empty" do
19
+ context "and we have a private key with a path" do
20
20
  with_converge do
21
21
  private_key "#{repo_path}/blah.pem"
22
22
  end
23
23
 
24
24
  context 'and we run a recipe that creates client "blah"' do
25
- it 'the client gets created' do
26
- expect_recipe {
27
- chef_client 'blah' do
25
+ it "the client gets created" do
26
+ expect_recipe do
27
+ chef_client "blah" do
28
28
  source_key_path "#{repo_path}/blah.pem"
29
29
  end
30
- }.to have_updated 'chef_client[blah]', :create
31
- client = get('clients/blah')
32
- expect(client['name']).to eq('blah')
33
- key, format = Cheffish::KeyFormatter.decode(client['public_key'])
30
+ end.to have_updated "chef_client[blah]", :create
31
+ client = get("clients/blah")
32
+ expect(client["name"]).to eq("blah")
33
+ key, format = Cheffish::KeyFormatter.decode(client["public_key"])
34
34
  expect(key).to be_public_key_for("#{repo_path}/blah.pem")
35
35
  end
36
36
  end
37
37
 
38
38
  context 'and we run a recipe that creates client "blah" with output_key_path' do
39
39
  with_converge do
40
- chef_client 'blah' do
40
+ chef_client "blah" do
41
41
  source_key_path "#{repo_path}/blah.pem"
42
42
  output_key_path "#{repo_path}/blah.pub"
43
43
  end
44
44
  end
45
45
 
46
- it 'the output public key gets created' do
47
- expect(IO.read("#{repo_path}/blah.pub")).to start_with('ssh-rsa ')
46
+ it "the output public key gets created" do
47
+ expect(IO.read("#{repo_path}/blah.pub")).to start_with("ssh-rsa ")
48
48
  expect("#{repo_path}/blah.pub").to be_public_key_for("#{repo_path}/blah.pem")
49
49
  end
50
50
  end
@@ -56,21 +56,21 @@ describe Chef::Resource::ChefClient do
56
56
  end
57
57
 
58
58
  with_converge do
59
- private_key 'blah'
59
+ private_key "blah"
60
60
  end
61
61
 
62
62
  context "and a chef_client 'foobar' resource with source_key_path 'blah'" do
63
- it 'the client is accessible via the given private key' do
64
- expect_recipe {
65
- chef_client 'foobar' do
66
- source_key_path 'blah'
63
+ it "the client is accessible via the given private key" do
64
+ expect_recipe do
65
+ chef_client "foobar" do
66
+ source_key_path "blah"
67
67
  end
68
- }.to have_updated 'chef_client[foobar]', :create
69
- client = get('clients/foobar')
70
- key, format = Cheffish::KeyFormatter.decode(client['public_key'])
68
+ end.to have_updated "chef_client[foobar]", :create
69
+ client = get("clients/foobar")
70
+ key, format = Cheffish::KeyFormatter.decode(client["public_key"])
71
71
  expect(key).to be_public_key_for("#{repo_path}/blah.pem")
72
72
 
73
- private_key = Cheffish::KeyFormatter.decode(Cheffish.get_private_key('blah'))
73
+ private_key = Cheffish::KeyFormatter.decode(Cheffish.get_private_key("blah"))
74
74
  expect(key).to be_public_key_for(private_key)
75
75
  end
76
76
  end
@@ -78,23 +78,23 @@ describe Chef::Resource::ChefClient do
78
78
  end
79
79
  end
80
80
 
81
- when_the_chef_server 'is in OSC mode' do
82
- context 'and is empty' do
83
- context 'and we have a private key with a path' do
81
+ when_the_chef_server "is in OSC mode" do
82
+ context "and is empty" do
83
+ context "and we have a private key with a path" do
84
84
  with_converge do
85
85
  private_key "#{repo_path}/blah.pem"
86
86
  end
87
87
 
88
88
  context 'and we run a recipe that creates client "blah"' do
89
- it 'the client gets created' do
90
- expect_recipe {
91
- chef_client 'blah' do
89
+ it "the client gets created" do
90
+ expect_recipe do
91
+ chef_client "blah" do
92
92
  source_key_path "#{repo_path}/blah.pem"
93
93
  end
94
- }.to have_updated 'chef_client[blah]', :create
95
- client = get('clients/blah')
96
- expect(client['name']).to eq('blah')
97
- key, format = Cheffish::KeyFormatter.decode(client['public_key'])
94
+ end.to have_updated "chef_client[blah]", :create
95
+ client = get("clients/blah")
96
+ expect(client["name"]).to eq("blah")
97
+ key, format = Cheffish::KeyFormatter.decode(client["public_key"])
98
98
  expect(key).to be_public_key_for("#{repo_path}/blah.pem")
99
99
  end
100
100
  end
@@ -1,30 +1,30 @@
1
- require 'support/spec_support'
2
- require 'cheffish/rspec/chef_run_support'
1
+ require "support/spec_support"
2
+ require "cheffish/rspec/chef_run_support"
3
3
 
4
4
  describe Chef::Resource::ChefContainer do
5
5
  extend Cheffish::RSpec::ChefRunSupport
6
6
 
7
- when_the_chef_12_server 'is in multi-org mode' do
8
- organization 'foo'
7
+ when_the_chef_12_server "is in multi-org mode" do
8
+ organization "foo"
9
9
 
10
10
  before :each do
11
- Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url, '/organizations/foo').to_s
11
+ Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url, "/organizations/foo").to_s
12
12
  end
13
13
 
14
14
  it 'Converging chef_container "x" creates the container' do
15
- expect_recipe {
16
- chef_container 'x'
17
- }.to have_updated('chef_container[x]', :create)
18
- expect { get('containers/x') }.not_to raise_error
15
+ expect_recipe do
16
+ chef_container "x"
17
+ end.to have_updated("chef_container[x]", :create)
18
+ expect { get("containers/x") }.not_to raise_error
19
19
  end
20
20
 
21
- context 'and already has a container named x' do
22
- container 'x', {}
21
+ context "and already has a container named x" do
22
+ container "x", {}
23
23
 
24
24
  it 'Converging chef_container "x" changes nothing' do
25
- expect_recipe {
26
- chef_container 'x'
27
- }.not_to have_updated('chef_container[x]', :create)
25
+ expect_recipe do
26
+ chef_container "x"
27
+ end.not_to have_updated("chef_container[x]", :create)
28
28
  end
29
29
  end
30
30
  end
@@ -1,23 +1,23 @@
1
- require 'support/spec_support'
2
- require 'cheffish/rspec/chef_run_support'
1
+ require "support/spec_support"
2
+ require "cheffish/rspec/chef_run_support"
3
3
 
4
4
  describe Chef::Resource::ChefDataBagItem do
5
5
  extend Cheffish::RSpec::ChefRunSupport
6
6
 
7
- when_the_chef_12_server 'foo' do
8
- organization 'foo'
7
+ when_the_chef_12_server "foo" do
8
+ organization "foo"
9
9
 
10
10
  before :each do
11
- Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url, '/organizations/foo').to_s
11
+ Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url, "/organizations/foo").to_s
12
12
  end
13
13
 
14
14
  context 'when data bag "bag" exists' do
15
- with_converge { chef_data_bag 'bag' }
15
+ with_converge { chef_data_bag "bag" }
16
16
 
17
17
  it 'runs a recipe that creates a chef_data_bag_item "bag/item"' do
18
- expect_recipe {
19
- chef_data_bag_item 'bag/item'
20
- }.to have_updated 'chef_data_bag_item[bag/item]', :create
18
+ expect_recipe do
19
+ chef_data_bag_item "bag/item"
20
+ end.to have_updated "chef_data_bag_item[bag/item]", :create
21
21
  # expect(get('data_bags/bag')['name']).to eq('bag')
22
22
  # expect(get('data_bags/bag/item')['id']).to eq('item')
23
23
  end
@@ -1,305 +1,305 @@
1
- require 'support/spec_support'
2
- require 'cheffish/rspec/chef_run_support'
1
+ require "support/spec_support"
2
+ require "cheffish/rspec/chef_run_support"
3
3
 
4
4
  describe Chef::Resource::ChefGroup do
5
5
  extend Cheffish::RSpec::ChefRunSupport
6
6
 
7
- when_the_chef_12_server 'is in multi-org mode' do
8
- organization 'foo'
7
+ when_the_chef_12_server "is in multi-org mode" do
8
+ organization "foo"
9
9
 
10
10
  before :each do
11
- Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url, '/organizations/foo').to_s
11
+ Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url, "/organizations/foo").to_s
12
12
  end
13
13
 
14
- context 'and is empty' do
15
- group 'g', {}
16
- user 'u', {}
17
- client 'c', {}
14
+ context "and is empty" do
15
+ group "g", {}
16
+ user "u", {}
17
+ client "c", {}
18
18
 
19
19
  it 'Converging chef_group "x" creates the group with no members' do
20
- expect_recipe {
21
- chef_group 'x'
22
- }.to have_updated('chef_group[x]', :create)
23
- expect(get('groups/x')).to eq({
24
- 'name' => 'x',
25
- 'groupname' => 'x',
26
- 'orgname' => 'foo',
27
- 'actors' => [],
28
- 'groups' => [],
29
- 'users' => [],
30
- 'clients' => []
20
+ expect_recipe do
21
+ chef_group "x"
22
+ end.to have_updated("chef_group[x]", :create)
23
+ expect(get("groups/x")).to eq({
24
+ "name" => "x",
25
+ "groupname" => "x",
26
+ "orgname" => "foo",
27
+ "actors" => [],
28
+ "groups" => [],
29
+ "users" => [],
30
+ "clients" => [],
31
31
  })
32
32
  end
33
33
 
34
34
  it 'chef_group "x" action :delete does nothing' do
35
- expect_recipe {
36
- chef_group 'x' do
35
+ expect_recipe do
36
+ chef_group "x" do
37
37
  action :delete
38
38
  end
39
- }.to not_have_updated('chef_group[x]', :delete).and not_have_updated('chef_group[x]', :create)
40
- expect { get('groups/x') }.to raise_error(Net::HTTPServerException)
39
+ end.to not_have_updated("chef_group[x]", :delete).and not_have_updated("chef_group[x]", :create)
40
+ expect { get("groups/x") }.to raise_error(Net::HTTPServerException)
41
41
  end
42
42
 
43
43
  it 'Converging chef_group "x" creates the group with the given members' do
44
- expect_recipe {
45
- chef_group 'x' do
46
- groups 'g'
47
- users 'u'
48
- clients 'c'
44
+ expect_recipe do
45
+ chef_group "x" do
46
+ groups "g"
47
+ users "u"
48
+ clients "c"
49
49
  end
50
- }.to have_updated('chef_group[x]', :create)
51
- expect(get('groups/x')).to eq({
52
- 'name' => 'x',
53
- 'groupname' => 'x',
54
- 'orgname' => 'foo',
55
- 'actors' => %w(c u),
56
- 'groups' => %w(g),
57
- 'users' => %w(u),
58
- 'clients' => %w(c)
50
+ end.to have_updated("chef_group[x]", :create)
51
+ expect(get("groups/x")).to eq({
52
+ "name" => "x",
53
+ "groupname" => "x",
54
+ "orgname" => "foo",
55
+ "actors" => %w{c u},
56
+ "groups" => %w{g},
57
+ "users" => %w{u},
58
+ "clients" => %w{c},
59
59
  })
60
60
  end
61
61
  end
62
62
 
63
- context 'and has a group named x' do
64
- group 'g', {}
65
- group 'g2', {}
66
- group 'g3', {}
67
- group 'g4', {}
68
- user 'u', {}
69
- user 'u2', {}
70
- user 'u3', {}
71
- user 'u4', {}
72
- client 'c', {}
73
- client 'c2', {}
74
- client 'c3', {}
75
- client 'c4', {}
63
+ context "and has a group named x" do
64
+ group "g", {}
65
+ group "g2", {}
66
+ group "g3", {}
67
+ group "g4", {}
68
+ user "u", {}
69
+ user "u2", {}
70
+ user "u3", {}
71
+ user "u4", {}
72
+ client "c", {}
73
+ client "c2", {}
74
+ client "c3", {}
75
+ client "c4", {}
76
76
 
77
- group 'x', {
78
- 'users' => %w(u u2),
79
- 'clients' => %w(c c2),
80
- 'groups' => %w(g g2)
77
+ group "x", {
78
+ "users" => %w{u u2},
79
+ "clients" => %w{c c2},
80
+ "groups" => %w{g g2},
81
81
  }
82
82
 
83
83
  it 'Converging chef_group "x" changes nothing' do
84
- expect_recipe {
85
- chef_group 'x'
86
- }.not_to have_updated('chef_group[x]', :create)
87
- expect(get('groups/x')).to eq({
88
- 'name' => 'x',
89
- 'groupname' => 'x',
90
- 'orgname' => 'foo',
91
- 'actors' => %w(c c2 u u2),
92
- 'groups' => %w(g g2),
93
- 'users' => %w(u u2),
94
- 'clients' => %w(c c2)
84
+ expect_recipe do
85
+ chef_group "x"
86
+ end.not_to have_updated("chef_group[x]", :create)
87
+ expect(get("groups/x")).to eq({
88
+ "name" => "x",
89
+ "groupname" => "x",
90
+ "orgname" => "foo",
91
+ "actors" => %w{c c2 u u2},
92
+ "groups" => %w{g g2},
93
+ "users" => %w{u u2},
94
+ "clients" => %w{c c2},
95
95
  })
96
96
  end
97
97
 
98
98
  it 'chef_group "x" action :delete deletes the group' do
99
- expect_recipe {
100
- chef_group 'x' do
99
+ expect_recipe do
100
+ chef_group "x" do
101
101
  action :delete
102
102
  end
103
- }.to have_updated('chef_group[x]', :delete)
104
- expect { get('groups/x') }.to raise_error(Net::HTTPServerException)
103
+ end.to have_updated("chef_group[x]", :delete)
104
+ expect { get("groups/x") }.to raise_error(Net::HTTPServerException)
105
105
  end
106
106
 
107
107
  it 'Converging chef_group "x" with existing users changes nothing' do
108
- expect_recipe {
109
- chef_group 'x' do
110
- users 'u'
111
- clients 'c'
112
- groups 'g'
108
+ expect_recipe do
109
+ chef_group "x" do
110
+ users "u"
111
+ clients "c"
112
+ groups "g"
113
113
  end
114
- }.not_to have_updated('chef_group[x]', :create)
115
- expect(get('groups/x')).to eq({
116
- 'name' => 'x',
117
- 'groupname' => 'x',
118
- 'orgname' => 'foo',
119
- 'actors' => %w(c c2 u u2),
120
- 'groups' => %w(g g2),
121
- 'users' => %w(u u2),
122
- 'clients' => %w(c c2)
114
+ end.not_to have_updated("chef_group[x]", :create)
115
+ expect(get("groups/x")).to eq({
116
+ "name" => "x",
117
+ "groupname" => "x",
118
+ "orgname" => "foo",
119
+ "actors" => %w{c c2 u u2},
120
+ "groups" => %w{g g2},
121
+ "users" => %w{u u2},
122
+ "clients" => %w{c c2},
123
123
  })
124
124
  end
125
125
 
126
126
  it 'Converging chef_group "x" adds new users' do
127
- expect_recipe {
128
- chef_group 'x' do
129
- users 'u3'
130
- clients 'c3'
131
- groups 'g3'
127
+ expect_recipe do
128
+ chef_group "x" do
129
+ users "u3"
130
+ clients "c3"
131
+ groups "g3"
132
132
  end
133
- }.to have_updated('chef_group[x]', :create)
134
- expect(get('groups/x')).to eq({
135
- 'name' => 'x',
136
- 'groupname' => 'x',
137
- 'orgname' => 'foo',
138
- 'actors' => %w(c c2 c3 u u2 u3),
139
- 'groups' => %w(g g2 g3),
140
- 'users' => %w(u u2 u3),
141
- 'clients' => %w(c c2 c3)
133
+ end.to have_updated("chef_group[x]", :create)
134
+ expect(get("groups/x")).to eq({
135
+ "name" => "x",
136
+ "groupname" => "x",
137
+ "orgname" => "foo",
138
+ "actors" => %w{c c2 c3 u u2 u3},
139
+ "groups" => %w{g g2 g3},
140
+ "users" => %w{u u2 u3},
141
+ "clients" => %w{c c2 c3},
142
142
  })
143
143
  end
144
144
 
145
145
  it 'Converging chef_group "x" with multiple users adds new users' do
146
- expect_recipe {
147
- chef_group 'x' do
148
- users 'u3', 'u4'
149
- clients 'c3', 'c4'
150
- groups 'g3', 'g4'
146
+ expect_recipe do
147
+ chef_group "x" do
148
+ users "u3", "u4"
149
+ clients "c3", "c4"
150
+ groups "g3", "g4"
151
151
  end
152
- }.to have_updated('chef_group[x]', :create)
153
- expect(get('groups/x')).to eq({
154
- 'name' => 'x',
155
- 'groupname' => 'x',
156
- 'orgname' => 'foo',
157
- 'actors' => %w(c c2 c3 c4 u u2 u3 u4),
158
- 'groups' => %w(g g2 g3 g4),
159
- 'users' => %w(u u2 u3 u4),
160
- 'clients' => %w(c c2 c3 c4)
152
+ end.to have_updated("chef_group[x]", :create)
153
+ expect(get("groups/x")).to eq({
154
+ "name" => "x",
155
+ "groupname" => "x",
156
+ "orgname" => "foo",
157
+ "actors" => %w{c c2 c3 c4 u u2 u3 u4},
158
+ "groups" => %w{g g2 g3 g4},
159
+ "users" => %w{u u2 u3 u4},
160
+ "clients" => %w{c c2 c3 c4},
161
161
  })
162
162
  end
163
163
 
164
164
  it 'Converging chef_group "x" with multiple users in an array adds new users' do
165
- expect_recipe {
166
- chef_group 'x' do
167
- users [ 'u3', 'u4' ]
168
- clients [ 'c3', 'c4' ]
169
- groups [ 'g3', 'g4' ]
165
+ expect_recipe do
166
+ chef_group "x" do
167
+ users %w{u3 u4}
168
+ clients %w{c3 c4}
169
+ groups %w{g3 g4}
170
170
  end
171
- }.to have_updated('chef_group[x]', :create)
172
- expect(get('groups/x')).to eq({
173
- 'name' => 'x',
174
- 'groupname' => 'x',
175
- 'orgname' => 'foo',
176
- 'actors' => %w(c c2 c3 c4 u u2 u3 u4),
177
- 'groups' => %w(g g2 g3 g4),
178
- 'users' => %w(u u2 u3 u4),
179
- 'clients' => %w(c c2 c3 c4)
171
+ end.to have_updated("chef_group[x]", :create)
172
+ expect(get("groups/x")).to eq({
173
+ "name" => "x",
174
+ "groupname" => "x",
175
+ "orgname" => "foo",
176
+ "actors" => %w{c c2 c3 c4 u u2 u3 u4},
177
+ "groups" => %w{g g2 g3 g4},
178
+ "users" => %w{u u2 u3 u4},
179
+ "clients" => %w{c c2 c3 c4},
180
180
  })
181
181
  end
182
182
 
183
183
  it 'Converging chef_group "x" with multiple users declarations adds new users' do
184
- expect_recipe {
185
- chef_group 'x' do
186
- users 'u3'
187
- users 'u4'
188
- clients 'c3'
189
- clients 'c4'
190
- groups 'g3'
191
- groups 'g4'
184
+ expect_recipe do
185
+ chef_group "x" do
186
+ users "u3"
187
+ users "u4"
188
+ clients "c3"
189
+ clients "c4"
190
+ groups "g3"
191
+ groups "g4"
192
192
  end
193
- }.to have_updated('chef_group[x]', :create)
194
- expect(get('groups/x')).to eq({
195
- 'name' => 'x',
196
- 'groupname' => 'x',
197
- 'orgname' => 'foo',
198
- 'actors' => %w(c c2 c3 c4 u u2 u3 u4),
199
- 'groups' => %w(g g2 g3 g4),
200
- 'users' => %w(u u2 u3 u4),
201
- 'clients' => %w(c c2 c3 c4)
193
+ end.to have_updated("chef_group[x]", :create)
194
+ expect(get("groups/x")).to eq({
195
+ "name" => "x",
196
+ "groupname" => "x",
197
+ "orgname" => "foo",
198
+ "actors" => %w{c c2 c3 c4 u u2 u3 u4},
199
+ "groups" => %w{g g2 g3 g4},
200
+ "users" => %w{u u2 u3 u4},
201
+ "clients" => %w{c c2 c3 c4},
202
202
  })
203
203
  end
204
204
 
205
205
  it 'Converging chef_group "x" removes desired users' do
206
- expect_recipe {
207
- chef_group 'x' do
208
- remove_users 'u2'
209
- remove_clients 'c2'
210
- remove_groups 'g2'
206
+ expect_recipe do
207
+ chef_group "x" do
208
+ remove_users "u2"
209
+ remove_clients "c2"
210
+ remove_groups "g2"
211
211
  end
212
- }.to have_updated('chef_group[x]', :create)
213
- expect(get('groups/x')).to eq({
214
- 'name' => 'x',
215
- 'groupname' => 'x',
216
- 'orgname' => 'foo',
217
- 'actors' => %w(c u),
218
- 'groups' => %w(g),
219
- 'users' => %w(u),
220
- 'clients' => %w(c)
212
+ end.to have_updated("chef_group[x]", :create)
213
+ expect(get("groups/x")).to eq({
214
+ "name" => "x",
215
+ "groupname" => "x",
216
+ "orgname" => "foo",
217
+ "actors" => %w{c u},
218
+ "groups" => %w{g},
219
+ "users" => %w{u},
220
+ "clients" => %w{c},
221
221
  })
222
222
  end
223
223
 
224
224
  it 'Converging chef_group "x" with multiple users removes desired users' do
225
- expect_recipe {
226
- chef_group 'x' do
227
- remove_users 'u', 'u2'
228
- remove_clients 'c', 'c2'
229
- remove_groups 'g', 'g2'
225
+ expect_recipe do
226
+ chef_group "x" do
227
+ remove_users "u", "u2"
228
+ remove_clients "c", "c2"
229
+ remove_groups "g", "g2"
230
230
  end
231
- }.to have_updated('chef_group[x]', :create)
232
- expect(get('groups/x')).to eq({
233
- 'name' => 'x',
234
- 'groupname' => 'x',
235
- 'orgname' => 'foo',
236
- 'actors' => [],
237
- 'groups' => [],
238
- 'users' => [],
239
- 'clients' => []
231
+ end.to have_updated("chef_group[x]", :create)
232
+ expect(get("groups/x")).to eq({
233
+ "name" => "x",
234
+ "groupname" => "x",
235
+ "orgname" => "foo",
236
+ "actors" => [],
237
+ "groups" => [],
238
+ "users" => [],
239
+ "clients" => [],
240
240
  })
241
241
  end
242
242
 
243
243
  it 'Converging chef_group "x" with multiple users in an array removes desired users' do
244
- expect_recipe {
245
- chef_group 'x' do
246
- remove_users [ 'u', 'u2' ]
247
- remove_clients [ 'c', 'c2' ]
248
- remove_groups [ 'g', 'g2' ]
244
+ expect_recipe do
245
+ chef_group "x" do
246
+ remove_users %w{u u2}
247
+ remove_clients %w{c c2}
248
+ remove_groups %w{g g2}
249
249
  end
250
- }.to have_updated('chef_group[x]', :create)
251
- expect(get('groups/x')).to eq({
252
- 'name' => 'x',
253
- 'groupname' => 'x',
254
- 'orgname' => 'foo',
255
- 'actors' => [],
256
- 'groups' => [],
257
- 'users' => [],
258
- 'clients' => []
250
+ end.to have_updated("chef_group[x]", :create)
251
+ expect(get("groups/x")).to eq({
252
+ "name" => "x",
253
+ "groupname" => "x",
254
+ "orgname" => "foo",
255
+ "actors" => [],
256
+ "groups" => [],
257
+ "users" => [],
258
+ "clients" => [],
259
259
  })
260
260
  end
261
261
 
262
262
  it 'Converging chef_group "x" with multiple remove_ declarations removes desired users' do
263
- expect_recipe {
264
- chef_group 'x' do
265
- remove_users 'u'
266
- remove_users 'u2'
267
- remove_clients 'c'
268
- remove_clients 'c2'
269
- remove_groups 'g'
270
- remove_groups 'g2'
263
+ expect_recipe do
264
+ chef_group "x" do
265
+ remove_users "u"
266
+ remove_users "u2"
267
+ remove_clients "c"
268
+ remove_clients "c2"
269
+ remove_groups "g"
270
+ remove_groups "g2"
271
271
  end
272
- }.to have_updated('chef_group[x]', :create)
273
- expect(get('groups/x')).to eq({
274
- 'name' => 'x',
275
- 'groupname' => 'x',
276
- 'orgname' => 'foo',
277
- 'actors' => [],
278
- 'groups' => [],
279
- 'users' => [],
280
- 'clients' => []
272
+ end.to have_updated("chef_group[x]", :create)
273
+ expect(get("groups/x")).to eq({
274
+ "name" => "x",
275
+ "groupname" => "x",
276
+ "orgname" => "foo",
277
+ "actors" => [],
278
+ "groups" => [],
279
+ "users" => [],
280
+ "clients" => [],
281
281
  })
282
282
  end
283
283
 
284
284
  it 'Converging chef_group "x" adds and removes desired users' do
285
- expect_recipe {
286
- chef_group 'x' do
287
- users 'u3'
288
- clients 'c3'
289
- groups 'g3'
290
- remove_users 'u'
291
- remove_clients 'c'
292
- remove_groups 'g'
285
+ expect_recipe do
286
+ chef_group "x" do
287
+ users "u3"
288
+ clients "c3"
289
+ groups "g3"
290
+ remove_users "u"
291
+ remove_clients "c"
292
+ remove_groups "g"
293
293
  end
294
- }.to have_updated('chef_group[x]', :create)
295
- expect(get('groups/x')).to eq({
296
- 'name' => 'x',
297
- 'groupname' => 'x',
298
- 'orgname' => 'foo',
299
- 'actors' => %w(c2 c3 u2 u3),
300
- 'groups' => %w(g2 g3),
301
- 'users' => %w(u2 u3),
302
- 'clients' => %w(c2 c3)
294
+ end.to have_updated("chef_group[x]", :create)
295
+ expect(get("groups/x")).to eq({
296
+ "name" => "x",
297
+ "groupname" => "x",
298
+ "orgname" => "foo",
299
+ "actors" => %w{c2 c3 u2 u3},
300
+ "groups" => %w{g2 g3},
301
+ "users" => %w{u2 u3},
302
+ "clients" => %w{c2 c3},
303
303
  })
304
304
  end
305
305
  end