wright 0.3.2 → 0.4.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/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
|