net-ldap 0.14.0 → 0.16.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +5 -2
  4. data/.rubocop_todo.yml +343 -219
  5. data/.travis.yml +27 -3
  6. data/CONTRIBUTING.md +1 -1
  7. data/History.rdoc +21 -0
  8. data/README.rdoc +10 -7
  9. data/Rakefile +1 -1
  10. data/lib/net-ldap.rb +1 -1
  11. data/lib/net/ber.rb +5 -6
  12. data/lib/net/ber/ber_parser.rb +3 -3
  13. data/lib/net/ber/core_ext.rb +6 -6
  14. data/lib/net/ldap.rb +65 -55
  15. data/lib/net/ldap/auth_adapter/gss_spnego.rb +2 -2
  16. data/lib/net/ldap/auth_adapter/sasl.rb +4 -2
  17. data/lib/net/ldap/auth_adapter/simple.rb +1 -1
  18. data/lib/net/ldap/connection.rb +58 -35
  19. data/lib/net/ldap/dataset.rb +2 -2
  20. data/lib/net/ldap/dn.rb +13 -14
  21. data/lib/net/ldap/entry.rb +5 -6
  22. data/lib/net/ldap/error.rb +1 -0
  23. data/lib/net/ldap/filter.rb +10 -3
  24. data/lib/net/ldap/instrumentation.rb +2 -2
  25. data/lib/net/ldap/password.rb +3 -5
  26. data/lib/net/ldap/pdu.rb +1 -1
  27. data/lib/net/ldap/version.rb +1 -1
  28. data/lib/net/snmp.rb +1 -1
  29. data/net-ldap.gemspec +4 -4
  30. data/script/ldap-docker +12 -0
  31. data/test/ber/test_ber.rb +1 -1
  32. data/test/fixtures/ca/docker-ca.pem +18 -0
  33. data/test/fixtures/{openldap/retcode.ldif → ldif/06-retcode.ldif} +7 -8
  34. data/test/fixtures/ldif/50-seed.ldif +374 -0
  35. data/test/integration/test_add.rb +1 -3
  36. data/test/integration/test_ber.rb +2 -2
  37. data/test/integration/test_bind.rb +193 -14
  38. data/test/integration/test_delete.rb +1 -3
  39. data/test/integration/test_open.rb +10 -11
  40. data/test/integration/test_password_modify.rb +29 -16
  41. data/test/integration/test_return_codes.rb +12 -4
  42. data/test/integration/test_search.rb +8 -8
  43. data/test/test_dn.rb +2 -3
  44. data/test/test_entry.rb +3 -2
  45. data/test/test_filter_parser.rb +5 -0
  46. data/test/test_helper.rb +12 -5
  47. data/test/test_ldap.rb +5 -5
  48. data/test/test_ldap_connection.rb +47 -35
  49. data/test/test_ldif.rb +13 -13
  50. data/test/test_password.rb +2 -2
  51. data/test/test_snmp.rb +4 -5
  52. data/test/test_ssl_ber.rb +7 -3
  53. data/testserver/ldapserver.rb +13 -22
  54. metadata +17 -26
  55. data/script/install-openldap +0 -115
  56. data/test/fixtures/cacert.pem +0 -20
  57. data/test/fixtures/openldap/memberof.ldif +0 -33
  58. data/test/fixtures/openldap/slapd.conf.ldif +0 -67
  59. data/test/fixtures/seed.ldif +0 -374
  60. data/test/support/vm/openldap/README.md +0 -32
  61. data/test/support/vm/openldap/Vagrantfile +0 -33
@@ -4,7 +4,7 @@ class TestSearchIntegration < LDAPIntegrationTestCase
4
4
  def test_search
5
5
  entries = []
6
6
 
7
- result = @ldap.search(base: "dc=rubyldap,dc=com") do |entry|
7
+ result = @ldap.search(base: "dc=example,dc=org") do |entry|
8
8
  assert_kind_of Net::LDAP::Entry, entry
9
9
  entries << entry
10
10
  end
@@ -16,7 +16,7 @@ class TestSearchIntegration < LDAPIntegrationTestCase
16
16
  def test_search_without_result
17
17
  entries = []
18
18
 
19
- result = @ldap.search(base: "dc=rubyldap,dc=com", return_result: false) do |entry|
19
+ result = @ldap.search(base: "dc=example,dc=org", return_result: false) do |entry|
20
20
  assert_kind_of Net::LDAP::Entry, entry
21
21
  entries << entry
22
22
  end
@@ -26,24 +26,24 @@ class TestSearchIntegration < LDAPIntegrationTestCase
26
26
  end
27
27
 
28
28
  def test_search_filter_string
29
- entries = @ldap.search(base: "dc=rubyldap,dc=com", filter: "(uid=user1)")
29
+ entries = @ldap.search(base: "dc=example,dc=org", filter: "(uid=user1)")
30
30
  assert_equal 1, entries.size
31
31
  end
32
32
 
33
33
  def test_search_filter_object
34
34
  filter = Net::LDAP::Filter.eq("uid", "user1") | Net::LDAP::Filter.eq("uid", "user2")
35
- entries = @ldap.search(base: "dc=rubyldap,dc=com", filter: filter)
35
+ entries = @ldap.search(base: "dc=example,dc=org", filter: filter)
36
36
  assert_equal 2, entries.size
37
37
  end
38
38
 
39
39
  def test_search_constrained_attributes
40
- entry = @ldap.search(base: "uid=user1,ou=People,dc=rubyldap,dc=com", attributes: ["cn", "sn"]).first
40
+ entry = @ldap.search(base: "uid=user1,ou=People,dc=example,dc=org", attributes: ["cn", "sn"]).first
41
41
  assert_equal [:cn, :dn, :sn], entry.attribute_names.sort # :dn is always included
42
42
  assert_empty entry[:mail]
43
43
  end
44
44
 
45
45
  def test_search_attributes_only
46
- entry = @ldap.search(base: "uid=user1,ou=People,dc=rubyldap,dc=com", attributes_only: true).first
46
+ entry = @ldap.search(base: "uid=user1,ou=People,dc=example,dc=org", attributes_only: true).first
47
47
 
48
48
  assert_empty entry[:cn], "unexpected attribute value: #{entry[:cn]}"
49
49
  end
@@ -52,7 +52,7 @@ class TestSearchIntegration < LDAPIntegrationTestCase
52
52
  entries = []
53
53
  events = @service.subscribe "search.net_ldap_connection"
54
54
 
55
- result = @ldap.search(base: "dc=rubyldap,dc=com", time: 5) do |entry|
55
+ result = @ldap.search(base: "dc=example,dc=org", time: 5) do |entry|
56
56
  assert_kind_of Net::LDAP::Entry, entry
57
57
  entries << entry
58
58
  end
@@ -66,7 +66,7 @@ class TestSearchIntegration < LDAPIntegrationTestCase
66
66
  def test_search_with_size
67
67
  entries = []
68
68
 
69
- result = @ldap.search(base: "dc=rubyldap,dc=com", size: 1) do |entry|
69
+ result = @ldap.search(base: "dc=example,dc=org", size: 1) do |entry|
70
70
  assert_kind_of Net::LDAP::Entry, entry
71
71
  entries << entry
72
72
  end
@@ -1,5 +1,5 @@
1
1
  require_relative 'test_helper'
2
- require 'net/ldap/dn'
2
+ require_relative '../lib/net/ldap/dn'
3
3
 
4
4
  class TestDN < Test::Unit::TestCase
5
5
  def test_escape
@@ -26,7 +26,6 @@ class TestDN < Test::Unit::TestCase
26
26
  assert_equal ['1.23.4', '#A3B4D5', 'ou', 'Company'], dn.to_a
27
27
  end
28
28
 
29
- # TODO: raise a more specific exception than RuntimeError
30
29
  def test_bad_input_raises_error
31
30
  [
32
31
  'cn=James,',
@@ -38,7 +37,7 @@ class TestDN < Test::Unit::TestCase
38
37
  'd1.2=Value',
39
38
  ].each do |input|
40
39
  dn = Net::LDAP::DN.new(input)
41
- assert_raises(RuntimeError) { dn.to_a }
40
+ assert_raises(Net::LDAP::InvalidDNError) { dn.to_a }
42
41
  end
43
42
  end
44
43
  end
@@ -47,7 +47,8 @@ class TestEntryLDIF < Test::Unit::TestCase
47
47
  %Q{dn: something
48
48
  foo: foo
49
49
  barAttribute: bar
50
- })
50
+ },
51
+ )
51
52
  end
52
53
 
53
54
  def test_attribute
@@ -59,7 +60,7 @@ barAttribute: bar
59
60
  @entry.foo = 'bar'
60
61
  assert_equal ['bar'], @entry.foo
61
62
 
62
- @entry.fOo= 'baz'
63
+ @entry.fOo = 'baz'
63
64
  assert_equal ['baz'], @entry.foo
64
65
  end
65
66
  end
@@ -1,4 +1,5 @@
1
1
  # encoding: utf-8
2
+
2
3
  require_relative 'test_helper'
3
4
 
4
5
  class TestFilterParser < Test::Unit::TestCase
@@ -21,4 +22,8 @@ class TestFilterParser < Test::Unit::TestCase
21
22
  def test_colons
22
23
  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
24
  end
25
+
26
+ def test_attr_tag
27
+ assert_kind_of Net::LDAP::Filter, Net::LDAP::Filter::FilterParser.parse("(mail;primary=jane@example.org)")
28
+ end
24
29
  end
@@ -1,6 +1,6 @@
1
1
  # Add 'lib' to load path.
2
2
  require 'test/unit'
3
- require 'net/ldap'
3
+ require_relative '../lib/net/ldap'
4
4
  require 'flexmock/test_unit'
5
5
 
6
6
  # Whether integration tests should be run.
@@ -14,10 +14,18 @@ CA_FILE =
14
14
  if File.exist?("/etc/ssl/certs/cacert.pem")
15
15
  "/etc/ssl/certs/cacert.pem"
16
16
  else
17
- File.expand_path("fixtures/cacert.pem", File.dirname(__FILE__))
17
+ File.expand_path("fixtures/ca/docker-ca.pem", File.dirname(__FILE__))
18
18
  end
19
19
  end
20
20
 
21
+ BIND_CREDS = {
22
+ method: :simple,
23
+ username: "cn=admin,dc=example,dc=org",
24
+ password: "admin",
25
+ }.freeze
26
+
27
+ TLS_OPTS = OpenSSL::SSL::SSLContext::DEFAULT_PARAMS.merge({}).freeze
28
+
21
29
  if RUBY_VERSION < "2.0"
22
30
  class String
23
31
  def b
@@ -57,10 +65,9 @@ class LDAPIntegrationTestCase < Test::Unit::TestCase
57
65
  @ldap = Net::LDAP.new \
58
66
  host: ENV.fetch('INTEGRATION_HOST', 'localhost'),
59
67
  port: ENV.fetch('INTEGRATION_PORT', 389),
60
- admin_user: 'uid=admin,dc=rubyldap,dc=com',
61
- admin_password: 'passworD1',
62
- search_domains: %w(dc=rubyldap,dc=com),
68
+ search_domains: %w(dc=example,dc=org),
63
69
  uid: 'uid',
64
70
  instrumentation_service: @service
71
+ @ldap.authenticate "cn=admin,dc=example,dc=org", "admin"
65
72
  end
66
73
  end
@@ -1,4 +1,4 @@
1
- require 'test_helper'
1
+ require_relative 'test_helper'
2
2
 
3
3
  class TestLDAPInstrumentation < Test::Unit::TestCase
4
4
  # Fake Net::LDAP::Connection for testing
@@ -94,7 +94,7 @@ class TestLDAPInstrumentation < Test::Unit::TestCase
94
94
 
95
95
  def test_normalize_encryption_symbol
96
96
  enc = @subject.send(:normalize_encryption, :start_tls)
97
- assert_equal enc, {:method => :start_tls, :tls_options => {}}
97
+ assert_equal enc, :method => :start_tls, :tls_options => {}
98
98
  end
99
99
 
100
100
  def test_normalize_encryption_nil
@@ -104,11 +104,11 @@ class TestLDAPInstrumentation < Test::Unit::TestCase
104
104
 
105
105
  def test_normalize_encryption_string
106
106
  enc = @subject.send(:normalize_encryption, 'start_tls')
107
- assert_equal enc, {:method => :start_tls, :tls_options => {}}
107
+ assert_equal enc, :method => :start_tls, :tls_options => {}
108
108
  end
109
109
 
110
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}}
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
113
  end
114
114
  end
@@ -16,9 +16,7 @@ class TestLDAPConnection < Test::Unit::TestCase
16
16
  class FakeTCPSocket
17
17
  def initialize(host, port, socket_opts = {})
18
18
  status, error = host.split(".")
19
- if status == "fail"
20
- raise Object.const_get(error)
21
- end
19
+ raise Object.const_get(error) if status == "fail"
22
20
  end
23
21
  end
24
22
 
@@ -97,7 +95,7 @@ class TestLDAPConnection < Test::Unit::TestCase
97
95
 
98
96
  def test_connection_timeout
99
97
  connection = Net::LDAP::Connection.new(:host => "fail.Errno::ETIMEDOUT", :port => 636, :socket_class => FakeTCPSocket)
100
- stderr = capture_stderr do
98
+ capture_stderr do
101
99
  assert_raise Net::LDAP::Error do
102
100
  connection.socket
103
101
  end
@@ -126,7 +124,7 @@ class TestLDAPConnection < Test::Unit::TestCase
126
124
  end
127
125
 
128
126
  def test_modify_ops_replace
129
- args = { :operations =>[[:replace, "mail", "testuser@example.com"]] }
127
+ args = { :operations => [[:replace, "mail", "testuser@example.com"]] }
130
128
  result = Net::LDAP::Connection.modify_ops(args[:operations])
131
129
  expected = ["0#\n\x01\x020\x1E\x04\x04mail1\x16\x04\x14testuser@example.com"]
132
130
  assert_equal(expected, result)
@@ -193,9 +191,9 @@ class TestLDAPConnectionSocketReads < Test::Unit::TestCase
193
191
  result2 = make_message(2)
194
192
 
195
193
  mock = flexmock("socket")
196
- mock.should_receive(:read_ber).
197
- and_return(result1).
198
- and_return(result2)
194
+ mock.should_receive(:read_ber)
195
+ .and_return(result1)
196
+ .and_return(result2)
199
197
  conn = Net::LDAP::Connection.new(:socket => mock)
200
198
 
201
199
  assert result = conn.queued_read(2)
@@ -208,9 +206,9 @@ class TestLDAPConnectionSocketReads < Test::Unit::TestCase
208
206
  result2 = make_message(2, app_tag: Net::LDAP::PDU::ModifyResponse)
209
207
 
210
208
  mock = flexmock("socket")
211
- mock.should_receive(:read_ber).
212
- and_return(result1).
213
- and_return(result2)
209
+ mock.should_receive(:read_ber)
210
+ .and_return(result1)
211
+ .and_return(result2)
214
212
  mock.should_receive(:write)
215
213
  conn = Net::LDAP::Connection.new(:socket => mock)
216
214
 
@@ -229,9 +227,9 @@ class TestLDAPConnectionSocketReads < Test::Unit::TestCase
229
227
  result2 = make_message(2, app_tag: Net::LDAP::PDU::AddResponse)
230
228
 
231
229
  mock = flexmock("socket")
232
- mock.should_receive(:read_ber).
233
- and_return(result1).
234
- and_return(result2)
230
+ mock.should_receive(:read_ber)
231
+ .and_return(result1)
232
+ .and_return(result2)
235
233
  mock.should_receive(:write)
236
234
  conn = Net::LDAP::Connection.new(:socket => mock)
237
235
 
@@ -247,9 +245,9 @@ class TestLDAPConnectionSocketReads < Test::Unit::TestCase
247
245
  result2 = make_message(2, app_tag: Net::LDAP::PDU::ModifyRDNResponse)
248
246
 
249
247
  mock = flexmock("socket")
250
- mock.should_receive(:read_ber).
251
- and_return(result1).
252
- and_return(result2)
248
+ mock.should_receive(:read_ber)
249
+ .and_return(result1)
250
+ .and_return(result2)
253
251
  mock.should_receive(:write)
254
252
  conn = Net::LDAP::Connection.new(:socket => mock)
255
253
 
@@ -268,9 +266,9 @@ class TestLDAPConnectionSocketReads < Test::Unit::TestCase
268
266
  result2 = make_message(2, app_tag: Net::LDAP::PDU::DeleteResponse)
269
267
 
270
268
  mock = flexmock("socket")
271
- mock.should_receive(:read_ber).
272
- and_return(result1).
273
- and_return(result2)
269
+ mock.should_receive(:read_ber)
270
+ .and_return(result1)
271
+ .and_return(result2)
274
272
  mock.should_receive(:write)
275
273
  conn = Net::LDAP::Connection.new(:socket => mock)
276
274
 
@@ -286,13 +284,13 @@ class TestLDAPConnectionSocketReads < Test::Unit::TestCase
286
284
  result2 = make_message(2, app_tag: Net::LDAP::PDU::ExtendedResponse)
287
285
 
288
286
  mock = flexmock("socket")
289
- mock.should_receive(:read_ber).
290
- and_return(result1).
291
- and_return(result2)
287
+ mock.should_receive(:read_ber)
288
+ .and_return(result1)
289
+ .and_return(result2)
292
290
  mock.should_receive(:write)
293
291
  conn = Net::LDAP::Connection.new(:socket => mock)
294
- flexmock(Net::LDAP::Connection).should_receive(:wrap_with_ssl).with(mock, {}).
295
- and_return(mock)
292
+ flexmock(Net::LDAP::Connection).should_receive(:wrap_with_ssl).with(mock, {}, nil)
293
+ .and_return(mock)
296
294
 
297
295
  conn.next_msgid # simulates ongoing query
298
296
 
@@ -305,9 +303,9 @@ class TestLDAPConnectionSocketReads < Test::Unit::TestCase
305
303
  result2 = make_message(2, app_tag: Net::LDAP::PDU::BindResult)
306
304
 
307
305
  mock = flexmock("socket")
308
- mock.should_receive(:read_ber).
309
- and_return(result1).
310
- and_return(result2)
306
+ mock.should_receive(:read_ber)
307
+ .and_return(result1)
308
+ .and_return(result2)
311
309
  mock.should_receive(:write)
312
310
  conn = Net::LDAP::Connection.new(:socket => mock)
313
311
 
@@ -316,7 +314,8 @@ class TestLDAPConnectionSocketReads < Test::Unit::TestCase
316
314
  assert result = conn.bind(
317
315
  method: :simple,
318
316
  username: "uid=user1,ou=People,dc=rubyldap,dc=com",
319
- password: "passworD1")
317
+ password: "passworD1",
318
+ )
320
319
  assert result.success?
321
320
  assert_equal 2, result.message_id
322
321
  end
@@ -326,9 +325,9 @@ class TestLDAPConnectionSocketReads < Test::Unit::TestCase
326
325
  result2 = make_message(2, app_tag: Net::LDAP::PDU::BindResult)
327
326
 
328
327
  mock = flexmock("socket")
329
- mock.should_receive(:read_ber).
330
- and_return(result1).
331
- and_return(result2)
328
+ mock.should_receive(:read_ber)
329
+ .and_return(result1)
330
+ .and_return(result2)
332
331
  mock.should_receive(:write)
333
332
  conn = Net::LDAP::Connection.new(:socket => mock)
334
333
 
@@ -338,10 +337,23 @@ class TestLDAPConnectionSocketReads < Test::Unit::TestCase
338
337
  method: :sasl,
339
338
  mechanism: "fake",
340
339
  initial_credential: "passworD1",
341
- challenge_response: flexmock("challenge proc"))
340
+ challenge_response: flexmock("challenge proc"),
341
+ )
342
342
  assert result.success?
343
343
  assert_equal 2, result.message_id
344
344
  end
345
+
346
+ def test_invalid_pdu_type
347
+ options = {
348
+ code: Net::LDAP::ResultCodeSuccess,
349
+ matched_dn: "",
350
+ error_message: "",
351
+ }
352
+ ber = Net::BER::BerIdentifiedArray.new([options[:code], options[:matched_dn], options[:error_message]])
353
+ assert_raise Net::LDAP::PDU::Error do
354
+ Net::LDAP::PDU.new([0, ber])
355
+ end
356
+ end
345
357
  end
346
358
 
347
359
  class TestLDAPConnectionErrors < Test::Unit::TestCase
@@ -471,8 +483,8 @@ class TestLDAPConnectionInstrumentation < Test::Unit::TestCase
471
483
  search_result_ber = Net::BER::BerIdentifiedArray.new([Net::LDAP::ResultCodeSuccess, "", ""])
472
484
  search_result_ber.ber_identifier = Net::LDAP::PDU::SearchResult
473
485
  search_result = [1, search_result_ber]
474
- @tcp_socket.should_receive(:read_ber).and_return(search_data).
475
- and_return(search_result)
486
+ @tcp_socket.should_receive(:read_ber).and_return(search_data)
487
+ .and_return(search_result)
476
488
 
477
489
  events = @service.subscribe "search.net_ldap_connection"
478
490
  unread = @service.subscribe "search_messages_unread.net_ldap_connection"
@@ -22,46 +22,46 @@ class TestLdif < Test::Unit::TestCase
22
22
  def test_ldif_with_comments
23
23
  str = ["# Hello from LDIF-land", "# This is an unterminated comment"]
24
24
  io = StringIO.new(str[0] + "\r\n" + str[1])
25
- ds = Net::LDAP::Dataset::read_ldif(io)
25
+ ds = Net::LDAP::Dataset.read_ldif(io)
26
26
  assert_equal(str, ds.comments)
27
27
  end
28
28
 
29
29
  def test_ldif_with_password
30
30
  psw = "goldbricks"
31
- hashed_psw = "{SHA}" + Base64::encode64(Digest::SHA1.digest(psw)).chomp
31
+ hashed_psw = "{SHA}" + Base64.encode64(Digest::SHA1.digest(psw)).chomp
32
32
 
33
- ldif_encoded = Base64::encode64(hashed_psw).chomp
34
- ds = Net::LDAP::Dataset::read_ldif(StringIO.new("dn: Goldbrick\r\nuserPassword:: #{ldif_encoded}\r\n\r\n"))
33
+ ldif_encoded = Base64.encode64(hashed_psw).chomp
34
+ ds = Net::LDAP::Dataset.read_ldif(StringIO.new("dn: Goldbrick\r\nuserPassword:: #{ldif_encoded}\r\n\r\n"))
35
35
  recovered_psw = ds["Goldbrick"][:userpassword].shift
36
36
  assert_equal(hashed_psw, recovered_psw)
37
37
  end
38
38
 
39
39
  def test_ldif_with_continuation_lines
40
- ds = Net::LDAP::Dataset::read_ldif(StringIO.new("dn: abcdefg\r\n hijklmn\r\n\r\n"))
40
+ ds = Net::LDAP::Dataset.read_ldif(StringIO.new("dn: abcdefg\r\n hijklmn\r\n\r\n"))
41
41
  assert_equal(true, ds.key?("abcdefghijklmn"))
42
42
  end
43
43
 
44
44
  def test_ldif_with_continuation_lines_and_extra_whitespace
45
- ds1 = Net::LDAP::Dataset::read_ldif(StringIO.new("dn: abcdefg\r\n hijklmn\r\n\r\n"))
45
+ ds1 = Net::LDAP::Dataset.read_ldif(StringIO.new("dn: abcdefg\r\n hijklmn\r\n\r\n"))
46
46
  assert_equal(true, ds1.key?("abcdefg hijklmn"))
47
- ds2 = Net::LDAP::Dataset::read_ldif(StringIO.new("dn: abcdefg\r\n hij klmn\r\n\r\n"))
47
+ ds2 = Net::LDAP::Dataset.read_ldif(StringIO.new("dn: abcdefg\r\n hij klmn\r\n\r\n"))
48
48
  assert_equal(true, ds2.key?("abcdefghij klmn"))
49
49
  end
50
50
 
51
51
  def test_ldif_tab_is_not_continuation
52
- ds = Net::LDAP::Dataset::read_ldif(StringIO.new("dn: key\r\n\tnotcontinued\r\n\r\n"))
52
+ ds = Net::LDAP::Dataset.read_ldif(StringIO.new("dn: key\r\n\tnotcontinued\r\n\r\n"))
53
53
  assert_equal(true, ds.key?("key"))
54
54
  end
55
55
 
56
56
  def test_ldif_with_base64_dn
57
57
  str = "dn:: Q049QmFzZTY0IGRuIHRlc3QsT1U9VGVzdCxPVT1Vbml0cyxEQz1leGFtcGxlLERDPWNvbQ==\r\n\r\n"
58
- ds = Net::LDAP::Dataset::read_ldif(StringIO.new(str))
58
+ ds = Net::LDAP::Dataset.read_ldif(StringIO.new(str))
59
59
  assert_equal(true, ds.key?("CN=Base64 dn test,OU=Test,OU=Units,DC=example,DC=com"))
60
60
  end
61
61
 
62
62
  def test_ldif_with_base64_dn_and_continuation_lines
63
63
  str = "dn:: Q049QmFzZTY0IGRuIHRlc3Qgd2l0aCBjb250aW51YXRpb24gbGluZSxPVT1UZXN0LE9VPVVua\r\n XRzLERDPWV4YW1wbGUsREM9Y29t\r\n\r\n"
64
- ds = Net::LDAP::Dataset::read_ldif(StringIO.new(str))
64
+ ds = Net::LDAP::Dataset.read_ldif(StringIO.new(str))
65
65
  assert_equal(true, ds.key?("CN=Base64 dn test with continuation line,OU=Test,OU=Units,DC=example,DC=com"))
66
66
  end
67
67
 
@@ -69,14 +69,14 @@ class TestLdif < Test::Unit::TestCase
69
69
  # to verify the content.
70
70
  def test_ldif
71
71
  File.open(TestLdifFilename, "r") do |f|
72
- ds = Net::LDAP::Dataset::read_ldif(f)
72
+ ds = Net::LDAP::Dataset.read_ldif(f)
73
73
  assert_equal(13, ds.length)
74
74
  end
75
75
  end
76
76
 
77
77
  # Must test folded lines and base64-encoded lines as well as normal ones.
78
78
  def test_to_ldif
79
- data = File.open(TestLdifFilename, "rb") { |f| f.read }
79
+ data = File.open(TestLdifFilename, "rb", &:read)
80
80
  io = StringIO.new(data)
81
81
 
82
82
  # added .lines to turn to array because 1.9 doesn't have
@@ -84,7 +84,7 @@ class TestLdif < Test::Unit::TestCase
84
84
  entries = data.lines.grep(/^dn:\s*/) { $'.chomp }
85
85
  dn_entries = entries.dup
86
86
 
87
- ds = Net::LDAP::Dataset::read_ldif(io) do |type, value|
87
+ ds = Net::LDAP::Dataset.read_ldif(io) do |type, value|
88
88
  case type
89
89
  when :dn
90
90
  assert_equal(dn_entries.first, value)