activeldap 3.1.1 → 3.2.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.
- data/Gemfile +1 -14
- data/benchmark/README.md +64 -0
- data/benchmark/{bench-al.rb → bench-backend.rb} +6 -22
- data/benchmark/bench-instantiate.rb +98 -0
- data/benchmark/config.yaml.sample +2 -2
- data/doc/text/news.textile +38 -0
- data/lib/active_ldap.rb +17 -8
- data/lib/active_ldap/association/has_many_wrap.rb +15 -2
- data/lib/active_ldap/attribute_methods.rb +23 -0
- data/lib/active_ldap/attribute_methods/before_type_cast.rb +24 -0
- data/lib/active_ldap/attribute_methods/dirty.rb +43 -0
- data/lib/active_ldap/attribute_methods/query.rb +31 -0
- data/lib/active_ldap/attribute_methods/read.rb +44 -0
- data/lib/active_ldap/attribute_methods/write.rb +38 -0
- data/lib/active_ldap/attributes.rb +18 -26
- data/lib/active_ldap/base.rb +42 -163
- data/lib/active_ldap/connection.rb +6 -1
- data/lib/active_ldap/get_text.rb +18 -7
- data/lib/active_ldap/operations.rb +63 -49
- data/lib/active_ldap/persistence.rb +17 -0
- data/lib/active_ldap/railtie.rb +3 -0
- data/lib/active_ldap/schema.rb +2 -0
- data/lib/active_ldap/schema/syntaxes.rb +7 -7
- data/lib/active_ldap/validations.rb +2 -2
- data/lib/active_ldap/version.rb +3 -0
- data/lib/active_ldap/xml.rb +24 -7
- data/lib/rails/generators/active_ldap/model/model_generator.rb +3 -3
- data/test/add-phonetic-attribute-options-to-slapd.ldif +10 -0
- data/test/al-test-utils.rb +428 -0
- data/test/command.rb +111 -0
- data/test/config.yaml.sample +6 -0
- data/test/fixtures/lower_case_object_class_schema.rb +802 -0
- data/test/run-test.rb +29 -0
- data/test/test_associations.rb +37 -0
- data/test/test_base.rb +113 -51
- data/test/test_dirty.rb +84 -0
- data/test/test_ldif.rb +0 -1
- data/test/test_load.rb +0 -1
- data/test/test_reflection.rb +7 -14
- data/test/test_syntax.rb +104 -43
- data/test/test_usermod-binary-del.rb +1 -1
- data/test/test_usermod-lang-add.rb +0 -1
- metadata +272 -224
- data/lib/active_ldap/get_text_fallback.rb +0 -60
- data/lib/active_ldap/get_text_support.rb +0 -22
data/test/run-test.rb
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
$VERBOSE = true
|
4
|
+
|
5
|
+
$KCODE = 'u' if RUBY_VERSION < "1.9"
|
6
|
+
|
7
|
+
base_dir = File.expand_path(File.dirname(__FILE__))
|
8
|
+
top_dir = File.expand_path(File.join(base_dir, ".."))
|
9
|
+
$LOAD_PATH.unshift(File.join(top_dir))
|
10
|
+
$LOAD_PATH.unshift(File.join(top_dir, "lib"))
|
11
|
+
$LOAD_PATH.unshift(File.join(top_dir, "test"))
|
12
|
+
|
13
|
+
require "rubygems"
|
14
|
+
require "bundler/setup"
|
15
|
+
|
16
|
+
require "test/unit"
|
17
|
+
require "test/unit/notify"
|
18
|
+
Test::Unit::Priority.enable
|
19
|
+
|
20
|
+
target_adapters = [ENV["ACTIVE_LDAP_TEST_ADAPTER"]]
|
21
|
+
# target_adapters << "ldap"
|
22
|
+
# target_adapters << "net-ldap"
|
23
|
+
# target_adapters << "jndi"
|
24
|
+
target_adapters.each do |adapter|
|
25
|
+
ENV["ACTIVE_LDAP_TEST_ADAPTER"] = adapter
|
26
|
+
puts "using adapter: #{adapter ? adapter : 'default'}"
|
27
|
+
Test::Unit::AutoRunner.run(true, File.dirname($0), ARGV.dup)
|
28
|
+
puts
|
29
|
+
end
|
data/test/test_associations.rb
CHANGED
@@ -411,6 +411,43 @@ EOX
|
|
411
411
|
end
|
412
412
|
end
|
413
413
|
|
414
|
+
def test_has_many_wrap_assign_new_entry
|
415
|
+
make_temporary_user do |user1, |
|
416
|
+
make_temporary_user do |user2, |
|
417
|
+
ensure_delete_group('test_new_group') do |cn|
|
418
|
+
group = @group_class.new(:cn => cn, :gid_number => default_gid)
|
419
|
+
|
420
|
+
assert_equal([], group.members.to_a)
|
421
|
+
assert_equal([], group.member_uid(true))
|
422
|
+
|
423
|
+
group.members = [user1, user2]
|
424
|
+
|
425
|
+
assert group.new_entry?
|
426
|
+
assert_equal([user1.uid, user2.uid].sort, group.members.map {|x| x.uid }.sort)
|
427
|
+
assert_equal([user1.uid, user2.uid].sort, group.member_uid(true).sort)
|
428
|
+
|
429
|
+
group.members = [user2]
|
430
|
+
|
431
|
+
assert group.new_entry?
|
432
|
+
assert_equal([user2.uid], group.members.map {|x| x.uid })
|
433
|
+
assert_equal(user2.uid, group.member_uid)
|
434
|
+
|
435
|
+
group.members << user1
|
436
|
+
|
437
|
+
assert group.new_entry?
|
438
|
+
assert_equal([user1.uid, user2.uid].sort, group.members.map {|x| x.uid }.sort)
|
439
|
+
assert_equal([user1.uid, user2.uid].sort, group.member_uid.sort)
|
440
|
+
|
441
|
+
assert(group.save)
|
442
|
+
|
443
|
+
group = @group_class.find(cn)
|
444
|
+
assert_equal([user1.uid, user2.uid].sort, group.members.map {|x| x.uid }.sort)
|
445
|
+
assert_equal([user1.uid, user2.uid].sort, group.member_uid.sort)
|
446
|
+
end
|
447
|
+
end
|
448
|
+
end
|
449
|
+
end
|
450
|
+
|
414
451
|
def test_has_many_validation
|
415
452
|
group_class = Class.new(ActiveLdap::Base)
|
416
453
|
group_class.ldap_mapping :prefix => "ou=Groups",
|
data/test/test_base.rb
CHANGED
@@ -158,11 +158,11 @@ class TestBase < Test::Unit::TestCase
|
|
158
158
|
_dc_class = dc_class("ou=base")
|
159
159
|
|
160
160
|
root1 = _ou_class.create("root1")
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
161
|
+
_ou_class.create(:ou => "child1", :parent => root1)
|
162
|
+
_ou_class.create(:ou => "child2", :parent => root1)
|
163
|
+
_dc_class.create(:dc => "domain", :o => "domain", :parent => root1)
|
164
|
+
_ou_class.create(:ou => "child3", :parent => root1)
|
165
|
+
_ou_class.create("root2")
|
166
166
|
assert_equal(["base",
|
167
167
|
"root1", "child1", "child2", "domain", "child3",
|
168
168
|
"root2"],
|
@@ -181,11 +181,11 @@ class TestBase < Test::Unit::TestCase
|
|
181
181
|
_dc_class = dc_class("ou=base")
|
182
182
|
|
183
183
|
root1 = _ou_class.create("root1")
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
184
|
+
_ou_class.create(:ou => "child1", :parent => root1)
|
185
|
+
_ou_class.create(:ou => "child2", :parent => root1)
|
186
|
+
_dc_class.create(:dc => "domain", :o => "domain", :parent => root1)
|
187
|
+
_ou_class.create(:ou => "child3", :parent => root1)
|
188
|
+
_ou_class.create("root2")
|
189
189
|
assert_equal(["base",
|
190
190
|
"root1", "child1", "child2", "domain", "child3",
|
191
191
|
"root2"],
|
@@ -201,9 +201,9 @@ class TestBase < Test::Unit::TestCase
|
|
201
201
|
make_ou("base")
|
202
202
|
_ou_class = ou_class("ou=base")
|
203
203
|
root1 = _ou_class.create("root1")
|
204
|
-
|
205
|
-
|
206
|
-
|
204
|
+
_ou_class.create(:ou => "child1", :parent => root1)
|
205
|
+
_ou_class.create(:ou => "child2", :parent => root1)
|
206
|
+
_ou_class.create("root2")
|
207
207
|
assert_equal(["base", "root1", "child1", "child2", "root2"],
|
208
208
|
_ou_class.find(:all).collect(&:ou))
|
209
209
|
_ou_class.delete_all(:base => root1.dn)
|
@@ -221,11 +221,11 @@ class TestBase < Test::Unit::TestCase
|
|
221
221
|
|
222
222
|
root1 = _ou_class.create("root1")
|
223
223
|
child1 = _ou_class.create(:ou => "child1", :parent => root1)
|
224
|
-
|
225
|
-
|
224
|
+
domain_class.create(:dc => "domain1", :parent => child1)
|
225
|
+
_ou_class.create(:ou => "grandchild1", :parent => child1)
|
226
226
|
child2 = _ou_class.create(:ou => "child2", :parent => root1)
|
227
|
-
|
228
|
-
|
227
|
+
domain_class.create(:dc => "domain2", :parent => child2)
|
228
|
+
_ou_class.create("root2")
|
229
229
|
|
230
230
|
entry_class = Class.new(ActiveLdap::Base)
|
231
231
|
entry_class.ldap_mapping :prefix => "ou=base",
|
@@ -583,7 +583,7 @@ class TestBase < Test::Unit::TestCase
|
|
583
583
|
end
|
584
584
|
|
585
585
|
def test_new_with_invalid_argument
|
586
|
-
|
586
|
+
@user_class.new
|
587
587
|
assert_raises(ArgumentError) do
|
588
588
|
@user_class.new(100)
|
589
589
|
end
|
@@ -876,9 +876,10 @@ class TestBase < Test::Unit::TestCase
|
|
876
876
|
end
|
877
877
|
end
|
878
878
|
|
879
|
-
|
880
|
-
|
881
|
-
|
879
|
+
class TestToXML < self
|
880
|
+
def test_root
|
881
|
+
ou = ou_class.new("Sample")
|
882
|
+
assert_equal(<<-EOX, ou.to_xml(:root => "ou"))
|
882
883
|
<ou>
|
883
884
|
<dn>#{ou.dn}</dn>
|
884
885
|
<objectClasses type="array">
|
@@ -890,8 +891,11 @@ class TestBase < Test::Unit::TestCase
|
|
890
891
|
</ous>
|
891
892
|
</ou>
|
892
893
|
EOX
|
894
|
+
end
|
893
895
|
|
894
|
-
|
896
|
+
def test_default
|
897
|
+
ou = ou_class.new("Sample")
|
898
|
+
assert_equal(<<-EOX, ou.to_xml)
|
895
899
|
<anonymous>
|
896
900
|
<dn>#{ou.dn}</dn>
|
897
901
|
<objectClasses type="array">
|
@@ -903,10 +907,12 @@ EOX
|
|
903
907
|
</ous>
|
904
908
|
</anonymous>
|
905
909
|
EOX
|
910
|
+
end
|
906
911
|
|
907
|
-
|
908
|
-
|
909
|
-
|
912
|
+
def test_complex
|
913
|
+
make_temporary_user do |user, password|
|
914
|
+
xml = normalize_attributes_order(user.to_xml(:root => "user"))
|
915
|
+
assert_equal(<<-EOX, xml)
|
910
916
|
<user>
|
911
917
|
<dn>#{user.dn}</dn>
|
912
918
|
<cns type="array">
|
@@ -939,12 +945,13 @@ EOX
|
|
939
945
|
</userPasswords>
|
940
946
|
</user>
|
941
947
|
EOX
|
948
|
+
end
|
942
949
|
end
|
943
|
-
end
|
944
950
|
|
945
|
-
|
946
|
-
|
947
|
-
|
951
|
+
def test_except
|
952
|
+
ou = ou_class.new("Sample")
|
953
|
+
except = [:objectClass]
|
954
|
+
assert_equal(<<-EOX, ou.to_xml(:root => "sample", :except => except))
|
948
955
|
<sample>
|
949
956
|
<dn>#{ou.dn}</dn>
|
950
957
|
<ous type="array">
|
@@ -952,23 +959,53 @@ EOX
|
|
952
959
|
</ous>
|
953
960
|
</sample>
|
954
961
|
EOX
|
962
|
+
end
|
955
963
|
|
956
|
-
|
957
|
-
|
964
|
+
def test_except_dn
|
965
|
+
ou = ou_class.new("Sample")
|
966
|
+
except = [:dn, :object_class]
|
967
|
+
assert_equal(<<-EOX, ou.to_xml(:root => "sample", :except => except))
|
958
968
|
<sample>
|
959
969
|
<ous type="array">
|
960
970
|
<ou>Sample</ou>
|
961
971
|
</ous>
|
962
972
|
</sample>
|
963
973
|
EOX
|
964
|
-
|
974
|
+
end
|
965
975
|
|
966
|
-
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
|
976
|
+
def test_only
|
977
|
+
ou = ou_class.new("Sample")
|
978
|
+
only = [:objectClass]
|
979
|
+
assert_equal(<<-EOX, ou.to_xml(:root => "sample", :only => only))
|
980
|
+
<sample>
|
981
|
+
<objectClasses type="array">
|
982
|
+
<objectClass>organizationalUnit</objectClass>
|
983
|
+
<objectClass>top</objectClass>
|
984
|
+
</objectClasses>
|
985
|
+
</sample>
|
986
|
+
EOX
|
987
|
+
end
|
988
|
+
|
989
|
+
def test_only_dn
|
990
|
+
ou = ou_class.new("Sample")
|
991
|
+
only = [:dn, :object_class]
|
992
|
+
assert_equal(<<-EOX, ou.to_xml(:root => "sample", :only => only))
|
993
|
+
<sample>
|
994
|
+
<dn>#{ou.dn}</dn>
|
995
|
+
<objectClasses type="array">
|
996
|
+
<objectClass>organizationalUnit</objectClass>
|
997
|
+
<objectClass>top</objectClass>
|
998
|
+
</objectClasses>
|
999
|
+
</sample>
|
1000
|
+
EOX
|
1001
|
+
end
|
1002
|
+
|
1003
|
+
def test_escape
|
1004
|
+
make_temporary_user do |user, password|
|
1005
|
+
sn = user.sn
|
1006
|
+
user.sn = "<#{sn}>"
|
1007
|
+
except = [:jpeg_photo, :user_certificate]
|
1008
|
+
assert_equal(<<-EOX, user.to_xml(:root => "user", :except => except))
|
972
1009
|
<user>
|
973
1010
|
<dn>#{user.dn}</dn>
|
974
1011
|
<cns type="array">
|
@@ -995,16 +1032,16 @@ EOX
|
|
995
1032
|
</userPasswords>
|
996
1033
|
</user>
|
997
1034
|
EOX
|
1035
|
+
end
|
998
1036
|
end
|
999
|
-
end
|
1000
1037
|
|
1001
|
-
|
1002
|
-
|
1003
|
-
|
1004
|
-
|
1005
|
-
|
1006
|
-
|
1007
|
-
|
1038
|
+
def test_type_ldif
|
1039
|
+
make_temporary_user do |user, password|
|
1040
|
+
sn = user.sn
|
1041
|
+
user.sn = "<#{sn}>"
|
1042
|
+
except = [:jpeg_photo, :user_certificate]
|
1043
|
+
options = {:root => "user", :except => except, :type => :ldif}
|
1044
|
+
assert_equal(<<-EOX, user.to_xml(options))
|
1008
1045
|
<user>
|
1009
1046
|
<dn>#{user.dn}</dn>
|
1010
1047
|
<cn>#{user.cn}</cn>
|
@@ -1021,13 +1058,13 @@ EOX
|
|
1021
1058
|
<userPassword>#{user.user_password}</userPassword>
|
1022
1059
|
</user>
|
1023
1060
|
EOX
|
1061
|
+
end
|
1024
1062
|
end
|
1025
|
-
end
|
1026
1063
|
|
1027
|
-
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1064
|
+
def test_nil
|
1065
|
+
ou = ou_class.new("Sample")
|
1066
|
+
ou.description = [nil]
|
1067
|
+
assert_equal(<<-EOX, ou.to_xml(:root => "sample"))
|
1031
1068
|
<sample>
|
1032
1069
|
<dn>#{ou.dn}</dn>
|
1033
1070
|
<objectClasses type="array">
|
@@ -1039,6 +1076,31 @@ EOX
|
|
1039
1076
|
</ous>
|
1040
1077
|
</sample>
|
1041
1078
|
EOX
|
1079
|
+
end
|
1080
|
+
|
1081
|
+
def test_single_value
|
1082
|
+
make_temporary_user do |user, password|
|
1083
|
+
only = [:dn, :uidNumber]
|
1084
|
+
assert_equal(<<-EOX, user.to_xml(:root => "user", :only => only))
|
1085
|
+
<user>
|
1086
|
+
<dn>#{user.dn}</dn>
|
1087
|
+
<uidNumber>#{user.uid_number}</uidNumber>
|
1088
|
+
</user>
|
1089
|
+
EOX
|
1090
|
+
end
|
1091
|
+
end
|
1092
|
+
|
1093
|
+
def test_single_value_nil
|
1094
|
+
make_temporary_user do |user, password|
|
1095
|
+
only = [:dn, :uidNumber]
|
1096
|
+
user.uid_number = nil
|
1097
|
+
assert_equal(<<-EOX, user.to_xml(:root => "user", :only => only))
|
1098
|
+
<user>
|
1099
|
+
<dn>#{user.dn}</dn>
|
1100
|
+
</user>
|
1101
|
+
EOX
|
1102
|
+
end
|
1103
|
+
end
|
1042
1104
|
end
|
1043
1105
|
|
1044
1106
|
def test_save
|
data/test/test_dirty.rb
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'al-test-utils'
|
2
|
+
|
3
|
+
class TestDirty < Test::Unit::TestCase
|
4
|
+
include AlTestUtils
|
5
|
+
|
6
|
+
priority :must
|
7
|
+
|
8
|
+
priority :normal
|
9
|
+
def test_clean_after_load
|
10
|
+
make_temporary_user do |user, password|
|
11
|
+
attributes = (user.must + user.may).collect(&:name) - ['objectClass']
|
12
|
+
_wrap_assertion do
|
13
|
+
attributes.each do |name|
|
14
|
+
assert_false(user.send("#{name}_changed?"))
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_clean_after_reload
|
21
|
+
make_temporary_user do |user, password|
|
22
|
+
attributes = (user.must + user.may).collect(&:name) - ['objectClass']
|
23
|
+
|
24
|
+
user.cn = 'New cn'
|
25
|
+
assert_true(user.cn_changed?)
|
26
|
+
user.reload
|
27
|
+
assert_false(user.cn_changed?)
|
28
|
+
|
29
|
+
_wrap_assertion do
|
30
|
+
attributes.each do |name|
|
31
|
+
assert_false(user.send("#{name}_changed?"))
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_setter
|
38
|
+
make_temporary_user do |user, password|
|
39
|
+
attributes = (user.must + user.may).collect(&:name) - ['objectClass', 'cn']
|
40
|
+
user.cn = 'New cn'
|
41
|
+
assert_true(user.cn_changed?)
|
42
|
+
|
43
|
+
_wrap_assertion do
|
44
|
+
(attributes - ['cn']).each do |name|
|
45
|
+
assert_false(user.send("#{name}_changed?"))
|
46
|
+
end
|
47
|
+
|
48
|
+
assert_true(user.cn_changed?)
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def test_save
|
54
|
+
make_temporary_user do |user, password|
|
55
|
+
attributes = (user.must + user.may).collect(&:name) - ['objectClass', 'cn']
|
56
|
+
user.cn = 'New cn'
|
57
|
+
assert_true(user.cn_changed?)
|
58
|
+
user.save
|
59
|
+
assert_false(user.cn_changed?)
|
60
|
+
|
61
|
+
_wrap_assertion do
|
62
|
+
attributes.each do |name|
|
63
|
+
assert_false(user.send("#{name}_changed?"))
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def test_save!
|
70
|
+
make_temporary_user do |user, password|
|
71
|
+
attributes = (user.must + user.may).collect(&:name) - ['objectClass', 'cn']
|
72
|
+
user.cn = 'New cn'
|
73
|
+
assert_true(user.cn_changed?)
|
74
|
+
user.save!
|
75
|
+
assert_false(user.cn_changed?)
|
76
|
+
|
77
|
+
_wrap_assertion do
|
78
|
+
attributes.each do |name|
|
79
|
+
assert_false(user.send("#{name}_changed?"))
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
data/test/test_ldif.rb
CHANGED
data/test/test_load.rb
CHANGED
data/test/test_reflection.rb
CHANGED
@@ -50,9 +50,8 @@ class TestReflection < Test::Unit::TestCase
|
|
50
50
|
|
51
51
|
make_temporary_user do |user, password|
|
52
52
|
attributes = user.must.collect(&:name) + user.may.collect(&:name)
|
53
|
-
attributes
|
53
|
+
attributes = (attributes - ["objectClass"]).map(&:to_sym)
|
54
54
|
assert_equal([], attributes - user.methods)
|
55
|
-
assert_equal([], attributes - user.methods(false))
|
56
55
|
|
57
56
|
assert_methods_with_only_required_classes(user, attributes)
|
58
57
|
end
|
@@ -60,17 +59,15 @@ class TestReflection < Test::Unit::TestCase
|
|
60
59
|
make_temporary_user do |user, password|
|
61
60
|
user.remove_class("inetOrgPerson")
|
62
61
|
attributes = user.must.collect(&:name) + user.may.collect(&:name)
|
63
|
-
attributes
|
62
|
+
attributes = (attributes - ["objectClass"]).map(&:to_sym)
|
64
63
|
assert_equal([], attributes - user.methods)
|
65
|
-
assert_equal([], attributes - user.methods(false))
|
66
64
|
|
67
65
|
assert_methods_with_only_required_classes(user, attributes)
|
68
66
|
end
|
69
67
|
|
70
68
|
make_temporary_user do |user, password|
|
71
69
|
attributes = user.must.collect(&:name) + user.may.collect(&:name)
|
72
|
-
attributes
|
73
|
-
attributes = attributes.collect {|x| x.downcase}
|
70
|
+
attributes = attributes.map(&:downcase).map(&:to_sym)
|
74
71
|
assert_not_equal([], attributes - user.methods)
|
75
72
|
assert_not_equal([], attributes - user.methods(false))
|
76
73
|
|
@@ -86,9 +83,8 @@ class TestReflection < Test::Unit::TestCase
|
|
86
83
|
make_temporary_user do |user, password|
|
87
84
|
attributes = user.must.collect(&:name) + user.may.collect(&:name)
|
88
85
|
attributes -= ["objectClass"]
|
89
|
-
attributes = attributes.collect(&:underscore)
|
86
|
+
attributes = attributes.collect(&:underscore).map(&:to_sym)
|
90
87
|
assert_equal([], attributes - user.methods)
|
91
|
-
assert_equal([], attributes - user.methods(false))
|
92
88
|
|
93
89
|
normalize_attributes_list = Proc.new do |*attributes_list|
|
94
90
|
attributes_list.collect do |attrs|
|
@@ -103,9 +99,8 @@ class TestReflection < Test::Unit::TestCase
|
|
103
99
|
user.remove_class("inetOrgPerson")
|
104
100
|
attributes = user.must.collect(&:name) + user.may.collect(&:name)
|
105
101
|
attributes -= ["objectClass"]
|
106
|
-
attributes = attributes.collect(&:underscore)
|
102
|
+
attributes = attributes.collect(&:underscore).map(&:to_sym)
|
107
103
|
assert_equal([], attributes - user.methods)
|
108
|
-
assert_equal([], attributes - user.methods(false))
|
109
104
|
|
110
105
|
normalize_attributes_list = Proc.new do |*attributes_list|
|
111
106
|
attributes_list.collect do |attrs|
|
@@ -136,16 +131,14 @@ class TestReflection < Test::Unit::TestCase
|
|
136
131
|
yield(old_attributes, required_attributes)
|
137
132
|
end
|
138
133
|
|
134
|
+
[old_attributes, required_attributes].map{|a| a.map!(&:to_sym)}
|
135
|
+
|
139
136
|
object.replace_class(object.class.required_classes)
|
140
137
|
|
141
138
|
assert_equal([],
|
142
139
|
old_attributes -
|
143
140
|
(attributes - object.methods - required_attributes) -
|
144
141
|
required_attributes)
|
145
|
-
assert_equal([],
|
146
|
-
old_attributes -
|
147
|
-
(attributes - object.methods(false) - required_attributes) -
|
148
|
-
required_attributes)
|
149
142
|
end
|
150
143
|
|
151
144
|
def assert_respond_to(object, name)
|