Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
61 changes: 0 additions & 61 deletions test/resolv/test_resource.rb
Original file line number Diff line number Diff line change
Expand Up @@ -81,67 +81,6 @@ def test_generic_question_equality
Resolv::DNS::Message.decode(wire).answer.first[2]
end

# Decoding an unknown (type, class) pair builds a fresh class every time, so
# equality must not rest on the class identity.
def test_generic_equality
wire = generic_answer(40000, "\x01\x02\x03")
rr1 = decode_generic(wire)
rr2 = decode_generic(wire)

assert_not_same rr1.class, rr2.class
assert_equal rr1, rr2
assert rr1.eql?(rr2)
assert_equal rr1.hash, rr2.hash
assert_equal Resolv::DNS::Message.decode(wire), Resolv::DNS::Message.decode(wire)
end

# Any descendant counts, not just a class create returned.
def test_generic_equality_between_descendants
generic = Resolv::DNS::Resource::Generic
direct = generic.create(40000, 60000)
descendant = Class.new(generic.create(40000, 60000))

assert_equal direct.new("\x01\x02\x03"), descendant.new("\x01\x02\x03")
assert_equal descendant.new("\x01\x02\x03"), direct.new("\x01\x02\x03")
assert_equal generic.new("\x01\x02\x03"), generic.new("\x01\x02\x03")
assert_not_equal direct.new("\x01\x02\x03"),
Class.new(generic.create(40001, 60000)).new("\x01\x02\x03")
end

def test_generic_inequality
rr = decode_generic(generic_answer(40000, "\x01\x02\x03"))

assert_not_equal rr, decode_generic(generic_answer(40001, "\x01\x02\x03"))
assert_not_equal rr, decode_generic(generic_answer(40000, "\x09\x09\x09"))
assert_not_equal rr, Resolv::DNS::Resource::IN::A.new("192.168.0.1")
end

# A question holds the resource class itself, so it needs the same treatment.
def test_generic_question_equality
wire = generic_question(40000)

assert_equal Resolv::DNS::Message.decode(wire), Resolv::DNS::Message.decode(wire)
assert_not_equal Resolv::DNS::Message.decode(wire),
Resolv::DNS::Message.decode(generic_question(40001))
end

private def header(qdcount, ancount)
"\x00\x00\x00\x00".b + [qdcount, ancount, 0, 0].pack('nnnn')
end

private def generic_answer(type, rdata)
rdata = rdata.b
(header(0, 1) + "\x00".b + [type, 60000, 0, rdata.bytesize].pack('nnNn') + rdata).b
end

private def generic_question(type)
(header(1, 0) + "\x07example\x03com\x00".b + [type, 60000].pack('nn')).b
end

private def decode_generic(wire)
Resolv::DNS::Message.decode(wire).answer.first[2]
end

def test_srv_no_compress
# Domain name in SRV RDATA should not be compressed
issue29 = 'https://github.com/ruby/resolv/issues/29'
Expand Down