net-dns 0.9.0 → 0.20.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -16
  3. data/README.md +1 -1
  4. data/lib/net/dns/header.rb +48 -64
  5. data/lib/net/dns/names.rb +8 -10
  6. data/lib/net/dns/packet.rb +46 -53
  7. data/lib/net/dns/question.rb +5 -3
  8. data/lib/net/dns/resolver/socks.rb +5 -7
  9. data/lib/net/dns/resolver/timeouts.rb +3 -5
  10. data/lib/net/dns/resolver.rb +54 -69
  11. data/lib/net/dns/rr/a.rb +3 -4
  12. data/lib/net/dns/rr/aaaa.rb +3 -5
  13. data/lib/net/dns/rr/classes.rb +6 -8
  14. data/lib/net/dns/rr/cname.rb +3 -5
  15. data/lib/net/dns/rr/hinfo.rb +9 -13
  16. data/lib/net/dns/rr/mr.rb +3 -5
  17. data/lib/net/dns/rr/mx.rb +5 -7
  18. data/lib/net/dns/rr/ns.rb +3 -5
  19. data/lib/net/dns/rr/null.rb +3 -5
  20. data/lib/net/dns/rr/ptr.rb +3 -5
  21. data/lib/net/dns/rr/soa.rb +11 -7
  22. data/lib/net/dns/rr/srv.rb +5 -2
  23. data/lib/net/dns/rr/txt.rb +4 -6
  24. data/lib/net/dns/rr/types.rb +90 -79
  25. data/lib/net/dns/rr.rb +2 -2
  26. data/lib/net/dns/version.rb +1 -1
  27. data/lib/net/dns.rb +3 -1
  28. metadata +11 -104
  29. data/.gitignore +0 -8
  30. data/.rubocop.yml +0 -3
  31. data/.rubocop_defaults.yml +0 -364
  32. data/.rubocop_todo.yml +0 -207
  33. data/Gemfile +0 -8
  34. data/Rakefile +0 -38
  35. data/bin/console +0 -14
  36. data/lib/net/dns/core_ext.rb +0 -45
  37. data/net-dns.gemspec +0 -23
  38. data/spec/fixtures/resolv.conf +0 -4
  39. data/spec/spec_helper.rb +0 -14
  40. data/spec/unit/resolver/dns_timeout_spec.rb +0 -36
  41. data/spec/unit/resolver/tcp_timeout_spec.rb +0 -46
  42. data/spec/unit/resolver/udp_timeout_spec.rb +0 -46
  43. data/test/test_helper.rb +0 -13
  44. data/test/unit/header_test.rb +0 -164
  45. data/test/unit/names_test.rb +0 -21
  46. data/test/unit/packet_test.rb +0 -47
  47. data/test/unit/question_test.rb +0 -81
  48. data/test/unit/resolver_test.rb +0 -114
  49. data/test/unit/rr/a_test.rb +0 -106
  50. data/test/unit/rr/aaaa_test.rb +0 -102
  51. data/test/unit/rr/classes_test.rb +0 -83
  52. data/test/unit/rr/cname_test.rb +0 -90
  53. data/test/unit/rr/hinfo_test.rb +0 -111
  54. data/test/unit/rr/mr_test.rb +0 -99
  55. data/test/unit/rr/mx_test.rb +0 -106
  56. data/test/unit/rr/ns_test.rb +0 -80
  57. data/test/unit/rr/types_test.rb +0 -71
  58. data/test/unit/rr_test.rb +0 -127
data/spec/spec_helper.rb DELETED
@@ -1,14 +0,0 @@
1
- require 'rspec'
2
- require 'net/dns'
3
-
4
- unless defined?(SPEC_ROOT)
5
- SPEC_ROOT = File.expand_path(__dir__)
6
- end
7
-
8
- # Requires supporting ruby files with custom matchers and macros, etc,
9
- # in spec/support/ and its subdirectories.
10
- Dir[File.join(SPEC_ROOT, "support/**/*.rb")].each { |f| require f }
11
-
12
- RSpec.configure do |config|
13
- config.mock_with :rspec
14
- end
@@ -1,36 +0,0 @@
1
- require 'spec_helper'
2
- require 'net/dns/resolver/timeouts'
3
-
4
- describe Net::DNS::Resolver::DnsTimeout do
5
- subject { described_class.new(10) }
6
-
7
- describe "#initialize" do
8
- it "returns an instance of DnsTimeout" do
9
- expect(subject.class).to be(described_class)
10
- end
11
-
12
- it "sets timeout" do
13
- expect(described_class.new(0).seconds).to eq(0)
14
- expect(described_class.new(10).seconds).to eq(10)
15
- end
16
-
17
- it "raises ArgumentError when timeout is invalid" do
18
- expect { described_class.new(nil) }.to raise_error(ArgumentError)
19
- expect { described_class.new("") }.to raise_error(ArgumentError)
20
- expect { described_class.new("foo") }.to raise_error(ArgumentError)
21
- expect { described_class.new(-1) }.to raise_error(ArgumentError)
22
- end
23
- end
24
-
25
- describe "#to_s" do
26
- it "returns the seconds" do
27
- expect(subject.to_s).to eq("10")
28
- end
29
- end
30
-
31
- describe "#timeout" do
32
- it "requires a block" do
33
- expect { subject.timeout }.to raise_error(LocalJumpError)
34
- end
35
- end
36
- end
@@ -1,46 +0,0 @@
1
- require 'spec_helper'
2
- require 'net/dns/resolver/timeouts'
3
-
4
- describe Net::DNS::Resolver::TcpTimeout do
5
- subject { described_class.new(10) }
6
-
7
- it "inherits from DnsTimeout" do
8
- expect(described_class.ancestors).to include(Net::DNS::Resolver::DnsTimeout)
9
- end
10
-
11
- describe "#initialize" do
12
- it "returns an instance of TcpTimeout" do
13
- expect(subject.class).to be(described_class)
14
- end
15
-
16
- it "sets timeout" do
17
- expect(described_class.new(0).seconds).to eq(0)
18
- expect(described_class.new(10).seconds).to eq(10)
19
- end
20
-
21
- it "raises ArgumentError when timeout is invalid" do
22
- expect { described_class.new(nil) }.to raise_error(ArgumentError)
23
- expect { described_class.new("") }.to raise_error(ArgumentError)
24
- expect { described_class.new("foo") }.to raise_error(ArgumentError)
25
- expect { described_class.new(-1) }.to raise_error(ArgumentError)
26
- end
27
- end
28
-
29
- describe "#to_s" do
30
- it "returns infinite when seconds is 0" do
31
- expect(described_class.new(0).to_s).to eq("infinite")
32
- end
33
-
34
- it "returns the seconds" do
35
- expect(subject.to_s).to eq("10")
36
- end
37
- end
38
-
39
- describe "#pretty_to_s" do
40
- it "returns a more verbose version" do
41
- expect(described_class.new(30).pretty_to_s).to eq("30 seconds")
42
- expect(described_class.new(90).pretty_to_s).to eq("1 minutes and 30 seconds")
43
- expect(described_class.new(3690).pretty_to_s).to eq("1 hours, 1 minutes and 30 seconds")
44
- end
45
- end
46
- end
@@ -1,46 +0,0 @@
1
- require 'spec_helper'
2
- require 'net/dns/resolver/timeouts'
3
-
4
- describe Net::DNS::Resolver::UdpTimeout do
5
- subject { described_class.new(10) }
6
-
7
- it "inherits from DnsTimeout" do
8
- expect(described_class.ancestors).to include(Net::DNS::Resolver::DnsTimeout)
9
- end
10
-
11
- describe "#initialize" do
12
- it "returns an instance of TcpTimeout" do
13
- expect(subject.class).to be(described_class)
14
- end
15
-
16
- it "sets timeout" do
17
- expect(described_class.new(0).seconds).to eq(0)
18
- expect(described_class.new(10).seconds).to eq(10)
19
- end
20
-
21
- it "raises ArgumentError when timeout is invalid" do
22
- expect { described_class.new(nil) }.to raise_error(ArgumentError)
23
- expect { described_class.new("") }.to raise_error(ArgumentError)
24
- expect { described_class.new("foo") }.to raise_error(ArgumentError)
25
- expect { described_class.new(-1) }.to raise_error(ArgumentError)
26
- end
27
- end
28
-
29
- describe "#to_s" do
30
- it "returns infinite when seconds is 0" do
31
- expect(described_class.new(0).to_s).to eq("not defined")
32
- end
33
-
34
- it "returns the seconds" do
35
- expect(subject.to_s).to eq("10")
36
- end
37
- end
38
-
39
- describe "#pretty_to_s" do
40
- it "returns a more verbose version" do
41
- expect(described_class.new(30).pretty_to_s).to eq("30 seconds")
42
- expect(described_class.new(90).pretty_to_s).to eq("1 minutes and 30 seconds")
43
- expect(described_class.new(3690).pretty_to_s).to eq("1 hours, 1 minutes and 30 seconds")
44
- end
45
- end
46
- end
data/test/test_helper.rb DELETED
@@ -1,13 +0,0 @@
1
- require "minitest/autorun"
2
- require "minitest/reporters"
3
-
4
- Minitest::Reporters.use! Minitest::Reporters::DefaultReporter.new(color: true)
5
-
6
- $LOAD_PATH.unshift File.expand_path("../lib", __dir__)
7
- require "net/dns"
8
-
9
- module Minitest::Assertions
10
- def assert_nothing_raised(*)
11
- yield
12
- end
13
- end
@@ -1,164 +0,0 @@
1
- require 'test_helper'
2
- require 'net/dns/header'
3
-
4
- class HeaderTest < Minitest::Test
5
- include Net::DNS
6
-
7
- def setup
8
- @default = Header.new
9
- @hash = Header.new(id: 441,
10
- qr: 1,
11
- opCode: Header::IQUERY,
12
- aa: 1,
13
- tc: 1,
14
- rd: 0,
15
- cd: 0,
16
- ad: 0,
17
- ra: 1,
18
- rCode: Header::RCode::FORMAT,
19
- qdCount: 1,
20
- anCount: 2,
21
- nsCount: 3,
22
- arCount: 3)
23
-
24
- @modified = Header.new
25
- @modified.id = 442
26
- @modified.qr = true
27
- @modified.opCode = Header::IQUERY
28
- @modified.aa = true
29
- @modified.tc = true
30
- @modified.rd = false
31
- @modified.cd = false
32
- @modified.ra = true
33
- @modified.rCode = Header::RCode::FORMAT
34
- @modified.qdCount = 1
35
- @modified.anCount = 2
36
- @modified.nsCount = 3
37
- @modified.arCount = 3
38
-
39
- @data = @modified.data
40
- num = [(@data.unpack("n")[0] + 1)].pack("n")
41
- @data[0] = num[0]
42
- @data[1] = num[1]
43
- @binary = Header.parse(@data)
44
- end
45
-
46
- def test_simple
47
- assert_equal(@default.query?, true)
48
- assert_equal(@default.response?, false)
49
- assert_equal(@default.opCode, Header::QUERY)
50
- assert_equal(@default.auth?, false)
51
- assert_equal(@default.truncated?, false)
52
- assert_equal(@default.recursive?, true)
53
- assert_equal(@default.checking?, true)
54
- assert_equal(@default.verified?, false)
55
- assert_equal(@default.r_available?, false)
56
- assert_equal(@default.rCode.code, Header::RCode::NOERROR)
57
- assert_equal(@default.qdCount, 1)
58
- assert_equal(@default.anCount, 0)
59
- assert_equal(@default.nsCount, 0)
60
- assert_equal(@default.arCount, 0)
61
-
62
- assert_equal(@hash.id, 441)
63
- assert_equal(@hash.query?, false)
64
- assert_equal(@hash.response?, true)
65
- assert_equal(@hash.opCode, Header::IQUERY)
66
- assert_equal(@hash.auth?, true)
67
- assert_equal(@hash.truncated?, true)
68
- assert_equal(@hash.recursive?, false)
69
- assert_equal(@hash.checking?, true)
70
- assert_equal(@hash.verified?, false)
71
- assert_equal(@hash.r_available?, true)
72
- assert_equal(@hash.rCode.code, Header::RCode::FORMAT)
73
- assert_equal(@hash.qdCount, 1)
74
- assert_equal(@hash.anCount, 2)
75
- assert_equal(@hash.nsCount, 3)
76
- assert_equal(@hash.arCount, 3)
77
-
78
- assert_equal(@modified.id, 442)
79
- assert_equal(@modified.query?, false)
80
- assert_equal(@modified.response?, true)
81
- assert_equal(@modified.opCode, Header::IQUERY)
82
- assert_equal(@modified.auth?, true)
83
- assert_equal(@modified.truncated?, true)
84
- assert_equal(@modified.recursive?, false)
85
- assert_equal(@modified.checking?, true)
86
- assert_equal(@modified.verified?, false)
87
- assert_equal(@modified.r_available?, true)
88
- assert_equal(@modified.rCode.code, Header::RCode::FORMAT)
89
- assert_equal(@modified.qdCount, 1)
90
- assert_equal(@modified.anCount, 2)
91
- assert_equal(@modified.nsCount, 3)
92
- assert_equal(@modified.arCount, 3)
93
-
94
- assert_equal(@binary.data, @data)
95
-
96
- assert_equal(@binary.id, 443)
97
- assert_equal(@binary.query?, false)
98
- assert_equal(@binary.response?, true)
99
- assert_equal(@binary.opCode, Header::IQUERY)
100
- assert_equal(@binary.auth?, true)
101
- assert_equal(@binary.truncated?, true)
102
- assert_equal(@binary.recursive?, false)
103
- assert_equal(@binary.checking?, true)
104
- assert_equal(@binary.verified?, false)
105
- assert_equal(@binary.r_available?, true)
106
- assert_equal(@binary.rCode.code, Header::RCode::FORMAT)
107
- assert_equal(@binary.qdCount, 1)
108
- assert_equal(@binary.anCount, 2)
109
- assert_equal(@binary.nsCount, 3)
110
- assert_equal(@binary.arCount, 3)
111
-
112
- assert_raises(ArgumentError) do
113
- Header.new([])
114
- end
115
- assert_raises(ArgumentError) do
116
- Header.parse([])
117
- end
118
- assert_raises(ArgumentError) do
119
- Header.parse("aa")
120
- end
121
- assert_raises(ArgumentError) do
122
- @default.id = 1_000_000
123
- end
124
- assert_raises(ArgumentError) do
125
- @default.qr = 2
126
- end
127
- assert_raises(Header::WrongOpcodeError) do
128
- @default.opCode = 4
129
- end
130
- assert_raises(ArgumentError) do
131
- @default.aa = 2
132
- end
133
- assert_raises(ArgumentError) do
134
- @default.tc = 2
135
- end
136
- assert_raises(Header::WrongRecursiveError) do
137
- @default.recursive = 2
138
- end
139
- assert_raises(ArgumentError) do
140
- @default.ra = 2
141
- end
142
- assert_raises(ArgumentError) do
143
- @default.cd = 2
144
- end
145
- assert_raises(ArgumentError) do
146
- @default.ad = 2
147
- end
148
- assert_raises(ArgumentError) do
149
- @default.rCode = 46
150
- end
151
- assert_raises(Header::WrongCountError) do
152
- @default.qdCount = 100_000
153
- end
154
- assert_raises(Header::WrongCountError) do
155
- @default.anCount = 100_000
156
- end
157
- assert_raises(Header::WrongCountError) do
158
- @default.nsCount = 100_000
159
- end
160
- assert_raises(Header::WrongCountError) do
161
- @default.arCount = 100_000
162
- end
163
- end
164
- end
@@ -1,21 +0,0 @@
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
@@ -1,47 +0,0 @@
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
@@ -1,81 +0,0 @@
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
@@ -1,114 +0,0 @@
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