cheffish 4.0.0 → 4.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +8 -8
- data/Rakefile +24 -12
- data/cheffish.gemspec +15 -15
- data/lib/chef/resource/chef_acl.rb +63 -63
- data/lib/chef/resource/chef_client.rb +9 -9
- data/lib/chef/resource/chef_container.rb +9 -9
- data/lib/chef/resource/chef_data_bag.rb +9 -9
- data/lib/chef/resource/chef_data_bag_item.rb +27 -27
- data/lib/chef/resource/chef_environment.rb +21 -22
- data/lib/chef/resource/chef_group.rb +19 -19
- data/lib/chef/resource/chef_mirror.rb +32 -17
- data/lib/chef/resource/chef_node.rb +14 -14
- data/lib/chef/resource/chef_organization.rb +29 -30
- data/lib/chef/resource/chef_resolved_cookbooks.rb +7 -7
- data/lib/chef/resource/chef_role.rb +25 -22
- data/lib/chef/resource/chef_user.rb +13 -14
- data/lib/chef/resource/private_key.rb +24 -25
- data/lib/chef/resource/public_key.rb +6 -7
- data/lib/cheffish.rb +17 -17
- data/lib/cheffish/array_property.rb +2 -2
- data/lib/cheffish/base_properties.rb +3 -3
- data/lib/cheffish/base_resource.rb +8 -8
- data/lib/cheffish/basic_chef_client.rb +17 -17
- data/lib/cheffish/chef_actor_base.rb +8 -8
- data/lib/cheffish/chef_run.rb +7 -2
- data/lib/cheffish/chef_run_data.rb +2 -2
- data/lib/cheffish/chef_run_listener.rb +1 -1
- data/lib/cheffish/key_formatter.rb +16 -18
- data/lib/cheffish/merged_config.rb +5 -3
- data/lib/cheffish/node_properties.rb +11 -7
- data/lib/cheffish/recipe_dsl.rb +33 -34
- data/lib/cheffish/rspec.rb +3 -3
- data/lib/cheffish/rspec/chef_run_support.rb +13 -13
- data/lib/cheffish/rspec/matchers.rb +4 -4
- data/lib/cheffish/rspec/matchers/be_idempotent.rb +3 -3
- data/lib/cheffish/rspec/matchers/emit_no_warnings_or_errors.rb +3 -3
- data/lib/cheffish/rspec/matchers/have_updated.rb +3 -3
- data/lib/cheffish/rspec/recipe_run_wrapper.rb +8 -7
- data/lib/cheffish/rspec/repository_support.rb +6 -6
- data/lib/cheffish/server_api.rb +11 -11
- data/lib/cheffish/version.rb +1 -1
- data/spec/functional/fingerprint_spec.rb +12 -12
- data/spec/functional/merged_config_spec.rb +46 -6
- data/spec/functional/server_api_spec.rb +3 -3
- data/spec/integration/chef_acl_spec.rb +489 -489
- data/spec/integration/chef_client_spec.rb +39 -39
- data/spec/integration/chef_container_spec.rb +14 -14
- data/spec/integration/chef_data_bag_item_spec.rb +9 -9
- data/spec/integration/chef_group_spec.rb +219 -219
- data/spec/integration/chef_mirror_spec.rb +228 -228
- data/spec/integration/chef_node_spec.rb +511 -511
- data/spec/integration/chef_organization_spec.rb +126 -126
- data/spec/integration/chef_role_spec.rb +33 -33
- data/spec/integration/chef_user_spec.rb +37 -37
- data/spec/integration/private_key_spec.rb +154 -154
- data/spec/integration/recipe_dsl_spec.rb +10 -10
- data/spec/integration/rspec/converge_spec.rb +49 -49
- data/spec/support/key_support.rb +6 -6
- data/spec/support/spec_support.rb +3 -3
- data/spec/unit/get_private_key_spec.rb +19 -19
- data/spec/unit/recipe_run_wrapper_spec.rb +4 -4
- metadata +3 -3
@@ -1,221 +1,221 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "support/spec_support"
|
2
|
+
require "cheffish/rspec/chef_run_support"
|
3
3
|
|
4
4
|
describe Chef::Resource::ChefOrganization do
|
5
5
|
extend Cheffish::RSpec::ChefRunSupport
|
6
6
|
|
7
|
-
when_the_chef_12_server
|
8
|
-
context
|
9
|
-
user
|
10
|
-
user
|
7
|
+
when_the_chef_12_server "is in multi-org mode" do
|
8
|
+
context "and chef_server_url is pointed at the top level" do
|
9
|
+
user "u", {}
|
10
|
+
user "u2", {}
|
11
11
|
|
12
12
|
it 'chef_organization "x" creates the organization' do
|
13
|
-
expect_recipe
|
14
|
-
chef_organization
|
15
|
-
|
16
|
-
expect(get(
|
13
|
+
expect_recipe do
|
14
|
+
chef_organization "x"
|
15
|
+
end.to have_updated("chef_organization[x]", :create)
|
16
|
+
expect(get("/organizations/x")["full_name"]).to eq("x")
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
context
|
21
|
-
organization
|
20
|
+
context "and chef_server_url is pointed at /organizations/foo" do
|
21
|
+
organization "foo"
|
22
22
|
|
23
23
|
before :each do
|
24
|
-
Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url,
|
24
|
+
Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url, "/organizations/foo").to_s
|
25
25
|
end
|
26
26
|
|
27
|
-
context
|
28
|
-
user
|
29
|
-
user
|
27
|
+
context "and is empty" do
|
28
|
+
user "u", {}
|
29
|
+
user "u2", {}
|
30
30
|
|
31
31
|
it 'chef_organization "x" creates the organization' do
|
32
|
-
expect_recipe
|
33
|
-
chef_organization
|
34
|
-
|
35
|
-
expect(get(
|
32
|
+
expect_recipe do
|
33
|
+
chef_organization "x"
|
34
|
+
end.to have_updated("chef_organization[x]", :create)
|
35
|
+
expect(get("/organizations/x")["full_name"]).to eq("x")
|
36
36
|
end
|
37
37
|
|
38
38
|
it 'chef_organization "x" with full_name creates the organization' do
|
39
|
-
expect_recipe
|
40
|
-
chef_organization
|
41
|
-
full_name
|
39
|
+
expect_recipe do
|
40
|
+
chef_organization "x" do
|
41
|
+
full_name "Hi"
|
42
42
|
end
|
43
|
-
|
44
|
-
expect(get(
|
43
|
+
end.to have_updated("chef_organization[x]", :create)
|
44
|
+
expect(get("/organizations/x")["full_name"]).to eq("Hi")
|
45
45
|
end
|
46
46
|
|
47
47
|
it 'chef_organization "x" and inviting users creates the invites' do
|
48
|
-
expect_recipe
|
49
|
-
chef_organization
|
50
|
-
invites
|
48
|
+
expect_recipe do
|
49
|
+
chef_organization "x" do
|
50
|
+
invites "u", "u2"
|
51
51
|
end
|
52
|
-
|
53
|
-
expect(get(
|
52
|
+
end.to have_updated("chef_organization[x]", :create)
|
53
|
+
expect(get("/organizations/x/association_requests").map { |u| u["username"] }).to eq(%w{u u2})
|
54
54
|
end
|
55
55
|
|
56
56
|
it 'chef_organization "x" adds members' do
|
57
|
-
expect_recipe
|
58
|
-
chef_organization
|
59
|
-
members
|
57
|
+
expect_recipe do
|
58
|
+
chef_organization "x" do
|
59
|
+
members "u", "u2"
|
60
60
|
end
|
61
|
-
|
62
|
-
expect(get(
|
61
|
+
end.to have_updated("chef_organization[x]", :create)
|
62
|
+
expect(get("/organizations/x/users").map { |u| u["user"]["username"] }).to eq(%w{u u2})
|
63
63
|
end
|
64
64
|
end
|
65
65
|
|
66
|
-
context
|
67
|
-
user
|
68
|
-
user
|
69
|
-
user
|
70
|
-
user
|
71
|
-
user
|
72
|
-
user
|
73
|
-
user
|
74
|
-
organization
|
75
|
-
org_member
|
76
|
-
org_invite
|
66
|
+
context "and already has an organization named x" do
|
67
|
+
user "u", {}
|
68
|
+
user "u2", {}
|
69
|
+
user "u3", {}
|
70
|
+
user "member", {}
|
71
|
+
user "member2", {}
|
72
|
+
user "invited", {}
|
73
|
+
user "invited2", {}
|
74
|
+
organization "x", { "full_name" => "Lo" } do
|
75
|
+
org_member "member", "member2"
|
76
|
+
org_invite "invited", "invited2"
|
77
77
|
end
|
78
78
|
|
79
79
|
it 'chef_organization "x" changes nothing' do
|
80
|
-
expect_recipe
|
81
|
-
chef_organization
|
82
|
-
|
83
|
-
expect(get(
|
80
|
+
expect_recipe do
|
81
|
+
chef_organization "x"
|
82
|
+
end.not_to have_updated("chef_organization[x]", :create)
|
83
|
+
expect(get("/organizations/x")["full_name"]).to eq("Lo")
|
84
84
|
end
|
85
85
|
|
86
86
|
it 'chef_organization "x" with "complete true" reverts the full_name' do
|
87
|
-
expect_recipe
|
88
|
-
chef_organization
|
87
|
+
expect_recipe do
|
88
|
+
chef_organization "x" do
|
89
89
|
complete true
|
90
90
|
end
|
91
|
-
|
92
|
-
expect(get(
|
91
|
+
end.to have_updated("chef_organization[x]", :create)
|
92
|
+
expect(get("/organizations/x")["full_name"]).to eq("x")
|
93
93
|
end
|
94
94
|
|
95
95
|
it 'chef_organization "x" with new full_name updates the organization' do
|
96
|
-
expect_recipe
|
97
|
-
chef_organization
|
98
|
-
full_name
|
96
|
+
expect_recipe do
|
97
|
+
chef_organization "x" do
|
98
|
+
full_name "Hi"
|
99
99
|
end
|
100
|
-
|
101
|
-
expect(get(
|
100
|
+
end.to have_updated("chef_organization[x]", :create)
|
101
|
+
expect(get("/organizations/x")["full_name"]).to eq("Hi")
|
102
102
|
end
|
103
103
|
|
104
|
-
context
|
104
|
+
context "invites and membership tests" do
|
105
105
|
it 'chef_organization "x" and inviting users creates the invites' do
|
106
|
-
expect_recipe
|
107
|
-
chef_organization
|
108
|
-
invites
|
106
|
+
expect_recipe do
|
107
|
+
chef_organization "x" do
|
108
|
+
invites "u", "u2"
|
109
109
|
end
|
110
|
-
|
111
|
-
expect(get(
|
110
|
+
end.to have_updated("chef_organization[x]", :create)
|
111
|
+
expect(get("/organizations/x/association_requests").map { |u| u["username"] }).to eq(%w{invited invited2 u u2})
|
112
112
|
end
|
113
113
|
|
114
114
|
it 'chef_organization "x" adds members' do
|
115
|
-
expect_recipe
|
116
|
-
chef_organization
|
117
|
-
members
|
115
|
+
expect_recipe do
|
116
|
+
chef_organization "x" do
|
117
|
+
members "u", "u2"
|
118
118
|
end
|
119
|
-
|
120
|
-
expect(get(
|
119
|
+
end.to have_updated("chef_organization[x]", :create)
|
120
|
+
expect(get("/organizations/x/users").map { |u| u["user"]["username"] }).to eq(%w{member member2 u u2})
|
121
121
|
end
|
122
122
|
|
123
123
|
it 'chef_organization "x" does nothing when inviting already-invited users and members' do
|
124
|
-
expect_recipe
|
125
|
-
chef_organization
|
126
|
-
invites
|
124
|
+
expect_recipe do
|
125
|
+
chef_organization "x" do
|
126
|
+
invites "invited", "member"
|
127
127
|
end
|
128
|
-
|
129
|
-
expect(get(
|
130
|
-
expect(get(
|
128
|
+
end.not_to have_updated("chef_organization[x]", :create)
|
129
|
+
expect(get("/organizations/x/association_requests").map { |u| u["username"] }).to eq(%w{invited invited2})
|
130
|
+
expect(get("/organizations/x/users").map { |u| u["user"]["username"] }).to eq(%w{member member2})
|
131
131
|
end
|
132
132
|
|
133
133
|
it 'chef_organization "x" does nothing when adding members who are already members' do
|
134
|
-
expect_recipe
|
135
|
-
chef_organization
|
136
|
-
members
|
134
|
+
expect_recipe do
|
135
|
+
chef_organization "x" do
|
136
|
+
members "member"
|
137
137
|
end
|
138
|
-
|
139
|
-
expect(get(
|
140
|
-
expect(get(
|
138
|
+
end.not_to have_updated("chef_organization[x]", :create)
|
139
|
+
expect(get("/organizations/x/association_requests").map { |u| u["username"] }).to eq(%w{invited invited2})
|
140
|
+
expect(get("/organizations/x/users").map { |u| u["user"]["username"] }).to eq(%w{member member2})
|
141
141
|
end
|
142
142
|
|
143
143
|
it 'chef_organization "x" upgrades invites to members when asked' do
|
144
|
-
expect_recipe
|
145
|
-
chef_organization
|
146
|
-
members
|
144
|
+
expect_recipe do
|
145
|
+
chef_organization "x" do
|
146
|
+
members "invited"
|
147
147
|
end
|
148
|
-
|
149
|
-
expect(get(
|
150
|
-
expect(get(
|
148
|
+
end.to have_updated("chef_organization[x]", :create)
|
149
|
+
expect(get("/organizations/x/users").map { |u| u["user"]["username"] }).to eq(%w{invited member member2})
|
150
|
+
expect(get("/organizations/x/association_requests").map { |u| u["username"] }).to eq(%w{invited2})
|
151
151
|
end
|
152
152
|
|
153
153
|
it 'chef_organization "x" removes members and invites when asked' do
|
154
|
-
expect_recipe
|
155
|
-
chef_organization
|
156
|
-
remove_members
|
154
|
+
expect_recipe do
|
155
|
+
chef_organization "x" do
|
156
|
+
remove_members "invited", "member"
|
157
157
|
end
|
158
|
-
|
159
|
-
expect(get(
|
160
|
-
expect(get(
|
158
|
+
end.to have_updated("chef_organization[x]", :create)
|
159
|
+
expect(get("/organizations/x/association_requests").map { |u| u["username"] }).to eq(%w{invited2})
|
160
|
+
expect(get("/organizations/x/users").map { |u| u["user"]["username"] }).to eq(%w{member2})
|
161
161
|
end
|
162
162
|
|
163
163
|
it 'chef_organization "x" does nothing when asked to remove non-members' do
|
164
|
-
expect_recipe
|
165
|
-
chef_organization
|
166
|
-
remove_members
|
164
|
+
expect_recipe do
|
165
|
+
chef_organization "x" do
|
166
|
+
remove_members "u", "u2"
|
167
167
|
end
|
168
|
-
|
169
|
-
expect(get(
|
170
|
-
expect(get(
|
168
|
+
end.not_to have_updated("chef_organization[x]", :create)
|
169
|
+
expect(get("/organizations/x/association_requests").map { |u| u["username"] }).to eq(%w{invited invited2})
|
170
|
+
expect(get("/organizations/x/users").map { |u| u["user"]["username"] }).to eq(%w{member member2})
|
171
171
|
end
|
172
172
|
|
173
173
|
it 'chef_organization "x" with "complete true" reverts the full_name but does not remove invites or members' do
|
174
|
-
expect_recipe
|
175
|
-
chef_organization
|
174
|
+
expect_recipe do
|
175
|
+
chef_organization "x" do
|
176
176
|
complete true
|
177
177
|
end
|
178
|
-
|
179
|
-
expect(get(
|
180
|
-
expect(get(
|
181
|
-
expect(get(
|
178
|
+
end.to have_updated("chef_organization[x]", :create)
|
179
|
+
expect(get("/organizations/x")["full_name"]).to eq("x")
|
180
|
+
expect(get("/organizations/x/association_requests").map { |u| u["username"] }).to eq(%w{invited invited2})
|
181
|
+
expect(get("/organizations/x/users").map { |u| u["user"]["username"] }).to eq(%w{member member2})
|
182
182
|
end
|
183
183
|
|
184
184
|
it 'chef_organization "x" with members [] and "complete true" removes invites and members' do
|
185
|
-
expect_recipe
|
186
|
-
chef_organization
|
185
|
+
expect_recipe do
|
186
|
+
chef_organization "x" do
|
187
187
|
members []
|
188
188
|
complete true
|
189
189
|
end
|
190
|
-
|
191
|
-
expect(get(
|
192
|
-
expect(get(
|
193
|
-
expect(get(
|
190
|
+
end.to have_updated("chef_organization[x]", :create)
|
191
|
+
expect(get("/organizations/x")["full_name"]).to eq("x")
|
192
|
+
expect(get("/organizations/x/association_requests").map { |u| u["username"] }).to eq([])
|
193
|
+
expect(get("/organizations/x/users").map { |u| u["user"]["username"] }).to eq([])
|
194
194
|
end
|
195
195
|
|
196
196
|
it 'chef_organization "x" with invites [] and "complete true" removes invites but not members' do
|
197
|
-
expect_recipe
|
198
|
-
chef_organization
|
197
|
+
expect_recipe do
|
198
|
+
chef_organization "x" do
|
199
199
|
invites []
|
200
200
|
complete true
|
201
201
|
end
|
202
|
-
|
203
|
-
expect(get(
|
204
|
-
expect(get(
|
205
|
-
expect(get(
|
202
|
+
end.to have_updated("chef_organization[x]", :create)
|
203
|
+
expect(get("/organizations/x")["full_name"]).to eq("x")
|
204
|
+
expect(get("/organizations/x/association_requests").map { |u| u["username"] }).to eq([])
|
205
|
+
expect(get("/organizations/x/users").map { |u| u["user"]["username"] }).to eq(%w{member member2})
|
206
206
|
end
|
207
207
|
|
208
208
|
it 'chef_organization "x" with invites, members and "complete true" removes all non-specified invites and members' do
|
209
|
-
expect_recipe
|
210
|
-
chef_organization
|
211
|
-
invites
|
212
|
-
members
|
209
|
+
expect_recipe do
|
210
|
+
chef_organization "x" do
|
211
|
+
invites "invited", "u"
|
212
|
+
members "member", "u2"
|
213
213
|
complete true
|
214
214
|
end
|
215
|
-
|
216
|
-
expect(get(
|
217
|
-
expect(get(
|
218
|
-
expect(get(
|
215
|
+
end.to have_updated("chef_organization[x]", :create)
|
216
|
+
expect(get("/organizations/x")["full_name"]).to eq("x")
|
217
|
+
expect(get("/organizations/x/association_requests").map { |u| u["username"] }).to eq(%w{invited u})
|
218
|
+
expect(get("/organizations/x/users").map { |u| u["user"]["username"] }).to eq(%w{member u2})
|
219
219
|
end
|
220
220
|
end
|
221
221
|
end
|
@@ -1,29 +1,29 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "support/spec_support"
|
2
|
+
require "cheffish/rspec/chef_run_support"
|
3
3
|
|
4
4
|
describe Chef::Resource::ChefRole do
|
5
5
|
extend Cheffish::RSpec::ChefRunSupport
|
6
6
|
|
7
|
-
when_the_chef_12_server
|
8
|
-
organization
|
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,
|
11
|
+
Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url, "/organizations/foo").to_s
|
12
12
|
end
|
13
13
|
|
14
|
-
context
|
14
|
+
context "and is empty" do
|
15
15
|
context 'and we run a recipe that creates role "blah"' do
|
16
|
-
it
|
17
|
-
expect_recipe
|
18
|
-
chef_role
|
19
|
-
|
20
|
-
expect(get(
|
16
|
+
it "the role gets created" do
|
17
|
+
expect_recipe do
|
18
|
+
chef_role "blah"
|
19
|
+
end.to have_updated "chef_role[blah]", :create
|
20
|
+
expect(get("roles/blah")["name"]).to eq("blah")
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
# TODO why-run mode
|
25
25
|
|
26
|
-
context
|
26
|
+
context "and another chef server is running on port 8899" do
|
27
27
|
before :each do
|
28
28
|
@server = ChefZero::Server.new(:port => 8899)
|
29
29
|
@server.start_background
|
@@ -35,40 +35,40 @@ describe Chef::Resource::ChefRole do
|
|
35
35
|
|
36
36
|
context 'and a recipe is run that creates role "blah" on the second chef server using with_chef_server' do
|
37
37
|
|
38
|
-
it
|
39
|
-
expect_recipe
|
40
|
-
with_chef_server
|
41
|
-
chef_role
|
42
|
-
|
43
|
-
expect { get(
|
44
|
-
expect(get(
|
38
|
+
it "the role is created on the second chef server but not the first" do
|
39
|
+
expect_recipe do
|
40
|
+
with_chef_server "http://127.0.0.1:8899"
|
41
|
+
chef_role "blah"
|
42
|
+
end.to have_updated "chef_role[blah]", :create
|
43
|
+
expect { get("roles/blah") }.to raise_error(Net::HTTPServerException)
|
44
|
+
expect(get("http://127.0.0.1:8899/roles/blah")["name"]).to eq("blah")
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
48
|
context 'and a recipe is run that creates role "blah" on the second chef server using chef_server' do
|
49
49
|
|
50
|
-
it
|
51
|
-
expect_recipe
|
52
|
-
chef_role
|
53
|
-
chef_server({ :chef_server_url =>
|
50
|
+
it "the role is created on the second chef server but not the first" do
|
51
|
+
expect_recipe do
|
52
|
+
chef_role "blah" do
|
53
|
+
chef_server({ :chef_server_url => "http://127.0.0.1:8899" })
|
54
54
|
end
|
55
|
-
|
56
|
-
expect { get(
|
57
|
-
expect(get(
|
55
|
+
end.to have_updated "chef_role[blah]", :create
|
56
|
+
expect { get("roles/blah") }.to raise_error(Net::HTTPServerException)
|
57
|
+
expect(get("http://127.0.0.1:8899/roles/blah")["name"]).to eq("blah")
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
63
63
|
|
64
|
-
when_the_chef_server
|
65
|
-
context
|
64
|
+
when_the_chef_server "is in OSC mode" do
|
65
|
+
context "and is empty" do
|
66
66
|
context 'and we run a recipe that creates role "blah"' do
|
67
|
-
it
|
68
|
-
expect_recipe
|
69
|
-
chef_role
|
70
|
-
|
71
|
-
expect(get(
|
67
|
+
it "the role gets created" do
|
68
|
+
expect_recipe do
|
69
|
+
chef_role "blah"
|
70
|
+
end.to have_updated "chef_role[blah]", :create
|
71
|
+
expect(get("roles/blah")["name"]).to eq("blah")
|
72
72
|
end
|
73
73
|
end
|
74
74
|
end
|
@@ -1,8 +1,8 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
1
|
+
require "support/spec_support"
|
2
|
+
require "cheffish/rspec/chef_run_support"
|
3
|
+
require "support/key_support"
|
4
4
|
|
5
|
-
repo_path = Dir.mktmpdir(
|
5
|
+
repo_path = Dir.mktmpdir("chef_repo")
|
6
6
|
|
7
7
|
describe Chef::Resource::ChefUser do
|
8
8
|
extend Cheffish::RSpec::ChefRunSupport
|
@@ -11,70 +11,70 @@ describe Chef::Resource::ChefUser do
|
|
11
11
|
private_key "#{repo_path}/blah.pem"
|
12
12
|
end
|
13
13
|
|
14
|
-
when_the_chef_server
|
15
|
-
context 'and we run a recipe that creates user "blah"'do
|
16
|
-
it
|
17
|
-
expect_recipe
|
18
|
-
chef_user
|
14
|
+
when_the_chef_server "is empty" do
|
15
|
+
context 'and we run a recipe that creates user "blah"' do
|
16
|
+
it "the user gets created" do
|
17
|
+
expect_recipe do
|
18
|
+
chef_user "blah" do
|
19
19
|
source_key_path "#{repo_path}/blah.pem"
|
20
20
|
end
|
21
|
-
|
22
|
-
user = get(
|
23
|
-
expect(user[
|
24
|
-
key, format = Cheffish::KeyFormatter.decode(user[
|
21
|
+
end.to have_updated "chef_user[blah]", :create
|
22
|
+
user = get("/users/blah")
|
23
|
+
expect(user["name"]).to eq("blah")
|
24
|
+
key, format = Cheffish::KeyFormatter.decode(user["public_key"])
|
25
25
|
expect(key).to be_public_key_for("#{repo_path}/blah.pem")
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
29
|
context 'and we run a recipe that creates user "blah" with output_key_path' do
|
30
30
|
with_converge do
|
31
|
-
chef_user
|
31
|
+
chef_user "blah" do
|
32
32
|
source_key_path "#{repo_path}/blah.pem"
|
33
33
|
output_key_path "#{repo_path}/blah.pub"
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
37
|
-
it
|
38
|
-
expect(IO.read("#{repo_path}/blah.pub")).to start_with(
|
37
|
+
it "the output public key gets created" do
|
38
|
+
expect(IO.read("#{repo_path}/blah.pub")).to start_with("ssh-rsa ")
|
39
39
|
expect("#{repo_path}/blah.pub").to be_public_key_for("#{repo_path}/blah.pem")
|
40
40
|
end
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
when_the_chef_12_server
|
45
|
-
context
|
46
|
-
context 'and we run a recipe that creates user "blah"'do
|
47
|
-
it
|
48
|
-
expect_recipe
|
49
|
-
chef_user
|
44
|
+
when_the_chef_12_server "is in multi-org mode" do
|
45
|
+
context "and chef_server_url is pointed at the top level" do
|
46
|
+
context 'and we run a recipe that creates user "blah"' do
|
47
|
+
it "the user gets created" do
|
48
|
+
expect_recipe do
|
49
|
+
chef_user "blah" do
|
50
50
|
source_key_path "#{repo_path}/blah.pem"
|
51
51
|
end
|
52
|
-
|
53
|
-
user = get(
|
54
|
-
expect(user[
|
55
|
-
key, format = Cheffish::KeyFormatter.decode(user[
|
52
|
+
end.to have_updated "chef_user[blah]", :create
|
53
|
+
user = get("/users/blah")
|
54
|
+
expect(user["name"]).to eq("blah")
|
55
|
+
key, format = Cheffish::KeyFormatter.decode(user["public_key"])
|
56
56
|
expect(key).to be_public_key_for("#{repo_path}/blah.pem")
|
57
57
|
end
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
61
|
-
context
|
62
|
-
organization
|
61
|
+
context "and chef_server_url is pointed at /organizations/foo" do
|
62
|
+
organization "foo"
|
63
63
|
|
64
64
|
before :each do
|
65
|
-
Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url,
|
65
|
+
Chef::Config.chef_server_url = URI.join(Chef::Config.chef_server_url, "/organizations/foo").to_s
|
66
66
|
end
|
67
67
|
|
68
|
-
context 'and we run a recipe that creates user "blah"'do
|
69
|
-
it
|
70
|
-
expect_recipe
|
71
|
-
chef_user
|
68
|
+
context 'and we run a recipe that creates user "blah"' do
|
69
|
+
it "the user gets created" do
|
70
|
+
expect_recipe do
|
71
|
+
chef_user "blah" do
|
72
72
|
source_key_path "#{repo_path}/blah.pem"
|
73
73
|
end
|
74
|
-
|
75
|
-
user = get(
|
76
|
-
expect(user[
|
77
|
-
key, format = Cheffish::KeyFormatter.decode(user[
|
74
|
+
end.to have_updated "chef_user[blah]", :create
|
75
|
+
user = get("/users/blah")
|
76
|
+
expect(user["name"]).to eq("blah")
|
77
|
+
key, format = Cheffish::KeyFormatter.decode(user["public_key"])
|
78
78
|
expect(key).to be_public_key_for("#{repo_path}/blah.pem")
|
79
79
|
end
|
80
80
|
end
|