1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146
|
require 'al-test-utils'
class TestConnectionPerClass < Test::Unit::TestCase
include AlTestUtils
priority :must
def test_multi_setup_connections_with_association
make_ou("Sub,ou=Users")
make_ou("Sub2,ou=Users")
sub_user_class = Class.new(@user_class)
sub_user_class.prefix = "ou=Sub"
sub2_user_class = Class.new(@user_class)
sub2_user_class.prefix = "ou=Sub2"
sub_user_class.has_many(:related_entries, :wrap => "seeAlso")
sub_user_class.set_associated_class(:related_entries, sub2_user_class)
make_temporary_user(:uid => "uid=user1,ou=Sub") do |user,|
make_temporary_user(:uid => "uid=user2,ou=Sub2") do |user2,|
sub_user = sub_user_class.find(user.uid)
sub2_user = sub2_user_class.find(user2.uid)
sub_user.see_also = sub2_user.dn
assert(sub_user.save)
sub_user = sub_user_class.find(user.uid)
assert_equal(["ou=Sub2"],
sub_user.related_entries.collect {|e| e.class.prefix})
end
end
end
priority :normal
def test_multi_setup_connections
make_ou("Sub")
make_ou("Sub2")
sub_class = ou_class("ou=Sub")
sub2_class = ou_class("ou=Sub2")
configuration = current_configuration.symbolize_keys
configuration[:scope] = :base
current_base = configuration[:base]
sub_configuration = configuration.dup
sub_base = "ou=Sub,#{current_base}"
sub_configuration[:base] = sub_base
sub2_configuration = configuration.dup
sub2_base = "ou=Sub2,#{current_base}"
sub2_configuration[:base] = sub2_base
sub_class.setup_connection(sub_configuration)
sub_class.prefix = nil
sub2_class.setup_connection(sub2_configuration)
sub2_class.prefix = nil
assert_equal([sub_base], sub_class.find(:all).collect(&:dn))
assert_equal([sub2_base], sub2_class.find(:all).collect(&:dn))
assert_equal([sub_base], sub_class.find(:all).collect(&:dn))
assert_equal([sub2_base], sub2_class.find(:all).collect(&:dn))
end
def test_multi_same_setup_connections
make_ou("Sub")
sub_class1 = ou_class("ou=Sub")
sub_class2 = ou_class("ou=Sub")
configuration = current_configuration.symbolize_keys
configuration[:scope] = :base
current_base = configuration[:base]
sub_configuration = configuration.dup
sub_base = "ou=Sub,#{current_base}"
sub_configuration[:base] = sub_base
sub_class1.setup_connection(sub_configuration)
sub_class2.setup_connection(sub_configuration)
sub_configuration1 = sub_class1.configuration
sub_configuration2 = sub_class2.configuration
assert_not_nil(sub_configuration1)
assert_not_nil(sub_configuration2)
sub_class1.setup_connection(sub_configuration.dup)
sub_class1.prefix = nil
assert_equal([
sub_configuration1,
sub_configuration2,
],
[
sub_class1.configuration,
sub_class2.configuration,
])
end
def test_bind
non_anon_class = ou_class("ou=NonAnonymous")
anon_class = ou_class("ou=Anonymous")
assert(non_anon_class.connection.bound?)
assert(anon_class.connection.bound?)
anon_class.connection.unbind
assert(!non_anon_class.connection.bound?)
assert(!anon_class.connection.bound?)
anon_class.connection.rebind
assert(non_anon_class.connection.bound?)
assert(anon_class.connection.bound?)
assert_raises(ActiveLdap::AuthenticationError) do
connect(non_anon_class,
:bind_dn => nil,
:allow_anonymous => false,
:retry_limit => 0)
end
assert(!non_anon_class.connection.bound?)
assert(anon_class.connection.bound?)
anon_class.connection.unbind
assert(!non_anon_class.connection.bound?)
assert(!anon_class.connection.bound?)
anon_class.connection.rebind
assert(!non_anon_class.connection.bound?)
assert(anon_class.connection.bound?)
anon_class.connection.unbind
assert(!non_anon_class.connection.bound?)
assert(!anon_class.connection.bound?)
assert_nothing_raised do
connect(anon_class,
:bind_dn => nil,
:allow_anonymous => true)
end
assert(!non_anon_class.connection.bound?)
assert(anon_class.connection.bound?)
end
private
def connect(klass, config)
klass.setup_connection({:adapter => adapter}.merge(config))
klass.connection.connect
end
end
|