activeldap 1.1.0 → 1.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/CHANGES +15 -0
- data/README +4 -1
- data/Rakefile +1 -1
- data/TODO +1 -2
- data/data/locale/en/LC_MESSAGES/active-ldap.mo +0 -0
- data/data/locale/ja/LC_MESSAGES/active-ldap.mo +0 -0
- data/examples/al-admin/app/models/user.rb +1 -1
- data/examples/al-admin/config/boot.rb +1 -1
- data/examples/al-admin/config/environment.rb +1 -15
- data/examples/al-admin/config/initializers/session_store.rb +23 -0
- data/examples/al-admin/config/session_secret.txt +1 -0
- data/examples/al-admin/db/schema.rb +23 -0
- data/examples/al-admin/locale/en/LC_MESSAGES/al-admin.mo +0 -0
- data/examples/al-admin/locale/ja/LC_MESSAGES/al-admin.mo +0 -0
- data/examples/al-admin/locale/nl/LC_MESSAGES/al-admin.mo +0 -0
- data/lib/active_ldap.rb +3 -3
- data/lib/active_ldap/acts/tree.rb +1 -1
- data/lib/active_ldap/adapter/base.rb +9 -1
- data/lib/active_ldap/adapter/ldap.rb +7 -1
- data/lib/active_ldap/association/belongs_to_many.rb +6 -2
- data/lib/active_ldap/association/children.rb +1 -1
- data/lib/active_ldap/association/has_many_utils.rb +2 -2
- data/lib/active_ldap/association/has_many_wrap.rb +6 -2
- data/lib/active_ldap/attributes.rb +5 -1
- data/lib/active_ldap/base.rb +133 -59
- data/lib/active_ldap/connection.rb +10 -3
- data/lib/active_ldap/distinguished_name.rb +33 -1
- data/lib/active_ldap/ldif.rb +1 -0
- data/lib/active_ldap/operations.rb +33 -14
- data/lib/active_ldap/populate.rb +21 -12
- data/lib/active_ldap/schema.rb +21 -0
- data/lib/active_ldap/validations.rb +49 -4
- data/po/active-ldap.pot +4030 -0
- data/po/en/active-ldap.po +57 -37
- data/po/ja/active-ldap.po +58 -38
- data/test-unit/History.txt +1 -1
- data/test-unit/Manifest.txt +2 -0
- data/test-unit/README.txt +1 -1
- data/test-unit/lib/test/unit/assertions.rb +1 -1
- data/test-unit/lib/test/unit/autorunner.rb +19 -4
- data/test-unit/lib/test/unit/collector/load.rb +3 -1
- data/test-unit/lib/test/unit/color-scheme.rb +5 -1
- data/test-unit/lib/test/unit/error.rb +7 -5
- data/test-unit/lib/test/unit/runner/tap.rb +8 -0
- data/test-unit/lib/test/unit/ui/console/testrunner.rb +63 -8
- data/test-unit/lib/test/unit/ui/tap/testrunner.rb +92 -0
- data/test-unit/test/collector/test-load.rb +1 -5
- data/test-unit/test/test-color-scheme.rb +4 -0
- data/test/al-test-utils.rb +30 -2
- data/test/test_acts_as_tree.rb +6 -3
- data/test/test_associations.rb +3 -2
- data/test/test_base.rb +104 -5
- data/test/test_dn.rb +10 -0
- data/test/test_groupls.rb +1 -1
- data/test/test_lpasswd.rb +1 -1
- data/test/test_reflection.rb +23 -16
- data/test/test_schema.rb +33 -1
- data/test/test_useradd-binary.rb +1 -1
- data/test/test_useradd.rb +1 -1
- data/test/test_userdel.rb +1 -1
- data/test/test_userls.rb +1 -1
- data/test/test_usermod-binary-add-time.rb +1 -1
- data/test/test_usermod-binary-add.rb +1 -1
- data/test/test_usermod-binary-del.rb +1 -1
- data/test/test_usermod-lang-add.rb +1 -1
- data/test/test_usermod.rb +1 -1
- data/test/test_validation.rb +48 -10
- metadata +44 -35
data/test/test_acts_as_tree.rb
CHANGED
@@ -17,7 +17,8 @@ class TestActsAsTree < Test::Unit::TestCase
|
|
17
17
|
users = ou_class.find("Users")
|
18
18
|
assert_equal(["SubUsers"], users.children.collect(&:ou))
|
19
19
|
|
20
|
-
assert_equal("ou=SubUsers,#{users.dn}",
|
20
|
+
assert_equal(dn("ou=SubUsers,#{users.dn}"),
|
21
|
+
sub_users.dn)
|
21
22
|
|
22
23
|
assert(ou_class.exists?("SubUsers"))
|
23
24
|
users.children.replace([])
|
@@ -31,7 +32,8 @@ class TestActsAsTree < Test::Unit::TestCase
|
|
31
32
|
|
32
33
|
sub_users = users.class.new("SubUsers")
|
33
34
|
sub_users.parent = users
|
34
|
-
assert_equal("ou=SubUsers,#{users.dn}",
|
35
|
+
assert_equal(dn("ou=SubUsers,#{users.dn}"),
|
36
|
+
sub_users.dn)
|
35
37
|
assert_equal(["SubUsers"], users.children.collect(&:ou))
|
36
38
|
|
37
39
|
sub_users = ou_class.find("SubUsers")
|
@@ -46,7 +48,8 @@ class TestActsAsTree < Test::Unit::TestCase
|
|
46
48
|
assert_equal([], other_users.children.collect(&:ou))
|
47
49
|
|
48
50
|
sub_users.parent = other_users.dn
|
49
|
-
assert_equal("ou=SubUsers,#{other_users.dn}",
|
51
|
+
assert_equal(dn("ou=SubUsers,#{other_users.dn}"),
|
52
|
+
sub_users.dn)
|
50
53
|
|
51
54
|
other_users.clear_association_cache
|
52
55
|
assert_equal(["SubUsers"], other_users.children.collect(&:ou))
|
data/test/test_associations.rb
CHANGED
@@ -96,13 +96,14 @@ EOX
|
|
96
96
|
make_temporary_group do |group1|
|
97
97
|
make_temporary_group do |group2|
|
98
98
|
user.references = [group1, group2]
|
99
|
-
group3_dn = group2.dn.sub(/cn=(.*?),/, "cn=\\1-nonexistent,")
|
99
|
+
group3_dn = group2.dn.to_s.sub(/cn=(.*?),/, "cn=\\1-nonexistent,")
|
100
100
|
user.see_also += [group3_dn]
|
101
101
|
user.save!
|
102
102
|
|
103
|
+
group3_dn = dn(group3_dn)
|
103
104
|
user = @user_class.find(user.dn)
|
104
105
|
assert_equal([group1.dn, group2.dn, group3_dn],
|
105
|
-
user.see_also
|
106
|
+
user.see_also)
|
106
107
|
assert_equal([group1.dn, group2.dn, group3_dn],
|
107
108
|
user.references.collect(&:dn))
|
108
109
|
assert_equal([group1.gid_number, group2.gid_number, nil],
|
data/test/test_base.rb
CHANGED
@@ -6,6 +6,106 @@ class TestBase < Test::Unit::TestCase
|
|
6
6
|
include AlTestUtils
|
7
7
|
|
8
8
|
priority :must
|
9
|
+
def test_rename_with_superior
|
10
|
+
make_ou("sub,ou=users")
|
11
|
+
make_temporary_user(:simple => true) do |user,|
|
12
|
+
user.id = "user2,ou=sub,#{@user_class.base}"
|
13
|
+
assert_raise(ActiveLdap::NotImplemented) do
|
14
|
+
assert_true(user.save)
|
15
|
+
|
16
|
+
# the following codes aren't reached for now. :<
|
17
|
+
found_user = nil
|
18
|
+
assert_nothing_raised do
|
19
|
+
found_user = @user_class.find("user2")
|
20
|
+
end
|
21
|
+
base = @user_class.base
|
22
|
+
assert_equal("#{@user_class.dn_attribute}=user2,ou=sub,#{base}",
|
23
|
+
found_user.dn.to_s)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_rename
|
29
|
+
make_temporary_user(:simple => true) do |user,|
|
30
|
+
assert_not_equal("user2", user.id)
|
31
|
+
assert_raise(ActiveLdap::EntryNotFound) do
|
32
|
+
@user_class.find("user2")
|
33
|
+
end
|
34
|
+
user.id = "user2"
|
35
|
+
assert_true(user.save)
|
36
|
+
assert_equal("user2", user.id)
|
37
|
+
|
38
|
+
found_user = nil
|
39
|
+
assert_nothing_raised do
|
40
|
+
found_user = @user_class.find("user2")
|
41
|
+
end
|
42
|
+
assert_equal("user2", found_user.id)
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
priority :normal
|
47
|
+
def test_operational_attributes
|
48
|
+
make_temporary_group do |group|
|
49
|
+
dn, attributes = @group_class.search(:attributes => ["*"])[0]
|
50
|
+
normal_attributes = attributes.keys
|
51
|
+
dn, attributes = @group_class.search(:attributes => ["*", "+"])[0]
|
52
|
+
operational_attributes = attributes.keys - normal_attributes
|
53
|
+
operational_attribute = operational_attributes[0]
|
54
|
+
|
55
|
+
group = @group_class.find(:first, :attributes => ["*", "+"])
|
56
|
+
operational_attribute_value = group[operational_attribute]
|
57
|
+
assert_not_nil(operational_attribute_value)
|
58
|
+
group.save!
|
59
|
+
assert_equal(operational_attribute_value, group[operational_attribute])
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
def test_destroy_mixed_tree_by_instance
|
64
|
+
make_ou("base")
|
65
|
+
_entry_class = entry_class("ou=base")
|
66
|
+
_ou_class = ou_class("ou=base")
|
67
|
+
_dc_class = dc_class("ou=base")
|
68
|
+
|
69
|
+
root1 = _ou_class.create("root1")
|
70
|
+
child1 = _ou_class.create(:ou => "child1", :parent => root1)
|
71
|
+
child2 = _ou_class.create(:ou => "child2", :parent => root1)
|
72
|
+
domain = _dc_class.create(:dc => "domain", :o => "domain", :parent => root1)
|
73
|
+
child3 = _ou_class.create(:ou => "child3", :parent => root1)
|
74
|
+
root2 = _ou_class.create("root2")
|
75
|
+
assert_equal(["base",
|
76
|
+
"root1", "child1", "child2", "domain", "child3",
|
77
|
+
"root2"],
|
78
|
+
_entry_class.find(:all).collect(&:id))
|
79
|
+
assert_raise(ActiveLdap::DeleteError) do
|
80
|
+
root1.destroy_all
|
81
|
+
end
|
82
|
+
assert_equal(["base", "root1", "domain", "root2"],
|
83
|
+
_entry_class.find(:all).collect(&:id))
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_delete_mixed_tree_by_instance
|
87
|
+
make_ou("base")
|
88
|
+
_entry_class = entry_class("ou=base")
|
89
|
+
_ou_class = ou_class("ou=base")
|
90
|
+
_dc_class = dc_class("ou=base")
|
91
|
+
|
92
|
+
root1 = _ou_class.create("root1")
|
93
|
+
child1 = _ou_class.create(:ou => "child1", :parent => root1)
|
94
|
+
child2 = _ou_class.create(:ou => "child2", :parent => root1)
|
95
|
+
domain = _dc_class.create(:dc => "domain", :o => "domain", :parent => root1)
|
96
|
+
child3 = _ou_class.create(:ou => "child3", :parent => root1)
|
97
|
+
root2 = _ou_class.create("root2")
|
98
|
+
assert_equal(["base",
|
99
|
+
"root1", "child1", "child2", "domain", "child3",
|
100
|
+
"root2"],
|
101
|
+
_entry_class.find(:all).collect(&:id))
|
102
|
+
assert_raise(ActiveLdap::DeleteError) do
|
103
|
+
root1.delete_all
|
104
|
+
end
|
105
|
+
assert_equal(["base", "root1", "domain", "root2"],
|
106
|
+
_entry_class.find(:all).collect(&:id))
|
107
|
+
end
|
108
|
+
|
9
109
|
def test_delete_tree
|
10
110
|
make_ou("base")
|
11
111
|
_ou_class = ou_class("ou=base")
|
@@ -48,7 +148,6 @@ class TestBase < Test::Unit::TestCase
|
|
48
148
|
entry_class.find(:all).collect(&:id))
|
49
149
|
end
|
50
150
|
|
51
|
-
priority :normal
|
52
151
|
def test_first
|
53
152
|
make_temporary_user(:simple => true) do |user1,|
|
54
153
|
make_temporary_user(:simple => true) do |user2,|
|
@@ -290,7 +389,7 @@ class TestBase < Test::Unit::TestCase
|
|
290
389
|
make_temporary_user(:uid => "test-user,ou=SUB") do |user, password|
|
291
390
|
sub_user_class = Class.new(@user_class)
|
292
391
|
sub_user_class.ldap_mapping :prefix => "ou=sub"
|
293
|
-
assert_equal("uid=test-user,ou=sub,#{@user_class.base}",
|
392
|
+
assert_equal(dn("uid=test-user,ou=sub,#{@user_class.base}"),
|
294
393
|
sub_user_class.find(user.uid).dn)
|
295
394
|
end
|
296
395
|
end
|
@@ -398,9 +497,9 @@ class TestBase < Test::Unit::TestCase
|
|
398
497
|
|
399
498
|
def test_loose_dn
|
400
499
|
make_temporary_user do |user,|
|
401
|
-
assert(user.class.exists?(user.dn))
|
402
|
-
assert(user.class.exists?(user.dn.gsub(/,/, " , ")))
|
403
|
-
assert(user.class.exists?(user.dn.gsub(/=/, " = ")))
|
500
|
+
assert(user.class.exists?(user.dn.to_s))
|
501
|
+
assert(user.class.exists?(user.dn.to_s.gsub(/,/, " , ")))
|
502
|
+
assert(user.class.exists?(user.dn.to_s.gsub(/=/, " = ")))
|
404
503
|
end
|
405
504
|
end
|
406
505
|
|
data/test/test_dn.rb
CHANGED
@@ -12,6 +12,12 @@ class TestDN < Test::Unit::TestCase
|
|
12
12
|
end
|
13
13
|
|
14
14
|
priority :must
|
15
|
+
def test_parent
|
16
|
+
dn = parse("o=xxx,dc=local,dc=net")
|
17
|
+
assert_equal(parse("dc=local,dc=net"), dn.parent)
|
18
|
+
assert_equal(parse("dc=net"), dn.parent.parent)
|
19
|
+
assert_nil(dn.parent.parent.parent)
|
20
|
+
end
|
15
21
|
|
16
22
|
priority :normal
|
17
23
|
def test_case_insensitive_dn_minus
|
@@ -159,4 +165,8 @@ class TestDN < Test::Unit::TestCase
|
|
159
165
|
def assert_dn_to_s(expected, dn)
|
160
166
|
assert_equal(expected, ActiveLdap::DN.parse(dn).to_s)
|
161
167
|
end
|
168
|
+
|
169
|
+
def parse(dn)
|
170
|
+
ActiveLdap::DN.parse(dn)
|
171
|
+
end
|
162
172
|
end
|
data/test/test_groupls.rb
CHANGED
data/test/test_lpasswd.rb
CHANGED
data/test/test_reflection.rb
CHANGED
@@ -15,38 +15,28 @@ class TestReflection < Test::Unit::TestCase
|
|
15
15
|
|
16
16
|
def test_respond_to?
|
17
17
|
make_temporary_user do |user, password|
|
18
|
-
attributes = (user.must + user.may).collect(&:name)
|
18
|
+
attributes = (user.must + user.may).collect(&:name) - ["objectClass"]
|
19
19
|
_wrap_assertion do
|
20
20
|
attributes.each do |name|
|
21
|
-
|
22
|
-
assert(user.respond_to?("#{name}="), "#{name}=")
|
23
|
-
assert(user.respond_to?("#{name}?"), "#{name}?")
|
24
|
-
assert(user.respond_to?("#{name}_before_type_cast"),
|
25
|
-
"#{name}_before_type_cast")
|
21
|
+
assert_respond_to(user, name)
|
26
22
|
end
|
23
|
+
assert_not_respond_to(user, "objectClass")
|
27
24
|
end
|
28
25
|
|
29
26
|
user.replace_class(user.class.required_classes)
|
30
27
|
new_attributes = collect_attributes(user.class.required_classes)
|
28
|
+
new_attributes -= ["objectClass"]
|
31
29
|
|
32
30
|
_wrap_assertion do
|
33
31
|
assert_not_equal([], new_attributes)
|
34
32
|
new_attributes.each do |name|
|
35
|
-
|
36
|
-
assert(user.respond_to?("#{name}="), "#{name}=")
|
37
|
-
assert(user.respond_to?("#{name}?"), "#{name}?")
|
38
|
-
assert(user.respond_to?("#{name}_before_type_cast"),
|
39
|
-
"#{name}_before_type_cast")
|
33
|
+
assert_respond_to(user, name)
|
40
34
|
end
|
41
35
|
|
42
36
|
remained_attributes = (attributes - new_attributes)
|
43
37
|
assert_not_equal([], remained_attributes)
|
44
38
|
remained_attributes.each do |name|
|
45
|
-
|
46
|
-
assert(!user.respond_to?("#{name}="), "#{name}=")
|
47
|
-
assert(!user.respond_to?("#{name}?"), "#{name}?")
|
48
|
-
assert(!user.respond_to?("#{name}_before_type_cast"),
|
49
|
-
"#{name}_before_type_cast")
|
39
|
+
assert_not_respond_to(user, name)
|
50
40
|
end
|
51
41
|
end
|
52
42
|
end
|
@@ -135,6 +125,7 @@ class TestReflection < Test::Unit::TestCase
|
|
135
125
|
end
|
136
126
|
end
|
137
127
|
|
128
|
+
private
|
138
129
|
def assert_methods_with_only_required_classes(object, attributes)
|
139
130
|
old_classes = (object.classes - object.class.required_classes).uniq
|
140
131
|
old_attributes = collect_attributes(old_classes, false).uniq.sort
|
@@ -157,6 +148,22 @@ class TestReflection < Test::Unit::TestCase
|
|
157
148
|
required_attributes)
|
158
149
|
end
|
159
150
|
|
151
|
+
def assert_respond_to(object, name)
|
152
|
+
assert_true(object.respond_to?(name), name)
|
153
|
+
assert_true(object.respond_to?("#{name}="), "#{name}=")
|
154
|
+
assert_true(object.respond_to?("#{name}?"), "#{name}?")
|
155
|
+
assert_true(object.respond_to?("#{name}_before_type_cast"),
|
156
|
+
"#{name}_before_type_cast")
|
157
|
+
end
|
158
|
+
|
159
|
+
def assert_not_respond_to(object, name)
|
160
|
+
assert_false(object.respond_to?(name), name)
|
161
|
+
assert_false(object.respond_to?("#{name}="), "#{name}=")
|
162
|
+
assert_false(object.respond_to?("#{name}?"), "#{name}?")
|
163
|
+
assert_false(object.respond_to?("#{name}_before_type_cast"),
|
164
|
+
"#{name}_before_type_cast")
|
165
|
+
end
|
166
|
+
|
160
167
|
def collect_attributes(object_classes, with_aliases=true)
|
161
168
|
attributes = []
|
162
169
|
object_classes.each do |object_class|
|
data/test/test_schema.rb
CHANGED
@@ -2,6 +2,29 @@ require 'al-test-utils'
|
|
2
2
|
|
3
3
|
class TestSchema < Test::Unit::TestCase
|
4
4
|
priority :must
|
5
|
+
def test_directory_operation
|
6
|
+
attributes_schema =
|
7
|
+
"( 2.5.18.1 NAME 'createTimestamp' " +
|
8
|
+
"DESC 'RFC4512: time which ob ject was created' " +
|
9
|
+
"EQUALITY generalizedTimeMatch " +
|
10
|
+
"ORDERING generalizedTimeOrderingMatch " +
|
11
|
+
"SYNTAX 1.3.6.1.4.1.1466.115.121.1.24 " +
|
12
|
+
"SINGLE-VALUE NO-USER-MODIFICATION USAGE directoryOperation )"
|
13
|
+
|
14
|
+
assert_attribute_type({
|
15
|
+
:read_only => true,
|
16
|
+
:single_value => true,
|
17
|
+
:binary => false,
|
18
|
+
:binary_required => false,
|
19
|
+
:directory_operation => true,
|
20
|
+
:syntax => "1.3.6.1.4.1.1466.115.121.1.24",
|
21
|
+
:syntax_description => nil,
|
22
|
+
},
|
23
|
+
"createTimestamp",
|
24
|
+
[attributes_schema])
|
25
|
+
end
|
26
|
+
|
27
|
+
priority :normal
|
5
28
|
def test_dit_content_rule
|
6
29
|
object_class_schema = "( 2.5.6.6 NAME 'person' DESC " +
|
7
30
|
"'RFC2256: a person' SUP top STRUCTURAL MUST sn " +
|
@@ -37,7 +60,6 @@ class TestSchema < Test::Unit::TestCase
|
|
37
60
|
})
|
38
61
|
end
|
39
62
|
|
40
|
-
priority :normal
|
41
63
|
def test_oid_list_with_just_only_one_oid
|
42
64
|
ou_schema = "( 2.5.6.5 NAME 'organizationalUnit' SUP top STRUCTURAL MUST " +
|
43
65
|
"(ou ) MAY (c $ l $ st $ street $ searchGuide $ businessCategory $ " +
|
@@ -524,4 +546,14 @@ class TestSchema < Test::Unit::TestCase
|
|
524
546
|
end
|
525
547
|
assert_equal(expected, result)
|
526
548
|
end
|
549
|
+
|
550
|
+
def assert_attribute_type(expected, name, schemata)
|
551
|
+
group = 'attributeTypes'
|
552
|
+
entry = {group => schemata}
|
553
|
+
schema = ActiveLdap::Schema.new(entry)
|
554
|
+
attribute_hash = schema.attribute(name).to_hash
|
555
|
+
syntax = attribute_hash[:syntax]
|
556
|
+
attribute_hash[:syntax] = syntax.id if syntax
|
557
|
+
assert_equal(expected, attribute_hash)
|
558
|
+
end
|
527
559
|
end
|
data/test/test_useradd-binary.rb
CHANGED
data/test/test_useradd.rb
CHANGED
data/test/test_userdel.rb
CHANGED
data/test/test_userls.rb
CHANGED
@@ -7,7 +7,7 @@ class TestUsermodBinaryAddTime < Test::Unit::TestCase
|
|
7
7
|
super
|
8
8
|
@command = File.join(@examples_dir, "usermod-binary-add-time")
|
9
9
|
make_ou("People")
|
10
|
-
@user_class.
|
10
|
+
@user_class.prefix = "ou=People"
|
11
11
|
end
|
12
12
|
|
13
13
|
priority :must
|
data/test/test_usermod.rb
CHANGED
data/test/test_validation.rb
CHANGED
@@ -6,6 +6,51 @@ class TestValidation < Test::Unit::TestCase
|
|
6
6
|
include ActiveLdap::Helper
|
7
7
|
|
8
8
|
priority :must
|
9
|
+
def test_rename_duplicated
|
10
|
+
make_temporary_user(:simple => true) do |user1,|
|
11
|
+
make_temporary_user(:simple => true) do |user2,|
|
12
|
+
user1.id = user2.id
|
13
|
+
assert_false(user1.save)
|
14
|
+
|
15
|
+
format = _("%{fn} is duplicated: %s")
|
16
|
+
format = format.sub(/^%\{fn\}/, la_('distinguishedName'))
|
17
|
+
assert_equal([format % [user2.dn.to_s]],
|
18
|
+
user1.errors.full_messages)
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
priority :normal
|
24
|
+
def test_not_show_binary_value
|
25
|
+
make_temporary_user do |user,|
|
26
|
+
user.user_certificate = nil
|
27
|
+
user.jpeg_photo = "XXX"
|
28
|
+
assert_not_predicate(user, :save)
|
29
|
+
|
30
|
+
format = _("%{fn} has invalid format: %s: required syntax: %s: %s")
|
31
|
+
format = format.sub(/^%\{fn\}/, la_('jpegPhoto'))
|
32
|
+
arguments = [_("<binary-value>"),
|
33
|
+
lsd_("1.3.6.1.4.1.1466.115.121.1.28"),
|
34
|
+
_("invalid JPEG format")]
|
35
|
+
message = format % arguments
|
36
|
+
assert_equal([message],
|
37
|
+
user.errors.full_messages)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_validation_skip_attributes
|
42
|
+
make_temporary_group do |group|
|
43
|
+
group.gid_number = nil
|
44
|
+
assert_raise(ActiveLdap::EntryInvalid) do
|
45
|
+
group.save!
|
46
|
+
end
|
47
|
+
group.validation_skip_attributes << "gidNumber"
|
48
|
+
assert_raise(ActiveLdap::RequiredAttributeMissed) do
|
49
|
+
group.save!
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
9
54
|
def test_set_attributes_with_invalid_dn_attribute_value
|
10
55
|
user = nil
|
11
56
|
assert_nothing_raised do
|
@@ -14,7 +59,6 @@ class TestValidation < Test::Unit::TestCase
|
|
14
59
|
assert(!user.valid?)
|
15
60
|
end
|
16
61
|
|
17
|
-
priority :normal
|
18
62
|
def test_set_attribute_to_invalid_dn_attribute_value_object
|
19
63
|
user = @user_class.new("=")
|
20
64
|
assert_nothing_raised do
|
@@ -30,7 +74,7 @@ class TestValidation < Test::Unit::TestCase
|
|
30
74
|
invalid_format = _("%s is invalid distinguished name (DN): %s")
|
31
75
|
invalid_message = invalid_format % ["uid==,#{user.class.base}", reason]
|
32
76
|
format = _("%{fn} is invalid: %s")
|
33
|
-
format = format.sub(/^%\{fn\}/, la_('
|
77
|
+
format = format.sub(/^%\{fn\}/, la_('distinguishedName'))
|
34
78
|
message = format % invalid_message
|
35
79
|
assert_equal([message],
|
36
80
|
user.errors.full_messages.find_all {|m| /DN/ =~ m})
|
@@ -44,7 +88,7 @@ class TestValidation < Test::Unit::TestCase
|
|
44
88
|
invalid_format = _("%s is invalid distinguished name (DN): %s")
|
45
89
|
invalid_message = invalid_format % ["uid==,#{user.class.base}", reason]
|
46
90
|
format = _("%{fn} is invalid: %s")
|
47
|
-
format = format.sub(/^%\{fn\}/, la_('
|
91
|
+
format = format.sub(/^%\{fn\}/, la_('distinguishedName'))
|
48
92
|
message = format % invalid_message
|
49
93
|
assert_equal([message], user.errors.full_messages)
|
50
94
|
end
|
@@ -142,7 +186,7 @@ class TestValidation < Test::Unit::TestCase
|
|
142
186
|
ou = ou_class.new("YYY")
|
143
187
|
assert(!ou.save)
|
144
188
|
format = _("%{fn} is duplicated: %s")
|
145
|
-
format = format.sub(/^%\{fn\}/, la_("
|
189
|
+
format = format.sub(/^%\{fn\}/, la_("distinguishedName"))
|
146
190
|
message = format % ou.dn
|
147
191
|
assert_equal([message], ou.errors.full_messages)
|
148
192
|
end
|
@@ -156,9 +200,6 @@ class TestValidation < Test::Unit::TestCase
|
|
156
200
|
end
|
157
201
|
|
158
202
|
@group_class.validates_presence_of(:description)
|
159
|
-
def @group_class.name
|
160
|
-
"Group"
|
161
|
-
end
|
162
203
|
assert_raises(ActiveLdap::EntryInvalid) do
|
163
204
|
group.save!
|
164
205
|
end
|
@@ -174,9 +215,6 @@ class TestValidation < Test::Unit::TestCase
|
|
174
215
|
assert_equal([], group.errors.to_a)
|
175
216
|
|
176
217
|
@group_class.validates_presence_of(:description)
|
177
|
-
def @group_class.name
|
178
|
-
"Group"
|
179
|
-
end
|
180
218
|
assert(!group.valid?)
|
181
219
|
assert(group.errors.invalid?(:description))
|
182
220
|
assert_equal(1, group.errors.size)
|