net-ldap 0.16.1 → 0.17.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/History.rdoc +53 -0
- data/README.rdoc +18 -6
- data/lib/net/ber/core_ext.rb +6 -6
- data/lib/net/ber.rb +2 -2
- data/lib/net/ldap/auth_adapter/gss_spnego.rb +2 -2
- data/lib/net/ldap/auth_adapter/sasl.rb +1 -1
- data/lib/net/ldap/auth_adapter/simple.rb +1 -1
- data/lib/net/ldap/connection.rb +11 -6
- data/lib/net/ldap/dataset.rb +1 -3
- data/lib/net/ldap/dn.rb +10 -10
- data/lib/net/ldap/entry.rb +11 -2
- data/lib/net/ldap/error.rb +2 -26
- data/lib/net/ldap/filter.rb +10 -3
- data/lib/net/ldap/instrumentation.rb +2 -2
- data/lib/net/ldap/password.rb +7 -5
- data/lib/net/ldap/pdu.rb +1 -1
- data/lib/net/ldap/version.rb +1 -1
- data/lib/net/ldap.rb +40 -17
- data/lib/net/snmp.rb +1 -1
- data/lib/net-ldap.rb +1 -1
- metadata +28 -118
- data/.gitignore +0 -9
- data/.rubocop.yml +0 -20
- data/.rubocop_todo.yml +0 -753
- data/.travis.yml +0 -33
- data/CONTRIBUTING.md +0 -54
- data/Gemfile +0 -2
- data/Rakefile +0 -23
- data/net-ldap.gemspec +0 -37
- data/script/changelog +0 -47
- data/script/generate-fixture-ca +0 -48
- data/script/install-openldap +0 -134
- data/script/package +0 -7
- data/script/release +0 -16
- data/test/ber/core_ext/test_array.rb +0 -22
- data/test/ber/core_ext/test_string.rb +0 -25
- data/test/ber/test_ber.rb +0 -153
- data/test/fixtures/ca/ca.info +0 -4
- data/test/fixtures/ca/cacert.pem +0 -24
- data/test/fixtures/ca/cakey.pem +0 -190
- data/test/fixtures/openldap/memberof.ldif +0 -33
- data/test/fixtures/openldap/retcode.ldif +0 -76
- data/test/fixtures/openldap/slapd.conf.ldif +0 -67
- data/test/fixtures/seed.ldif +0 -374
- data/test/integration/test_add.rb +0 -28
- data/test/integration/test_ber.rb +0 -30
- data/test/integration/test_bind.rb +0 -244
- data/test/integration/test_delete.rb +0 -31
- data/test/integration/test_open.rb +0 -88
- data/test/integration/test_password_modify.rb +0 -93
- data/test/integration/test_return_codes.rb +0 -38
- data/test/integration/test_search.rb +0 -77
- data/test/support/vm/openldap/.gitignore +0 -1
- data/test/support/vm/openldap/README.md +0 -64
- data/test/support/vm/openldap/Vagrantfile +0 -34
- data/test/test_auth_adapter.rb +0 -15
- data/test/test_dn.rb +0 -44
- data/test/test_entry.rb +0 -65
- data/test/test_filter.rb +0 -223
- data/test/test_filter_parser.rb +0 -24
- data/test/test_helper.rb +0 -74
- data/test/test_ldap.rb +0 -114
- data/test/test_ldap_connection.rb +0 -491
- data/test/test_ldif.rb +0 -104
- data/test/test_password.rb +0 -10
- data/test/test_rename.rb +0 -77
- data/test/test_search.rb +0 -39
- data/test/test_snmp.rb +0 -119
- data/test/test_ssl_ber.rb +0 -40
- data/test/testdata.ldif +0 -101
- data/testserver/ldapserver.rb +0 -209
- data/testserver/testdata.ldif +0 -101
data/test/test_filter.rb
DELETED
@@ -1,223 +0,0 @@
|
|
1
|
-
require_relative 'test_helper'
|
2
|
-
|
3
|
-
class TestFilter < Test::Unit::TestCase
|
4
|
-
Filter = Net::LDAP::Filter
|
5
|
-
|
6
|
-
def test_bug_7534_rfc2254
|
7
|
-
assert_equal("(cn=Tim Wizard)",
|
8
|
-
Filter.from_rfc2254("(cn=Tim Wizard)").to_rfc2254)
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_invalid_filter_string
|
12
|
-
assert_raises(Net::LDAP::FilterSyntaxInvalidError) { Filter.from_rfc2254("") }
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_invalid_filter
|
16
|
-
assert_raises(Net::LDAP::OperatorError) do
|
17
|
-
# This test exists to prove that our constructor blocks unknown filter
|
18
|
-
# types. All filters must be constructed using helpers.
|
19
|
-
Filter.__send__(:new, :xx, nil, nil)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_to_s
|
24
|
-
assert_equal("(uid=george *)", Filter.eq("uid", "george *").to_s)
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_convenience_filters
|
28
|
-
assert_equal("(uid=\\2A)", Filter.equals("uid", "*").to_s)
|
29
|
-
assert_equal("(uid=\\28*)", Filter.begins("uid", "(").to_s)
|
30
|
-
assert_equal("(uid=*\\29)", Filter.ends("uid", ")").to_s)
|
31
|
-
assert_equal("(uid=*\\5C*)", Filter.contains("uid", "\\").to_s)
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_c2
|
35
|
-
assert_equal("(uid=george *)",
|
36
|
-
Filter.from_rfc2254("uid=george *").to_rfc2254)
|
37
|
-
assert_equal("(uid:=george *)",
|
38
|
-
Filter.from_rfc2254("uid:=george *").to_rfc2254)
|
39
|
-
assert_equal("(uid=george*)",
|
40
|
-
Filter.from_rfc2254(" ( uid = george* ) ").to_rfc2254)
|
41
|
-
assert_equal("(!(uid=george*))",
|
42
|
-
Filter.from_rfc2254("uid!=george*").to_rfc2254)
|
43
|
-
assert_equal("(uid<=george*)",
|
44
|
-
Filter.from_rfc2254("uid <= george*").to_rfc2254)
|
45
|
-
assert_equal("(uid>=george*)",
|
46
|
-
Filter.from_rfc2254("uid>=george*").to_rfc2254)
|
47
|
-
assert_equal("(&(uid=george*)(mail=*))",
|
48
|
-
Filter.from_rfc2254("(& (uid=george* ) (mail=*))").to_rfc2254)
|
49
|
-
assert_equal("(|(uid=george*)(mail=*))",
|
50
|
-
Filter.from_rfc2254("(| (uid=george* ) (mail=*))").to_rfc2254)
|
51
|
-
assert_equal("(!(mail=*))",
|
52
|
-
Filter.from_rfc2254("(! (mail=*))").to_rfc2254)
|
53
|
-
end
|
54
|
-
|
55
|
-
def test_filter_with_single_clause
|
56
|
-
assert_equal("(cn=name)", Net::LDAP::Filter.construct("(&(cn=name))").to_s)
|
57
|
-
end
|
58
|
-
|
59
|
-
def test_filters_from_ber
|
60
|
-
[
|
61
|
-
Net::LDAP::Filter.eq("objectclass", "*"),
|
62
|
-
Net::LDAP::Filter.pres("objectclass"),
|
63
|
-
Net::LDAP::Filter.eq("objectclass", "ou"),
|
64
|
-
Net::LDAP::Filter.ge("uid", "500"),
|
65
|
-
Net::LDAP::Filter.le("uid", "500"),
|
66
|
-
(~ Net::LDAP::Filter.pres("objectclass")),
|
67
|
-
(Net::LDAP::Filter.pres("objectclass") & Net::LDAP::Filter.pres("ou")),
|
68
|
-
(Net::LDAP::Filter.pres("objectclass") & Net::LDAP::Filter.pres("ou") & Net::LDAP::Filter.pres("sn")),
|
69
|
-
(Net::LDAP::Filter.pres("objectclass") | Net::LDAP::Filter.pres("ou") | Net::LDAP::Filter.pres("sn")),
|
70
|
-
|
71
|
-
Net::LDAP::Filter.eq("objectclass", "*aaa"),
|
72
|
-
Net::LDAP::Filter.eq("objectclass", "*aaa*bbb"),
|
73
|
-
Net::LDAP::Filter.eq("objectclass", "*aaa*bbb*ccc"),
|
74
|
-
Net::LDAP::Filter.eq("objectclass", "aaa*bbb"),
|
75
|
-
Net::LDAP::Filter.eq("objectclass", "aaa*bbb*ccc"),
|
76
|
-
Net::LDAP::Filter.eq("objectclass", "abc*def*1111*22*g"),
|
77
|
-
Net::LDAP::Filter.eq("objectclass", "*aaa*"),
|
78
|
-
Net::LDAP::Filter.eq("objectclass", "*aaa*bbb*"),
|
79
|
-
Net::LDAP::Filter.eq("objectclass", "*aaa*bbb*ccc*"),
|
80
|
-
Net::LDAP::Filter.eq("objectclass", "aaa*"),
|
81
|
-
Net::LDAP::Filter.eq("objectclass", "aaa*bbb*"),
|
82
|
-
Net::LDAP::Filter.eq("objectclass", "aaa*bbb*ccc*"),
|
83
|
-
].each do |ber|
|
84
|
-
f = Net::LDAP::Filter.parse_ber(ber.to_ber.read_ber(Net::LDAP::AsnSyntax))
|
85
|
-
assert(f == ber)
|
86
|
-
assert_equal(f.to_ber, ber.to_ber)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
def test_ber_from_rfc2254_filter
|
91
|
-
[
|
92
|
-
Net::LDAP::Filter.construct("objectclass=*"),
|
93
|
-
Net::LDAP::Filter.construct("objectclass=ou"),
|
94
|
-
Net::LDAP::Filter.construct("uid >= 500"),
|
95
|
-
Net::LDAP::Filter.construct("uid <= 500"),
|
96
|
-
Net::LDAP::Filter.construct("(!(uid=*))"),
|
97
|
-
Net::LDAP::Filter.construct("(&(uid=*)(objectclass=*))"),
|
98
|
-
Net::LDAP::Filter.construct("(&(uid=*)(objectclass=*)(sn=*))"),
|
99
|
-
Net::LDAP::Filter.construct("(|(uid=*)(objectclass=*))"),
|
100
|
-
Net::LDAP::Filter.construct("(|(uid=*)(objectclass=*)(sn=*))"),
|
101
|
-
|
102
|
-
Net::LDAP::Filter.construct("objectclass=*aaa"),
|
103
|
-
Net::LDAP::Filter.construct("objectclass=*aaa*bbb"),
|
104
|
-
Net::LDAP::Filter.construct("objectclass=*aaa bbb"),
|
105
|
-
Net::LDAP::Filter.construct("objectclass=*aaa bbb"),
|
106
|
-
Net::LDAP::Filter.construct("objectclass=*aaa*bbb*ccc"),
|
107
|
-
Net::LDAP::Filter.construct("objectclass=aaa*bbb"),
|
108
|
-
Net::LDAP::Filter.construct("objectclass=aaa*bbb*ccc"),
|
109
|
-
Net::LDAP::Filter.construct("objectclass=abc*def*1111*22*g"),
|
110
|
-
Net::LDAP::Filter.construct("objectclass=*aaa*"),
|
111
|
-
Net::LDAP::Filter.construct("objectclass=*aaa*bbb*"),
|
112
|
-
Net::LDAP::Filter.construct("objectclass=*aaa*bbb*ccc*"),
|
113
|
-
Net::LDAP::Filter.construct("objectclass=aaa*"),
|
114
|
-
Net::LDAP::Filter.construct("objectclass=aaa*bbb*"),
|
115
|
-
Net::LDAP::Filter.construct("objectclass=aaa*bbb*ccc*"),
|
116
|
-
].each do |ber|
|
117
|
-
f = Net::LDAP::Filter.parse_ber(ber.to_ber.read_ber(Net::LDAP::AsnSyntax))
|
118
|
-
assert(f == ber)
|
119
|
-
assert_equal(f.to_ber, ber.to_ber)
|
120
|
-
end
|
121
|
-
end
|
122
|
-
end
|
123
|
-
|
124
|
-
# tests ported over from rspec. Not sure if these overlap with the above
|
125
|
-
# https://github.com/ruby-ldap/ruby-net-ldap/pull/121
|
126
|
-
class TestFilterRSpec < Test::Unit::TestCase
|
127
|
-
def test_ex_convert
|
128
|
-
assert_equal '(foo:=bar)', Net::LDAP::Filter.ex('foo', 'bar').to_s
|
129
|
-
end
|
130
|
-
|
131
|
-
def test_ex_rfc2254_roundtrip
|
132
|
-
filter = Net::LDAP::Filter.ex('foo', 'bar')
|
133
|
-
assert_equal filter, Net::LDAP::Filter.from_rfc2254(filter.to_s)
|
134
|
-
end
|
135
|
-
|
136
|
-
def test_ber_conversion
|
137
|
-
filter = Net::LDAP::Filter.ex('foo', 'bar')
|
138
|
-
ber = filter.to_ber
|
139
|
-
assert_equal filter, Net::LDAP::Filter.parse_ber(ber.read_ber(Net::LDAP::AsnSyntax))
|
140
|
-
end
|
141
|
-
|
142
|
-
[
|
143
|
-
'(o:dn:=Ace Industry)',
|
144
|
-
'(:dn:2.4.8.10:=Dino)',
|
145
|
-
'(cn:dn:1.2.3.4.5:=John Smith)',
|
146
|
-
'(sn:dn:2.4.6.8.10:=Barbara Jones)',
|
147
|
-
'(&(sn:dn:2.4.6.8.10:=Barbara Jones))',
|
148
|
-
].each_with_index do |filter_str, index|
|
149
|
-
define_method "test_decode_filter_#{index}" do
|
150
|
-
filter = Net::LDAP::Filter.from_rfc2254(filter_str)
|
151
|
-
assert_kind_of Net::LDAP::Filter, filter
|
152
|
-
end
|
153
|
-
|
154
|
-
define_method "test_ber_conversion_#{index}" do
|
155
|
-
filter = Net::LDAP::Filter.from_rfc2254(filter_str)
|
156
|
-
ber = Net::LDAP::Filter.from_rfc2254(filter_str).to_ber
|
157
|
-
assert_equal filter, Net::LDAP::Filter.parse_ber(ber.read_ber(Net::LDAP::AsnSyntax))
|
158
|
-
end
|
159
|
-
end
|
160
|
-
|
161
|
-
def test_apostrophes
|
162
|
-
assert_equal "(uid=O'Keefe)", Net::LDAP::Filter.construct("uid=O'Keefe").to_rfc2254
|
163
|
-
end
|
164
|
-
|
165
|
-
def test_equals
|
166
|
-
assert_equal Net::LDAP::Filter.eq('dn', 'f\2Aoo'), Net::LDAP::Filter.equals('dn', 'f*oo')
|
167
|
-
end
|
168
|
-
|
169
|
-
def test_begins
|
170
|
-
assert_equal Net::LDAP::Filter.eq('dn', 'f\2Aoo*'), Net::LDAP::Filter.begins('dn', 'f*oo')
|
171
|
-
end
|
172
|
-
|
173
|
-
def test_ends
|
174
|
-
assert_equal Net::LDAP::Filter.eq('dn', '*f\2Aoo'), Net::LDAP::Filter.ends('dn', 'f*oo')
|
175
|
-
end
|
176
|
-
|
177
|
-
def test_contains
|
178
|
-
assert_equal Net::LDAP::Filter.eq('dn', '*f\2Aoo*'), Net::LDAP::Filter.contains('dn', 'f*oo')
|
179
|
-
end
|
180
|
-
|
181
|
-
def test_escape
|
182
|
-
# escapes nul, *, (, ) and \\
|
183
|
-
assert_equal "\\00\\2A\\28\\29\\5C", Net::LDAP::Filter.escape("\0*()\\")
|
184
|
-
end
|
185
|
-
|
186
|
-
def test_well_known_ber_string
|
187
|
-
ber = "\xa4\x2d" \
|
188
|
-
"\x04\x0b" "objectclass" \
|
189
|
-
"\x30\x1e" \
|
190
|
-
"\x80\x08" "foo" "*\\" "bar" \
|
191
|
-
"\x81\x08" "foo" "*\\" "bar" \
|
192
|
-
"\x82\x08" "foo" "*\\" "bar".b
|
193
|
-
|
194
|
-
[
|
195
|
-
"foo" "\\2A\\5C" "bar",
|
196
|
-
"foo" "\\2a\\5c" "bar",
|
197
|
-
"foo" "\\2A\\5c" "bar",
|
198
|
-
"foo" "\\2a\\5C" "bar",
|
199
|
-
].each do |escaped|
|
200
|
-
# unescapes escaped characters
|
201
|
-
filter = Net::LDAP::Filter.eq("objectclass", "#{escaped}*#{escaped}*#{escaped}")
|
202
|
-
assert_equal ber, filter.to_ber
|
203
|
-
end
|
204
|
-
end
|
205
|
-
|
206
|
-
def test_parse_ber_escapes_characters
|
207
|
-
ber = "\xa4\x2d" \
|
208
|
-
"\x04\x0b" "objectclass" \
|
209
|
-
"\x30\x1e" \
|
210
|
-
"\x80\x08" "foo" "*\\" "bar" \
|
211
|
-
"\x81\x08" "foo" "*\\" "bar" \
|
212
|
-
"\x82\x08" "foo" "*\\" "bar".b
|
213
|
-
|
214
|
-
escaped = Net::LDAP::Filter.escape("foo" "*\\" "bar")
|
215
|
-
filter = Net::LDAP::Filter.parse_ber(ber.read_ber(Net::LDAP::AsnSyntax))
|
216
|
-
assert_equal "(objectclass=#{escaped}*#{escaped}*#{escaped})", filter.to_s
|
217
|
-
end
|
218
|
-
|
219
|
-
def test_unescape_fixnums
|
220
|
-
filter = Net::LDAP::Filter.eq("objectclass", 3)
|
221
|
-
assert_equal "\xA3\x10\x04\vobjectclass\x04\x013".b, filter.to_ber
|
222
|
-
end
|
223
|
-
end
|
data/test/test_filter_parser.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
require_relative 'test_helper'
|
3
|
-
|
4
|
-
class TestFilterParser < Test::Unit::TestCase
|
5
|
-
def test_ascii
|
6
|
-
assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(cn=name)")
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_multibyte_characters
|
10
|
-
assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(cn=名前)")
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_brackets
|
14
|
-
assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(cn=[{something}])")
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_slash
|
18
|
-
assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(departmentNumber=FOO//BAR/FOO)")
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_colons
|
22
|
-
assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(ismemberof=cn=edu:berkeley:app:calmessages:deans,ou=campus groups,dc=berkeley,dc=edu)")
|
23
|
-
end
|
24
|
-
end
|
data/test/test_helper.rb
DELETED
@@ -1,74 +0,0 @@
|
|
1
|
-
# Add 'lib' to load path.
|
2
|
-
require 'test/unit'
|
3
|
-
require 'net/ldap'
|
4
|
-
require 'flexmock/test_unit'
|
5
|
-
|
6
|
-
# Whether integration tests should be run.
|
7
|
-
INTEGRATION = ENV.fetch("INTEGRATION", "skip") != "skip"
|
8
|
-
|
9
|
-
# The CA file to verify certs against for tests.
|
10
|
-
# Override with CA_FILE env variable; otherwise checks for the VM-specific path
|
11
|
-
# and falls back to the test/fixtures/cacert.pem for local testing.
|
12
|
-
CA_FILE =
|
13
|
-
ENV.fetch("CA_FILE") do
|
14
|
-
if File.exist?("/etc/ssl/certs/cacert.pem")
|
15
|
-
"/etc/ssl/certs/cacert.pem"
|
16
|
-
else
|
17
|
-
File.expand_path("fixtures/ca/cacert.pem", File.dirname(__FILE__))
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
BIND_CREDS = {
|
22
|
-
method: :simple,
|
23
|
-
username: "uid=user1,ou=People,dc=rubyldap,dc=com",
|
24
|
-
password: "passworD1",
|
25
|
-
}.freeze
|
26
|
-
|
27
|
-
TLS_OPTS = OpenSSL::SSL::SSLContext::DEFAULT_PARAMS.merge({}).freeze
|
28
|
-
|
29
|
-
if RUBY_VERSION < "2.0"
|
30
|
-
class String
|
31
|
-
def b
|
32
|
-
self
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
class MockInstrumentationService
|
38
|
-
def initialize
|
39
|
-
@events = {}
|
40
|
-
end
|
41
|
-
|
42
|
-
def instrument(event, payload)
|
43
|
-
result = yield(payload)
|
44
|
-
@events[event] ||= []
|
45
|
-
@events[event] << [payload, result]
|
46
|
-
result
|
47
|
-
end
|
48
|
-
|
49
|
-
def subscribe(event)
|
50
|
-
@events[event] ||= []
|
51
|
-
@events[event]
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
class LDAPIntegrationTestCase < Test::Unit::TestCase
|
56
|
-
# If integration tests aren't enabled, noop these tests.
|
57
|
-
if !INTEGRATION
|
58
|
-
def run(*)
|
59
|
-
self
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def setup
|
64
|
-
@service = MockInstrumentationService.new
|
65
|
-
@ldap = Net::LDAP.new \
|
66
|
-
host: ENV.fetch('INTEGRATION_HOST', 'localhost'),
|
67
|
-
port: ENV.fetch('INTEGRATION_PORT', 389),
|
68
|
-
admin_user: 'uid=admin,dc=rubyldap,dc=com',
|
69
|
-
admin_password: 'passworD1',
|
70
|
-
search_domains: %w(dc=rubyldap,dc=com),
|
71
|
-
uid: 'uid',
|
72
|
-
instrumentation_service: @service
|
73
|
-
end
|
74
|
-
end
|
data/test/test_ldap.rb
DELETED
@@ -1,114 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
|
3
|
-
class TestLDAPInstrumentation < Test::Unit::TestCase
|
4
|
-
# Fake Net::LDAP::Connection for testing
|
5
|
-
class FakeConnection
|
6
|
-
# It's difficult to instantiate Net::LDAP::PDU objects. Faking out what we
|
7
|
-
# need here until that object is brought under test and has it's constructor
|
8
|
-
# cleaned up.
|
9
|
-
class Result < Struct.new(:success?, :result_code); end
|
10
|
-
|
11
|
-
def initialize
|
12
|
-
@bind_success = Result.new(true, Net::LDAP::ResultCodeSuccess)
|
13
|
-
@search_success = Result.new(true, Net::LDAP::ResultCodeSizeLimitExceeded)
|
14
|
-
end
|
15
|
-
|
16
|
-
def bind(args = {})
|
17
|
-
@bind_success
|
18
|
-
end
|
19
|
-
|
20
|
-
def search(*args)
|
21
|
-
yield @search_success if block_given?
|
22
|
-
@search_success
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def setup
|
27
|
-
@connection = flexmock(:connection, :close => true)
|
28
|
-
flexmock(Net::LDAP::Connection).should_receive(:new).and_return(@connection)
|
29
|
-
|
30
|
-
@service = MockInstrumentationService.new
|
31
|
-
@subject = Net::LDAP.new \
|
32
|
-
:host => "test.mocked.com", :port => 636,
|
33
|
-
:force_no_page => true, # so server capabilities are not queried
|
34
|
-
:instrumentation_service => @service
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_instrument_bind
|
38
|
-
events = @service.subscribe "bind.net_ldap"
|
39
|
-
|
40
|
-
fake_connection = FakeConnection.new
|
41
|
-
@subject.connection = fake_connection
|
42
|
-
bind_result = fake_connection.bind
|
43
|
-
|
44
|
-
assert @subject.bind
|
45
|
-
|
46
|
-
payload, result = events.pop
|
47
|
-
assert result
|
48
|
-
assert_equal bind_result, payload[:bind]
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_instrument_search
|
52
|
-
events = @service.subscribe "search.net_ldap"
|
53
|
-
|
54
|
-
fake_connection = FakeConnection.new
|
55
|
-
@subject.connection = fake_connection
|
56
|
-
entry = fake_connection.search
|
57
|
-
|
58
|
-
refute_nil @subject.search(:filter => "(uid=user1)")
|
59
|
-
|
60
|
-
payload, result = events.pop
|
61
|
-
assert_equal [entry], result
|
62
|
-
assert_equal [entry], payload[:result]
|
63
|
-
assert_equal "(uid=user1)", payload[:filter]
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_instrument_search_with_size
|
67
|
-
events = @service.subscribe "search.net_ldap"
|
68
|
-
|
69
|
-
fake_connection = FakeConnection.new
|
70
|
-
@subject.connection = fake_connection
|
71
|
-
entry = fake_connection.search
|
72
|
-
|
73
|
-
refute_nil @subject.search(:filter => "(uid=user1)", :size => 1)
|
74
|
-
|
75
|
-
payload, result = events.pop
|
76
|
-
assert_equal [entry], result
|
77
|
-
assert_equal [entry], payload[:result]
|
78
|
-
assert_equal "(uid=user1)", payload[:filter]
|
79
|
-
assert_equal result.size, payload[:size]
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_obscure_auth
|
83
|
-
password = "opensesame"
|
84
|
-
assert_include(@subject.inspect, "anonymous")
|
85
|
-
@subject.auth "joe_user", password
|
86
|
-
assert_not_include(@subject.inspect, password)
|
87
|
-
end
|
88
|
-
|
89
|
-
def test_encryption
|
90
|
-
enc = @subject.encryption('start_tls')
|
91
|
-
|
92
|
-
assert_equal enc[:method], :start_tls
|
93
|
-
end
|
94
|
-
|
95
|
-
def test_normalize_encryption_symbol
|
96
|
-
enc = @subject.send(:normalize_encryption, :start_tls)
|
97
|
-
assert_equal enc, {:method => :start_tls, :tls_options => {}}
|
98
|
-
end
|
99
|
-
|
100
|
-
def test_normalize_encryption_nil
|
101
|
-
enc = @subject.send(:normalize_encryption, nil)
|
102
|
-
assert_equal enc, nil
|
103
|
-
end
|
104
|
-
|
105
|
-
def test_normalize_encryption_string
|
106
|
-
enc = @subject.send(:normalize_encryption, 'start_tls')
|
107
|
-
assert_equal enc, {:method => :start_tls, :tls_options => {}}
|
108
|
-
end
|
109
|
-
|
110
|
-
def test_normalize_encryption_hash
|
111
|
-
enc = @subject.send(:normalize_encryption, {:method => :start_tls, :tls_options => {:foo => :bar}})
|
112
|
-
assert_equal enc, {:method => :start_tls, :tls_options => {:foo => :bar}}
|
113
|
-
end
|
114
|
-
end
|