wright 0.3.2 → 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/NEWS.md +7 -0
- data/README.md +60 -54
- data/lib/wright/cli.rb +44 -18
- data/lib/wright/dry_run.rb +7 -0
- data/lib/wright/provider/directory.rb +26 -30
- data/lib/wright/provider/file.rb +34 -34
- data/lib/wright/provider/group/darwin_directory_service.rb +8 -7
- data/lib/wright/provider/group/gnu_passwd.rb +5 -5
- data/lib/wright/provider/group.rb +53 -36
- data/lib/wright/provider/package/apt.rb +32 -8
- data/lib/wright/provider/package/homebrew.rb +6 -5
- data/lib/wright/provider/package/yum.rb +39 -0
- data/lib/wright/provider/package.rb +30 -16
- data/lib/wright/provider/symlink.rb +32 -33
- data/lib/wright/provider/user/darwin_directory_service.rb +14 -17
- data/lib/wright/provider/user/gnu_passwd.rb +20 -21
- data/lib/wright/provider/user.rb +58 -41
- data/lib/wright/resource/group.rb +1 -0
- data/lib/wright/resource/package.rb +16 -3
- data/lib/wright/resource/user.rb +1 -0
- data/lib/wright/resource.rb +4 -2
- data/lib/wright/util/user.rb +34 -2
- data/lib/wright/version.rb +1 -1
- data/man/wright.1 +15 -11
- data/spec/cli_spec.rb +18 -0
- data/spec/provider/group/darwin_directory_service_spec.rb +76 -220
- data/spec/provider/group/gnu_passwd_spec.rb +36 -189
- data/spec/provider/group_spec.rb +180 -27
- data/spec/provider/package/apt/apt-cache_policy_dmenu.return +1 -0
- data/spec/provider/package/apt/apt-cache_policy_dmenu.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_policy_dmenu.stdout +4 -0
- data/spec/provider/package/apt/apt-cache_policy_htop.stdout +3 -3
- data/spec/provider/package/apt/apt-cache_policy_linux-image-3.2.0-4-amd64.return +1 -0
- data/spec/provider/package/apt/apt-cache_policy_linux-image-3.2.0-4-amd64.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_policy_linux-image-3.2.0-4-amd64.stdout +6 -0
- data/spec/provider/package/apt/apt-cache_policy_linux-image.return +1 -0
- data/spec/provider/package/apt/apt-cache_policy_linux-image.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_policy_linux-image.stdout +4 -0
- data/spec/provider/package/apt/apt-cache_policy_suckless-tools.return +1 -0
- data/spec/provider/package/apt/apt-cache_policy_suckless-tools.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_policy_suckless-tools.stdout +6 -0
- data/spec/provider/package/apt/apt-cache_showpkg_dmenu.return +1 -0
- data/spec/provider/package/apt/apt-cache_showpkg_dmenu.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_showpkg_dmenu.stdout +9 -0
- data/spec/provider/package/apt/apt-cache_showpkg_htop.return +1 -0
- data/spec/provider/package/apt/apt-cache_showpkg_htop.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_showpkg_htop.stdout +20 -0
- data/spec/provider/package/apt/apt-cache_showpkg_linux-image.return +1 -0
- data/spec/provider/package/apt/apt-cache_showpkg_linux-image.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_showpkg_linux-image.stdout +11 -0
- data/spec/provider/package/apt/apt-cache_showpkg_not-a-real-package.return +1 -0
- data/spec/provider/package/apt/apt-cache_showpkg_not-a-real-package.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_showpkg_not-a-real-package.stdout +1 -0
- data/spec/provider/package/apt/apt-cache_showpkg_suckless-tools.return +1 -0
- data/spec/provider/package/apt/apt-cache_showpkg_suckless-tools.stderr +0 -0
- data/spec/provider/package/apt/apt-cache_showpkg_suckless-tools.stdout +26 -0
- data/spec/provider/package/apt/apt-get_--purge_remove_-qy_abcde.return +1 -0
- data/spec/provider/package/apt/apt-get_--purge_remove_-qy_abcde.stderr +0 -0
- data/spec/provider/package/apt/apt-get_--purge_remove_-qy_abcde.stdout +15 -0
- data/spec/provider/package/apt_spec.rb +82 -14
- data/spec/provider/package/homebrew/brew_install_--with-default-names_gnu-units.return +1 -0
- data/spec/provider/package/homebrew/brew_install_--with-default-names_gnu-units.stderr +0 -0
- data/spec/provider/package/homebrew/brew_install_--with-default-names_gnu-units.stdout +7 -0
- data/spec/provider/package/homebrew/brew_uninstall_--force_lame.return +1 -0
- data/spec/provider/package/homebrew/brew_uninstall_--force_lame.stderr +0 -0
- data/spec/provider/package/homebrew/brew_uninstall_--force_lame.stdout +1 -0
- data/spec/provider/package/homebrew_spec.rb +33 -6
- data/spec/provider/package/yum/rpm_-q_httpd.return +1 -0
- data/spec/provider/package/yum/rpm_-q_httpd.stderr +0 -0
- data/spec/provider/package/yum/rpm_-q_httpd.stdout +1 -0
- data/spec/provider/package/yum/rpm_-q_zsh.return +1 -0
- data/spec/provider/package/yum/rpm_-q_zsh.stderr +0 -0
- data/spec/provider/package/yum/rpm_-q_zsh.stdout +1 -0
- data/spec/provider/package/yum/yum_install_-y_mc-4.8.7-8.el7.return +1 -0
- data/spec/provider/package/yum/yum_install_-y_mc-4.8.7-8.el7.stderr +0 -0
- data/spec/provider/package/yum/yum_install_-y_mc-4.8.7-8.el7.stdout +37 -0
- data/spec/provider/package/yum/yum_install_-y_nano.return +1 -0
- data/spec/provider/package/yum/yum_install_-y_nano.stderr +0 -0
- data/spec/provider/package/yum/yum_install_-y_nano.stdout +36 -0
- data/spec/provider/package/yum/yum_install_-y_not-a-real-package.return +1 -0
- data/spec/provider/package/yum/yum_install_-y_not-a-real-package.stderr +1 -0
- data/spec/provider/package/yum/yum_install_-y_not-a-real-package.stdout +6 -0
- data/spec/provider/package/yum/yum_install_with_options.return +1 -0
- data/spec/provider/package/yum/yum_install_with_options.stderr +0 -0
- data/spec/provider/package/yum/yum_install_with_options.stdout +53 -0
- data/spec/provider/package/yum/yum_remove_-y_screen.return +1 -0
- data/spec/provider/package/yum/yum_remove_-y_screen.stderr +0 -0
- data/spec/provider/package/yum/yum_remove_-y_screen.stdout +31 -0
- data/spec/provider/package/yum/yum_remove_with_options.return +1 -0
- data/spec/provider/package/yum/yum_remove_with_options.stderr +0 -0
- data/spec/provider/package/yum/yum_remove_with_options.stdout +30 -0
- data/spec/provider/package/yum_spec.rb +130 -0
- data/spec/provider/user/darwin_directory_service_spec.rb +12 -10
- data/spec/provider/user/gnu_passwd_spec.rb +9 -9
- data/spec/provider/user_spec.rb +26 -18
- data/spec/resource/package_spec.rb +8 -0
- data/spec/resource_spec.rb +17 -9
- metadata +153 -16
@@ -27,31 +27,31 @@ describe Wright::Provider::Group::DarwinDirectoryService do
|
|
27
27
|
Wright::Provider::Group::DarwinDirectoryService.new(group_resource)
|
28
28
|
end
|
29
29
|
|
30
|
-
before
|
30
|
+
before(:each) do
|
31
31
|
darwin_directory_service_dir = File.join(File.dirname(__FILE__),
|
32
32
|
'darwin_directory_service')
|
33
33
|
@fake_capture3 = FakeCapture3.new(darwin_directory_service_dir)
|
34
|
-
@create_message = ->(group) { "INFO: create group: '#{group}'\n" }
|
35
|
-
@create_message_dry = lambda do |group|
|
36
|
-
"INFO: (would) create group: '#{group}'\n"
|
37
|
-
end
|
38
|
-
@create_message_debug = lambda do |group|
|
39
|
-
"DEBUG: group already created: '#{group}'\n"
|
40
|
-
end
|
41
|
-
@remove_message = ->(group) { "INFO: remove group: '#{group}'\n" }
|
42
|
-
@remove_message_dry = lambda do |group|
|
43
|
-
"INFO: (would) remove group: '#{group}'\n"
|
44
|
-
end
|
45
|
-
@remove_message_debug = lambda do |group|
|
46
|
-
"DEBUG: group already removed: '#{group}'\n"
|
47
|
-
end
|
48
34
|
@groups = { 'daemon' => { gid: 1, mem: [] },
|
49
35
|
'foobar' => { gid: 42, mem: %w(foo bar) },
|
50
36
|
'bazqux' => { gid: 43, mem: %w(baz qux) } }
|
51
37
|
FakeEtc.add_groups(@groups)
|
52
38
|
end
|
53
39
|
|
54
|
-
|
40
|
+
after(:each) do
|
41
|
+
FakeEtc.clear_groups
|
42
|
+
end
|
43
|
+
|
44
|
+
describe '#create_group' do
|
45
|
+
before(:each) do
|
46
|
+
Wright::Provider::Group::DarwinDirectoryService.send(:public,
|
47
|
+
:create_group)
|
48
|
+
end
|
49
|
+
|
50
|
+
after(:each) do
|
51
|
+
Wright::Provider::Group::DarwinDirectoryService.send(:private,
|
52
|
+
:create_group)
|
53
|
+
end
|
54
|
+
|
55
55
|
it 'should create new groups' do
|
56
56
|
gid = 1234
|
57
57
|
group_name = 'newgroup'
|
@@ -61,11 +61,7 @@ describe Wright::Provider::Group::DarwinDirectoryService do
|
|
61
61
|
@fake_capture3.expect(dseditgroup_cmd)
|
62
62
|
@fake_capture3.stub do
|
63
63
|
FakeEtc do
|
64
|
-
|
65
|
-
reset_logger
|
66
|
-
group_provider.create
|
67
|
-
group_provider.updated?.must_equal true
|
68
|
-
end.must_output @create_message.call(group_name)
|
64
|
+
group_provider.create_group
|
69
65
|
end
|
70
66
|
end
|
71
67
|
end
|
@@ -81,68 +77,36 @@ describe Wright::Provider::Group::DarwinDirectoryService do
|
|
81
77
|
@fake_capture3.expect(dseditgroup_cmd)
|
82
78
|
@fake_capture3.stub do
|
83
79
|
FakeEtc do
|
84
|
-
|
85
|
-
reset_logger
|
86
|
-
group_provider.create
|
87
|
-
group_provider.updated?.must_equal true
|
88
|
-
end.must_output @create_message.call(group_name)
|
80
|
+
group_provider.create_group
|
89
81
|
end
|
90
82
|
end
|
91
83
|
end
|
92
84
|
|
93
|
-
it 'should
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
85
|
+
it 'should report group creation errors by dseditgroup' do
|
86
|
+
gid = 'ERROR'
|
87
|
+
group_name = 'newgroup'
|
88
|
+
group_provider = group_provider(group_name, gid)
|
89
|
+
dseditgroup_cmd = dseditgroup(:create, group_name, gid)
|
98
90
|
|
91
|
+
@fake_capture3.expect(dseditgroup_cmd)
|
99
92
|
@fake_capture3.stub do
|
100
93
|
FakeEtc do
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
end.must_output @create_message_debug.call(group_name)
|
94
|
+
e = -> { group_provider.create_group }.must_raise RuntimeError
|
95
|
+
wright_error = "cannot create group '#{group_name}'"
|
96
|
+
dseditgroup_error = 'GID contains non-numeric characters'
|
97
|
+
e.message.must_equal %(#{wright_error}: "#{dseditgroup_error}")
|
106
98
|
end
|
107
99
|
end
|
108
100
|
end
|
101
|
+
end
|
109
102
|
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
members = []
|
114
|
-
group_provider = group_provider(group_name, gid, members)
|
115
|
-
dscl_cmd = dscl_set_members(group_name, members)
|
116
|
-
|
117
|
-
@fake_capture3.expect(dscl_cmd)
|
118
|
-
@fake_capture3.stub do
|
119
|
-
FakeEtc do
|
120
|
-
lambda do
|
121
|
-
reset_logger
|
122
|
-
group_provider.create
|
123
|
-
group_provider.updated?.must_equal true
|
124
|
-
end.must_output @create_message.call(group_name)
|
125
|
-
end
|
126
|
-
end
|
103
|
+
describe '#set_gid' do
|
104
|
+
before(:each) do
|
105
|
+
Wright::Provider::Group::DarwinDirectoryService.send(:public, :set_gid)
|
127
106
|
end
|
128
107
|
|
129
|
-
|
130
|
-
|
131
|
-
gid = @groups[group_name][:gid]
|
132
|
-
members = %w(user1 user2)
|
133
|
-
group_provider = group_provider(group_name, gid, members)
|
134
|
-
dscl_cmd = dscl_set_members(group_name, members)
|
135
|
-
|
136
|
-
@fake_capture3.expect(dscl_cmd)
|
137
|
-
@fake_capture3.stub do
|
138
|
-
FakeEtc do
|
139
|
-
lambda do
|
140
|
-
reset_logger
|
141
|
-
group_provider.create
|
142
|
-
group_provider.updated?.must_equal true
|
143
|
-
end.must_output @create_message.call(group_name)
|
144
|
-
end
|
145
|
-
end
|
108
|
+
after(:each) do
|
109
|
+
Wright::Provider::Group::DarwinDirectoryService.send(:private, :set_gid)
|
146
110
|
end
|
147
111
|
|
148
112
|
it 'should update the gid for existing groups' do
|
@@ -154,45 +118,66 @@ describe Wright::Provider::Group::DarwinDirectoryService do
|
|
154
118
|
@fake_capture3.expect(dseditgroup_cmd)
|
155
119
|
@fake_capture3.stub do
|
156
120
|
FakeEtc do
|
157
|
-
|
158
|
-
reset_logger
|
159
|
-
group_provider.create
|
160
|
-
group_provider.updated?.must_equal true
|
161
|
-
end.must_output @create_message.call(group_name)
|
121
|
+
group_provider.set_gid
|
162
122
|
end
|
163
123
|
end
|
164
124
|
end
|
165
125
|
|
166
|
-
it 'should report
|
126
|
+
it 'should report errors by dseditgroup' do
|
167
127
|
gid = 'ERROR'
|
168
|
-
group_name = '
|
128
|
+
group_name = 'foobar'
|
169
129
|
group_provider = group_provider(group_name, gid)
|
170
|
-
dseditgroup_cmd = dseditgroup(:
|
130
|
+
dseditgroup_cmd = dseditgroup(:edit, group_name, gid)
|
171
131
|
|
172
132
|
@fake_capture3.expect(dseditgroup_cmd)
|
173
133
|
@fake_capture3.stub do
|
174
134
|
FakeEtc do
|
175
|
-
e = -> { group_provider.
|
135
|
+
e = -> { group_provider.set_gid }.must_raise RuntimeError
|
176
136
|
wright_error = "cannot create group '#{group_name}'"
|
177
137
|
dseditgroup_error = 'GID contains non-numeric characters'
|
178
138
|
e.message.must_equal %(#{wright_error}: "#{dseditgroup_error}")
|
179
139
|
end
|
180
140
|
end
|
181
141
|
end
|
142
|
+
end
|
182
143
|
|
183
|
-
|
184
|
-
|
144
|
+
describe '#set_members' do
|
145
|
+
before(:each) do
|
146
|
+
Wright::Provider::Group::DarwinDirectoryService.send(:public,
|
147
|
+
:set_members)
|
148
|
+
end
|
149
|
+
|
150
|
+
after(:each) do
|
151
|
+
Wright::Provider::Group::DarwinDirectoryService.send(:private,
|
152
|
+
:set_members)
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'should update member lists for existing groups' do
|
185
156
|
group_name = 'foobar'
|
186
|
-
|
187
|
-
|
157
|
+
gid = @groups[group_name][:gid]
|
158
|
+
members = %w(user1 user2)
|
159
|
+
group_provider = group_provider(group_name, gid, members)
|
160
|
+
dscl_cmd = dscl_set_members(group_name, members)
|
188
161
|
|
189
|
-
@fake_capture3.expect(
|
162
|
+
@fake_capture3.expect(dscl_cmd)
|
190
163
|
@fake_capture3.stub do
|
191
164
|
FakeEtc do
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
165
|
+
group_provider.set_members
|
166
|
+
end
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
it 'should clear member lists for existing groups' do
|
171
|
+
group_name = 'foobar'
|
172
|
+
gid = @groups[group_name][:gid]
|
173
|
+
members = []
|
174
|
+
group_provider = group_provider(group_name, gid, members)
|
175
|
+
dscl_cmd = dscl_set_members(group_name, members)
|
176
|
+
|
177
|
+
@fake_capture3.expect(dscl_cmd)
|
178
|
+
@fake_capture3.stub do
|
179
|
+
FakeEtc do
|
180
|
+
group_provider.set_members
|
196
181
|
end
|
197
182
|
end
|
198
183
|
end
|
@@ -207,7 +192,7 @@ describe Wright::Provider::Group::DarwinDirectoryService do
|
|
207
192
|
@fake_capture3.expect(dscl_cmd)
|
208
193
|
@fake_capture3.stub do
|
209
194
|
FakeEtc do
|
210
|
-
e = -> { group_provider.
|
195
|
+
e = -> { group_provider.set_members }.must_raise RuntimeError
|
211
196
|
wright_error = "cannot create group '#{group_name}'"
|
212
197
|
dscl_error = <<EOS.chomp
|
213
198
|
<main> attribute status: eDSPermissionError
|
@@ -228,26 +213,8 @@ EOS
|
|
228
213
|
@fake_capture3.expect(dseditgroup_cmd)
|
229
214
|
@fake_capture3.stub do
|
230
215
|
FakeEtc do
|
231
|
-
|
232
|
-
|
233
|
-
group_provider.remove
|
234
|
-
group_provider.updated?.must_equal true
|
235
|
-
end.must_output @remove_message.call(group_name)
|
236
|
-
end
|
237
|
-
end
|
238
|
-
end
|
239
|
-
|
240
|
-
it 'should not try to remove groups that are already removed' do
|
241
|
-
group_name = 'not-a-group'
|
242
|
-
group_provider = group_provider(group_name)
|
243
|
-
|
244
|
-
@fake_capture3.stub do
|
245
|
-
FakeEtc do
|
246
|
-
lambda do
|
247
|
-
reset_logger
|
248
|
-
group_provider.remove
|
249
|
-
group_provider.updated?.must_equal false
|
250
|
-
end.must_output @remove_message_debug.call(group_name)
|
216
|
+
group_provider.remove
|
217
|
+
group_provider.updated?.must_equal true
|
251
218
|
end
|
252
219
|
end
|
253
220
|
end
|
@@ -268,115 +235,4 @@ EOS
|
|
268
235
|
end
|
269
236
|
end
|
270
237
|
end
|
271
|
-
|
272
|
-
describe 'dry_run' do
|
273
|
-
it 'should not actually create new groups' do
|
274
|
-
gid = 1234
|
275
|
-
group_name = 'newgroup'
|
276
|
-
group_provider = group_provider(group_name, gid)
|
277
|
-
|
278
|
-
@fake_capture3.stub do
|
279
|
-
Wright.dry_run do
|
280
|
-
FakeEtc do
|
281
|
-
lambda do
|
282
|
-
reset_logger
|
283
|
-
group_provider.create
|
284
|
-
group_provider.updated?.must_equal true
|
285
|
-
end.must_output @create_message_dry.call(group_name)
|
286
|
-
end
|
287
|
-
end
|
288
|
-
end
|
289
|
-
end
|
290
|
-
|
291
|
-
it 'should not actually update existing groups' do
|
292
|
-
gid = 1234
|
293
|
-
group_name = 'foobar'
|
294
|
-
members = %w(user1 user2)
|
295
|
-
group_provider = group_provider(group_name, gid, members)
|
296
|
-
|
297
|
-
@fake_capture3.stub do
|
298
|
-
Wright.dry_run do
|
299
|
-
FakeEtc do
|
300
|
-
lambda do
|
301
|
-
reset_logger
|
302
|
-
group_provider.create
|
303
|
-
group_provider.updated?.must_equal true
|
304
|
-
end.must_output @create_message_dry.call(group_name)
|
305
|
-
end
|
306
|
-
end
|
307
|
-
end
|
308
|
-
end
|
309
|
-
|
310
|
-
it 'should not try to create existing groups' do
|
311
|
-
group_name = 'foobar'
|
312
|
-
gid = @groups[group_name][:gid]
|
313
|
-
members = @groups[group_name][:mem]
|
314
|
-
group_provider = group_provider(group_name, gid, members)
|
315
|
-
|
316
|
-
@fake_capture3.stub do
|
317
|
-
Wright.dry_run do
|
318
|
-
FakeEtc do
|
319
|
-
lambda do
|
320
|
-
reset_logger
|
321
|
-
group_provider.create
|
322
|
-
group_provider.updated?.must_equal false
|
323
|
-
end.must_output @create_message_debug.call(group_name)
|
324
|
-
end
|
325
|
-
end
|
326
|
-
end
|
327
|
-
end
|
328
|
-
|
329
|
-
it 'should not actually update existing groups' do
|
330
|
-
group_name = 'foobar'
|
331
|
-
gid = @groups[group_name][:gid] + 10
|
332
|
-
members = %w(user1 user2)
|
333
|
-
group_provider = group_provider(group_name, gid, members)
|
334
|
-
|
335
|
-
@fake_capture3.stub do
|
336
|
-
Wright.dry_run do
|
337
|
-
FakeEtc do
|
338
|
-
lambda do
|
339
|
-
reset_logger
|
340
|
-
group_provider.create
|
341
|
-
group_provider.updated?.must_equal true
|
342
|
-
end.must_output @create_message_dry.call(group_name)
|
343
|
-
end
|
344
|
-
end
|
345
|
-
end
|
346
|
-
end
|
347
|
-
|
348
|
-
it 'should not actually remove groups' do
|
349
|
-
group_name = 'foobar'
|
350
|
-
group_provider = group_provider(group_name)
|
351
|
-
|
352
|
-
@fake_capture3.stub do
|
353
|
-
Wright.dry_run do
|
354
|
-
FakeEtc do
|
355
|
-
lambda do
|
356
|
-
reset_logger
|
357
|
-
group_provider.remove
|
358
|
-
group_provider.updated?.must_equal true
|
359
|
-
end.must_output @remove_message_dry.call(group_name)
|
360
|
-
end
|
361
|
-
end
|
362
|
-
end
|
363
|
-
end
|
364
|
-
|
365
|
-
it 'should not try to remove groups that are already removed' do
|
366
|
-
group_name = 'not-a-group'
|
367
|
-
group_provider = group_provider(group_name)
|
368
|
-
|
369
|
-
@fake_capture3.stub do
|
370
|
-
Wright.dry_run do
|
371
|
-
FakeEtc do
|
372
|
-
lambda do
|
373
|
-
reset_logger
|
374
|
-
group_provider.remove
|
375
|
-
group_provider.updated?.must_equal false
|
376
|
-
end.must_output @remove_message_debug.call(group_name)
|
377
|
-
end
|
378
|
-
end
|
379
|
-
end
|
380
|
-
end
|
381
|
-
end
|
382
238
|
end
|
@@ -31,29 +31,23 @@ describe Wright::Provider::Group::GnuPasswd do
|
|
31
31
|
Wright::Provider::Group::GnuPasswd.new(group_resource)
|
32
32
|
end
|
33
33
|
|
34
|
-
before
|
34
|
+
before(:each) do
|
35
35
|
gnu_passwd_dir = File.join(File.dirname(__FILE__), 'gnu_passwd')
|
36
36
|
@fake_capture3 = FakeCapture3.new(gnu_passwd_dir)
|
37
|
-
@create_message = ->(group) { "INFO: create group: '#{group}'\n" }
|
38
|
-
@create_message_dry = lambda do |group|
|
39
|
-
"INFO: (would) create group: '#{group}'\n"
|
40
|
-
end
|
41
|
-
@create_message_debug = lambda do |group|
|
42
|
-
"DEBUG: group already created: '#{group}'\n"
|
43
|
-
end
|
44
|
-
@remove_message = ->(group) { "INFO: remove group: '#{group}'\n" }
|
45
|
-
@remove_message_dry = lambda do |group|
|
46
|
-
"INFO: (would) remove group: '#{group}'\n"
|
47
|
-
end
|
48
|
-
@remove_message_debug = lambda do |group|
|
49
|
-
"DEBUG: group already removed: '#{group}'\n"
|
50
|
-
end
|
51
37
|
@groups = { 'foobar' => { gid: 42, mem: %w(foo bar) },
|
52
38
|
'bazqux' => { gid: 43, mem: %w(baz qux) } }
|
53
39
|
FakeEtc.add_groups(@groups)
|
54
40
|
end
|
55
41
|
|
56
|
-
describe '#
|
42
|
+
describe '#create_group' do
|
43
|
+
before(:each) do
|
44
|
+
Wright::Provider::Group::GnuPasswd.send(:public, :create_group)
|
45
|
+
end
|
46
|
+
|
47
|
+
after(:each) do
|
48
|
+
Wright::Provider::Group::GnuPasswd.send(:private, :create_group)
|
49
|
+
end
|
50
|
+
|
57
51
|
it 'should create new groups' do
|
58
52
|
gid = 1234
|
59
53
|
group_name = 'newgroup'
|
@@ -63,11 +57,7 @@ describe Wright::Provider::Group::GnuPasswd do
|
|
63
57
|
@fake_capture3.expect(groupadd_cmd)
|
64
58
|
@fake_capture3.stub do
|
65
59
|
FakeEtc do
|
66
|
-
|
67
|
-
reset_logger
|
68
|
-
group_provider.create
|
69
|
-
group_provider.updated?.must_equal true
|
70
|
-
end.must_output @create_message.call(group_name)
|
60
|
+
group_provider.create_group
|
71
61
|
end
|
72
62
|
end
|
73
63
|
end
|
@@ -83,28 +73,7 @@ describe Wright::Provider::Group::GnuPasswd do
|
|
83
73
|
@fake_capture3.expect(groupadd_cmd)
|
84
74
|
@fake_capture3.stub do
|
85
75
|
FakeEtc do
|
86
|
-
|
87
|
-
reset_logger
|
88
|
-
group_provider.create
|
89
|
-
group_provider.updated?.must_equal true
|
90
|
-
end.must_output @create_message.call(group_name)
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
it 'should not try to create existing groups' do
|
96
|
-
group_name = 'foobar'
|
97
|
-
gid = @groups[group_name][:gid]
|
98
|
-
members = @groups[group_name][:mem]
|
99
|
-
group_provider = group_provider(group_name, gid, members)
|
100
|
-
|
101
|
-
@fake_capture3.stub do
|
102
|
-
FakeEtc do
|
103
|
-
lambda do
|
104
|
-
reset_logger
|
105
|
-
group_provider.create
|
106
|
-
group_provider.updated?.must_equal false
|
107
|
-
end.must_output @create_message_debug.call(group_name)
|
76
|
+
group_provider.create_group
|
108
77
|
end
|
109
78
|
end
|
110
79
|
end
|
@@ -119,11 +88,7 @@ describe Wright::Provider::Group::GnuPasswd do
|
|
119
88
|
@fake_capture3.expect(gpasswd_cmd)
|
120
89
|
@fake_capture3.stub do
|
121
90
|
FakeEtc do
|
122
|
-
|
123
|
-
reset_logger
|
124
|
-
group_provider.create
|
125
|
-
group_provider.updated?.must_equal true
|
126
|
-
end.must_output @create_message.call(group_name)
|
91
|
+
group_provider.create
|
127
92
|
end
|
128
93
|
end
|
129
94
|
end
|
@@ -138,11 +103,7 @@ describe Wright::Provider::Group::GnuPasswd do
|
|
138
103
|
@fake_capture3.expect(gpasswd_cmd)
|
139
104
|
@fake_capture3.stub do
|
140
105
|
FakeEtc do
|
141
|
-
|
142
|
-
reset_logger
|
143
|
-
group_provider.create
|
144
|
-
group_provider.updated?.must_equal true
|
145
|
-
end.must_output @create_message.call(group_name)
|
106
|
+
group_provider.create
|
146
107
|
end
|
147
108
|
end
|
148
109
|
end
|
@@ -156,11 +117,7 @@ describe Wright::Provider::Group::GnuPasswd do
|
|
156
117
|
@fake_capture3.expect(groupmod_cmd)
|
157
118
|
@fake_capture3.stub do
|
158
119
|
FakeEtc do
|
159
|
-
|
160
|
-
reset_logger
|
161
|
-
group_provider.create
|
162
|
-
group_provider.updated?.must_equal true
|
163
|
-
end.must_output @create_message.call(group_name)
|
120
|
+
group_provider.create
|
164
121
|
end
|
165
122
|
end
|
166
123
|
end
|
@@ -218,6 +175,26 @@ describe Wright::Provider::Group::GnuPasswd do
|
|
218
175
|
end
|
219
176
|
end
|
220
177
|
|
178
|
+
describe '#set_gid' do
|
179
|
+
before(:each) do
|
180
|
+
Wright::Provider::Group::GnuPasswd.send(:public, :set_gid)
|
181
|
+
end
|
182
|
+
|
183
|
+
after(:each) do
|
184
|
+
Wright::Provider::Group::GnuPasswd.send(:private, :set_gid)
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
describe '#set_members' do
|
189
|
+
before(:each) do
|
190
|
+
Wright::Provider::Group::GnuPasswd.send(:public, :set_members)
|
191
|
+
end
|
192
|
+
|
193
|
+
after(:each) do
|
194
|
+
Wright::Provider::Group::GnuPasswd.send(:private, :set_members)
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
221
198
|
describe '#remove' do
|
222
199
|
it 'should remove existing groups' do
|
223
200
|
group_name = 'foobar'
|
@@ -227,26 +204,7 @@ describe Wright::Provider::Group::GnuPasswd do
|
|
227
204
|
@fake_capture3.expect(groupdel_cmd)
|
228
205
|
@fake_capture3.stub do
|
229
206
|
FakeEtc do
|
230
|
-
|
231
|
-
reset_logger
|
232
|
-
group_provider.remove
|
233
|
-
group_provider.updated?.must_equal true
|
234
|
-
end.must_output @remove_message.call(group_name)
|
235
|
-
end
|
236
|
-
end
|
237
|
-
end
|
238
|
-
|
239
|
-
it 'should not try to remove groups that are already removed' do
|
240
|
-
group_name = 'not-a-group'
|
241
|
-
group_provider = group_provider(group_name)
|
242
|
-
|
243
|
-
@fake_capture3.stub do
|
244
|
-
FakeEtc do
|
245
|
-
lambda do
|
246
|
-
reset_logger
|
247
|
-
group_provider.remove
|
248
|
-
group_provider.updated?.must_equal false
|
249
|
-
end.must_output @remove_message_debug.call(group_name)
|
207
|
+
group_provider.remove
|
250
208
|
end
|
251
209
|
end
|
252
210
|
end
|
@@ -268,115 +226,4 @@ describe Wright::Provider::Group::GnuPasswd do
|
|
268
226
|
end
|
269
227
|
end
|
270
228
|
end
|
271
|
-
|
272
|
-
describe 'dry_run' do
|
273
|
-
it 'should not actually create new groups' do
|
274
|
-
gid = 1234
|
275
|
-
group_name = 'newgroup'
|
276
|
-
group_provider = group_provider(group_name, gid)
|
277
|
-
|
278
|
-
@fake_capture3.stub do
|
279
|
-
Wright.dry_run do
|
280
|
-
FakeEtc do
|
281
|
-
lambda do
|
282
|
-
reset_logger
|
283
|
-
group_provider.create
|
284
|
-
group_provider.updated?.must_equal true
|
285
|
-
end.must_output @create_message_dry.call(group_name)
|
286
|
-
end
|
287
|
-
end
|
288
|
-
end
|
289
|
-
end
|
290
|
-
|
291
|
-
it 'should not actually update existing groups' do
|
292
|
-
gid = 1234
|
293
|
-
group_name = 'foobar'
|
294
|
-
members = %w(user1 user2)
|
295
|
-
group_provider = group_provider(group_name, gid, members)
|
296
|
-
|
297
|
-
@fake_capture3.stub do
|
298
|
-
Wright.dry_run do
|
299
|
-
FakeEtc do
|
300
|
-
lambda do
|
301
|
-
reset_logger
|
302
|
-
group_provider.create
|
303
|
-
group_provider.updated?.must_equal true
|
304
|
-
end.must_output @create_message_dry.call(group_name)
|
305
|
-
end
|
306
|
-
end
|
307
|
-
end
|
308
|
-
end
|
309
|
-
|
310
|
-
it 'should not try to create existing groups' do
|
311
|
-
group_name = 'foobar'
|
312
|
-
gid = @groups[group_name][:gid]
|
313
|
-
members = @groups[group_name][:mem]
|
314
|
-
group_provider = group_provider(group_name, gid, members)
|
315
|
-
|
316
|
-
@fake_capture3.stub do
|
317
|
-
Wright.dry_run do
|
318
|
-
FakeEtc do
|
319
|
-
lambda do
|
320
|
-
reset_logger
|
321
|
-
group_provider.create
|
322
|
-
group_provider.updated?.must_equal false
|
323
|
-
end.must_output @create_message_debug.call(group_name)
|
324
|
-
end
|
325
|
-
end
|
326
|
-
end
|
327
|
-
end
|
328
|
-
|
329
|
-
it 'should not actually update existing groups' do
|
330
|
-
group_name = 'foobar'
|
331
|
-
gid = @groups[group_name][:gid] + 10
|
332
|
-
members = %w(user1 user2)
|
333
|
-
group_provider = group_provider(group_name, gid, members)
|
334
|
-
|
335
|
-
@fake_capture3.stub do
|
336
|
-
Wright.dry_run do
|
337
|
-
FakeEtc do
|
338
|
-
lambda do
|
339
|
-
reset_logger
|
340
|
-
group_provider.create
|
341
|
-
group_provider.updated?.must_equal true
|
342
|
-
end.must_output @create_message_dry.call(group_name)
|
343
|
-
end
|
344
|
-
end
|
345
|
-
end
|
346
|
-
end
|
347
|
-
|
348
|
-
it 'should not actually remove groups' do
|
349
|
-
group_name = 'foobar'
|
350
|
-
group_provider = group_provider(group_name)
|
351
|
-
|
352
|
-
@fake_capture3.stub do
|
353
|
-
Wright.dry_run do
|
354
|
-
FakeEtc do
|
355
|
-
lambda do
|
356
|
-
reset_logger
|
357
|
-
group_provider.remove
|
358
|
-
group_provider.updated?.must_equal true
|
359
|
-
end.must_output @remove_message_dry.call(group_name)
|
360
|
-
end
|
361
|
-
end
|
362
|
-
end
|
363
|
-
end
|
364
|
-
|
365
|
-
it 'should not try to remove groups that are already removed' do
|
366
|
-
group_name = 'not-a-group'
|
367
|
-
group_provider = group_provider(group_name)
|
368
|
-
|
369
|
-
@fake_capture3.stub do
|
370
|
-
Wright.dry_run do
|
371
|
-
FakeEtc do
|
372
|
-
lambda do
|
373
|
-
reset_logger
|
374
|
-
group_provider.remove
|
375
|
-
group_provider.updated?.must_equal false
|
376
|
-
end.must_output @remove_message_debug.call(group_name)
|
377
|
-
end
|
378
|
-
end
|
379
|
-
end
|
380
|
-
end
|
381
|
-
end
|
382
229
|
end
|