2015-12-16 08:07:31 +03:00
|
|
|
# frozen_string_literal: false
|
2015-03-16 11:43:28 +03:00
|
|
|
require "test/unit"
|
|
|
|
require "webrick"
|
|
|
|
require_relative "utils"
|
|
|
|
|
|
|
|
class TestDoNotReverseLookup < Test::Unit::TestCase
|
|
|
|
class DNRL < WEBrick::GenericServer
|
|
|
|
def run(sock)
|
|
|
|
sock << sock.do_not_reverse_lookup.to_s
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
@@original_do_not_reverse_lookup_value = Socket.do_not_reverse_lookup
|
|
|
|
|
|
|
|
def teardown
|
|
|
|
Socket.do_not_reverse_lookup = @@original_do_not_reverse_lookup_value
|
|
|
|
end
|
|
|
|
|
|
|
|
def do_not_reverse_lookup?(config)
|
|
|
|
result = nil
|
|
|
|
TestWEBrick.start_server(DNRL, config) do |server, addr, port, log|
|
|
|
|
TCPSocket.open(addr, port) do |sock|
|
|
|
|
result = {'true' => true, 'false' => false}[sock.gets]
|
|
|
|
end
|
|
|
|
end
|
|
|
|
result
|
|
|
|
end
|
|
|
|
|
|
|
|
# +--------------------------------------------------------------------------+
|
|
|
|
# | Expected interaction between Socket.do_not_reverse_lookup |
|
|
|
|
# | and WEBrick::Config::General[:DoNotReverseLookup] |
|
|
|
|
# +----------------------------+---------------------------------------------+
|
|
|
|
# | |WEBrick::Config::General[:DoNotReverseLookup]|
|
|
|
|
# +----------------------------+--------------+---------------+--------------+
|
|
|
|
# |Socket.do_not_reverse_lookup| TRUE | FALSE | NIL |
|
|
|
|
# +----------------------------+--------------+---------------+--------------+
|
|
|
|
# | TRUE | true | false | true |
|
|
|
|
# +----------------------------+--------------+---------------+--------------+
|
|
|
|
# | FALSE | true | false | false |
|
|
|
|
# +----------------------------+--------------+---------------+--------------+
|
|
|
|
|
|
|
|
def test_socket_dnrl_true_server_dnrl_true
|
|
|
|
Socket.do_not_reverse_lookup = true
|
|
|
|
assert_equal(true, do_not_reverse_lookup?(:DoNotReverseLookup => true))
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_socket_dnrl_true_server_dnrl_false
|
|
|
|
Socket.do_not_reverse_lookup = true
|
|
|
|
assert_equal(false, do_not_reverse_lookup?(:DoNotReverseLookup => false))
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_socket_dnrl_true_server_dnrl_nil
|
|
|
|
Socket.do_not_reverse_lookup = true
|
|
|
|
assert_equal(true, do_not_reverse_lookup?(:DoNotReverseLookup => nil))
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_socket_dnrl_false_server_dnrl_true
|
|
|
|
Socket.do_not_reverse_lookup = false
|
|
|
|
assert_equal(true, do_not_reverse_lookup?(:DoNotReverseLookup => true))
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_socket_dnrl_false_server_dnrl_false
|
|
|
|
Socket.do_not_reverse_lookup = false
|
|
|
|
assert_equal(false, do_not_reverse_lookup?(:DoNotReverseLookup => false))
|
|
|
|
end
|
|
|
|
|
|
|
|
def test_socket_dnrl_false_server_dnrl_nil
|
|
|
|
Socket.do_not_reverse_lookup = false
|
|
|
|
assert_equal(false, do_not_reverse_lookup?(:DoNotReverseLookup => nil))
|
|
|
|
end
|
|
|
|
end
|