radum 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +22 -0
- data/lib/radum.rb +10 -0
- data/lib/radum/ad.rb +3355 -0
- data/lib/radum/container.rb +367 -0
- data/lib/radum/group.rb +455 -0
- data/lib/radum/logger.rb +67 -0
- data/lib/radum/user.rb +1087 -0
- data/test/tc_ad.rb +220 -0
- data/test/tc_container.rb +205 -0
- data/test/tc_group.rb +161 -0
- data/test/tc_unix_user.rb +98 -0
- data/test/tc_user.rb +175 -0
- metadata +91 -0
data/test/tc_ad.rb
ADDED
@@ -0,0 +1,220 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'radum'
|
3
|
+
|
4
|
+
# This tests the AD class.
|
5
|
+
class TC_Ad < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@ad1a = RADUM::AD.new :root => "dc=vmware,dc=local", :password => "test1a"
|
8
|
+
@ad1b = RADUM::AD.new :root => "dc=vmware, dc=local", :password => "test1b"
|
9
|
+
@ad1c = RADUM::AD.new :root => "DC=VMWARE,DC=LOCAL", :password => "test1c"
|
10
|
+
@ad2 = RADUM::AD.new :root => "dc=vmware,dc=com", :password => "test2"
|
11
|
+
@c1_ad1a = RADUM::Container.new :name => "ou=People", :directory => @ad1a
|
12
|
+
@c2_ad2 = RADUM::Container.new :name => "ou=Staff,ou=People",
|
13
|
+
:directory => @ad2
|
14
|
+
# These objects are to test AD#remove_container and AD#destroy_container.
|
15
|
+
@rm_cn1 = RADUM::Container.new :name => "ou=rm", :directory => @ad1a
|
16
|
+
@rm_cn2 = RADUM::Container.new :name => "ou=no", :directory => @ad1a
|
17
|
+
@rm_wg1 = RADUM::Group.new :name => "wg1", :container => @rm_cn1
|
18
|
+
@rm_wg2 = RADUM::Group.new :name => "wg2", :container => @rm_cn2
|
19
|
+
@rm_wg2.add_group @rm_wg1
|
20
|
+
@rm_wg3 = RADUM::Group.new :name => "wg3", :container => @rm_cn2
|
21
|
+
@rm_ug1 = RADUM::UNIXGroup.new :name => "ug1", :container => @rm_cn1,
|
22
|
+
:gid => 1000
|
23
|
+
@rm_ug2 = RADUM::UNIXGroup.new :name => "ug2", :container => @rm_cn2,
|
24
|
+
:gid => 1001
|
25
|
+
@rm_ug3 = RADUM::UNIXGroup.new :name => "ug3", :container => @rm_cn2,
|
26
|
+
:gid => 1002
|
27
|
+
@rm_wu1 = RADUM::User.new :username => "wu1", :container => @rm_cn1,
|
28
|
+
:primary_group => @rm_wg2
|
29
|
+
@rm_wu1.add_group @rm_wg1
|
30
|
+
@rm_wu1.add_group @rm_wg3
|
31
|
+
@rm_wu2 = RADUM::User.new :username => "wu2", :container => @rm_cn2,
|
32
|
+
:primary_group => @rm_wg2
|
33
|
+
@rm_wu2.add_group @rm_wg1
|
34
|
+
@rm_wu2.add_group @rm_wg3
|
35
|
+
@rm_uu1 = RADUM::UNIXUser.new :username => "uu1", :container => @rm_cn1,
|
36
|
+
:primary_group => @rm_ug3, :uid => 1000,
|
37
|
+
:unix_main_group => @rm_ug2,
|
38
|
+
:shell => '/bin/bash',
|
39
|
+
:home_directory => '/home/uu1'
|
40
|
+
@rm_uu2 = RADUM::UNIXUser.new :username => "uu2", :container => @rm_cn2,
|
41
|
+
:primary_group => @rm_wg2, :uid => 1001,
|
42
|
+
:unix_main_group => @rm_ug2,
|
43
|
+
:shell => '/bin/bash',
|
44
|
+
:home_directory => '/home/uu2'
|
45
|
+
@rm_uu2.add_group @rm_wg1
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_equal
|
49
|
+
assert(@ad1a == @ad1a, "Should be equal")
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_equal_domain
|
53
|
+
assert(@ad1a.domain == @ad1c.domain, "Should be equal domain attribute")
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_not_equal
|
57
|
+
assert(@ad1a != @ad2, "Should not be equal")
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_add_container_different_directory_exception
|
61
|
+
assert_raise RuntimeError do
|
62
|
+
@ad1a.add_container @c2_ad2
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_add_container
|
67
|
+
assert_block("Should have added exactly one container") do
|
68
|
+
# Containers add themselves to directories on initialization, so this
|
69
|
+
# would be an attempt to add a second time. We want to be totally certain,
|
70
|
+
# so the add is done a third time anyway. Note that the cn=Users container
|
71
|
+
# is added automatically and we did add a second and third one in testing
|
72
|
+
# initialization, so the count should be 4.
|
73
|
+
@ad1a.add_container @c1_ad1a
|
74
|
+
@ad1a.add_container @c1_ad1a
|
75
|
+
@ad1a.containers.length == 4
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def test_remove_container_ad_removed_flag_set
|
80
|
+
assert_block("Should have set removed container ad_removed flag") do
|
81
|
+
@ad1a.remove_container @c1_ad1a
|
82
|
+
@c1_ad1a.removed? == true
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_remove_container_false
|
87
|
+
# We don't want to see the actual warning messages.
|
88
|
+
RADUM::logger.default_level = RADUM::LOG_NONE
|
89
|
+
assert(@ad1a.remove_container(@rm_cn2) == false,
|
90
|
+
"Should not have removed container")
|
91
|
+
end
|
92
|
+
|
93
|
+
def test_remove_container_effects
|
94
|
+
rm_cn1_users = @rm_cn1.users.clone
|
95
|
+
rm_cn1_groups = @rm_cn1.groups.clone
|
96
|
+
assert(@ad1a.remove_container(@rm_cn1) == true,
|
97
|
+
"Should have removed container")
|
98
|
+
|
99
|
+
@rm_cn1.removed_users.each do |user|
|
100
|
+
assert(rm_cn1_users.include?(user) == true,
|
101
|
+
"User should be in removed_users array for container")
|
102
|
+
end
|
103
|
+
|
104
|
+
assert(@rm_cn1.users.length == 0, "Container should have no users")
|
105
|
+
|
106
|
+
@rm_cn1.removed_groups.each do |group|
|
107
|
+
assert(rm_cn1_groups.include?(group) == true,
|
108
|
+
"Group should be in removed_groups array for container")
|
109
|
+
end
|
110
|
+
|
111
|
+
assert(@rm_cn1.groups.length == 0, "Container should have no groups")
|
112
|
+
|
113
|
+
@ad1a.users.each do |user|
|
114
|
+
assert(rm_cn1_users.include?(user) == false,
|
115
|
+
"User should not be in users array for container")
|
116
|
+
assert(@rm_cn1.removed_users.include?(user) == false,
|
117
|
+
"User should not be in removed_users array for container")
|
118
|
+
|
119
|
+
# Make sure each user sees the removed groups correctly.
|
120
|
+
rm_cn1_groups.each do |group|
|
121
|
+
assert(user.groups.include?(group) == false,
|
122
|
+
"User should not have group in groups array")
|
123
|
+
end
|
124
|
+
end
|
125
|
+
|
126
|
+
@ad1a.groups.each do |group|
|
127
|
+
assert(rm_cn1_groups.include?(group) == false,
|
128
|
+
"Group should not be in groups array for container")
|
129
|
+
assert(@rm_cn1.removed_groups.include?(group) == false,
|
130
|
+
"Group should not be in removed_groups array for container")
|
131
|
+
|
132
|
+
# Make sure each group sees the removed users correctly.
|
133
|
+
rm_cn1_users.each do |user|
|
134
|
+
assert(group.users.include?(user) == false,
|
135
|
+
"Group should not have user in users array")
|
136
|
+
end
|
137
|
+
|
138
|
+
# Make sure each group sees the removed groups correctly.
|
139
|
+
rm_cn1_groups.each do |group|
|
140
|
+
assert(group.groups.include?(group) == false,
|
141
|
+
"Group should not have group in groups array")
|
142
|
+
end
|
143
|
+
end
|
144
|
+
|
145
|
+
# Manually check @rm_cn2 objects to make sure they see all removed objects
|
146
|
+
# in their removed_groups and removed_users arrays.
|
147
|
+
assert(@rm_wg2.removed_groups.include?(@rm_wg1) == true,
|
148
|
+
"wg1 should be in wg2's removed_groups array")
|
149
|
+
assert(@rm_ug2.removed_users.include?(@rm_uu1) == true,
|
150
|
+
"uu1 should be in ug2's removed_users array")
|
151
|
+
assert(@rm_wg3.removed_users.include?(@rm_wu1) == true,
|
152
|
+
"wu1 should be in wg3's removed_users array")
|
153
|
+
assert(@rm_wu2.removed_groups.include?(@rm_wg1) == true,
|
154
|
+
"wg1 should be in wu2's removed_groups array")
|
155
|
+
assert(@rm_uu2.removed_groups.include?(@rm_wg1) == true,
|
156
|
+
"wg1 should be in uu2's removed_groups array")
|
157
|
+
end
|
158
|
+
|
159
|
+
def test_destroy_container_false
|
160
|
+
# We don't want to see the actual warning messages.
|
161
|
+
RADUM::logger.default_level = RADUM::LOG_NONE
|
162
|
+
assert(@ad1a.destroy_container(@rm_cn2) == false,
|
163
|
+
"Should not have destroyed container")
|
164
|
+
end
|
165
|
+
|
166
|
+
def test_destroy_container_effects
|
167
|
+
rm_cn1_users = @rm_cn1.users.clone
|
168
|
+
rm_cn1_groups = @rm_cn1.groups.clone
|
169
|
+
assert(@ad1a.destroy_container(@rm_cn1) == true,
|
170
|
+
"Should have removed container")
|
171
|
+
|
172
|
+
assert(@rm_cn1.users.length == 0, "Container should have no users")
|
173
|
+
assert(@rm_cn1.removed_users.length == 0,
|
174
|
+
"Container should have no removed users")
|
175
|
+
assert(@rm_cn1.groups.length == 0, "Container should have no groups")
|
176
|
+
assert(@rm_cn1.removed_groups.length == 0,
|
177
|
+
"Container should have no removed groups")
|
178
|
+
|
179
|
+
@ad1a.users.each do |user|
|
180
|
+
assert(rm_cn1_users.include?(user) == false,
|
181
|
+
"User should not be in users array for container")
|
182
|
+
|
183
|
+
# Make sure each user sees the removed groups correctly.
|
184
|
+
rm_cn1_groups.each do |group|
|
185
|
+
assert(user.groups.include?(group) == false,
|
186
|
+
"User should not have group in groups array")
|
187
|
+
end
|
188
|
+
end
|
189
|
+
|
190
|
+
@ad1a.groups.each do |group|
|
191
|
+
assert(rm_cn1_groups.include?(group) == false,
|
192
|
+
"Group should not be in groups array for container")
|
193
|
+
|
194
|
+
# Make sure each group sees the removed users correctly.
|
195
|
+
rm_cn1_users.each do |user|
|
196
|
+
assert(group.users.include?(user) == false,
|
197
|
+
"Group should not have user in users array")
|
198
|
+
end
|
199
|
+
|
200
|
+
# Make sure each group sees the removed groups correctly.
|
201
|
+
rm_cn1_groups.each do |group|
|
202
|
+
assert(group.groups.include?(group) == false,
|
203
|
+
"Group should not have group in groups array")
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
# Manually check @rm_cn2 objects to make sure they see all removed objects
|
208
|
+
# in their removed_groups and removed_users arrays.
|
209
|
+
assert(@rm_wg2.removed_groups.include?(@rm_wg1) == false,
|
210
|
+
"wg1 should not be in wg2's removed_groups array")
|
211
|
+
assert(@rm_ug2.removed_users.include?(@rm_uu1) == false,
|
212
|
+
"uu1 should not be in ug2's removed_users array")
|
213
|
+
assert(@rm_wg3.removed_users.include?(@rm_wu1) == false,
|
214
|
+
"wu1 should not be in wg3's removed_users array")
|
215
|
+
assert(@rm_wu2.removed_groups.include?(@rm_wg1) == false,
|
216
|
+
"wg1 should not be in wu2's removed_groups array")
|
217
|
+
assert(@rm_uu2.removed_groups.include?(@rm_wg1) == false,
|
218
|
+
"wg1 should not be in uu2's removed_groups array")
|
219
|
+
end
|
220
|
+
end
|
@@ -0,0 +1,205 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'radum'
|
3
|
+
|
4
|
+
# This tests the Container class.
|
5
|
+
class TC_Container < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@ad1 = RADUM::AD.new :root => "dc=vmware,dc=local", :password => "test1"
|
8
|
+
@ad2 = RADUM::AD.new :root => "dc=vmware,dc=com", :password => "test2"
|
9
|
+
@c1_ad1 = RADUM::Container.new :name => "ou=People", :directory => @ad1
|
10
|
+
@c2_ad1 = RADUM::Container.new :name => "ou=Staff, ou=People",
|
11
|
+
:directory => @ad1
|
12
|
+
@c3_ad1 = RADUM::Container.new :name => "cn=Test", :directory => @ad1
|
13
|
+
@c4_ad2 = RADUM::Container.new :name => "cn=Test", :directory => @ad2
|
14
|
+
@g1_c1_ad1 = RADUM::Group.new :name => "staff", :container => @c1_ad1
|
15
|
+
@g2_c4_ad2 = RADUM::Group.new :name => "enable", :container => @c4_ad2
|
16
|
+
@g3_c3_ad1 = RADUM::Group.new :name => "test", :container => @c3_ad1
|
17
|
+
@u1_c1_ad1 = RADUM::User.new :username => "user", :container=> @c1_ad1,
|
18
|
+
:primary_group => @g1_c1_ad1
|
19
|
+
@u2_c4_ad2 = RADUM::User.new :username => "user", :container => @c4_ad2,
|
20
|
+
:primary_group => @g2_c4_ad2
|
21
|
+
@u3_c3_ad1 = RADUM::User.new :username => "remove", :container => @c3_ad1,
|
22
|
+
:primary_group => @g1_c1_ad1
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_removed_flag_false
|
26
|
+
assert(@c1_ad1.removed? == false, "ad_removed flag should be false")
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_no_spaces
|
30
|
+
assert(@c2_ad1.name.split(/\s+/).length == 1,
|
31
|
+
"Should be no spaces in name")
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_equal_exception
|
35
|
+
assert_raise RuntimeError do
|
36
|
+
RADUM::Container.new :name => "ou=People", :directory => @ad1
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_equal_case_insensitive_exception
|
41
|
+
assert_raise RuntimeError do
|
42
|
+
RADUM::Container.new :name => "ou=people", :directory => @ad1
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_equal_spaces_exception
|
47
|
+
assert_raise RuntimeError do
|
48
|
+
RADUM::Container.new :name => "ou=Staff,ou=People", :directory => @ad1
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_not_equal
|
53
|
+
assert(@c1_ad1 != @c3_ad1, "Should not be equal")
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_not_equal_different_directory
|
57
|
+
assert(@c3_ad1 != @c4_ad2, "Should not be equal")
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_add_user
|
61
|
+
assert_block("Should have added exactly one user") do
|
62
|
+
# Users add themselves to containers on initialization, so this would be
|
63
|
+
# an attempt to add a second time. We want to be totally certain, so the
|
64
|
+
# add is done a third time anyway.
|
65
|
+
@c1_ad1.add_user @u1_c1_ad1
|
66
|
+
@c1_ad1.add_user @u1_c1_ad1
|
67
|
+
@c1_ad1.users.length == 1
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_add_user_removed_flag_manually_set
|
72
|
+
assert_block("Should have added exactly one user") do
|
73
|
+
# Users add themselves to containers on initialization, so this would be
|
74
|
+
# an attempt to add a second time. We want to be totally certain, so the
|
75
|
+
# add is done a third time anyway.
|
76
|
+
@c1_ad1.add_user @u1_c1_ad1
|
77
|
+
@u1_c1_ad1.set_removed
|
78
|
+
@c1_ad1.add_user @u1_c1_ad1
|
79
|
+
@c1_ad1.users.length == 1
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
def test_add_user_different_container_exception
|
84
|
+
assert_raise RuntimeError do
|
85
|
+
@c1_ad1.add_user @u2_c4_ad2
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_remove_user_different_container_exception
|
90
|
+
assert_raise RuntimeError do
|
91
|
+
@c1_ad1.remove_user @u3_c3_ad1
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_remove_user_removed_flag_set
|
96
|
+
assert_block("Should have set removed user removed flag") do
|
97
|
+
@c1_ad1.remove_user @u1_c1_ad1
|
98
|
+
@u1_c1_ad1.removed? == true
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def test_add_group
|
103
|
+
assert_block("Should have added exactly one group") do
|
104
|
+
# Groups add themselves to containers on initialization, so this would be
|
105
|
+
# an attempt to add a second time. We want to be totally certain, so the
|
106
|
+
# add is done a third time anyway.
|
107
|
+
@c1_ad1.add_group @g1_c1_ad1
|
108
|
+
@c1_ad1.add_group @g1_c1_ad1
|
109
|
+
@c1_ad1.groups.length == 1
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_add_group_removed_flag_manually_set
|
114
|
+
assert_block("Should have added exactly one group") do
|
115
|
+
# Groups add themselves to containers on initialization, so this would be
|
116
|
+
# an attempt to add a second time. We want to be totally certain, so the
|
117
|
+
# add is done a third time anyway.
|
118
|
+
@c1_ad1.add_group @g1_c1_ad1
|
119
|
+
@g1_c1_ad1.set_removed
|
120
|
+
@c1_ad1.add_group @g1_c1_ad1
|
121
|
+
@c1_ad1.groups.length == 1
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_add_group_different_container_exception
|
126
|
+
assert_raise RuntimeError do
|
127
|
+
# You have to remove a group from its container so that its removed flag
|
128
|
+
# is set or the other container will ignore it.
|
129
|
+
@c4_ad2.remove_group @g2_c4_ad2
|
130
|
+
@c1_ad1.add_group @g2_c4_ad2
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
def test_remove_group_different_container_exception
|
135
|
+
assert_raise RuntimeError do
|
136
|
+
@c1_ad1.remove_group @g3_c3_ad1
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_remove_primary_group_exception
|
141
|
+
assert_raise RuntimeError do
|
142
|
+
@c1_ad1.remove_group @g1_c1_ad1
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_remove_unix_main_group_exception
|
147
|
+
assert_raise RuntimeError do
|
148
|
+
foo = RADUM::UNIXGroup.new :name => "bar", :container => @c3_ad1,
|
149
|
+
:gid => 1000
|
150
|
+
RADUM::UNIXUser.new :username => "foo", :container => @c3_ad1,
|
151
|
+
:primary_group => @g1_c1_ad1, :uid => 1001,
|
152
|
+
:unix_main_group => foo, :shell => "/bin/bash",
|
153
|
+
:home_directory => "/home/foo", :nis_domain => "test",
|
154
|
+
:disabled => false, :rid => 1002
|
155
|
+
@c3_ad1.remove_group foo
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
def test_remove_group_removed_flag_set
|
160
|
+
assert_block("Should have set removed group removed flag") do
|
161
|
+
@c3_ad1.remove_group @g3_c3_ad1
|
162
|
+
@g3_c3_ad1.removed? == true
|
163
|
+
end
|
164
|
+
end
|
165
|
+
|
166
|
+
def test_rid_uid_gid_added_to_container_directory
|
167
|
+
assert_block("Should have added UID and GID to directory") do
|
168
|
+
bar = RADUM::UNIXGroup.new :name => "bar", :container => @c3_ad1,
|
169
|
+
:gid => 1001
|
170
|
+
RADUM::UNIXUser.new :username => "foo", :container => @c3_ad1,
|
171
|
+
:primary_group => @g1_c1_ad1, :uid => 1000,
|
172
|
+
:unix_main_group => bar, :shell => "/bin/bash",
|
173
|
+
:home_directory => "/home/foo",
|
174
|
+
:nis_domain => "test", :disabled => false,
|
175
|
+
:rid => 1002
|
176
|
+
@ad1.uids.find { |uid| uid == 1000 } &&
|
177
|
+
@ad1.gids.find { |gid| gid == 1001 } &&
|
178
|
+
@ad1.rids.find { |rid| rid == 1002 }
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
def test_rid_uid_gid_removed_from_container_directory
|
183
|
+
assert_block("Should have removed UID and GID from directory") do
|
184
|
+
bar = RADUM::UNIXGroup.new :name => "bar", :container => @c3_ad1,
|
185
|
+
:gid => 1000
|
186
|
+
foo = RADUM::UNIXUser.new :username => "foo", :container => @c3_ad1,
|
187
|
+
:primary_group => @g1_c1_ad1, :uid => 1001,
|
188
|
+
:unix_main_group => bar, :shell => "/bin/bash",
|
189
|
+
:home_directory => "/home/foo",
|
190
|
+
:nis_domain => "test", :disabled => false,
|
191
|
+
:rid => 1002
|
192
|
+
@c3_ad1.remove_user foo
|
193
|
+
@c3_ad1.remove_group bar
|
194
|
+
! (@ad1.uids.find { |uid| uid == 1000 } ||
|
195
|
+
@ad1.gids.find { |gid| gid == 1001 } ||
|
196
|
+
@ad1.rids.find { |rid| rid == 1002 })
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
def test_container_with_organizational_unit_exception
|
201
|
+
assert_raise RuntimeError do
|
202
|
+
RADUM::Container.new :name => "ou=foo,cn=bar", :directory => @ad1
|
203
|
+
end
|
204
|
+
end
|
205
|
+
end
|
data/test/tc_group.rb
ADDED
@@ -0,0 +1,161 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'radum'
|
3
|
+
|
4
|
+
# This tests the Group and UNIXGroup classes.
|
5
|
+
class TC_Group < Test::Unit::TestCase
|
6
|
+
def setup
|
7
|
+
@ad1 = RADUM::AD.new :root => "dc=vmware,dc=local", :password => "test1"
|
8
|
+
@ad2 = RADUM::AD.new :root => "dc=vmware,dc=com", :password => "test2"
|
9
|
+
@c1_ad1 = RADUM::Container.new :name => "ou=People", :directory => @ad1
|
10
|
+
@c2_ad1 = RADUM::Container.new :name => "ou=Staff,ou=People",
|
11
|
+
:directory => @ad1
|
12
|
+
@c3_ad2 = RADUM::Container.new :name => "ou=People", :directory => @ad2
|
13
|
+
@g1_c1_ad1 = RADUM::Group.new :name => "staff", :container => @c1_ad1,
|
14
|
+
:rid => 1722
|
15
|
+
@g2_c3_ad2 = RADUM::Group.new :name => "staff", :container => @c3_ad2,
|
16
|
+
:rid => 1722
|
17
|
+
@g4_c1_ad1 = RADUM::Group.new :name => "primary", :container => @c1_ad1
|
18
|
+
@g5_c3_ad2 = RADUM::Group.new :name => "priamry", :container => @c3_ad2
|
19
|
+
@ug1_c1_ad1 = RADUM::UNIXGroup.new :name => "class", :container => @c1_ad1,
|
20
|
+
:gid => 1001
|
21
|
+
@u1_c1_ad1 = RADUM::User.new :username => "user1", :container => @c1_ad1,
|
22
|
+
:primary_group => @g4_c1_ad1
|
23
|
+
@u2_c3_ad2 = RADUM::User.new :username => "user2", :container => @c3_ad2,
|
24
|
+
:primary_group => @g5_c3_ad2
|
25
|
+
@uu1_c1_ad1 = RADUM::UNIXUser.new :username => "user3",
|
26
|
+
:container => @c1_ad1,
|
27
|
+
:primary_group => @g4_c1_ad1,
|
28
|
+
:uid => 1000,
|
29
|
+
:unix_main_group => @ug1_c1_ad1,
|
30
|
+
:shell => "/bin/bash",
|
31
|
+
:home_directory => "/home/user"
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_removed_flag_false
|
35
|
+
assert_block("Removed flags should be false.") do
|
36
|
+
@g1_c1_ad1.removed? == false && @ug1_c1_ad1.removed? == false
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_duplicate_rid_exception
|
41
|
+
assert_raise RuntimeError do
|
42
|
+
RADUM::Group.new :name => "test", :container => @c1_ad1, :rid => 1722
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
def test_duplicate_gid_exception
|
47
|
+
assert_raise RuntimeError do
|
48
|
+
RADUM::UNIXGroup.new :name => "foo", :container => @c1_ad1, :gid => 1001
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_equal_exception
|
53
|
+
assert_raise RuntimeError do
|
54
|
+
RADUM::Group.new :name => "staff", :container => @c1_ad1
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_equal_name_case_exception
|
59
|
+
assert_raise RuntimeError do
|
60
|
+
RADUM::Group.new :name => "Staff", :container => @c1_ad1
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_equal_container_difference_exception
|
65
|
+
assert_raise RuntimeError do
|
66
|
+
RADUM::Group.new :name => "staff", :container => @c2_ad1
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
def test_not_equal_ad
|
71
|
+
assert(@g1_c1_ad1 != @g2_c3_ad2, "Should not be equal")
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_not_equal_group_unix_group
|
75
|
+
assert(@g1_c1_ad1 != @ug1_c1_ad1, "Should not be equal")
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_add_user
|
79
|
+
assert_block("Should have added exactly one user") do
|
80
|
+
@g1_c1_ad1.add_user @u1_c1_ad1
|
81
|
+
@g1_c1_ad1.add_user @u1_c1_ad1
|
82
|
+
@g1_c1_ad1.users.length == 1
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_add_user_different_directory_exception
|
87
|
+
assert_raise RuntimeError do
|
88
|
+
@g1_c1_ad1.add_user @u2_c3_ad2
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_add_user_primary_group_exception
|
93
|
+
assert_raise RuntimeError do
|
94
|
+
@g4_c1_ad1.add_user @u1_c1_ad1
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_group_added_to_container
|
99
|
+
assert_block("Group should have been automatically added to container") do
|
100
|
+
@c1_ad1.groups.find do |group|
|
101
|
+
group == @g1_c1_ad1
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def test_add_user_group_added_to_user
|
107
|
+
assert_block("User should have group when added to group") do
|
108
|
+
@g1_c1_ad1.add_user @u1_c1_ad1
|
109
|
+
@u1_c1_ad1.groups.find do |group|
|
110
|
+
group == @g1_c1_ad1
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
def test_remove_user_group_removed_from_user
|
116
|
+
assert_block("User should have removed group when removed from group") do
|
117
|
+
@g1_c1_ad1.add_user @u1_c1_ad1
|
118
|
+
@g1_c1_ad1.remove_user @u1_c1_ad1
|
119
|
+
! @u1_c1_ad1.groups.find do |group|
|
120
|
+
group == @g1_c1_ad1
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
|
125
|
+
def test_remove_user_main_unix_group_exception
|
126
|
+
assert_raise RuntimeError do
|
127
|
+
@ug1_c1_ad1.remove_user @uu1_c1_ad1
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_add_group_self_exception
|
132
|
+
assert_raise RuntimeError do
|
133
|
+
@g1_c1_ad1.add_group @g1_c1_ad1
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_add_group_other_directory_exception
|
138
|
+
assert_raise RuntimeError do
|
139
|
+
@g1_c1_ad1.add_group @g2_c3_ad2
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_add_group
|
144
|
+
assert_block("Group should have added another group") do
|
145
|
+
@g1_c1_ad1.add_group @ug1_c1_ad1
|
146
|
+
@g1_c1_ad1.groups.find do |group|
|
147
|
+
group == @ug1_c1_ad1
|
148
|
+
end
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_remove_group
|
153
|
+
assert_block("Group should have been removed") do
|
154
|
+
@g1_c1_ad1.add_group @ug1_c1_ad1
|
155
|
+
@g1_c1_ad1.remove_group @ug1_c1_ad1
|
156
|
+
! @g1_c1_ad1.groups.find do |group|
|
157
|
+
group == @ug1_c1_ad1
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|