net-ldap 0.12.1 → 0.13.0

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.

Potentially problematic release.


This version of net-ldap might be problematic. Click here for more details.

checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 421bbec8d29a64da8b006d4403383c4fb9d71de0
4
- data.tar.gz: 78ede43bcf3b9c3818ea80dac400f708698ae3c0
3
+ metadata.gz: 118306d8baee26a65edeee4386ce94d9e23368a0
4
+ data.tar.gz: cff58ab35eeb9b18408c02f3aa7543c3a2bf5576
5
5
  SHA512:
6
- metadata.gz: 2324d55ee702dc88b23a643e15c2accfeb26ec499dd86c5fd482b2db234608d74b854579640b72ae034da947c62f730bcfa9edd1d81f0e274bcc5ed990814223
7
- data.tar.gz: e9507e6cc5eefc8e307965e067345e81f3bfad5c1af998689075f80fbb8facd4eca5c6af5c2225da3e3611f51ab45c80413c7bcf779ae8726d8a68a85b50d8b8
6
+ metadata.gz: 5b0ed9d7079b989a6b239aa29a56c7ceb5731c0261b34ed6a2ff87181223bd49b3c56046becf06973a00189dc59d01f34bcd58738266b977b2101040d4d25945
7
+ data.tar.gz: a96783427d959ee0bb7e685a215e379d48bf3730f56f1dd7e3167cce10277a934361905b9d2964b4de4be46976f7904a13fe05f96d44580ceb953dc1e93b0847
@@ -1,6 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.3
4
3
  - 2.0.0
5
4
  - 2.1
6
5
  - 2.2
@@ -13,6 +12,9 @@ rvm:
13
12
  env:
14
13
  - INTEGRATION=openldap
15
14
 
15
+ before_install:
16
+ - gem update bundler
17
+
16
18
  install:
17
19
  - if [ "$INTEGRATION" = "openldap" ]; then sudo script/install-openldap; fi
18
20
  - bundle install
@@ -1,3 +1,13 @@
1
+ === Net::LDAP 0.13.0
2
+
3
+ * Set a connect_timeout for the creation of a socket {#243}[https://github.com/ruby-ldap/ruby-net-ldap/pull/243]
4
+ * Update bundler before installing gems with bundler {#245}[https://github.com/ruby-ldap/ruby-net-ldap/pull/245]
5
+ * Net::LDAP#encryption accepts string {#239}[https://github.com/ruby-ldap/ruby-net-ldap/pull/239]
6
+ * Adds correct UTF-8 encoding to Net::BER::BerIdentifiedString {#242}[https://github.com/ruby-ldap/ruby-net-ldap/pull/242]
7
+ * Remove 2.3.0-preview since ruby-head already is included {#241}[https://github.com/ruby-ldap/ruby-net-ldap/pull/241]
8
+ * Drop support for ruby 1.9.3 {#240}[https://github.com/ruby-ldap/ruby-net-ldap/pull/240]
9
+ * Fixed capitalization of StartTLSError {#234}[https://github.com/ruby-ldap/ruby-net-ldap/pull/234]
10
+
1
11
  === Net::LDAP 0.12.1
2
12
 
3
13
  * Whitespace formatting cleanup {#236}[https://github.com/ruby-ldap/ruby-net-ldap/pull/236]
@@ -293,13 +293,43 @@ end
293
293
 
294
294
  ##
295
295
  # A String object with a BER identifier attached.
296
+ #
296
297
  class Net::BER::BerIdentifiedString < String
297
298
  attr_accessor :ber_identifier
299
+
300
+ # The binary data provided when parsing the result of the LDAP search
301
+ # has the encoding 'ASCII-8BIT' (which is basically 'BINARY', or 'unknown').
302
+ #
303
+ # This is the kind of a backtrace showing how the binary `data` comes to
304
+ # BerIdentifiedString.new(data):
305
+ #
306
+ # @conn.read_ber(syntax)
307
+ # -> StringIO.new(self).read_ber(syntax), i.e. included from module
308
+ # -> Net::BER::BERParser.read_ber(syntax)
309
+ # -> (private)Net::BER::BERParser.parse_ber_object(syntax, id, data)
310
+ #
311
+ # In the `#parse_ber_object` method `data`, according to its OID, is being
312
+ # 'casted' to one of the Net::BER:BerIdentifiedXXX classes.
313
+ #
314
+ # As we are using LDAP v3 we can safely assume that the data is encoded
315
+ # in UTF-8 and therefore the only thing to be done when instantiating is to
316
+ # switch the encoding from 'ASCII-8BIT' to 'UTF-8'.
317
+ #
318
+ # Unfortunately, there are some ActiveDirectory specific attributes
319
+ # (like `objectguid`) that should remain binary (do they really?).
320
+ # Using the `#valid_encoding?` we can trap this cases. Special cases like
321
+ # Japanese, Korean, etc. encodings might also profit from this. However
322
+ # I have no clue how this encodings function.
298
323
  def initialize args
299
- super begin
300
- args.respond_to?(:encode) ? args.encode('UTF-8') : args
301
- rescue
302
- args
324
+ super
325
+ #
326
+ # Check the encoding of the newly created String and set the encoding
327
+ # to 'UTF-8' (NOTE: we do NOT change the bytes, but only set the
328
+ # encoding to 'UTF-8').
329
+ current_encoding = encoding
330
+ if current_encoding == Encoding::BINARY
331
+ force_encoding('UTF-8')
332
+ force_encoding(current_encoding) unless valid_encoding?
303
333
  end
304
334
  end
305
335
  end
@@ -79,6 +79,14 @@ Net::LDAP::AuthAdapter.register(:sasl, Net::LDAP::AuthAdapter::Sasl)
79
79
  #
80
80
  # p ldap.get_operation_result
81
81
  #
82
+ # === Setting connect timeout
83
+ #
84
+ # By default, Net::LDAP uses TCP sockets with a connection timeout of 5 seconds.
85
+ #
86
+ # This value can be tweaked passing the :connect_timeout parameter.
87
+ # i.e.
88
+ # ldap = Net::LDAP.new ...,
89
+ # :connect_timeout => 3
82
90
  #
83
91
  # == A Brief Introduction to LDAP
84
92
  #
@@ -461,11 +469,52 @@ class Net::LDAP
461
469
  # call to #search, that value will override any treebase value you give
462
470
  # here.
463
471
  # * :encryption => specifies the encryption to be used in communicating
464
- # with the LDAP server. The value is either a Hash containing additional
465
- # parameters, or the Symbol :simple_tls, which is equivalent to
466
- # specifying the Hash {:method => :simple_tls}. There is a fairly large
467
- # range of potential values that may be given for this parameter. See
468
- # #encryption for details.
472
+ # with the LDAP server. The value must be a Hash containing additional
473
+ # parameters, which consists of two keys:
474
+ # method: - :simple_tls or :start_tls
475
+ # options: - Hash of options for that method
476
+ # The :simple_tls encryption method encrypts <i>all</i> communications
477
+ # with the LDAP server. It completely establishes SSL/TLS encryption with
478
+ # the LDAP server before any LDAP-protocol data is exchanged. There is no
479
+ # plaintext negotiation and no special encryption-request controls are
480
+ # sent to the server. <i>The :simple_tls option is the simplest, easiest
481
+ # way to encrypt communications between Net::LDAP and LDAP servers.</i>
482
+ # It's intended for cases where you have an implicit level of trust in the
483
+ # authenticity of the LDAP server. No validation of the LDAP server's SSL
484
+ # certificate is performed. This means that :simple_tls will not produce
485
+ # errors if the LDAP server's encryption certificate is not signed by a
486
+ # well-known Certification Authority. If you get communications or
487
+ # protocol errors when using this option, check with your LDAP server
488
+ # administrator. Pay particular attention to the TCP port you are
489
+ # connecting to. It's impossible for an LDAP server to support plaintext
490
+ # LDAP communications and <i>simple TLS</i> connections on the same port.
491
+ # The standard TCP port for unencrypted LDAP connections is 389, but the
492
+ # standard port for simple-TLS encrypted connections is 636. Be sure you
493
+ # are using the correct port.
494
+ #
495
+ # The :start_tls like the :simple_tls encryption method also encrypts all
496
+ # communcations with the LDAP server. With the exception that it operates
497
+ # over the standard TCP port.
498
+ #
499
+ # In order to verify certificates and enable other TLS options, the
500
+ # :tls_options hash can be passed alongside :simple_tls or :start_tls.
501
+ # This hash contains any options that can be passed to
502
+ # OpenSSL::SSL::SSLContext#set_params(). The most common options passed
503
+ # should be OpenSSL::SSL::SSLContext::DEFAULT_PARAMS, or the :ca_file option,
504
+ # which contains a path to a Certificate Authority file (PEM-encoded).
505
+ #
506
+ # Example for a default setup without custom settings:
507
+ # {
508
+ # :method => :simple_tls,
509
+ # :tls_options => OpenSSL::SSL::SSLContext::DEFAULT_PARAMS
510
+ # }
511
+ #
512
+ # Example for specifying a CA-File and only allowing TLSv1.1 connections:
513
+ #
514
+ # {
515
+ # :method => :start_tls,
516
+ # :tls_options => { :ca_file => "/etc/cafile.pem", :ssl_version => "TLSv1_1" }
517
+ # }
469
518
  # * :force_no_page => Set to true to prevent paged results even if your
470
519
  # server says it supports them. This is a fix for MS Active Directory
471
520
  # * :instrumentation_service => An object responsible for instrumenting
@@ -482,7 +531,8 @@ class Net::LDAP
482
531
  @auth = args[:auth] || DefaultAuth
483
532
  @base = args[:base] || DefaultTreebase
484
533
  @force_no_page = args[:force_no_page] || DefaultForceNoPage
485
- encryption args[:encryption] # may be nil
534
+ @encryption = args[:encryption] # may be nil
535
+ @connect_timeout = args[:connect_timeout]
486
536
 
487
537
  if pr = @auth[:password] and pr.respond_to?(:call)
488
538
  @auth[:password] = pr.call
@@ -546,52 +596,16 @@ class Net::LDAP
546
596
  # additional capabilities are added, more configuration values will be
547
597
  # added here.
548
598
  #
549
- # The :simple_tls encryption method encrypts <i>all</i> communications
550
- # with the LDAP server. It completely establishes SSL/TLS encryption with
551
- # the LDAP server before any LDAP-protocol data is exchanged. There is no
552
- # plaintext negotiation and no special encryption-request controls are
553
- # sent to the server. <i>The :simple_tls option is the simplest, easiest
554
- # way to encrypt communications between Net::LDAP and LDAP servers.</i>
555
- # It's intended for cases where you have an implicit level of trust in the
556
- # authenticity of the LDAP server. No validation of the LDAP server's SSL
557
- # certificate is performed. This means that :simple_tls will not produce
558
- # errors if the LDAP server's encryption certificate is not signed by a
559
- # well-known Certification Authority. If you get communications or
560
- # protocol errors when using this option, check with your LDAP server
561
- # administrator. Pay particular attention to the TCP port you are
562
- # connecting to. It's impossible for an LDAP server to support plaintext
563
- # LDAP communications and <i>simple TLS</i> connections on the same port.
564
- # The standard TCP port for unencrypted LDAP connections is 389, but the
565
- # standard port for simple-TLS encrypted connections is 636. Be sure you
566
- # are using the correct port.
567
- #
568
- # The :start_tls like the :simple_tls encryption method also encrypts all
569
- # communcations with the LDAP server. With the exception that it operates
570
- # over the standard TCP port.
571
- #
572
- # In order to verify certificates and enable other TLS options, the
573
- # :tls_options hash can be passed alongside :simple_tls or :start_tls.
574
- # This hash contains any options that can be passed to
575
- # OpenSSL::SSL::SSLContext#set_params(). The most common options passed
576
- # should be OpenSSL::SSL::SSLContext::DEFAULT_PARAMS, or the :ca_file option,
577
- # which contains a path to a Certificate Authority file (PEM-encoded).
578
- #
579
- # Example for a default setup without custom settings:
580
- # {
581
- # :method => :simple_tls,
582
- # :tls_options => OpenSSL::SSL::SSLContext::DEFAULT_PARAMS
583
- # }
584
- #
585
- # Example for specifying a CA-File and only allowing TLSv1.1 connections:
586
- #
587
- # {
588
- # :method => :start_tls,
589
- # :tls_options => { :ca_file => "/etc/cafile.pem", :ssl_version => "TLSv1_1" }
590
- # }
599
+ # This method is deprecated.
600
+ #
591
601
  def encryption(args)
592
- case args
602
+ warn "Deprecation warning: please give :encryption option as a Hash to Net::LDAP.new"
603
+ return if args.nil?
604
+ return @encryption = args if args.is_a? Hash
605
+
606
+ case method = args.to_sym
593
607
  when :simple_tls, :start_tls
594
- args = { :method => args, :tls_options => {} }
608
+ args = { :method => method, :tls_options => {} }
595
609
  end
596
610
  @encryption = args
597
611
  end
@@ -1242,8 +1256,9 @@ class Net::LDAP
1242
1256
  :port => @port,
1243
1257
  :hosts => @hosts,
1244
1258
  :encryption => @encryption,
1245
- :instrumentation_service => @instrumentation_service
1246
- rescue Errno::ECONNREFUSED, Net::LDAP::ConnectionRefusedError => e
1259
+ :instrumentation_service => @instrumentation_service,
1260
+ :connect_timeout => @connect_timeout
1261
+ rescue Errno::ECONNREFUSED, Errno::ETIMEDOUT, Net::LDAP::ConnectionRefusedError => e
1247
1262
  @result = {
1248
1263
  :resultCode => 52,
1249
1264
  :errorMessage => ResultStrings[ResultCodeUnavailable]
@@ -3,6 +3,9 @@
3
3
  class Net::LDAP::Connection #:nodoc:
4
4
  include Net::LDAP::Instrumentation
5
5
 
6
+ # Seconds before failing for socket connect timeout
7
+ DefaultConnectTimeout = 5
8
+
6
9
  LdapVersion = 3
7
10
  MaxSaslChallenges = 10
8
11
 
@@ -31,10 +34,14 @@ class Net::LDAP::Connection #:nodoc:
31
34
  hosts = server[:hosts]
32
35
  encryption = server[:encryption]
33
36
 
37
+ socket_opts = {
38
+ connect_timeout: server[:connect_timeout] || DefaultConnectTimeout
39
+ }
40
+
34
41
  errors = []
35
42
  hosts.each do |host, port|
36
43
  begin
37
- prepare_socket(server.merge(socket: TCPSocket.new(host, port)))
44
+ prepare_socket(server.merge(socket: Socket.tcp(host, port, socket_opts)))
38
45
  return
39
46
  rescue Net::LDAP::Error, SocketError, SystemCallError,
40
47
  OpenSSL::SSL::SSLError => e
@@ -130,7 +137,7 @@ class Net::LDAP::Connection #:nodoc:
130
137
  if pdu.result_code.zero?
131
138
  @conn = self.class.wrap_with_ssl(@conn, args[:tls_options])
132
139
  else
133
- raise Net::LDAP::StartTlSError, "start_tls failed: #{pdu.result_code}"
140
+ raise Net::LDAP::StartTLSError, "start_tls failed: #{pdu.result_code}"
134
141
  end
135
142
  else
136
143
  raise Net::LDAP::EncMethodUnsupportedError, "unsupported encryption method #{args[:method]}"
@@ -1,5 +1,5 @@
1
1
  module Net
2
2
  class LDAP
3
- VERSION = "0.12.1"
3
+ VERSION = "0.13.0"
4
4
  end
5
5
  end
@@ -26,7 +26,7 @@ the most recent LDAP RFCs (4510-4519, plutions of 4520-4532).}
26
26
  s.homepage = %q{http://github.com/ruby-ldap/ruby-net-ldap}
27
27
  s.rdoc_options = ["--main", "README.rdoc"]
28
28
  s.require_paths = ["lib"]
29
- s.required_ruby_version = ">= 1.9.3"
29
+ s.required_ruby_version = ">= 2.0.0"
30
30
  s.summary = %q{Net::LDAP for Ruby (also called net-ldap) implements client access for the Lightweight Directory Access Protocol (LDAP), an IETF standard protocol for accessing distributed directory services}
31
31
 
32
32
  s.add_development_dependency("flexmock", "~> 1.3")
@@ -109,4 +109,7 @@ chgrp ssl-cert /etc/ssl/private/ldap01_slapd_key.pem
109
109
  chmod g+r /etc/ssl/private/ldap01_slapd_key.pem
110
110
  chmod o-r /etc/ssl/private/ldap01_slapd_key.pem
111
111
 
112
+ # Drop packets on a secondary port used to specific timeout tests
113
+ iptables -A OUTPUT -p tcp -j DROP --dport 8389
114
+
112
115
  service slapd restart
@@ -135,7 +135,15 @@ class TestBERIdentifiedString < Test::Unit::TestCase
135
135
  assert_equal "UTF-8", bis.encoding.name
136
136
  end
137
137
 
138
- def test_ut8_data_in_utf8
138
+ def test_umlaut_data_in_utf8
139
+ data = "Müller".force_encoding("UTF-8")
140
+ bis = Net::BER::BerIdentifiedString.new(data)
141
+
142
+ assert bis.valid_encoding?, "should be a valid encoding"
143
+ assert_equal "UTF-8", bis.encoding.name
144
+ end
145
+
146
+ def test_utf8_data_in_utf8
139
147
  data = ["e4b8ad"].pack("H*").force_encoding("UTF-8")
140
148
  bis = Net::BER::BerIdentifiedString.new(data)
141
149
 
@@ -5,6 +5,14 @@ class TestBindIntegration < LDAPIntegrationTestCase
5
5
  assert @ldap.bind(method: :simple, username: "uid=user1,ou=People,dc=rubyldap,dc=com", password: "passworD1"), @ldap.get_operation_result.inspect
6
6
  end
7
7
 
8
+ def test_bind_timeout
9
+ @ldap.port = 8389
10
+ error = assert_raise Net::LDAP::Error do
11
+ @ldap.bind(method: :simple, username: "uid=user1,ou=People,dc=rubyldap,dc=com", password: "passworD1")
12
+ end
13
+ assert_equal('Connection timed out - user specified timeout', error.message)
14
+ end
15
+
8
16
  def test_bind_anonymous_fail
9
17
  refute @ldap.bind(method: :simple, username: "uid=user1,ou=People,dc=rubyldap,dc=com", password: ""), @ldap.get_operation_result.inspect
10
18
 
@@ -2,7 +2,8 @@ require 'test_helper'
2
2
 
3
3
  class TestAuthAdapter < Test::Unit::TestCase
4
4
  def test_undefined_auth_adapter
5
- flexmock(TCPSocket).should_receive(:new).ordered.with('ldap.example.com', 379).once.and_return(nil)
5
+ flexmock(Socket).should_receive(:tcp).ordered.with('ldap.example.com', 379, { connect_timeout: 5 }).once.and_return(nil)
6
+
6
7
  conn = Net::LDAP::Connection.new(host: 'ldap.example.com', port: 379)
7
8
  assert_raise Net::LDAP::AuthMethodUnsupportedError, "Unsupported auth method (foo)" do
8
9
  conn.bind(method: :foo)
@@ -64,4 +64,10 @@ class TestLDAPInstrumentation < Test::Unit::TestCase
64
64
  @subject.auth "joe_user", password
65
65
  assert_not_include(@subject.inspect, password)
66
66
  end
67
+
68
+ def test_encryption
69
+ enc = @subject.encryption('start_tls')
70
+
71
+ assert_equal enc[:method], :start_tls
72
+ end
67
73
  end
@@ -15,8 +15,8 @@ class TestLDAPConnection < Test::Unit::TestCase
15
15
  ['test2.mocked.com', 636],
16
16
  ['test3.mocked.com', 636],
17
17
  ]
18
- flexmock(TCPSocket).should_receive(:new).ordered.with(*hosts[0]).once.and_return(nil)
19
- flexmock(TCPSocket).should_receive(:new).ordered.never
18
+ flexmock(Socket).should_receive(:tcp).ordered.with(*hosts[0], { connect_timeout: 5 }).once.and_return(nil)
19
+ flexmock(Socket).should_receive(:tcp).ordered.never
20
20
  Net::LDAP::Connection.new(:hosts => hosts)
21
21
  end
22
22
 
@@ -26,9 +26,9 @@ class TestLDAPConnection < Test::Unit::TestCase
26
26
  ['test2.mocked.com', 636],
27
27
  ['test3.mocked.com', 636],
28
28
  ]
29
- flexmock(TCPSocket).should_receive(:new).ordered.with(*hosts[0]).once.and_raise(SocketError)
30
- flexmock(TCPSocket).should_receive(:new).ordered.with(*hosts[1]).once.and_return(nil)
31
- flexmock(TCPSocket).should_receive(:new).ordered.never
29
+ flexmock(Socket).should_receive(:tcp).ordered.with(*hosts[0], { connect_timeout: 5 }).once.and_raise(SocketError)
30
+ flexmock(Socket).should_receive(:tcp).ordered.with(*hosts[1], { connect_timeout: 5 }).once.and_return(nil)
31
+ flexmock(Socket).should_receive(:tcp).ordered.never
32
32
  Net::LDAP::Connection.new(:hosts => hosts)
33
33
  end
34
34
 
@@ -38,17 +38,17 @@ class TestLDAPConnection < Test::Unit::TestCase
38
38
  ['test2.mocked.com', 636],
39
39
  ['test3.mocked.com', 636],
40
40
  ]
41
- flexmock(TCPSocket).should_receive(:new).ordered.with(*hosts[0]).once.and_raise(SocketError)
42
- flexmock(TCPSocket).should_receive(:new).ordered.with(*hosts[1]).once.and_raise(SocketError)
43
- flexmock(TCPSocket).should_receive(:new).ordered.with(*hosts[2]).once.and_raise(SocketError)
44
- flexmock(TCPSocket).should_receive(:new).ordered.never
41
+ flexmock(Socket).should_receive(:tcp).ordered.with(*hosts[0], { connect_timeout: 5 }).once.and_raise(SocketError)
42
+ flexmock(Socket).should_receive(:tcp).ordered.with(*hosts[1], { connect_timeout: 5 }).once.and_raise(SocketError)
43
+ flexmock(Socket).should_receive(:tcp).ordered.with(*hosts[2], { connect_timeout: 5 }).once.and_raise(SocketError)
44
+ flexmock(Socket).should_receive(:tcp).ordered.never
45
45
  assert_raise Net::LDAP::ConnectionError do
46
46
  Net::LDAP::Connection.new(:hosts => hosts)
47
47
  end
48
48
  end
49
49
 
50
50
  def test_result_for_connection_failed_is_set
51
- flexmock(TCPSocket).should_receive(:new).and_raise(Errno::ECONNREFUSED)
51
+ flexmock(Socket).should_receive(:tcp).and_raise(Errno::ECONNREFUSED)
52
52
 
53
53
  ldap_client = Net::LDAP.new(host: '127.0.0.1', port: 12345)
54
54
 
@@ -67,14 +67,14 @@ class TestLDAPConnection < Test::Unit::TestCase
67
67
  end
68
68
 
69
69
  def test_blocked_port
70
- flexmock(TCPSocket).should_receive(:new).and_raise(SocketError)
70
+ flexmock(Socket).should_receive(:tcp).and_raise(SocketError)
71
71
  assert_raise Net::LDAP::Error do
72
72
  Net::LDAP::Connection.new(:host => 'test.mocked.com', :port => 636)
73
73
  end
74
74
  end
75
75
 
76
76
  def test_connection_refused
77
- flexmock(TCPSocket).should_receive(:new).and_raise(Errno::ECONNREFUSED)
77
+ flexmock(Socket).should_receive(:tcp).and_raise(Errno::ECONNREFUSED)
78
78
  stderr = capture_stderr do
79
79
  assert_raise Net::LDAP::ConnectionRefusedError do
80
80
  Net::LDAP::Connection.new(:host => 'test.mocked.com', :port => 636)
@@ -83,9 +83,18 @@ class TestLDAPConnection < Test::Unit::TestCase
83
83
  assert_equal("Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.\n", stderr)
84
84
  end
85
85
 
86
+ def test_connection_timedout
87
+ flexmock(Socket).should_receive(:tcp).and_raise(Errno::ETIMEDOUT)
88
+ stderr = capture_stderr do
89
+ assert_raise Net::LDAP::Error do
90
+ Net::LDAP::Connection.new(:host => 'test.mocked.com', :port => 636)
91
+ end
92
+ end
93
+ end
94
+
86
95
  def test_raises_unknown_exceptions
87
96
  error = Class.new(StandardError)
88
- flexmock(TCPSocket).should_receive(:new).and_raise(error)
97
+ flexmock(Socket).should_receive(:tcp).and_raise(error)
89
98
  assert_raise error do
90
99
  Net::LDAP::Connection.new(:host => 'test.mocked.com', :port => 636)
91
100
  end
@@ -328,7 +337,7 @@ class TestLDAPConnectionErrors < Test::Unit::TestCase
328
337
  def setup
329
338
  @tcp_socket = flexmock(:connection)
330
339
  @tcp_socket.should_receive(:write)
331
- flexmock(TCPSocket).should_receive(:new).and_return(@tcp_socket)
340
+ flexmock(Socket).should_receive(:tcp).and_return(@tcp_socket)
332
341
  @connection = Net::LDAP::Connection.new(:host => 'test.mocked.com', :port => 636)
333
342
  end
334
343
 
@@ -357,7 +366,7 @@ class TestLDAPConnectionInstrumentation < Test::Unit::TestCase
357
366
  def setup
358
367
  @tcp_socket = flexmock(:connection)
359
368
  @tcp_socket.should_receive(:write)
360
- flexmock(TCPSocket).should_receive(:new).and_return(@tcp_socket)
369
+ flexmock(Socket).should_receive(:tcp).and_return(@tcp_socket)
361
370
 
362
371
  @service = MockInstrumentationService.new
363
372
  @connection = Net::LDAP::Connection.new \
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-ldap
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.1
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Francis Cianfrocca
@@ -13,7 +13,7 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2015-11-11 00:00:00.000000000 Z
16
+ date: 2016-01-07 00:00:00.000000000 Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
19
  name: flexmock
@@ -203,7 +203,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
203
203
  requirements:
204
204
  - - ">="
205
205
  - !ruby/object:Gem::Version
206
- version: 1.9.3
206
+ version: 2.0.0
207
207
  required_rubygems_version: !ruby/object:Gem::Requirement
208
208
  requirements:
209
209
  - - ">="
@@ -253,3 +253,4 @@ test_files:
253
253
  - test/testdata.ldif
254
254
  - testserver/ldapserver.rb
255
255
  - testserver/testdata.ldif
256
+ has_rdoc: