Skip to content

Commit 4abe573

Browse files
committed
Merge pull request #213 from satoryu/use_connection_refused_error
Raise Net::LDAP::ConnectionRefusedError when new connection is refused.
2 parents 49c0265 + b4a3bd2 commit 4abe573

File tree

3 files changed

+35
-2
lines changed

3 files changed

+35
-2
lines changed

lib/net/ldap/connection.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ def initialize(server)
1414
rescue SocketError
1515
raise Net::LDAP::Error, "No such address or other socket error."
1616
rescue Errno::ECONNREFUSED
17-
raise Net::LDAP::Error, "Server #{server[:host]} refused connection on port #{server[:port]}."
17+
raise Net::LDAP::ConnectionRefusedError, "Server #{server[:host]} refused connection on port #{server[:port]}."
1818
rescue Errno::EHOSTUNREACH => error
1919
raise Net::LDAP::Error, "Host #{server[:host]} was unreachable (#{error.message})"
2020
rescue Errno::ETIMEDOUT

lib/net/ldap/error.rb

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,22 @@ class Error < StandardError; end
99

1010
class AlreadyOpenedError < Error; end
1111
class SocketError < Error; end
12-
class ConnectionRefusedError < Error; end
12+
class ConnectionRefusedError < Error;
13+
def initialize(*args)
14+
warn_deprecation_message
15+
super
16+
end
17+
18+
def message
19+
warn_deprecation_message
20+
super
21+
end
22+
23+
private
24+
def warn_deprecation_message
25+
warn "Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead."
26+
end
27+
end
1328
class NoOpenSSLError < Error; end
1429
class NoStartTLSResultError < Error; end
1530
class NoSearchBaseError < Error; end

test/test_ldap_connection.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
require_relative 'test_helper'
22

33
class TestLDAPConnection < Test::Unit::TestCase
4+
def capture_stderr
5+
stderr, $stderr = $stderr, StringIO.new
6+
yield
7+
$stderr.string
8+
ensure
9+
$stderr = stderr
10+
end
11+
412
def test_unresponsive_host
513
assert_raise Net::LDAP::Error do
614
Net::LDAP::Connection.new(:host => 'test.mocked.com', :port => 636)
@@ -14,6 +22,16 @@ def test_blocked_port
1422
end
1523
end
1624

25+
def test_connection_refused
26+
flexmock(TCPSocket).should_receive(:new).and_raise(Errno::ECONNREFUSED)
27+
stderr = capture_stderr do
28+
assert_raise Net::LDAP::ConnectionRefusedError do
29+
Net::LDAP::Connection.new(:host => 'test.mocked.com', :port => 636)
30+
end
31+
end
32+
assert_equal("Deprecation warning: Net::LDAP::ConnectionRefused will be deprecated. Use Errno::ECONNREFUSED instead.\n", stderr)
33+
end
34+
1735
def test_raises_unknown_exceptions
1836
error = Class.new(StandardError)
1937
flexmock(TCPSocket).should_receive(:new).and_raise(error)

0 commit comments

Comments
 (0)