gitlab-net-dns 0.9.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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,83 @@
1
+ require 'test_helper'
2
+ require 'net/dns/rr'
3
+
4
+ class RRClassesTest < Minitest::Test
5
+ def setup
6
+ @classes = {}
7
+ @regexp_string = "ANY|CH|HS|IN|NONE"
8
+ end
9
+
10
+ StrAndNum = [
11
+ ['IN', 1],
12
+ ['CH', 3],
13
+ ['HS', 4],
14
+ ['NONE', 254],
15
+ ['ANY', 255],
16
+ ].freeze
17
+
18
+ StrAndNum.each do |str, num|
19
+ define_method "test_initialize_from_str_#{str}" do
20
+ instance = Net::DNS::RR::Classes.new(str)
21
+ assert_equal str, instance.to_s
22
+ assert_equal num, instance.to_i
23
+ end
24
+ define_method "test_initialize_from_num_#{num}" do
25
+ instance = Net::DNS::RR::Classes.new(num)
26
+ assert_equal str, instance.to_s
27
+ assert_equal num, instance.to_i
28
+ end
29
+ end
30
+
31
+ def test_initialize_should_raise_with_invalid_class
32
+ assert_raises(ArgumentError) { Net::DNS::RR::Classes.new({}) }
33
+ end
34
+
35
+ def test_inspect
36
+ assert_equal 1, Net::DNS::RR::Classes.new(1).inspect
37
+ assert_equal 1, Net::DNS::RR::Classes.new("IN").inspect
38
+ end
39
+
40
+ def test_to_s
41
+ assert_equal "IN", Net::DNS::RR::Classes.new(1).to_s
42
+ assert_equal "IN", Net::DNS::RR::Classes.new("IN").to_s
43
+ end
44
+
45
+ def test_to_i
46
+ assert_equal 1, Net::DNS::RR::Classes.new(1).to_i
47
+ assert_equal 1, Net::DNS::RR::Classes.new("IN").to_i
48
+ end
49
+
50
+ def test_self_default
51
+ @_default = Net::DNS::RR::Classes.default
52
+
53
+ # Default type should be ANY => 255
54
+ instance = Net::DNS::RR::Classes.new(nil)
55
+ assert_equal 1, instance.to_i
56
+ assert_equal "IN", instance.to_s
57
+
58
+ # Let's change default behaviour
59
+ Net::DNS::RR::Classes.default = "CH"
60
+ instance = Net::DNS::RR::Classes.new(nil)
61
+ assert_equal 3, instance.to_i
62
+ assert_equal "CH", instance.to_s
63
+
64
+ Net::DNS::RR::Classes.default = "IN"
65
+ instance = Net::DNS::RR::Classes.new(nil)
66
+ assert_equal 1, instance.to_i
67
+ assert_equal "IN", instance.to_s
68
+ ensure
69
+ Net::DNS::RR::Classes.default = Net::DNS::RR::Classes::CLASSES.invert[@_default]
70
+ end
71
+
72
+ def test_self_valid?
73
+ assert Net::DNS::RR::Classes.valid?("IN")
74
+ assert Net::DNS::RR::Classes.valid?(1)
75
+ assert !Net::DNS::RR::Classes.valid?("Q")
76
+ assert !Net::DNS::RR::Classes.valid?(256)
77
+ assert_raises(ArgumentError) { Net::DNS::RR::Classes.valid?({}) }
78
+ end
79
+
80
+ def test_self_regexp
81
+ assert_equal @regexp_string, Net::DNS::RR::Classes.regexp
82
+ end
83
+ end
@@ -0,0 +1,90 @@
1
+ require 'test_helper'
2
+ require 'net/dns/rr'
3
+
4
+ class RRCNAMETest < Minitest::Test
5
+ def setup
6
+ @rr_name = "www.google.com."
7
+ @rr_type = "CNAME"
8
+ @rr_cls = "IN"
9
+ @rr_ttl = 550_317
10
+ @rr_value = "www.l.google.com."
11
+ @rr_cname = @rr_value
12
+
13
+ @rr_output = "www.google.com. 550317 IN CNAME www.l.google.com."
14
+
15
+ @rr = Net::DNS::RR::CNAME.new(name: @rr_name, cname: @rr_cname, ttl: @rr_ttl)
16
+ end
17
+
18
+ def test_initialize_from_hash
19
+ @record = Net::DNS::RR::CNAME.new(name: @rr_name, cname: @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_cname, @record.cname
26
+ assert_equal @rr_value, @record.value
27
+ end
28
+
29
+ def test_initialize_from_string
30
+ @record = Net::DNS::RR::CNAME.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_cname, @record.cname
37
+ assert_equal @rr_value, @record.value
38
+ end
39
+
40
+ def test_parse
41
+ data = "\003www\006google\003com\000\000\005\000\001\000\be\255\000\022\003www\001l\006google\003com\000"
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_cname, @record.cname
49
+ assert_equal @rr_value, @record.value
50
+ end
51
+
52
+ InvalidArguments = [
53
+ # FIXME: { :name => "google.com", :cname => "foo___bar" },
54
+ # FIXME: { :name => "google.com", :cname => "foo$bar" },
55
+ { name: "google.com" },
56
+ Object.new,
57
+ Array.new(7),
58
+ "10800 IN CNAME",
59
+ "google.com. 10800 IN CNAME",
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) { p Net::DNS::RR::CNAME.new(arguments) }
65
+ end
66
+ end
67
+
68
+ def test_cname_getter
69
+ assert_equal @rr_cname, @rr.cname
70
+ end
71
+
72
+ def test_value
73
+ assert_equal @rr_value, @rr.value
74
+ end
75
+
76
+ def test_inspect
77
+ assert_equal "www.google.com. 550317 IN CNAME www.l.google.com.",
78
+ @rr.inspect
79
+ end
80
+
81
+ def test_to_s
82
+ assert_equal "www.google.com. 550317 IN CNAME www.l.google.com.",
83
+ @rr.to_s
84
+ end
85
+
86
+ def test_to_a
87
+ assert_equal ["www.google.com.", 550_317, "IN", "CNAME", "www.l.google.com."],
88
+ @rr.to_a
89
+ end
90
+ end
@@ -0,0 +1,111 @@
1
+ require 'test_helper'
2
+ require 'net/dns/rr'
3
+ require 'net/dns/rr/hinfo'
4
+
5
+ class RRHINFOTest < Minitest::Test
6
+ def setup
7
+ @rr_name = ""
8
+ @rr_type = "HINFO"
9
+ @rr_cls = "IN"
10
+ @rr_ttl = nil
11
+ @rr_value = '"PC-Intel-700mhz" "Redhat Linux 7.1"'
12
+ @rr_output = ' IN HINFO "PC-Intel-700mhz" "Redhat Linux 7.1"'
13
+
14
+ @rr_cpu = "PC-Intel-700mhz"
15
+ @rr_os = "Redhat Linux 7.1"
16
+
17
+ @rr = Net::DNS::RR::HINFO.new(name: @rr_name, cpu: @rr_cpu, os: @rr_os)
18
+ end
19
+
20
+ def test_initialize_from_hash
21
+ @record = Net::DNS::RR::HINFO.new(name: @rr_name, cpu: @rr_cpu, os: @rr_os)
22
+ assert_equal @rr_output, @record.to_s
23
+ assert_equal @rr_name, @record.name
24
+ assert_equal @rr_type, @record.type
25
+ assert_equal @rr_cls, @record.cls
26
+ assert_equal 10_800, @record.ttl
27
+ assert_equal @rr_value, @record.value
28
+
29
+ assert_equal @rr_cpu, @record.cpu
30
+ assert_equal @rr_os, @record.os
31
+ end
32
+
33
+ def test_initialize_from_string
34
+ @record = Net::DNS::RR::HINFO.new(%Q(#{@rr_name} #{@rr_ttl} #{@rr_cls} #{@rr_type} PC-Intel-700mhz "Redhat Linux 7.1"))
35
+ assert_equal @rr_output, @record.to_s
36
+ assert_equal @rr_value, @record.value
37
+
38
+ assert_equal @rr_cpu, @record.cpu
39
+ assert_equal @rr_os, @record.os
40
+ end
41
+
42
+ def test_initialize_from_string_without_quotes
43
+ @record = Net::DNS::RR::HINFO.new("#{@rr_name} #{@rr_ttl} #{@rr_cls} #{@rr_type} #{@rr_value}")
44
+ assert_equal @rr_output, @record.to_s
45
+ # FIXME: assert_equal @rr_name, @record.name
46
+ assert_equal @rr_type, @record.type
47
+ assert_equal @rr_cls, @record.cls
48
+ assert_equal 10_800, @record.ttl
49
+ assert_equal @rr_value, @record.value
50
+
51
+ assert_equal @rr_cpu, @record.cpu
52
+ assert_equal @rr_os, @record.os
53
+ end
54
+
55
+ # FIXME: Can't get valid data
56
+ #
57
+ # def test_parse
58
+ # data = "\002in\000\000\r\000\001\000\000*0\000!\017PC-Intel-700mhz\020Redhat Linux 7.1"
59
+ # @record = Net::DNS::RR.parse(data)
60
+ # assert_equal @rr_output, @record.to_s
61
+ # assert_equal @rr_name, @record.name
62
+ # assert_equal @rr_type, @record.type
63
+ # assert_equal @rr_cls, @record.cls
64
+ # assert_equal @rr_ttl, @record.ttl
65
+ # assert_equal @rr_value, @record.value
66
+ #
67
+ # assert_equal @rr_cpu, @record.cpu
68
+ # assert_equal @rr_os, @record.os
69
+ # end
70
+
71
+ InvalidArguments = [
72
+ { name: "google.com" },
73
+ Object.new,
74
+ Array.new(7),
75
+ "10800 IN HINFO",
76
+ "IN HINFO",
77
+ ].freeze
78
+
79
+ InvalidArguments.each_with_index do |arguments, index|
80
+ define_method "test_initialize_should_raise_with_invalid_arguments_#{index}" do
81
+ assert_raises(ArgumentError) { p Net::DNS::RR::HINFO.new(arguments) }
82
+ end
83
+ end
84
+
85
+ def test_cpu
86
+ assert_equal @rr_cpu, @rr.cpu
87
+ end
88
+
89
+ def test_os
90
+ assert_equal @rr_os, @rr.os
91
+ end
92
+
93
+ def test_value
94
+ assert_equal '"PC-Intel-700mhz" "Redhat Linux 7.1"', @rr.value
95
+ end
96
+
97
+ def test_inspect
98
+ assert_equal ' IN HINFO "PC-Intel-700mhz" "Redhat Linux 7.1"',
99
+ @rr.inspect
100
+ end
101
+
102
+ def test_to_s
103
+ assert_equal ' IN HINFO "PC-Intel-700mhz" "Redhat Linux 7.1"',
104
+ @rr.to_s
105
+ end
106
+
107
+ def test_to_a
108
+ assert_equal [nil, nil, "IN", "HINFO", '"PC-Intel-700mhz" "Redhat Linux 7.1"'],
109
+ @rr.to_a
110
+ end
111
+ end
@@ -0,0 +1,99 @@
1
+ require 'test_helper'
2
+ require 'net/dns/rr'
3
+
4
+ class RRMRTest < Minitest::Test
5
+ def setup
6
+ @klass = Net::DNS::RR::MR
7
+ @rr = @klass.new(name: "eddie.movie.edu.", newname: "eddie.bornagain.edu.", ttl: 9000)
8
+
9
+ @rr_name = "eddie.movie.edu."
10
+ @rr_type = "MR"
11
+ @rr_cls = "IN"
12
+ @rr_ttl = 9000
13
+ @rr_newname = "eddie.bornagain.edu."
14
+ @rr_value = "eddie.bornagain.edu."
15
+ @rr_output = "eddie.movie.edu. 9000 IN MR eddie.bornagain.edu."
16
+ end
17
+
18
+ def test_initialize_from_hash
19
+ @record = @klass.new(name: "eddie.movie.edu.", newname: "eddie.bornagain.edu.", ttl: 9000)
20
+ assert_equal @rr_output, @record.inspect
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_newname, @record.newname
26
+ end
27
+
28
+ def test_initialize_from_string
29
+ @record = @klass.new("eddie.movie.edu. 9000 IN MR eddie.bornagain.edu.")
30
+ assert_equal @rr_output, @record.inspect
31
+ assert_equal @rr_name, @record.name
32
+ assert_equal @rr_type, @record.type
33
+ assert_equal @rr_cls, @record.cls
34
+ assert_equal @rr_ttl, @record.ttl
35
+ assert_equal @rr_newname, @record.newname
36
+ end
37
+
38
+ # def test_parse
39
+ # data = "\005eddie\005movie\003edu\000\000\t\000\001\000\000#(\000\025\005eddie\tbornagain\003edu\000"
40
+ # @record = Net::DNS::RR.parse(data)
41
+ # assert_equal @rr_output, @record.inspect
42
+ # assert_equal @rr_name, @record.name
43
+ # assert_equal @rr_type, @record.type
44
+ # assert_equal @rr_cls, @record.cls
45
+ # assert_equal @rr_ttl, @record.ttl
46
+ # assert_equal @rr_newname, @record.newname
47
+ # end
48
+
49
+ InvalidArguments = [
50
+ # FIXME: { :name => "eddie.movie.edu.", :newname => "foo___bar" },
51
+ # FIXME: { :name => "eddie.movie.edu.", :newname => "foo$bar" },
52
+ # FIXME: { :name => "eddie.movie.edu", :newname => "eddie.newname.edu." },
53
+ Object.new,
54
+ Array.new(7),
55
+ "9000 IN MR",
56
+ ].freeze
57
+
58
+ InvalidArguments.each_with_index do |arguments, index|
59
+ define_method "test_initialize_should_raise_with_invalid_arguments_#{index}" do
60
+ assert_raises(ArgumentError) { @klass.new(arguments) }
61
+ end
62
+ end
63
+
64
+ def test_initialize_should_raise_with_missing_newname
65
+ error = assert_raises(ArgumentError) { @klass.new(name: "eddie.movie.edu.") }
66
+ assert_match /:newname/, error.message
67
+ end
68
+
69
+ def test_value
70
+ @rr = @klass.new(name: "eddie.movie.edu.", newname: "eddie.newname.edu.")
71
+ assert_equal "eddie.newname.edu.", @rr.value
72
+
73
+ @rr = @klass.new(name: "eddie.movie.edu.", newname: "eddie.othername.edu.")
74
+ assert_equal "eddie.othername.edu.", @rr.value
75
+ end
76
+
77
+ def test_newname
78
+ @rr = @klass.new(name: "eddie.movie.edu.", newname: "eddie.newname.edu.")
79
+ assert_equal "eddie.newname.edu.", @rr.newname
80
+
81
+ @rr = @klass.new(name: "eddie.movie.edu.", newname: "eddie.othername.edu.")
82
+ assert_equal "eddie.othername.edu.", @rr.newname
83
+ end
84
+
85
+ def test_inspect
86
+ assert_equal "eddie.movie.edu. 9000 IN MR eddie.bornagain.edu.",
87
+ @rr.inspect
88
+ end
89
+
90
+ def test_to_s
91
+ assert_equal "eddie.movie.edu. 9000 IN MR eddie.bornagain.edu.",
92
+ @rr.to_s
93
+ end
94
+
95
+ def test_to_a
96
+ assert_equal ["eddie.movie.edu.", 9000, "IN", "MR", "eddie.bornagain.edu."],
97
+ @rr.to_a
98
+ end
99
+ end
@@ -0,0 +1,106 @@
1
+ require 'test_helper'
2
+ require 'net/dns/rr'
3
+
4
+ class RRMXTest < Minitest::Test
5
+ def setup
6
+ @rr_name = "example.com."
7
+ @rr_type = "MX"
8
+ @rr_cls = "IN"
9
+ @rr_ttl = 10_000
10
+ @rr_preference = 10
11
+ @rr_exchange = "mail.example.com."
12
+ @rr_value = "#{@rr_preference} #{@rr_exchange}"
13
+
14
+ @rr_output = "example.com. 10000 IN MX 10 mail.example.com."
15
+
16
+ @rr = Net::DNS::RR::MX.new(name: "example.com.", preference: 10, exchange: "mail.example.com.", ttl: 10_000)
17
+ end
18
+
19
+ def test_initialize_from_hash
20
+ @record = Net::DNS::RR::MX.new(name: "example.com.", preference: 10, exchange: "mail.example.com.", ttl: 10_000)
21
+ assert_equal @rr_output, @record.to_s
22
+ assert_equal @rr_name, @record.name
23
+ assert_equal @rr_type, @record.type
24
+ assert_equal @rr_cls, @record.cls
25
+ assert_equal @rr_ttl, @record.ttl
26
+ assert_equal @rr_preference, @record.preference
27
+ assert_equal @rr_exchange, @record.exchange
28
+ end
29
+
30
+ def test_initialize_from_string
31
+ @record = Net::DNS::RR::MX.new("example.com. 10000 IN MX 10 mail.example.com.")
32
+ assert_equal @rr_output, @record.to_s
33
+ assert_equal @rr_name, @record.name
34
+ assert_equal @rr_type, @record.type
35
+ assert_equal @rr_cls, @record.cls
36
+ assert_equal @rr_ttl, @record.ttl
37
+ assert_equal @rr_preference, @record.preference
38
+ assert_equal @rr_exchange, @record.exchange
39
+ end
40
+
41
+ # FIXME: can't get it working with canned data
42
+ # def test_parse
43
+ # data = "\001\220\006google\003com\004s9b2\005psmtp\003com\000"
44
+ # @record = Net::DNS::RR.parse(data)
45
+ # assert_equal @rr_output, @record.to_s
46
+ # assert_equal @rr_name, @record.name
47
+ # assert_equal @rr_type, @record.type
48
+ # assert_equal @rr_cls, @record.cls
49
+ # assert_equal @rr_ttl, @record.ttl
50
+ # assert_equal @rr_preference, @record.preference
51
+ # assert_equal @rr_exchange, @record.exchange
52
+ # end
53
+
54
+ InvalidArguments = [
55
+ { name: "google.com" },
56
+ Object.new,
57
+ Array.new(7),
58
+ "10800 IN NS",
59
+ "google.com. 10800 IN NS",
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) { p Net::DNS::RR::MX.new(arguments) }
65
+ end
66
+ end
67
+
68
+ def test_preference
69
+ @rr = Net::DNS::RR::MX.new(name: "example.com.", preference: 10, exchange: "mail.example.com.")
70
+ assert_equal 10, @rr.preference
71
+
72
+ @rr = Net::DNS::RR::MX.new(name: "example.com.", preference: 100, exchange: "mail.example.com.")
73
+ assert_equal 100, @rr.preference
74
+ end
75
+
76
+ def test_exchange
77
+ @rr = Net::DNS::RR::MX.new(name: "example.com.", preference: 10, exchange: "mail.example.com.")
78
+ assert_equal "mail.example.com.", @rr.exchange
79
+
80
+ @rr = Net::DNS::RR::MX.new(name: "example.com.", preference: 10, exchange: "mail2.example.com.")
81
+ assert_equal "mail2.example.com.", @rr.exchange
82
+ end
83
+
84
+ def test_value
85
+ @rr = Net::DNS::RR::MX.new(name: "example.com.", preference: 10, exchange: "mail.example.com.")
86
+ assert_equal "10 mail.example.com.", @rr.value
87
+
88
+ @rr = Net::DNS::RR::MX.new(name: "example.com.", preference: 100, exchange: "mail2.example.com.")
89
+ assert_equal "100 mail2.example.com.", @rr.value
90
+ end
91
+
92
+ def test_inspect
93
+ assert_equal "example.com. 10000 IN MX 10 mail.example.com.",
94
+ @rr.inspect
95
+ end
96
+
97
+ def test_to_s
98
+ assert_equal "example.com. 10000 IN MX 10 mail.example.com.",
99
+ @rr.to_s
100
+ end
101
+
102
+ def test_to_a
103
+ assert_equal ["example.com.", 10_000, "IN", "MX", "10 mail.example.com."],
104
+ @rr.to_a
105
+ end
106
+ end