gitlab-net-dns 0.9.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (64) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +8 -0
  3. data/.gitlab-ci.yml +20 -0
  4. data/.rspec +1 -0
  5. data/.rubocop.yml +3 -0
  6. data/.rubocop_defaults.yml +359 -0
  7. data/.rubocop_todo.yml +207 -0
  8. data/.travis.yml +13 -0
  9. data/CHANGELOG.md +113 -0
  10. data/Gemfile +9 -0
  11. data/LICENSE.txt +56 -0
  12. data/README.md +172 -0
  13. data/Rakefile +38 -0
  14. data/THANKS.rdoc +24 -0
  15. data/bin/console +14 -0
  16. data/demo/check_soa.rb +104 -0
  17. data/demo/threads.rb +18 -0
  18. data/gitlab-net-dns.gemspec +24 -0
  19. data/lib/net/dns.rb +104 -0
  20. data/lib/net/dns/header.rb +705 -0
  21. data/lib/net/dns/names.rb +120 -0
  22. data/lib/net/dns/packet.rb +560 -0
  23. data/lib/net/dns/question.rb +185 -0
  24. data/lib/net/dns/resolver.rb +1214 -0
  25. data/lib/net/dns/resolver/socks.rb +148 -0
  26. data/lib/net/dns/resolver/timeouts.rb +70 -0
  27. data/lib/net/dns/rr.rb +356 -0
  28. data/lib/net/dns/rr/a.rb +114 -0
  29. data/lib/net/dns/rr/aaaa.rb +94 -0
  30. data/lib/net/dns/rr/classes.rb +130 -0
  31. data/lib/net/dns/rr/cname.rb +74 -0
  32. data/lib/net/dns/rr/hinfo.rb +96 -0
  33. data/lib/net/dns/rr/mr.rb +70 -0
  34. data/lib/net/dns/rr/mx.rb +82 -0
  35. data/lib/net/dns/rr/ns.rb +70 -0
  36. data/lib/net/dns/rr/null.rb +50 -0
  37. data/lib/net/dns/rr/ptr.rb +77 -0
  38. data/lib/net/dns/rr/soa.rb +75 -0
  39. data/lib/net/dns/rr/srv.rb +41 -0
  40. data/lib/net/dns/rr/txt.rb +58 -0
  41. data/lib/net/dns/rr/types.rb +191 -0
  42. data/lib/net/dns/version.rb +8 -0
  43. data/spec/fixtures/resolv.conf +4 -0
  44. data/spec/spec_helper.rb +14 -0
  45. data/spec/unit/resolver/dns_timeout_spec.rb +36 -0
  46. data/spec/unit/resolver/tcp_timeout_spec.rb +46 -0
  47. data/spec/unit/resolver/udp_timeout_spec.rb +46 -0
  48. data/test/test_helper.rb +13 -0
  49. data/test/unit/header_test.rb +164 -0
  50. data/test/unit/names_test.rb +21 -0
  51. data/test/unit/packet_test.rb +47 -0
  52. data/test/unit/question_test.rb +81 -0
  53. data/test/unit/resolver_test.rb +114 -0
  54. data/test/unit/rr/a_test.rb +106 -0
  55. data/test/unit/rr/aaaa_test.rb +102 -0
  56. data/test/unit/rr/classes_test.rb +83 -0
  57. data/test/unit/rr/cname_test.rb +90 -0
  58. data/test/unit/rr/hinfo_test.rb +111 -0
  59. data/test/unit/rr/mr_test.rb +99 -0
  60. data/test/unit/rr/mx_test.rb +106 -0
  61. data/test/unit/rr/ns_test.rb +80 -0
  62. data/test/unit/rr/types_test.rb +71 -0
  63. data/test/unit/rr_test.rb +127 -0
  64. metadata +172 -0
@@ -0,0 +1,21 @@
1
+ require 'test_helper'
2
+ require 'net/dns/names'
3
+
4
+ class NamesTest < Minitest::Test
5
+ include Net::DNS::Names
6
+
7
+ def test_long_names
8
+ assert_nothing_raised do
9
+ pack_name('a' * 63)
10
+ end
11
+ assert_raises ArgumentError do
12
+ pack_name('a' * 64)
13
+ end
14
+ assert_nothing_raised do
15
+ pack_name(['a' * 63, 'b' * 63, 'c' * 63, 'd' * 63].join('.'))
16
+ end
17
+ assert_raises ArgumentError do
18
+ pack_name(['a' * 63, 'b' * 63, 'c' * 63, 'd' * 63, 'e'].join('.'))
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,47 @@
1
+ require 'test_helper'
2
+ require 'net/dns/packet'
3
+
4
+ class PacketTest < Minitest::Test
5
+ def setup
6
+ @klass = Net::DNS::Packet
7
+ @domain = 'example.com'
8
+ end
9
+
10
+ def test_initialize
11
+ @record = @klass.new(@domain, Net::DNS::MX, Net::DNS::HS)
12
+ assert_instance_of @klass, @record
13
+ assert_instance_of Net::DNS::Header, @record.header
14
+ assert_instance_of Array, @record.question
15
+ assert_instance_of Net::DNS::Question, @record.question.first
16
+ assert_instance_of Array, @record.answer
17
+ assert_instance_of Array, @record.authority
18
+ assert_instance_of Array, @record.additional
19
+ end
20
+
21
+ def test_initialize_should_set_question
22
+ @question = @klass.new(@domain).question.first
23
+ assert_equal @domain, @question.qName
24
+ assert_equal Net::DNS::RR::Types.new(Net::DNS::A).to_s, @question.qType.to_s
25
+ assert_equal Net::DNS::RR::Classes.new(Net::DNS::IN).to_s, @question.qClass.to_s
26
+
27
+ @question = @klass.new(@domain, Net::DNS::MX, Net::DNS::HS).question.first
28
+ assert_equal @domain, @question.qName
29
+ assert_equal Net::DNS::RR::Types.new(Net::DNS::MX).to_s, @question.qType.to_s
30
+ assert_equal Net::DNS::RR::Classes.new(Net::DNS::HS).to_s, @question.qClass.to_s
31
+ end
32
+
33
+ def test_self_parse
34
+ packet = "\337M\201\200\000\001\000\003\000\004\000\004\006google\003com\000\000\001\000\001\300\f\000\001\000\001\000\000\001,\000\004@\351\273c\300\f\000\001\000\001\000\000\001,\000\004H\016\317c\300\f\000\001\000\001\000\000\001,\000\004@\351\247c\300\f\000\002\000\001\000\003\364\200\000\006\003ns1\300\f\300\f\000\002\000\001\000\003\364\200\000\006\003ns2\300\f\300\f\000\002\000\001\000\003\364\200\000\006\003ns3\300\f\300\f\000\002\000\001\000\003\364\200\000\006\003ns4\300\f\300X\000\001\000\001\000\003\307\273\000\004\330\357 \n\300j\000\001\000\001\000\003\307\273\000\004\330\357\"\n\300|\000\001\000\001\000\003\307\273\000\004\330\357$\n\300\216\000\001\000\001\000\003\307\273\000\004\330\357&\n"
35
+ @record = @klass.parse(packet)
36
+ assert_instance_of @klass, @record
37
+ assert_instance_of Net::DNS::Header, @record.header
38
+ assert_instance_of Array, @record.question
39
+ assert_instance_of Net::DNS::Question, @record.question.first
40
+ assert_instance_of Array, @record.answer
41
+ assert_instance_of Net::DNS::RR::A, @record.answer.first
42
+ assert_instance_of Array, @record.authority
43
+ assert_instance_of Net::DNS::RR::NS, @record.authority.first
44
+ assert_instance_of Array, @record.additional
45
+ assert_instance_of Net::DNS::RR::A, @record.additional.first
46
+ end
47
+ end
@@ -0,0 +1,81 @@
1
+ require 'test_helper'
2
+ require 'net/dns/question'
3
+
4
+ class QuestionTest < Minitest::Test
5
+ def setup
6
+ @domain = 'example.com.'
7
+ @type = 'MX'
8
+ @cls = 'HS'
9
+ @data = "\006google\003com\000\000\001\000\001"
10
+
11
+ @default = Net::DNS::Question.new(@domain)
12
+ @string = Net::DNS::Question.new(@domain, @type, @cls)
13
+ @binary = Net::DNS::Question.parse(@data)
14
+ @binary2 = Net::DNS::Question.parse(@string.data)
15
+ end
16
+
17
+ def test_simple
18
+ assert_equal(@default.qName, @domain)
19
+ assert_equal(@default.qType.to_s, "A")
20
+ assert_equal(@default.qClass.to_s, "IN")
21
+
22
+ assert_equal(@string.qName, @domain)
23
+ assert_equal(@string.qType.to_s, "MX")
24
+ assert_equal(@string.qClass.to_s, "HS")
25
+
26
+ assert_equal(@binary.qName, "google.com.")
27
+ assert_equal(@binary.qType.to_s, "A")
28
+ assert_equal(@binary.qClass.to_s, "IN")
29
+
30
+ assert_equal(@binary2.qName, @domain)
31
+ assert_equal(@binary2.qType.to_s, "MX")
32
+ assert_equal(@binary2.qClass.to_s, "HS")
33
+ end
34
+
35
+ def test_raise
36
+ # assert_raises(Net::DNS::Question::NameInvalid) do
37
+ # Net::DNS::Question.new(1)
38
+ # end
39
+ assert_raises(Net::DNS::Question::NameInvalid) do
40
+ Net::DNS::Question.new("test{")
41
+ end
42
+ assert_raises(ArgumentError) do
43
+ Net::DNS::Question.parse([])
44
+ end
45
+ assert_raises(ArgumentError) do
46
+ Net::DNS::Question.parse("test")
47
+ end
48
+ end
49
+
50
+ def test_inspect
51
+ assert_equal "google.com. IN A ",
52
+ Net::DNS::Question.new("google.com.").inspect
53
+ assert_equal "google.com. IN A ",
54
+ Net::DNS::Question.new("google.com.", Net::DNS::A).inspect
55
+ assert_equal "google.com. IN NS ",
56
+ Net::DNS::Question.new("google.com.", Net::DNS::NS).inspect
57
+ assert_equal "google.com. IN NS ",
58
+ Net::DNS::Question.new("google.com.", Net::DNS::NS).inspect
59
+ end
60
+
61
+ def test_inspect_with_name_longer_than_29_chrs
62
+ assert_equal "supercalifragilistichespiralidoso.com IN A ",
63
+ Net::DNS::Question.new("supercalifragilistichespiralidoso.com").inspect
64
+ end
65
+
66
+ def test_to_s
67
+ assert_equal "google.com. IN A ",
68
+ Net::DNS::Question.new("google.com.").to_s
69
+ assert_equal "google.com. IN A ",
70
+ Net::DNS::Question.new("google.com.", Net::DNS::A).to_s
71
+ assert_equal "google.com. IN NS ",
72
+ Net::DNS::Question.new("google.com.", Net::DNS::NS).to_s
73
+ assert_equal "google.com. IN NS ",
74
+ Net::DNS::Question.new("google.com.", Net::DNS::NS).to_s
75
+ end
76
+
77
+ def test_to_s_with_name_longer_than_29_chrs
78
+ assert_equal "supercalifragilistichespiralidoso.com IN A ",
79
+ Net::DNS::Question.new("supercalifragilistichespiralidoso.com").to_s
80
+ end
81
+ end
@@ -0,0 +1,114 @@
1
+ require 'test_helper'
2
+ require 'net/dns/resolver'
3
+
4
+ class Net::DNS::Resolver
5
+ attr_reader :config
6
+ end
7
+
8
+ class ResolverTest < Minitest::Test
9
+ def test_initialize
10
+ assert_nothing_raised { Net::DNS::Resolver.new }
11
+ end
12
+
13
+ def test_initialize_with_config
14
+ assert_nothing_raised { Net::DNS::Resolver.new({}) }
15
+ end
16
+
17
+ def test_initialize_with_multi_name_servers
18
+ resolver = Net::DNS::Resolver.new(config_file: File.expand_path('../../spec/fixtures/resolv.conf', __dir__))
19
+ assert_equal ['192.168.1.1', '192.168.1.2', '192.168.1.3', '192.168.1.4'], resolver.nameservers
20
+ end
21
+
22
+ def test_initialize_with_invalid_config_should_raise_argumenterror
23
+ assert_raises(ArgumentError) { Net::DNS::Resolver.new("") }
24
+ assert_raises(ArgumentError) { Net::DNS::Resolver.new(0) }
25
+ assert_raises(ArgumentError) { Net::DNS::Resolver.new(:foo) }
26
+ end
27
+
28
+ def test_query_with_no_nameservers_should_raise_resolvererror
29
+ assert_raises(Net::DNS::Resolver::Error) { Net::DNS::Resolver.new(nameservers: []).query("example.com") }
30
+ end
31
+
32
+ # def test_send_to_ipv6_nameserver_should_not_raise_einval
33
+ # assert_nothing_raised { Net::DNS::Resolver.new(:nameservers => ['2001:4860:4860::8888', '2001:4860:4860::8844']).send('example.com')}
34
+ # end
35
+
36
+ # I know private methods are supposed to not be tested directly
37
+ # but since this library lacks unit tests, for now let me test them in this way.
38
+
39
+ def _make_query_packet(*args)
40
+ Net::DNS::Resolver.new.send(:make_query_packet, *args)
41
+ end
42
+
43
+ def test_make_query_packet_from_ipaddr
44
+ packet = _make_query_packet(IPAddr.new("192.168.1.1"), Net::DNS::A, cls = Net::DNS::IN)
45
+ assert_equal "1.1.168.192.in-addr.arpa", packet.question.first.qName
46
+ assert_equal Net::DNS::PTR.to_i, packet.question.first.qType.to_i
47
+ assert_equal Net::DNS::IN.to_i, packet.question.first.qClass.to_i
48
+ end
49
+
50
+ def test_make_query_packet_from_string_like_ipv4
51
+ packet = _make_query_packet("192.168.1.1", Net::DNS::A, cls = Net::DNS::IN)
52
+ assert_equal "1.1.168.192.in-addr.arpa", packet.question.first.qName
53
+ assert_equal Net::DNS::PTR.to_i, packet.question.first.qType.to_i
54
+ assert_equal Net::DNS::IN.to_i, packet.question.first.qClass.to_i
55
+ end
56
+
57
+ def test_make_query_packet_from_string_like_ipv6
58
+ packet = _make_query_packet("2001:1ac0::200:0:a5d1:6004:2", Net::DNS::A, cls = Net::DNS::IN)
59
+ assert_equal "2.0.0.0.4.0.0.6.1.d.5.a.0.0.0.0.0.0.2.0.0.0.0.0.0.c.a.1.1.0.0.2.ip6.arpa", packet.question.first.qName
60
+ assert_equal Net::DNS::PTR.to_i, packet.question.first.qType.to_i
61
+ assert_equal Net::DNS::IN.to_i, packet.question.first.qClass.to_i
62
+ end
63
+
64
+ def test_make_query_packet_from_string_like_hostname
65
+ packet = _make_query_packet("ns2.google.com", Net::DNS::A, cls = Net::DNS::IN)
66
+ assert_equal "ns2.google.com", packet.question.first.qName
67
+ assert_equal Net::DNS::A.to_i, packet.question.first.qType.to_i
68
+ assert_equal Net::DNS::IN.to_i, packet.question.first.qClass.to_i
69
+ end
70
+
71
+ def test_make_query_packet_from_string_like_hostname_with_number
72
+ packet = _make_query_packet("ns.google.com", Net::DNS::A, cls = Net::DNS::IN)
73
+ assert_equal "ns.google.com", packet.question.first.qName
74
+ assert_equal Net::DNS::A.to_i, packet.question.first.qType.to_i
75
+ assert_equal Net::DNS::IN.to_i, packet.question.first.qClass.to_i
76
+ end
77
+
78
+ def test_should_return_state_without_exception
79
+ res = Net::DNS::Resolver.new
80
+ assert_nothing_raised { res.state }
81
+ end
82
+
83
+ RubyPlatforms = [
84
+ ["darwin9.0", false], # Mac OS X
85
+ ["darwin", false], # JRuby on Mac OS X
86
+ ["linux-gnu", false],
87
+ ["mingw32", true], # ruby 1.8.6 (2008-03-03 patchlevel 114) [i386-mingw32]
88
+ ["mswin32", true], # ruby 1.8.6 (2008-03-03 patchlevel 114) [i386-mswin32]
89
+ ["mswin32", true], # ruby 1.8.6 (2008-04-22 rev 6555) [x86-jruby1.1.1]
90
+ ].freeze
91
+
92
+ C = Object.const_get(defined?(RbConfig) ? :RbConfig : :Config)::CONFIG
93
+
94
+ def test_self_platform_windows_question
95
+ RubyPlatforms.each do |platform, is_windows|
96
+ assert_equal is_windows,
97
+ override_platform(platform) { Net::DNS::Resolver.platform_windows? },
98
+ "Expected `#{is_windows}' with platform `#{platform}'"
99
+ end
100
+ end
101
+
102
+ private
103
+
104
+ def override_platform(new_platform, &block)
105
+ raise LocalJumpError, "no block given" unless block_given?
106
+
107
+ old_platform = C["host_os"]
108
+ C["host_os"] = new_platform
109
+ result = yield
110
+ ensure
111
+ C["host_os"] = old_platform
112
+ result
113
+ end
114
+ end
@@ -0,0 +1,106 @@
1
+ require 'test_helper'
2
+ require 'net/dns/rr'
3
+
4
+ class RRATest < Minitest::Test
5
+ def setup
6
+ @rr_name = "google.com."
7
+ @rr_type = "A"
8
+ @rr_cls = "IN"
9
+ @rr_ttl = 10_000
10
+ @rr_value = "64.233.187.99"
11
+ @rr_address = IPAddr.new(@rr_value)
12
+
13
+ @rr_output = "google.com. 10000 IN A 64.233.187.99"
14
+
15
+ @rr = Net::DNS::RR::A.new(name: @rr_name, address: @rr_address, ttl: @rr_ttl)
16
+ end
17
+
18
+ def test_initialize_from_hash
19
+ @record = Net::DNS::RR::A.new(name: @rr_name, address: @rr_value, ttl: @rr_ttl)
20
+ assert_equal @rr_output, @record.to_s
21
+ assert_equal @rr_name, @record.name
22
+ assert_equal @rr_type, @record.type
23
+ assert_equal @rr_cls, @record.cls
24
+ assert_equal @rr_ttl, @record.ttl
25
+ assert_equal @rr_address, @record.address
26
+ assert_equal @rr_value, @record.value
27
+ end
28
+
29
+ def test_initialize_from_string
30
+ @record = Net::DNS::RR::A.new("#{@rr_name} #{@rr_ttl} #{@rr_cls} #{@rr_type} #{@rr_value}")
31
+ assert_equal @rr_output, @record.to_s
32
+ assert_equal @rr_name, @record.name
33
+ assert_equal @rr_type, @record.type
34
+ assert_equal @rr_cls, @record.cls
35
+ assert_equal @rr_ttl, @record.ttl
36
+ assert_equal @rr_address, @record.address
37
+ assert_equal @rr_value, @record.value
38
+ end
39
+
40
+ def test_parse
41
+ data = "\006google\003com\000\000\001\000\001\000\000'\020\000\004@\351\273c"
42
+ @record = Net::DNS::RR.parse(data)
43
+ assert_equal @rr_output, @record.to_s
44
+ assert_equal @rr_name, @record.name
45
+ assert_equal @rr_type, @record.type
46
+ assert_equal @rr_cls, @record.cls
47
+ assert_equal @rr_ttl, @record.ttl
48
+ assert_equal @rr_address, @record.address
49
+ assert_equal @rr_value, @record.value
50
+ end
51
+
52
+ InvalidArguments = [
53
+ { name: "google.com", address: "255.256" },
54
+ { name: "google.com" },
55
+ Object.new,
56
+ Array.new(7),
57
+ "10800 IN A",
58
+ "google.com. 10800 IN B",
59
+ "google.com. 10800 IM A",
60
+ ].freeze
61
+
62
+ InvalidArguments.each_with_index do |arguments, index|
63
+ define_method "test_initialize_should_raise_with_invalid_arguments_#{index}" do
64
+ assert_raises(ArgumentError) { Net::DNS::RR::A.new(arguments) }
65
+ end
66
+ end
67
+
68
+ def test_address_getter
69
+ assert_equal @rr_address, @rr.address
70
+ end
71
+
72
+ def test_address_setter
73
+ assert_raises(ArgumentError) { @rr.address = nil }
74
+
75
+ expected = IPAddr.new("64.233.187.99")
76
+ assert_equal expected, @rr.address = "64.233.187.99"
77
+ assert_equal expected, @rr.address
78
+
79
+ expected = IPAddr.new("64.233.187.90")
80
+ assert_equal expected, @rr.address = expected.to_i
81
+ assert_equal expected, @rr.address
82
+
83
+ expected = IPAddr.new("64.233.187.80")
84
+ assert_equal expected, @rr.address = IPAddr.new("64.233.187.80")
85
+ assert_equal expected, @rr.address
86
+ end
87
+
88
+ def test_value
89
+ assert_equal @rr_value, @rr.value
90
+ end
91
+
92
+ def test_inspect
93
+ assert_equal "google.com. 10000 IN A 64.233.187.99",
94
+ @rr.inspect
95
+ end
96
+
97
+ def test_to_s
98
+ assert_equal "google.com. 10000 IN A 64.233.187.99",
99
+ @rr.to_s
100
+ end
101
+
102
+ def test_to_a
103
+ assert_equal ["google.com.", 10_000, "IN", "A", "64.233.187.99"],
104
+ @rr.to_a
105
+ end
106
+ end
@@ -0,0 +1,102 @@
1
+ require 'test_helper'
2
+ require 'net/dns/rr'
3
+
4
+ class RRAAAATest < Minitest::Test
5
+ def setup
6
+ @rr_name = "www.nic.it."
7
+ @rr_type = "AAAA"
8
+ @rr_cls = "IN"
9
+ @rr_ttl = 60
10
+ @rr_value = "2a00:d40:1:1::239"
11
+ @rr_address = IPAddr.new(@rr_value)
12
+
13
+ @rr_output = "www.nic.it. 60 IN AAAA 2a00:d40:1:1::239"
14
+
15
+ @rr = Net::DNS::RR::AAAA.new(name: @rr_name, address: @rr_address, ttl: @rr_ttl)
16
+ end
17
+
18
+ def test_initialize_from_hash
19
+ @record = Net::DNS::RR::AAAA.new(name: @rr_name, address: @rr_value, ttl: @rr_ttl)
20
+ assert_equal @rr_output, @record.to_s
21
+ assert_equal @rr_name, @record.name
22
+ assert_equal @rr_type, @record.type
23
+ assert_equal @rr_cls, @record.cls
24
+ assert_equal @rr_ttl, @record.ttl
25
+ assert_equal @rr_address, @record.address
26
+ assert_equal @rr_value, @record.value
27
+ end
28
+
29
+ def test_initialize_from_string
30
+ @record = Net::DNS::RR::AAAA.new("#{@rr_name} #{@rr_ttl} #{@rr_cls} #{@rr_type} #{@rr_value}")
31
+ assert_equal @rr_output, @record.to_s
32
+ assert_equal @rr_name, @record.name
33
+ assert_equal @rr_type, @record.type
34
+ assert_equal @rr_cls, @record.cls
35
+ assert_equal @rr_ttl, @record.ttl
36
+ assert_equal @rr_address, @record.address
37
+ assert_equal @rr_value, @record.value
38
+ end
39
+
40
+ def test_parse
41
+ data = "\003www\003nic\002it\000\000\034\000\001\000\000\000<\000\020*\000\r@\000\001\000\001\000\000\000\000\000\000\0029"
42
+ @record = Net::DNS::RR.parse(data)
43
+ assert_equal @rr_output, @record.to_s
44
+ assert_equal @rr_name, @record.name
45
+ assert_equal @rr_type, @record.type
46
+ assert_equal @rr_cls, @record.cls
47
+ assert_equal @rr_ttl, @record.ttl
48
+ assert_equal @rr_address, @record.address
49
+ assert_equal @rr_value, @record.value
50
+ end
51
+
52
+ InvalidArguments = [
53
+ { name: "google.com", address: "2a00" },
54
+ { name: "google.com" },
55
+ Object.new,
56
+ Array.new(7),
57
+ "10800 IN AAAA",
58
+ # FIXME: "google.com. 10800 IN B",
59
+ # FIXME: "google.com. 10800 IM AAAA",
60
+ ].freeze
61
+
62
+ InvalidArguments.each_with_index do |arguments, index|
63
+ define_method "test_initialize_should_raise_with_invalid_arguments_#{index}" do
64
+ assert_raises(ArgumentError) { Net::DNS::RR::AAAA.new(arguments) }
65
+ end
66
+ end
67
+
68
+ def test_address_getter
69
+ assert_equal @rr_address, @rr.address
70
+ end
71
+
72
+ def test_address_setter
73
+ assert_raises(ArgumentError) { @rr.address = nil }
74
+
75
+ expected = IPAddr.new("2a00:d40:1:1::239")
76
+ assert_equal expected, @rr.address = "2a00:d40:1:1::239"
77
+ assert_equal expected, @rr.address
78
+
79
+ expected = IPAddr.new("2a00:d40:1:1::240")
80
+ assert_equal expected, @rr.address = IPAddr.new("2a00:d40:1:1::240")
81
+ assert_equal expected, @rr.address
82
+ end
83
+
84
+ def test_value
85
+ assert_equal @rr_value, @rr.value
86
+ end
87
+
88
+ def test_inspect
89
+ assert_equal "www.nic.it. 60 IN AAAA 2a00:d40:1:1::239",
90
+ @rr.inspect
91
+ end
92
+
93
+ def test_to_s
94
+ assert_equal "www.nic.it. 60 IN AAAA 2a00:d40:1:1::239",
95
+ @rr.to_s
96
+ end
97
+
98
+ def test_to_a
99
+ assert_equal ["www.nic.it.", 60, "IN", "AAAA", "2a00:d40:1:1::239"],
100
+ @rr.to_a
101
+ end
102
+ end