Project

General

Profile

Download (6.19 KB) Statistics
| Branch: | Tag: | Revision:
require 'test_helper'
require 'net'
require 'net/dns'

class DnsTest < ActiveSupport::TestCase
setup do
@proxy = smart_proxies(:one)
end

context "#lookup" do
test "should return nil for empty query" do
result = Net::DNS.lookup('', :proxy => @proxy)
assert_nil result
end

test "should do a forward ipv4 lookup" do
resource = mock()
resource.stubs(:address).returns('1.1.1.1')
Resolv::DNS.any_instance.expects(:getresource).with('www.example.com', Resolv::DNS::Resource::IN::A).returns(resource)
result = Net::DNS.lookup('www.example.com', :proxy => @proxy)
assert_kind_of Net::DNS::ARecord, result
assert_equal 'www.example.com', result.hostname
end

test "should do a forward ipv6 lookup" do
resource = mock()
resource.stubs(:address).returns('2001:db8::1')
Resolv::DNS.any_instance.expects(:getresource).with('www.example.com', Resolv::DNS::Resource::IN::AAAA).returns(resource)
result = Net::DNS.lookup('www.example.com', :proxy => @proxy, :ipfamily => Socket::AF_INET6)
assert_kind_of Net::DNS::AAAARecord, result
assert_equal 'www.example.com', result.hostname
end

test "should do a reverse ipv4 lookup" do
Resolv::DNS.any_instance.expects(:getname).returns('www.example.com')
result = Net::DNS.lookup('1.1.1.1', :proxy => @proxy)
assert_kind_of Net::DNS::PTR4Record, result
assert_equal '1.1.1.1', result.ip
end

test "should do a reverse ipv6 lookup" do
Resolv::DNS.any_instance.expects(:getname).returns('www.example.com')
result = Net::DNS.lookup('2001:db8::1', :proxy => @proxy)
assert_kind_of Net::DNS::PTR6Record, result
assert_equal '2001:db8::1', result.ip
end
end

context "records" do
setup do
Resolv::DNS.any_instance.stubs(:getname).returns('www.example.com')
resource_v4 = mock()
resource_v4.stubs(:address).returns('1.2.3.4')
Resolv::DNS.any_instance.stubs(:getresource).with('www.example.com', Resolv::DNS::Resource::IN::A).returns(resource_v4)
resource_v6 = mock()
resource_v6.stubs(:address).returns('2001:db8::1')
Resolv::DNS.any_instance.stubs(:getresource).with('www.example.com', Resolv::DNS::Resource::IN::AAAA).returns(resource_v6)
end

context "a IPv4 forward record" do
setup do
@record = Net::DNS::ARecord.new(:hostname => 'www.example.com', :ip => '001.02.03.04', :proxy => @proxy)
end

test 'should have a IPv4 reverse record' do
reverse_record = @record.ptr
assert_kind_of Net::DNS::PTR4Record, reverse_record
assert_equal reverse_record.ip, '1.2.3.4'
end

test 'should normalize the given IP' do
assert_equal '1.2.3.4', @record.ip
end

test 'should compare after normalization' do
record2 = Net::DNS::ARecord.new(:hostname => 'www.example.com', :ip => '1.2.3.4', :proxy => @proxy)
assert_equal @record, record2
end

test '#destroy calls delete on proxy with type parameter' do
@proxy.expects(:delete).with('www.example.com/A')
@record.destroy
end
end

context "a IPv4 reverse record" do
setup do
@record = Net::DNS::PTR4Record.new(:hostname => 'www.example.com', :ip => '01.02.03.004', :proxy => @proxy)
end

test 'should have a IPv4 forward record' do
forward_record = @record.a
assert_kind_of Net::DNS::ARecord, forward_record
assert_equal forward_record.hostname, 'www.example.com'
end

test 'should have a IPv6 forward record' do
forward_record = @record.aaaa
assert_kind_of Net::DNS::AAAARecord, forward_record
assert_equal forward_record.hostname, 'www.example.com'
end

test 'should normalize the given IP' do
assert_equal '1.2.3.4', @record.ip
end

test 'should compare after normalization' do
record2 = Net::DNS::PTR4Record.new(:hostname => 'www.example.com', :ip => '1.2.3.4', :proxy => @proxy)
assert_equal @record, record2
end

test '#destroy calls delete on proxy without type parameter' do
@proxy.expects(:delete).with('4.3.2.1.in-addr.arpa')
@record.destroy
end
end

context "a IPv6 forward record" do
setup do
@record = Net::DNS::AAAARecord.new(:hostname => 'www.example.com', :ip => '2001:DB8::0000:1', :proxy => @proxy)
end

test 'should have a IPv6 reverse record' do
reverse_record = @record.ptr
assert_kind_of Net::DNS::PTR6Record, reverse_record
assert_equal reverse_record.ip, '2001:db8::1'
end

test 'should normalize the given IP' do
assert_equal '2001:db8::1', @record.ip
end

test 'should compare after normalization' do
record2 = Net::DNS::AAAARecord.new(:hostname => 'www.example.com', :ip => '2001:db8::1', :proxy => @proxy)
assert_equal @record, record2
end

test '#destroy calls delete on proxy with type parameter' do
@proxy.expects(:delete).with('www.example.com/AAAA')
@record.destroy
end
end

context "a IPv6 reverse record" do
setup do
@record = Net::DNS::PTR6Record.new(:hostname => 'www.example.com', :ip => '2001:DB8::0000:1', :proxy => @proxy)
end

test 'should have a IPv4 forward record' do
forward_record = @record.a
assert_kind_of Net::DNS::ARecord, forward_record
assert_equal forward_record.hostname, 'www.example.com'
end

test 'should have a IPv6 forward record' do
forward_record = @record.aaaa
assert_kind_of Net::DNS::AAAARecord, forward_record
assert_equal forward_record.hostname, 'www.example.com'
end

test 'should normalize the given IP' do
assert_equal '2001:db8::1', @record.ip
end

test 'should compare after normalization' do
record2 = Net::DNS::PTR6Record.new(:hostname => 'www.example.com', :ip => '2001:db8::1', :proxy => @proxy)
assert_equal @record, record2
end

test '#destroy calls delete on proxy without type parameter' do
@proxy.expects(:delete).with('1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa')
@record.destroy
end
end
end
end
(2-2/4)