1 require 'al-test-utils'
3 class TestConnectionPerClass < Test::Unit::TestCase
7 def test_multi_setup_connections_with_association
8 make_ou("Sub,ou=Users")
9 make_ou("Sub2,ou=Users")
11 sub_user_class = Class.new(@user_class)
12 sub_user_class.prefix = "ou=Sub"
13 sub2_user_class = Class.new(@user_class)
14 sub2_user_class.prefix = "ou=Sub2"
15 sub_user_class.has_many(:related_entries, :wrap => "seeAlso")
16 sub_user_class.set_associated_class(:related_entries, sub2_user_class)
18 make_temporary_user(:uid => "uid=user1,ou=Sub") do |user,|
19 make_temporary_user(:uid => "uid=user2,ou=Sub2") do |user2,|
20 sub_user = sub_user_class.find(user.uid)
21 sub2_user = sub2_user_class.find(user2.uid)
22 sub_user.see_also = sub2_user.dn
25 sub_user = sub_user_class.find(user.uid)
26 assert_equal(["ou=Sub2"],
27 sub_user.related_entries.collect {|e| e.class.prefix})
33 def test_multi_setup_connections
36 sub_class = ou_class("ou=Sub")
37 sub2_class = ou_class("ou=Sub2")
39 configuration = current_configuration.symbolize_keys
40 configuration[:scope] = :base
41 current_base = configuration[:base]
42 sub_configuration = configuration.dup
43 sub_base = "ou=Sub,#{current_base}"
44 sub_configuration[:base] = sub_base
45 sub2_configuration = configuration.dup
46 sub2_base = "ou=Sub2,#{current_base}"
47 sub2_configuration[:base] = sub2_base
49 sub_class.setup_connection(sub_configuration)
50 sub_class.prefix = nil
51 sub2_class.setup_connection(sub2_configuration)
52 sub2_class.prefix = nil
54 assert_equal([sub_base], sub_class.find(:all).collect(&:dn))
55 assert_equal([sub2_base], sub2_class.find(:all).collect(&:dn))
56 assert_equal([sub_base], sub_class.find(:all).collect(&:dn))
57 assert_equal([sub2_base], sub2_class.find(:all).collect(&:dn))
61 non_anon_class = ou_class("ou=NonAnonymous")
62 anon_class = ou_class("ou=Anonymous")
64 assert(non_anon_class.connection.bound?)
65 assert(anon_class.connection.bound?)
67 anon_class.connection.unbind
68 assert(!non_anon_class.connection.bound?)
69 assert(!anon_class.connection.bound?)
71 anon_class.connection.rebind
72 assert(non_anon_class.connection.bound?)
73 assert(anon_class.connection.bound?)
75 assert_raises(ActiveLdap::AuthenticationError) do
76 connect(non_anon_class,
78 :allow_anonymous => false,
82 assert(!non_anon_class.connection.bound?)
83 assert(anon_class.connection.bound?)
85 anon_class.connection.unbind
86 assert(!non_anon_class.connection.bound?)
87 assert(!anon_class.connection.bound?)
89 anon_class.connection.rebind
90 assert(!non_anon_class.connection.bound?)
91 assert(anon_class.connection.bound?)
93 anon_class.connection.unbind
94 assert(!non_anon_class.connection.bound?)
95 assert(!anon_class.connection.bound?)
97 assert_nothing_raised do
100 :allow_anonymous => true)
103 assert(!non_anon_class.connection.bound?)
104 assert(anon_class.connection.bound?)
108 def connect(klass, config)
109 klass.setup_connection({:adapter => adapter}.merge(config))
110 klass.connection.connect