sys-admin 1.5.3-x86-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/sys-admin.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ require 'rubygems'
2
+
3
+ # Do not use this file directly. Build the gem via the Rake tasks.
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = 'sys-admin'
7
+ spec.version = '1.5.3'
8
+ spec.author = 'Daniel J. Berger'
9
+ spec.license = 'Artistic 2.0'
10
+ spec.email = 'djberg96@gmail.com'
11
+ spec.homepage = 'http://www.github.com/djberg96/sysutils'
12
+ spec.summary = 'A unified, cross platform replacement for the "etc" library.'
13
+ spec.test_file = 'test/test_sys_admin.rb'
14
+ spec.files = Dir['**/*'].reject{ |f| f.include?('git') }
15
+
16
+ spec.extra_rdoc_files = ['CHANGES', 'README', 'MANIFEST']
17
+ spec.rubyforge_project = 'sysutils'
18
+
19
+ spec.add_development_dependency('test-unit', '>= 2.1.1')
20
+
21
+ spec.description = <<-EOF
22
+ The sys-admin library is a unified, cross platform replacement for the
23
+ 'etc' library that ships as part of the Ruby standard library. It
24
+ provides a common interface for all platforms, including MS Windows. In
25
+ addition, it provides an interface for adding, deleting and configuring
26
+ users on MS Windows.
27
+ EOF
28
+ end
@@ -0,0 +1,21 @@
1
+ ###############################################################################
2
+ # test_sys_admin.rb
3
+ #
4
+ # This exists mostly for the sake of the gemspec, so that it calls the right
5
+ # test suite based on the platform.
6
+ ###############################################################################
7
+ require 'rubygems'
8
+ gem 'test-unit'
9
+ require 'test/unit'
10
+
11
+ if File::ALT_SEPARATOR
12
+ require 'test_sys_admin_windows'
13
+ else
14
+ require 'test_sys_admin_unix'
15
+ end
16
+
17
+ class TC_Sys_Admin_All < Test::Unit::TestCase
18
+ def test_version
19
+ assert_equal('1.5.3', Sys::Admin::VERSION)
20
+ end
21
+ end
@@ -0,0 +1,245 @@
1
+ ###############################################################################
2
+ # test_sys_admin_unix.rb
3
+ #
4
+ # Test suite for the Unix version of sys-admin. This test should be run
5
+ # via the 'rake test' task.
6
+ ###############################################################################
7
+ require 'test/unit'
8
+ require 'sys/admin'
9
+ include Sys
10
+
11
+ class TC_Sys_Admin_Unix < Test::Unit::TestCase
12
+ def setup
13
+ @user = 'nobody'
14
+ @user_id = 0
15
+ @group = 'sys'
16
+ @group_id = 3
17
+ end
18
+
19
+ ## Admin singleton methods
20
+
21
+ def test_get_login
22
+ assert_respond_to(Admin, :get_login)
23
+ assert_nothing_raised{ Admin.get_login }
24
+ assert_kind_of(String, Admin.get_login)
25
+ end
26
+
27
+ def test_get_user_basic
28
+ assert_respond_to(Admin, :get_user)
29
+ assert_nothing_raised{ Admin.get_user(@user) }
30
+ assert_nothing_raised{ Admin.get_user(@user_id) }
31
+ end
32
+
33
+ def test_get_user_by_name
34
+ assert_kind_of(User, Admin.get_user(@user))
35
+ end
36
+
37
+ def test_get_user_by_id
38
+ assert_kind_of(User, Admin.get_user(@user_id))
39
+ end
40
+
41
+ def test_get_user_expected_errors
42
+ assert_raise(ArgumentError){ Admin.get_user }
43
+ assert_raise(TypeError){ Admin.get_user([]) }
44
+ assert_raise(Admin::Error){ Admin.get_user('foofoofoo') }
45
+ end
46
+
47
+ def test_users_basic
48
+ assert_respond_to(Admin, :users)
49
+ assert_nothing_raised{ Admin.users }
50
+ end
51
+
52
+ def test_users
53
+ assert_kind_of(Array, Admin.users)
54
+ assert_kind_of(User, Admin.users.first)
55
+ end
56
+
57
+ def test_users_block_form
58
+ array = []
59
+ assert_nothing_raised{ Admin.users{ |g| array << g } }
60
+ assert_equal(true, Admin.users.length == array.length)
61
+ assert_nothing_raised{ Admin.users{ |g| break } }
62
+ end
63
+
64
+ def test_users_expected_errors
65
+ assert_raise(ArgumentError){ Admin.users(@user_id) }
66
+ end
67
+
68
+ def test_get_group_basic
69
+ assert_respond_to(Admin, :get_group)
70
+ assert_nothing_raised{ Admin.get_group(@group) }
71
+ assert_nothing_raised{ Admin.get_group(@group_id) }
72
+ end
73
+
74
+ def test_get_group_by_name
75
+ assert_kind_of(Group, Admin.get_group(@group))
76
+ end
77
+
78
+ def test_get_group_by_id
79
+ assert_kind_of(Group, Admin.get_group(@group_id))
80
+ end
81
+
82
+ def test_get_group_expected_errors
83
+ assert_raise(ArgumentError){ Admin.get_group }
84
+ assert_raise(TypeError){ Admin.get_group([]) }
85
+ assert_raise(Admin::Error){ Admin.get_group('foofoofoo') }
86
+ end
87
+
88
+ def test_groups_basic
89
+ assert_respond_to(Admin, :groups)
90
+ assert_nothing_raised{ Admin.groups }
91
+ end
92
+
93
+ def test_groups
94
+ assert_kind_of(Array, Admin.groups)
95
+ assert_kind_of(Group, Admin.groups.first)
96
+ end
97
+
98
+ def test_groups_expected_errors
99
+ assert_raise(ArgumentError){ Admin.groups(@group_id) }
100
+ end
101
+
102
+ def test_groups_block_form
103
+ array = []
104
+ assert_nothing_raised{ Admin.groups{ |g| array << g } }
105
+ assert_equal(true, Admin.groups.length == array.length)
106
+ assert_nothing_raised{ Admin.groups{ |g| break } }
107
+ end
108
+
109
+ ## User Tests
110
+
111
+ def test_user_name
112
+ @user = Admin.users.first
113
+ assert_respond_to(@user, :name)
114
+ assert_kind_of(String, @user.name)
115
+ end
116
+
117
+ def test_user_passwd
118
+ @user = Admin.users.first
119
+ assert_respond_to(@user, :passwd)
120
+ assert_kind_of(String, @user.passwd)
121
+ end
122
+
123
+ def test_user_uid
124
+ @user = Admin.users.first
125
+ assert_respond_to(@user, :uid)
126
+ assert_kind_of(Fixnum, @user.uid)
127
+ end
128
+
129
+ def test_user_gid
130
+ @user = Admin.users.first
131
+ assert_respond_to(@user, :gid)
132
+ assert_kind_of(Fixnum, @user.gid)
133
+ end
134
+
135
+ def test_user_dir
136
+ @user = Admin.users.first
137
+ assert_respond_to(@user, :dir)
138
+ assert_kind_of(String, @user.dir)
139
+ end
140
+
141
+ def test_user_shell
142
+ @user = Admin.users.first
143
+ assert_respond_to(@user, :shell)
144
+ assert_kind_of(String, @user.shell)
145
+ end
146
+
147
+ def test_user_gecos
148
+ @user = Admin.users.first
149
+ assert_respond_to(@user, :gecos)
150
+ assert_kind_of(String, @user.gecos)
151
+ end
152
+
153
+ def test_user_quota
154
+ @user = Admin.users.first
155
+ assert_respond_to(@user, :quota)
156
+ assert_true([Fixnum, NilClass].include?(@user.quota.class))
157
+ end
158
+
159
+ def test_user_age
160
+ @user = Admin.users.first
161
+ assert_respond_to(@user, :age)
162
+ assert_true([Fixnum, NilClass].include?(@user.age.class))
163
+ end
164
+
165
+ def test_user_access_class
166
+ @user = Admin.users.first
167
+ assert_respond_to(@user, :access_class)
168
+ assert_true([String, NilClass].include?(@user.access_class.class))
169
+ end
170
+
171
+ def test_user_comment
172
+ @user = Admin.users.first
173
+ assert_respond_to(@user, :comment)
174
+ assert_true([String, NilClass].include?(@user.comment.class))
175
+ end
176
+
177
+ def test_user_expire
178
+ @user = Admin.users.first
179
+ assert_respond_to(@user, :expire)
180
+ assert_true([Time, NilClass].include?(@user.expire.class))
181
+ end
182
+
183
+ def test_user_change
184
+ @user = Admin.users.first
185
+ assert_respond_to(@user, :change)
186
+ assert_true([Time, NilClass].include?(@user.change.class))
187
+ end
188
+
189
+ def test_user_login_time
190
+ @user = Admin.users.first
191
+ assert_respond_to(@user, :login_time)
192
+ assert_true([Time, NilClass].include?(@user.login_time.class))
193
+ end
194
+
195
+ def test_user_login_device
196
+ @user = Admin.users.first
197
+ assert_respond_to(@user, :login_device)
198
+ assert_true([String, NilClass].include?(@user.login_device.class))
199
+ end
200
+
201
+ def test_user_login_host
202
+ @user = Admin.users.first
203
+ assert_respond_to(@user, :login_host)
204
+ assert_true([String, NilClass].include?(@user.login_host.class))
205
+ end
206
+
207
+ def test_user_groups
208
+ @user = Admin.users.first
209
+ assert_respond_to(@user, :groups)
210
+ assert_kind_of(Array, @user.groups)
211
+ end
212
+
213
+ ## Group Tests
214
+
215
+ def test_group_name
216
+ @group = Admin.groups.first
217
+ assert_respond_to(@group, :name)
218
+ assert_kind_of(String, @group.name)
219
+ end
220
+
221
+ def test_group_gid
222
+ @group = Admin.groups.first
223
+ assert_respond_to(@group, :gid)
224
+ assert_kind_of(Fixnum, @group.gid)
225
+ end
226
+
227
+ def test_group_members
228
+ @group = Admin.groups.first
229
+ assert_respond_to(@group, :members)
230
+ assert_kind_of(Array, @group.members)
231
+ end
232
+
233
+ def test_group_passwd
234
+ @group = Admin.groups.first
235
+ assert_respond_to(@group, :passwd)
236
+ assert_kind_of(String, @group.passwd)
237
+ end
238
+
239
+ def teardown
240
+ @user = nil
241
+ @user_id = nil
242
+ @group = nil
243
+ @group_id = nil
244
+ end
245
+ end
@@ -0,0 +1,333 @@
1
+ ###############################################################################
2
+ # test_sys_admin_windows.rb
3
+ #
4
+ # Test suite for the Win32 version of sys-admin. Note that some of the tests
5
+ # are numbered to ensure a certain order. That way I can add test users
6
+ # before configuring or deleting them.
7
+ #
8
+ # It is assumed that this test will be run via the 'rake test' task.
9
+ ###############################################################################
10
+ require 'rubygems'
11
+ gem 'test-unit'
12
+
13
+ require 'test/unit'
14
+ require 'sys/admin'
15
+ require 'socket'
16
+ include Sys
17
+
18
+ class TC_Sys_Admin_Win32 < Test::Unit::TestCase
19
+ def self.startup
20
+ @@host = Socket.gethostname
21
+ end
22
+
23
+ def setup
24
+ @user = User.new
25
+ @user_name = 'Guest'
26
+ @user_id = 501 # best guess, may fail
27
+ @group = Group.new
28
+ @group_name = 'Guests'
29
+ @group_id = 546 # best guess, may fail
30
+ end
31
+
32
+ # Admin singleton methods
33
+
34
+ def test_01_add_user
35
+ assert_respond_to(Admin, :add_user)
36
+ assert_nothing_raised{
37
+ Admin.add_user(:name => 'foo', :password => 'a1b2c3D4')
38
+ }
39
+ end
40
+
41
+ def test_02_config_user
42
+ assert_respond_to(Admin, :configure_user)
43
+ assert_nothing_raised{
44
+ Admin.configure_user(
45
+ :name => 'foo',
46
+ :description => 'delete me',
47
+ :fullname => 'fubar',
48
+ :password => ['a1b2c3D4', 'd1c2b3A4']
49
+ )
50
+ }
51
+ end
52
+
53
+ def test_03_delete_user
54
+ assert_respond_to(Admin, :delete_user)
55
+ assert_nothing_raised{ Admin.delete_user('foo') }
56
+ end
57
+
58
+ def test_01_add_group
59
+ assert_respond_to(Admin, :add_group)
60
+ assert_nothing_raised{ Admin.add_group(:name => 'bar') }
61
+ end
62
+
63
+ def test_02_configure_group
64
+ assert_respond_to(Admin, :configure_group)
65
+ assert_nothing_raised{
66
+ Admin.configure_group(:name => 'bar', :description => 'delete me')
67
+ }
68
+ end
69
+
70
+ def test_03_delete_group
71
+ assert_respond_to(Admin, :delete_group)
72
+ assert_nothing_raised{ Admin.delete_group('bar') }
73
+ end
74
+
75
+ def test_get_login_basic
76
+ assert_respond_to(Admin, :get_login)
77
+ assert_nothing_raised{ Admin.get_login }
78
+ end
79
+
80
+ def test_get_login
81
+ assert_kind_of(String, Admin.get_login)
82
+ end
83
+
84
+ def test_get_login_expected_errors
85
+ assert_raise(ArgumentError){ Admin.get_login('foo') }
86
+ end
87
+
88
+ def test_get_user_basic
89
+ assert_respond_to(Admin, :get_user)
90
+ end
91
+
92
+ def test_get_user_by_string
93
+ assert_nothing_raised{ Admin.get_user(@user_name, :localaccount => true) }
94
+ assert_kind_of(User, Admin.get_user(@user_name, :localaccount => true))
95
+ end
96
+
97
+ def test_get_user_by_uid
98
+ assert_nothing_raised{ Admin.get_user(@user_id, :localaccount => true) }
99
+ assert_kind_of(User, Admin.get_user(@user_id, :localaccount => true))
100
+ end
101
+
102
+ def test_get_user_by_string_with_options
103
+ options = {:host => @@host, :localaccount => true}
104
+ assert_nothing_raised{ Admin.get_user(@user_name, options) }
105
+ assert_kind_of(User, Admin.get_user(@user_name, options))
106
+ end
107
+
108
+ def test_get_user_by_uid_with_options
109
+ options = {:host => @@host, :localaccount => true}
110
+ assert_nothing_raised{ Admin.get_user(@user_id, options) }
111
+ assert_kind_of(User, Admin.get_user(@user_id, options))
112
+ end
113
+
114
+ def test_get_user_expected_errors
115
+ assert_raises(ArgumentError){ Admin.get_user }
116
+ end
117
+
118
+ def test_users_basic
119
+ assert_respond_to(Admin, :users)
120
+ assert_nothing_raised{ Admin.users(:localaccount => true) }
121
+ end
122
+
123
+ def test_users
124
+ assert_kind_of(Array, Admin.users(:localaccount => true))
125
+ assert_kind_of(User, Admin.users(:localaccount => true).first)
126
+ end
127
+
128
+ def test_users_with_block
129
+ array = []
130
+ assert_nothing_raised{
131
+ Admin.users(:localaccount => true){ |u| array << u }
132
+ }
133
+ assert_kind_of(User, array[0])
134
+ end
135
+
136
+ def test_get_group_basic
137
+ assert_respond_to(Admin, :get_group)
138
+ end
139
+
140
+ def test_get_group_by_name
141
+ assert_nothing_raised{ Admin.get_group(@group_name, :localaccount => true) }
142
+ assert_kind_of(Group, Admin.get_group(@group_name, :localaccount => true))
143
+ end
144
+
145
+ def test_get_group_by_gid
146
+ assert_nothing_raised{ Admin.get_group(@group_id, :localaccount => true) }
147
+ assert_kind_of(Group, Admin.get_group(@group_id, :localaccount => true))
148
+ end
149
+
150
+ def test_get_group_with_options
151
+ assert_nothing_raised{ Admin.get_group(@group_name, :localaccount => true) }
152
+ assert_kind_of(Group, Admin.get_group(@group_name, :localaccount => true))
153
+ end
154
+
155
+ def test_get_group_expected_errors
156
+ assert_raise(ArgumentError){ Admin.get_group }
157
+ end
158
+
159
+ def test_groups_basic
160
+ assert_respond_to(Admin, :groups)
161
+ assert_nothing_raised{ Admin.groups(:localaccount => true) }
162
+ end
163
+
164
+ def test_groups
165
+ assert_kind_of(Array, Admin.groups(:localaccount => true))
166
+ assert_kind_of(Group, Admin.groups(:localaccount => true).first)
167
+ end
168
+
169
+ def test_groups_with_block
170
+ array = []
171
+ assert_nothing_raised{
172
+ Admin.groups(:localaccount => true){ |g| array << g }
173
+ }
174
+ assert_kind_of(Group, array[0])
175
+ end
176
+
177
+ # User class
178
+
179
+ def test_user_instance_caption
180
+ assert_respond_to(@user, :caption)
181
+ assert_respond_to(@user, :caption=)
182
+ end
183
+
184
+ def test_user_instance_description
185
+ assert_respond_to(@user, :description)
186
+ assert_respond_to(@user, :description=)
187
+ end
188
+
189
+ def test_user_instance_domain
190
+ assert_respond_to(@user, :domain)
191
+ assert_respond_to(@user, :domain=)
192
+ end
193
+
194
+ def test_user_instance_password
195
+ assert_respond_to(@user, :password)
196
+ assert_respond_to(@user, :password=)
197
+ end
198
+
199
+ def test_user_instance_full_name
200
+ assert_respond_to(@user, :full_name)
201
+ assert_respond_to(@user, :full_name=)
202
+ end
203
+
204
+ def test_user_instance_name
205
+ assert_respond_to(@user, :name)
206
+ assert_respond_to(@user, :name=)
207
+ end
208
+
209
+ def test_user_instance_sid
210
+ assert_respond_to(@user, :sid)
211
+ assert_respond_to(@user, :sid=)
212
+ end
213
+
214
+ def test_user_instance_status
215
+ assert_respond_to(@user, :status)
216
+ assert_respond_to(@user, :status=)
217
+ end
218
+
219
+ def test_user_instance_disabled
220
+ assert_respond_to(@user, :disabled?)
221
+ assert_respond_to(@user, :disabled=)
222
+ end
223
+
224
+ def test_user_instance_local
225
+ assert_respond_to(@user, :local?)
226
+ assert_respond_to(@user, :local=)
227
+ end
228
+
229
+ def test_user_instance_lockout
230
+ assert_respond_to(@user, :lockout?)
231
+ assert_respond_to(@user, :lockout=)
232
+ end
233
+
234
+ def test_user_instance_password_changeable
235
+ assert_respond_to(@user, :password_changeable?)
236
+ assert_respond_to(@user, :password_changeable=)
237
+ end
238
+
239
+ def test_user_instance_password_expires
240
+ assert_respond_to(@user, :password_expires?)
241
+ assert_respond_to(@user, :password_expires=)
242
+ end
243
+
244
+ def test_user_instance_password_required
245
+ assert_respond_to(@user, :password_required?)
246
+ assert_respond_to(@user, :password_required=)
247
+ end
248
+
249
+ def test_user_instance_account_type
250
+ assert_respond_to(@user, :account_type)
251
+ assert_respond_to(@user, :account_type=)
252
+ end
253
+
254
+ def test_user_instance_uid
255
+ assert_respond_to(@user, :uid)
256
+ assert_respond_to(@user, :uid=)
257
+ end
258
+
259
+ def test_user_dir_basic
260
+ assert_respond_to(@user, :dir)
261
+ assert_respond_to(@user, :dir=)
262
+ end
263
+
264
+ def test_user_dir
265
+ assert_nothing_raised{ @user = Admin.get_user(@user_name, :localaccount => true) }
266
+ assert_kind_of([String, NilClass], @user.dir)
267
+ end
268
+
269
+ # Group class
270
+
271
+ def test_group_instance_caption
272
+ assert_respond_to(@group, :caption)
273
+ assert_respond_to(@group, :caption=)
274
+ end
275
+
276
+ def test_group_instance_description
277
+ assert_respond_to(@group, :description)
278
+ assert_respond_to(@group, :description=)
279
+ end
280
+
281
+ def test_group_instance_domain
282
+ assert_respond_to(@group, :domain)
283
+ assert_respond_to(@group, :domain=)
284
+ end
285
+
286
+ def test_group_instance_install_date
287
+ assert_respond_to(@group, :install_date)
288
+ assert_respond_to(@group, :install_date=)
289
+ end
290
+
291
+ def test_group_instance_name
292
+ assert_respond_to(@group, :name)
293
+ assert_respond_to(@group, :name)
294
+ end
295
+
296
+ def test_group_instance_gid
297
+ assert_respond_to(@group, :gid)
298
+ assert_respond_to(@group, :gid=)
299
+ end
300
+
301
+ def test_group_instance_status
302
+ assert_respond_to(@group, :status)
303
+ assert_respond_to(@group, :status=)
304
+ end
305
+
306
+ def test_group_instance_sid
307
+ assert_respond_to(@group, :sid)
308
+ assert_respond_to(@group, :sid=)
309
+ end
310
+
311
+ def test_group_instance_sid_type
312
+ assert_respond_to(@group, :sid_type)
313
+ assert_respond_to(@group, :sid_type=)
314
+ end
315
+
316
+ def test_group_instance_local
317
+ assert_respond_to(@group, :local?)
318
+ assert_respond_to(@group, :local=)
319
+ end
320
+
321
+ def teardown
322
+ @user = nil
323
+ @user_name = nil
324
+ @user_id = nil
325
+ @group = nil
326
+ @group_name = nil
327
+ @group_id = nil
328
+ end
329
+
330
+ def self.shutdown
331
+ @@host = nil
332
+ end
333
+ end