OSDN Git Service

342d291a2c88cd52b454394ec2db89744e2b3f5c
[redminele/redminele.git] / ruby / lib / ruby / gems / 1.8 / gems / activeldap-1.2.4 / test / test_connection_per_class.rb
1 require 'al-test-utils'
2
3 class TestConnectionPerClass < Test::Unit::TestCase
4   include AlTestUtils
5
6   priority :must
7   def test_multi_setup_connections_with_association
8     make_ou("Sub,ou=Users")
9     make_ou("Sub2,ou=Users")
10
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)
17
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
23         assert(sub_user.save)
24
25         sub_user = sub_user_class.find(user.uid)
26         assert_equal(["ou=Sub2"],
27                      sub_user.related_entries.collect {|e| e.class.prefix})
28       end
29     end
30   end
31
32   priority :normal
33   def test_multi_setup_connections
34     make_ou("Sub")
35     make_ou("Sub2")
36     sub_class = ou_class("ou=Sub")
37     sub2_class = ou_class("ou=Sub2")
38
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
48
49     sub_class.setup_connection(sub_configuration)
50     sub_class.prefix = nil
51     sub2_class.setup_connection(sub2_configuration)
52     sub2_class.prefix = nil
53
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))
58   end
59
60   def test_bind
61     non_anon_class = ou_class("ou=NonAnonymous")
62     anon_class = ou_class("ou=Anonymous")
63
64     assert(non_anon_class.connection.bound?)
65     assert(anon_class.connection.bound?)
66
67     anon_class.connection.unbind
68     assert(!non_anon_class.connection.bound?)
69     assert(!anon_class.connection.bound?)
70
71     anon_class.connection.rebind
72     assert(non_anon_class.connection.bound?)
73     assert(anon_class.connection.bound?)
74
75     assert_raises(ActiveLdap::AuthenticationError) do
76       connect(non_anon_class,
77               :bind_dn => nil,
78               :allow_anonymous => false,
79               :retry_limit => 0)
80     end
81
82     assert(!non_anon_class.connection.bound?)
83     assert(anon_class.connection.bound?)
84
85     anon_class.connection.unbind
86     assert(!non_anon_class.connection.bound?)
87     assert(!anon_class.connection.bound?)
88
89     anon_class.connection.rebind
90     assert(!non_anon_class.connection.bound?)
91     assert(anon_class.connection.bound?)
92
93     anon_class.connection.unbind
94     assert(!non_anon_class.connection.bound?)
95     assert(!anon_class.connection.bound?)
96
97     assert_nothing_raised do
98       connect(anon_class,
99               :bind_dn => nil,
100               :allow_anonymous => true)
101     end
102
103     assert(!non_anon_class.connection.bound?)
104     assert(anon_class.connection.bound?)
105   end
106
107   private
108   def connect(klass, config)
109     klass.setup_connection({:adapter => adapter}.merge(config))
110     klass.connection.connect
111   end
112 end