-
Notifications
You must be signed in to change notification settings - Fork 251
/
Copy pathtest_open.rb
88 lines (69 loc) · 2.79 KB
/
test_open.rb
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
require_relative '../test_helper'
class TestOpenIntegration < LDAPIntegrationTestCase
def test_binds_without_open
events = @service.subscribe "bind.net_ldap_connection"
@ldap.search(filter: "uid=user1", base: "ou=People,dc=rubyldap,dc=com", ignore_server_caps: true)
@ldap.search(filter: "uid=user1", base: "ou=People,dc=rubyldap,dc=com", ignore_server_caps: true)
assert_equal 2, events.size
end
def test_binds_with_open
events = @service.subscribe "bind.net_ldap_connection"
@ldap.open do
@ldap.search(filter: "uid=user1", base: "ou=People,dc=rubyldap,dc=com", ignore_server_caps: true)
@ldap.search(filter: "uid=user1", base: "ou=People,dc=rubyldap,dc=com", ignore_server_caps: true)
end
assert_equal 1, events.size
end
# NOTE: query for two or more entries so that the socket must be read
# multiple times.
# See The Problem: https://github.com/ruby-ldap/ruby-net-ldap/issues/136
def test_nested_search_without_open
entries = []
nested_entry = nil
@ldap.search(filter: "(|(uid=user1)(uid=user2))", base: "ou=People,dc=rubyldap,dc=com") do |entry|
entries << entry.uid.first
nested_entry ||= @ldap.search(filter: "uid=user3", base: "ou=People,dc=rubyldap,dc=com").first
end
assert_equal "user3", nested_entry.uid.first
assert_equal %w(user1 user2), entries
end
def test_nested_search_with_open
entries = []
nested_entry = nil
@ldap.open do
@ldap.search(filter: "(|(uid=user1)(uid=user2))", base: "ou=People,dc=rubyldap,dc=com") do |entry|
entries << entry.uid.first
nested_entry ||= @ldap.search(filter: "uid=user3", base: "ou=People,dc=rubyldap,dc=com").first
end
end
assert_equal "user3", nested_entry.uid.first
assert_equal %w(user1 user2), entries
end
def test_nested_add_with_open
entries = []
nested_entry = nil
dn = "uid=nested-open-added-user1,ou=People,dc=rubyldap,dc=com"
attrs = {
objectclass: %w(top inetOrgPerson organizationalPerson person),
uid: "nested-open-added-user1",
cn: "nested-open-added-user1",
sn: "nested-open-added-user1",
mail: "[email protected]"
}
@ldap.authenticate "cn=admin,dc=rubyldap,dc=com", "passworD1"
@ldap.delete dn: dn
@ldap.open do
@ldap.search(filter: "(|(uid=user1)(uid=user2))", base: "ou=People,dc=rubyldap,dc=com") do |entry|
entries << entry.uid.first
nested_entry ||= begin
assert @ldap.add(dn: dn, attributes: attrs), @ldap.get_operation_result.inspect
@ldap.search(base: dn, scope: Net::LDAP::SearchScope_BaseObject).first
end
end
end
assert_equal %w(user1 user2), entries
assert_equal "nested-open-added-user1", nested_entry.uid.first
ensure
@ldap.delete dn: dn
end
end