1# frozen_string_literal: false 2require "test/unit" 3require "webrick" 4require_relative "utils" 5 6class TestDoNotReverseLookup < Test::Unit::TestCase 7 class DNRL < WEBrick::GenericServer 8 def run(sock) 9 sock << sock.do_not_reverse_lookup.to_s 10 end 11 end 12 13 @@original_do_not_reverse_lookup_value = Socket.do_not_reverse_lookup 14 15 def teardown 16 Socket.do_not_reverse_lookup = @@original_do_not_reverse_lookup_value 17 end 18 19 def do_not_reverse_lookup?(config) 20 result = nil 21 TestWEBrick.start_server(DNRL, config) do |server, addr, port, log| 22 TCPSocket.open(addr, port) do |sock| 23 result = {'true' => true, 'false' => false}[sock.gets] 24 end 25 end 26 result 27 end 28 29 # +--------------------------------------------------------------------------+ 30 # | Expected interaction between Socket.do_not_reverse_lookup | 31 # | and WEBrick::Config::General[:DoNotReverseLookup] | 32 # +----------------------------+---------------------------------------------+ 33 # | |WEBrick::Config::General[:DoNotReverseLookup]| 34 # +----------------------------+--------------+---------------+--------------+ 35 # |Socket.do_not_reverse_lookup| TRUE | FALSE | NIL | 36 # +----------------------------+--------------+---------------+--------------+ 37 # | TRUE | true | false | true | 38 # +----------------------------+--------------+---------------+--------------+ 39 # | FALSE | true | false | false | 40 # +----------------------------+--------------+---------------+--------------+ 41 42 def test_socket_dnrl_true_server_dnrl_true 43 Socket.do_not_reverse_lookup = true 44 assert_equal(true, do_not_reverse_lookup?(:DoNotReverseLookup => true)) 45 end 46 47 def test_socket_dnrl_true_server_dnrl_false 48 Socket.do_not_reverse_lookup = true 49 assert_equal(false, do_not_reverse_lookup?(:DoNotReverseLookup => false)) 50 end 51 52 def test_socket_dnrl_true_server_dnrl_nil 53 Socket.do_not_reverse_lookup = true 54 assert_equal(true, do_not_reverse_lookup?(:DoNotReverseLookup => nil)) 55 end 56 57 def test_socket_dnrl_false_server_dnrl_true 58 Socket.do_not_reverse_lookup = false 59 assert_equal(true, do_not_reverse_lookup?(:DoNotReverseLookup => true)) 60 end 61 62 def test_socket_dnrl_false_server_dnrl_false 63 Socket.do_not_reverse_lookup = false 64 assert_equal(false, do_not_reverse_lookup?(:DoNotReverseLookup => false)) 65 end 66 67 def test_socket_dnrl_false_server_dnrl_nil 68 Socket.do_not_reverse_lookup = false 69 assert_equal(false, do_not_reverse_lookup?(:DoNotReverseLookup => nil)) 70 end 71end 72