dnsruby 1.55 → 1.56.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (158) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +96 -0
  3. data/Rakefile +30 -29
  4. data/demo/axfr.rb +93 -93
  5. data/demo/check_soa.rb +99 -99
  6. data/demo/check_zone.rb +59 -59
  7. data/demo/digdlv.rb +43 -43
  8. data/demo/digroot.rb +34 -34
  9. data/demo/example_recurse.rb +14 -14
  10. data/demo/mresolv.rb +30 -30
  11. data/demo/mx.rb +31 -31
  12. data/demo/rubydig.rb +37 -37
  13. data/demo/to_resolve.txt +3088 -3088
  14. data/demo/trace_dns.rb +46 -46
  15. data/lib/dnsruby.rb +161 -526
  16. data/lib/dnsruby/DNS.rb +305 -0
  17. data/lib/{Dnsruby/Cache.rb → dnsruby/cache.rb} +152 -152
  18. data/lib/{Dnsruby → dnsruby}/code_mapper.rb +48 -52
  19. data/lib/dnsruby/code_mappers.rb +295 -0
  20. data/lib/{Dnsruby/Config.rb → dnsruby/config.rb} +454 -454
  21. data/lib/{Dnsruby → dnsruby}/dnssec.rb +91 -91
  22. data/lib/{Dnsruby/Hosts.rb → dnsruby/hosts.rb} +125 -125
  23. data/lib/{Dnsruby → dnsruby}/ipv4.rb +26 -26
  24. data/lib/{Dnsruby → dnsruby}/ipv6.rb +42 -42
  25. data/lib/{Dnsruby → dnsruby}/key_cache.rb +29 -29
  26. data/lib/dnsruby/message/decoder.rb +164 -0
  27. data/lib/dnsruby/message/encoder.rb +75 -0
  28. data/lib/dnsruby/message/header.rb +249 -0
  29. data/lib/dnsruby/message/message.rb +629 -0
  30. data/lib/dnsruby/message/question.rb +86 -0
  31. data/lib/dnsruby/message/section.rb +96 -0
  32. data/lib/{Dnsruby → dnsruby}/name.rb +141 -141
  33. data/lib/dnsruby/packet_sender.rb +661 -0
  34. data/lib/{Dnsruby/Recursor.rb → dnsruby/recursor.rb} +235 -233
  35. data/lib/dnsruby/resolv.rb +113 -0
  36. data/lib/dnsruby/resolver.rb +1192 -0
  37. data/lib/dnsruby/resource/A.rb +56 -0
  38. data/lib/dnsruby/resource/AAAA.rb +54 -0
  39. data/lib/{Dnsruby → dnsruby}/resource/AFSDB.rb +68 -68
  40. data/lib/{Dnsruby → dnsruby}/resource/CERT.rb +105 -105
  41. data/lib/{Dnsruby → dnsruby}/resource/DHCID.rb +54 -54
  42. data/lib/dnsruby/resource/DLV.rb +27 -0
  43. data/lib/{Dnsruby → dnsruby}/resource/DNSKEY.rb +372 -372
  44. data/lib/{Dnsruby → dnsruby}/resource/DS.rb +255 -255
  45. data/lib/{Dnsruby → dnsruby}/resource/HINFO.rb +71 -71
  46. data/lib/{Dnsruby → dnsruby}/resource/HIP.rb +29 -29
  47. data/lib/{Dnsruby → dnsruby}/resource/IN.rb +30 -30
  48. data/lib/{Dnsruby → dnsruby}/resource/IPSECKEY.rb +31 -31
  49. data/lib/{Dnsruby → dnsruby}/resource/ISDN.rb +62 -62
  50. data/lib/{Dnsruby → dnsruby}/resource/KX.rb +65 -65
  51. data/lib/{Dnsruby → dnsruby}/resource/LOC.rb +263 -263
  52. data/lib/{Dnsruby → dnsruby}/resource/MINFO.rb +69 -69
  53. data/lib/{Dnsruby → dnsruby}/resource/MX.rb +65 -65
  54. data/lib/{Dnsruby → dnsruby}/resource/NAPTR.rb +98 -98
  55. data/lib/{Dnsruby → dnsruby}/resource/NSAP.rb +171 -171
  56. data/lib/dnsruby/resource/NSEC.rb +275 -0
  57. data/lib/dnsruby/resource/NSEC3.rb +332 -0
  58. data/lib/dnsruby/resource/NSEC3PARAM.rb +135 -0
  59. data/lib/dnsruby/resource/OPT.rb +272 -0
  60. data/lib/{Dnsruby → dnsruby}/resource/PX.rb +70 -70
  61. data/lib/{Dnsruby → dnsruby}/resource/RP.rb +75 -75
  62. data/lib/dnsruby/resource/RR.rb +421 -0
  63. data/lib/dnsruby/resource/RRSIG.rb +275 -0
  64. data/lib/dnsruby/resource/RRSet.rb +190 -0
  65. data/lib/{Dnsruby → dnsruby}/resource/RT.rb +67 -67
  66. data/lib/{Dnsruby → dnsruby}/resource/SOA.rb +94 -94
  67. data/lib/dnsruby/resource/SPF.rb +29 -0
  68. data/lib/dnsruby/resource/SRV.rb +112 -0
  69. data/lib/{Dnsruby → dnsruby}/resource/SSHFP.rb +14 -14
  70. data/lib/dnsruby/resource/TKEY.rb +163 -0
  71. data/lib/dnsruby/resource/TSIG.rb +593 -0
  72. data/lib/{Dnsruby → dnsruby}/resource/TXT.rb +191 -191
  73. data/lib/dnsruby/resource/X25.rb +55 -0
  74. data/lib/{Dnsruby → dnsruby}/resource/domain_name.rb +25 -25
  75. data/lib/{Dnsruby → dnsruby}/resource/generic.rb +80 -80
  76. data/lib/dnsruby/resource/resource.rb +25 -0
  77. data/lib/{Dnsruby → dnsruby}/select_thread.rb +148 -148
  78. data/lib/{Dnsruby/SingleResolver.rb → dnsruby/single_resolver.rb} +60 -60
  79. data/lib/{Dnsruby → dnsruby}/single_verifier.rb +344 -344
  80. data/lib/dnsruby/the_log.rb +44 -0
  81. data/lib/dnsruby/update.rb +278 -0
  82. data/lib/dnsruby/validator_thread.rb +124 -0
  83. data/lib/dnsruby/version.rb +3 -0
  84. data/lib/{Dnsruby → dnsruby}/zone_reader.rb +93 -93
  85. data/lib/{Dnsruby → dnsruby}/zone_transfer.rb +377 -377
  86. data/test/spec_helper.rb +16 -0
  87. data/test/tc_axfr.rb +31 -34
  88. data/test/tc_cache.rb +32 -32
  89. data/test/tc_dlv.rb +28 -28
  90. data/test/tc_dns.rb +73 -76
  91. data/test/tc_dnskey.rb +31 -32
  92. data/test/tc_dnsruby.rb +50 -44
  93. data/test/tc_ds.rb +36 -36
  94. data/test/tc_escapedchars.rb +252 -255
  95. data/test/tc_hash.rb +17 -21
  96. data/test/tc_header.rb +48 -57
  97. data/test/tc_hip.rb +19 -22
  98. data/test/tc_ipseckey.rb +18 -21
  99. data/test/tc_keith.rb +300 -0
  100. data/test/tc_message.rb +87 -0
  101. data/test/tc_misc.rb +83 -87
  102. data/test/tc_name.rb +81 -84
  103. data/test/tc_naptr.rb +18 -21
  104. data/test/tc_nsec.rb +55 -55
  105. data/test/tc_nsec3.rb +23 -24
  106. data/test/tc_nsec3param.rb +20 -21
  107. data/test/tc_packet.rb +90 -93
  108. data/test/tc_packet_unique_push.rb +48 -51
  109. data/test/tc_question.rb +30 -33
  110. data/test/tc_queue.rb +16 -17
  111. data/test/tc_recur.rb +16 -17
  112. data/test/tc_res_config.rb +38 -41
  113. data/test/tc_res_env.rb +29 -32
  114. data/test/tc_res_file.rb +26 -29
  115. data/test/tc_res_opt.rb +62 -65
  116. data/test/tc_resolver.rb +287 -242
  117. data/test/tc_rr-opt.rb +70 -63
  118. data/test/tc_rr-txt.rb +68 -71
  119. data/test/tc_rr-unknown.rb +45 -48
  120. data/test/tc_rr.rb +76 -70
  121. data/test/tc_rrset.rb +21 -22
  122. data/test/tc_rrsig.rb +19 -20
  123. data/test/tc_single_resolver.rb +294 -297
  124. data/test/tc_soak.rb +199 -202
  125. data/test/tc_soak_base.rb +29 -34
  126. data/test/tc_sshfp.rb +20 -23
  127. data/test/tc_tcp.rb +32 -35
  128. data/test/tc_tkey.rb +41 -44
  129. data/test/tc_tsig.rb +81 -84
  130. data/test/tc_update.rb +108 -111
  131. data/test/tc_validator.rb +29 -29
  132. data/test/tc_verifier.rb +81 -82
  133. data/test/ts_dnsruby.rb +16 -15
  134. data/test/ts_offline.rb +62 -63
  135. data/test/ts_online.rb +115 -115
  136. metadata +155 -90
  137. data/README +0 -59
  138. data/lib/Dnsruby/DNS.rb +0 -305
  139. data/lib/Dnsruby/PacketSender.rb +0 -656
  140. data/lib/Dnsruby/Resolver.rb +0 -1189
  141. data/lib/Dnsruby/TheLog.rb +0 -44
  142. data/lib/Dnsruby/message.rb +0 -1230
  143. data/lib/Dnsruby/resource/A.rb +0 -56
  144. data/lib/Dnsruby/resource/AAAA.rb +0 -54
  145. data/lib/Dnsruby/resource/DLV.rb +0 -27
  146. data/lib/Dnsruby/resource/NSEC.rb +0 -298
  147. data/lib/Dnsruby/resource/NSEC3.rb +0 -340
  148. data/lib/Dnsruby/resource/NSEC3PARAM.rb +0 -135
  149. data/lib/Dnsruby/resource/OPT.rb +0 -213
  150. data/lib/Dnsruby/resource/RRSIG.rb +0 -275
  151. data/lib/Dnsruby/resource/SPF.rb +0 -29
  152. data/lib/Dnsruby/resource/SRV.rb +0 -112
  153. data/lib/Dnsruby/resource/TKEY.rb +0 -163
  154. data/lib/Dnsruby/resource/TSIG.rb +0 -593
  155. data/lib/Dnsruby/resource/X25.rb +0 -55
  156. data/lib/Dnsruby/resource/resource.rb +0 -678
  157. data/lib/Dnsruby/update.rb +0 -278
  158. data/lib/Dnsruby/validator_thread.rb +0 -124
@@ -0,0 +1,16 @@
1
+ if ENV['RUN_EXTRA_TASK'] == 'TRUE'
2
+ require 'coveralls'
3
+ Coveralls.wear!
4
+
5
+ require 'simplecov'
6
+
7
+ SimpleCov.formatter =
8
+ SimpleCov::Formatter::MultiFormatter[SimpleCov::Formatter::HTMLFormatter,
9
+ Coveralls::SimpleCov::Formatter]
10
+ SimpleCov.start do
11
+ add_filter 'test/'
12
+ end
13
+ end
14
+
15
+ require 'minitest/autorun'
16
+ require 'dnsruby'
data/test/tc_axfr.rb CHANGED
@@ -1,35 +1,32 @@
1
- #--
2
- #Copyright 2007 Nominet UK
3
- #
4
- #Licensed under the Apache License, Version 2.0 (the "License");
5
- #you may not use this file except in compliance with the License.
6
- #You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- #Unless required by applicable law or agreed to in writing, software
11
- #distributed under the License is distributed on an "AS IS" BASIS,
12
- #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- #See the License for the specific language governing permissions and
14
- #limitations under the License.
15
- #++
16
- begin
17
- require 'rubygems'
18
- rescue LoadError
19
- end
20
- require 'test/unit'
21
- require 'dnsruby'
22
- class TestAxfr < Test::Unit::TestCase
23
- def test_axfr
24
- zt = Dnsruby::ZoneTransfer.new
25
- zt.transfer_type = Dnsruby::Types.AXFR
26
- zt.server = "ns0.validation-test-servers.nominet.org.uk"
27
- zone = zt.transfer("validation-test-servers.nominet.org.uk")
28
- assert(zone.length > 0)
29
- assert(zt.last_tsigstate==nil)
30
- end
31
-
32
-
33
- # NB - test_ixfr is in tc_tsig.rg - this is becuase it requires
34
- # TSIG to make an update (which we can then test for with ixfr)
1
+ # --
2
+ # Copyright 2007 Nominet UK
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ++
16
+
17
+ require_relative 'spec_helper'
18
+
19
+ class TestAxfr < Minitest::Test
20
+ def test_axfr
21
+ zt = Dnsruby::ZoneTransfer.new
22
+ zt.transfer_type = Dnsruby::Types.AXFR
23
+ zt.server = "ns0.validation-test-servers.nominet.org.uk"
24
+ zone = zt.transfer("validation-test-servers.nominet.org.uk")
25
+ assert(zone.length > 0)
26
+ assert(zt.last_tsigstate==nil)
27
+ end
28
+
29
+
30
+ # NB - test_ixfr is in tc_tsig.rg - this is becuase it requires
31
+ # TSIG to make an update (which we can then test for with ixfr)
35
32
  end
data/test/tc_cache.rb CHANGED
@@ -1,24 +1,24 @@
1
- #--
2
- #Copyright 2007 Nominet UK
3
- #
4
- #Licensed under the Apache License, Version 2.0 (the "License");
5
- #you may not use this file except in compliance with the License.
6
- #You may obtain a copy of the License at
7
- #
1
+ # --
2
+ # Copyright 2007 Nominet UK
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
8
  # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- #Unless required by applicable law or agreed to in writing, software
11
- #distributed under the License is distributed on an "AS IS" BASIS,
12
- #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- #See the License for the specific language governing permissions and
14
- #limitations under the License.
15
- #++
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ++
16
+
17
+ require_relative 'spec_helper'
16
18
 
17
- require 'test/unit'
18
- require 'dnsruby'
19
19
  include Dnsruby
20
20
 
21
- class TestCache < Test::Unit::TestCase
21
+ class TestCache < Minitest::Test
22
22
  def test_cache
23
23
  cache = Cache.new
24
24
  m1 = Message.new("example.com.", Types.A, Classes.IN)
@@ -53,10 +53,10 @@ class TestCache < Test::Unit::TestCase
53
53
  end
54
54
 
55
55
  def test_opt_record
56
- # Create a very large message, encode it and decode it - there should be an opt record
57
- # test getting that in and out the cache
58
- # We should be able to do this in the online test by getting back a very big
59
- # record from the test zone
56
+ # Create a very large message, encode it and decode it - there should be an opt record
57
+ # test getting that in and out the cache
58
+ # We should be able to do this in the online test by getting back a very big
59
+ # record from the test zone
60
60
  end
61
61
 
62
62
  def test_negative
@@ -64,7 +64,7 @@ class TestCache < Test::Unit::TestCase
64
64
  end
65
65
 
66
66
  def test_resolver_do_caching
67
- # Get the records back from the test zone
67
+ # Get the records back from the test zone
68
68
  Dnsruby::PacketSender.clear_caches
69
69
  res = Resolver.new("ns0.validation-test-servers.nominet.org.uk.")
70
70
  res.do_caching = false
@@ -75,12 +75,12 @@ class TestCache < Test::Unit::TestCase
75
75
  assert(!ret.cached)
76
76
  assert(ret.rcode == RCode.NoError)
77
77
  assert(ret.header.aa)
78
- # Store the ttls
78
+ # Store the ttls
79
79
  first_ttls = ret.answer.rrset(
80
80
  "overflow.dnsruby.validation-test-servers.nominet.org.uk", Types.TXT).ttl
81
- # Wait a while
81
+ # Wait a while
82
82
  sleep(1)
83
- # Ask for the same records
83
+ # Ask for the same records
84
84
  ret = res.query("overflow.dnsruby.validation-test-servers.nominet.org.uk", Types.TXT)
85
85
  # print "#{ret}\n"
86
86
  assert(ret.rcode == RCode.NoError)
@@ -88,7 +88,7 @@ class TestCache < Test::Unit::TestCase
88
88
  end
89
89
 
90
90
  def test_online
91
- # Get the records back from the test zone
91
+ # Get the records back from the test zone
92
92
  Dnsruby::PacketSender.clear_caches
93
93
  Dnsruby::Recursor.clear_caches
94
94
  res = SingleResolver.new("ns0.validation-test-servers.nominet.org.uk.")
@@ -99,12 +99,12 @@ class TestCache < Test::Unit::TestCase
99
99
  assert(!ret.cached)
100
100
  assert(ret.rcode == RCode.NoError)
101
101
  assert(ret.header.aa)
102
- # Store the ttls
102
+ # Store the ttls
103
103
  first_ttls = ret.answer.rrset(
104
104
  "overflow.dnsruby.validation-test-servers.nominet.org.uk", Types.TXT).ttl
105
- # Wait a while
105
+ # Wait a while
106
106
  sleep(1)
107
- # Ask for the same records
107
+ # Ask for the same records
108
108
  query = Message.new("overflow.dnsruby.validation-test-servers.nominet.org.uk", Types.TXT)
109
109
  ret = res.send_message(query)
110
110
  # print "#{ret}\n"
@@ -112,16 +112,16 @@ class TestCache < Test::Unit::TestCase
112
112
  assert(ret.cached)
113
113
  second_ttls = ret.answer.rrset(
114
114
  "overflow.dnsruby.validation-test-servers.nominet.org.uk", Types.TXT).ttl
115
- # make sure the ttl is less the time we waited
115
+ # make sure the ttl is less the time we waited
116
116
  assert((second_ttls == first_ttls - 1) || (second_ttls == first_ttls - 2),
117
117
  "First ttl = #{first_ttls}, second = #{second_ttls}\n")
118
- # make sure the header flags (and ID) are right
118
+ # make sure the header flags (and ID) are right
119
119
  assert(ret.header.id == query.header.id, "First id = #{query.header.id}, cached response was #{ret.header.id}\n")
120
120
  assert(!ret.header.aa)
121
121
  end
122
122
 
123
123
  def test_online_uncached
124
- # @TODO@ Check that wildcard queries are not cached
124
+ # @TODO@ Check that wildcard queries are not cached
125
125
  end
126
126
 
127
127
  end
data/test/tc_dlv.rb CHANGED
@@ -1,34 +1,34 @@
1
- #--
2
- #Copyright 2007 Nominet UK
3
- #
4
- #Licensed under the Apache License, Version 2.0 (the "License");
5
- #you may not use this file except in compliance with the License.
6
- #You may obtain a copy of the License at
7
- #
1
+ # --
2
+ # Copyright 2007 Nominet UK
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
8
  # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- #Unless required by applicable law or agreed to in writing, software
11
- #distributed under the License is distributed on an "AS IS" BASIS,
12
- #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- #See the License for the specific language governing permissions and
14
- #limitations under the License.
15
- #++
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ++
16
+
17
+ require_relative 'spec_helper'
16
18
 
17
- require 'test/unit'
18
- require 'dnsruby'
19
19
  include Dnsruby
20
20
 
21
- class TestDlv < Test::Unit::TestCase
21
+ class TestDlv < Minitest::Test
22
22
  def test_dlv
23
- # Enable DLV (only) for validation.
24
- # Try to validate some records which can only be done through dlv
25
- # OK - if we don't configure trust anchors, and there is no signed root, then this is easy!
23
+ # Enable DLV (only) for validation.
24
+ # Try to validate some records which can only be done through dlv
25
+ # OK - if we don't configure trust anchors, and there is no signed root, then this is easy!
26
26
  Dnsruby::Dnssec.clear_trusted_keys
27
27
  Dnsruby::Dnssec.clear_trust_anchors
28
28
  Dnsruby::PacketSender.clear_caches
29
29
  # Dnssec.do_validation_with_recursor(true)
30
- # @TODO@ Should use whole RRSet of authoritative NS for these resolvers,
31
- # not individual servers!
30
+ # @TODO@ Should use whole RRSet of authoritative NS for these resolvers,
31
+ # not individual servers!
32
32
  res = Dnsruby::Resolver.new("a.ns.se")
33
33
  res.add_server("b.ns.se")
34
34
  res.dnssec=true
@@ -43,31 +43,31 @@ class TestDlv < Test::Unit::TestCase
43
43
  ret = res.query("ns2.nic.se", Dnsruby::Types.A)
44
44
  assert(ret.security_level == Dnsruby::Message::SecurityLevel::UNCHECKED)
45
45
 
46
- # Load DLV key
46
+ # Load DLV key
47
47
  dlv_key = RR.create("dlv.isc.org. IN DNSKEY 257 3 5 BEAAAAPHMu/5onzrEE7z1egmhg/WPO0+juoZrW3euWEn4MxDCE1+lLy2 brhQv5rN32RKtMzX6Mj70jdzeND4XknW58dnJNPCxn8+jAGl2FZLK8t+ 1uq4W+nnA3qO2+DL+k6BD4mewMLbIYFwe0PG73Te9fZ2kJb56dhgMde5 ymX4BI/oQ+cAK50/xvJv00Frf8kw6ucMTwFlgPe+jnGxPPEmHAte/URk Y62ZfkLoBAADLHQ9IrS2tryAe7mbBZVcOwIeU/Rw/mRx/vwwMCTgNboM QKtUdvNXDrYJDSHZws3xiRXF1Rf+al9UmZfSav/4NWLKjHzpT59k/VSt TDN0YUuWrBNh")
48
48
  Dnssec.add_dlv_key(dlv_key)
49
49
  Dnsruby::PacketSender.clear_caches
50
50
 
51
51
 
52
- # SE no longer in DLV
52
+ # SE no longer in DLV
53
53
  # res = Dnsruby::Recursor.new()
54
54
  # ret = res.query("ns2.nic.se", Dnsruby::Types.A)
55
55
  # assert(ret.security_level == Dnsruby::Message::SecurityLevel::SECURE)
56
56
 
57
- # .cz no longer in dlv?
57
+ # .cz no longer in dlv?
58
58
  # ret = res.query("b.ns.nic.cz", Dnsruby::Types.A)
59
59
  # assert(ret.security_level == Dnsruby::Message::SecurityLevel::SECURE)
60
60
 
61
- # Test .gov
61
+ # Test .gov
62
62
  # Dnsruby::TheLog.level = Logger::DEBUG
63
63
  res = Resolver.new
64
64
  ret = res.query("nih.gov", "NS")
65
65
  assert(ret.security_level = Dnsruby::Message::SecurityLevel::SECURE)
66
66
  end
67
67
 
68
- # se no longer in dlv
68
+ # se no longer in dlv
69
69
  # def test_scrub_non_authoritative
70
- ## Dnssec.do_validation_with_recursor(true)
70
+ # # Dnssec.do_validation_with_recursor(true)
71
71
  # res = Dnsruby::Recursor.new()
72
72
  # ret = res.query("frobbit.se")
73
73
  # res.prune_rrsets_to_rfc5452(ret, "frobbit.se.")
data/test/tc_dns.rb CHANGED
@@ -1,34 +1,31 @@
1
- #--
2
- #Copyright 2007 Nominet UK
3
- #
4
- #Licensed under the Apache License, Version 2.0 (the "License");
5
- #you may not use this file except in compliance with the License.
6
- #You may obtain a copy of the License at
7
- #
8
- # http://www.apache.org/licenses/LICENSE-2.0
9
- #
10
- #Unless required by applicable law or agreed to in writing, software
11
- #distributed under the License is distributed on an "AS IS" BASIS,
12
- #WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- #See the License for the specific language governing permissions and
14
- #limitations under the License.
15
- #++
16
- begin
17
- require 'rubygems'
18
- rescue LoadError
19
- end
20
- require 'test/unit'
21
- require 'dnsruby'
1
+ # --
2
+ # Copyright 2007 Nominet UK
3
+ #
4
+ # Licensed under the Apache License, Version 2.0 (the "License");
5
+ # you may not use this file except in compliance with the License.
6
+ # You may obtain a copy of the License at
7
+ #
8
+ # http://www.apache.org/licenses/LICENSE-2.0
9
+ #
10
+ # Unless required by applicable law or agreed to in writing, software
11
+ # distributed under the License is distributed on an "AS IS" BASIS,
12
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ # See the License for the specific language governing permissions and
14
+ # limitations under the License.
15
+ # ++
16
+
17
+ require_relative 'spec_helper'
18
+
22
19
  include Dnsruby
23
- class TestDNS < Test::Unit::TestCase
20
+ class TestDNS < Minitest::Test
24
21
  def setup
25
22
  Dnsruby::Config.reset
26
23
  end
27
-
24
+
28
25
  def test_ipv4_address
29
26
  Dnsruby::DNS.open { |dns| dns.getnames(Dnsruby::IPv4.create("221.186.184.68")) }
30
27
  end
31
-
28
+
32
29
  def test_resolv_rb_api
33
30
  DNS.open {|dns|
34
31
  dns.getresources("www.ruby-lang.org", Types.A).each {|r| assert_equal(r.address.to_s, "221.186.184.68")}
@@ -59,7 +56,7 @@ class TestDNS < Test::Unit::TestCase
59
56
  assert_equal(r[0].exchange.to_s, "carbon.ruby-lang.org")
60
57
  assert_equal(r[0].klass, Classes.IN)
61
58
  assert_equal(r[0].type, Types.MX)
62
- r = d.each_resource("www.ruby-lang.org", Types.ANY) {|r|
59
+ r = d.each_resource("www.ruby-lang.org", Types.ANY) {|r|
63
60
  assert_equal(r.name.to_s, "www.ruby-lang.org")
64
61
  assert_equal(r.domainname.to_s, "carbon.ruby-lang.org")
65
62
  assert_equal(r.klass, Classes.IN)
@@ -67,20 +64,20 @@ class TestDNS < Test::Unit::TestCase
67
64
  }
68
65
  d.close
69
66
  end
70
-
67
+
71
68
  def test_async_api
72
- #@TODO@ Do we really want an async API for Resolv/DNS?
73
- #Or would users be better off with Resolver async API?
69
+ # @TODO@ Do we really want an async API for Resolv/DNS?
70
+ # Or would users be better off with Resolver async API?
74
71
  end
75
-
72
+
76
73
  def test_concurrent
77
- #@TODO@ What kind of concurrent testing are we going to do on the top-level API?
74
+ # @TODO@ What kind of concurrent testing are we going to do on the top-level API?
78
75
  end
79
-
76
+
80
77
  def test_bad_input
81
- #
82
- # Check that new() is vetting things properly.
83
- #
78
+ #
79
+ # Check that new() is vetting things properly.
80
+ #
84
81
  Dnsruby.log.level=Logger::FATAL
85
82
  [:nameserver].each do |test|
86
83
  # [{}, 'kjghdfkjhase',1,'\1',nil].each do |input|
@@ -96,7 +93,7 @@ class TestDNS < Test::Unit::TestCase
96
93
  end
97
94
  end
98
95
  end
99
-
96
+
100
97
  def test_online
101
98
  res = DNS.new
102
99
  rrs = [
@@ -120,47 +117,47 @@ class TestDNS < Test::Unit::TestCase
120
117
  :type => Types.TXT,
121
118
  :name => 'txt.t.dnsruby.validation-test-servers.nominet.org.uk',
122
119
  :strings => ['Net-DNS']
123
- }
124
- ]
125
-
120
+ }
121
+ ]
122
+
126
123
  rrs.each do |data|
127
124
  answer = res.getresource(data[:name], data[:type])
128
125
  assert(answer)
129
126
  assert_equal(answer.klass, 'IN', 'Class correct' )
130
-
127
+
131
128
  packet, queried_name = res.send_query(data[:name], data[:type])
132
-
129
+
133
130
  assert(packet, "Got an answer for #{data[:name]} IN #{data[:type]}")
134
131
  assert_equal(1, packet.header.qdcount, 'Only one question')
135
132
  assert_equal(1, packet.header.ancount, 'Got single answer')
136
-
133
+
137
134
  question = (packet.question)[0]
138
135
  answer = (packet.answer)[0]
139
-
136
+
140
137
  assert(question, 'Got question' )
141
138
  assert_equal(data[:name], question.qname.to_s, 'Question has right name' )
142
139
  assert_equal(data[:name], queried_name.to_s, 'queried_name has right name' )
143
140
  assert_equal(Types.new(data[:type]), question.qtype, 'Question has right type' )
144
141
  assert_equal('IN', question.qclass.string, 'Question has right class')
145
-
142
+
146
143
  assert(answer)
147
144
  assert_equal(answer.klass, 'IN', 'Class correct' )
148
-
149
-
150
- data.keys.each do |meth|
145
+
146
+
147
+ data.keys.each do |meth|
151
148
  if (meth == :type)
152
- assert_equal(Types.new(data[meth]).to_s, answer.send(meth).to_s, "#{meth} correct (#{data[:name]})")
153
- else
154
- assert_equal(data[meth].to_s, answer.send(meth).to_s, "#{meth} correct (#{data[:name]})")
149
+ assert_equal(Types.new(data[meth]).to_s, answer.send(meth).to_s, "#{meth} correct (#{data[:name]})")
150
+ else
151
+ assert_equal(data[meth].to_s, answer.send(meth).to_s, "#{meth} correct (#{data[:name]})")
155
152
  end
156
153
  end
157
154
  end # do
158
155
  end # test_online
159
-
160
- def test_search_query_reverse
161
- #
162
- # test that getname() DTRT with reverse lookups
163
- #
156
+
157
+ def test_search_query_reverse
158
+ #
159
+ # test that getname() DTRT with reverse lookups
160
+ #
164
161
  tests = [
165
162
  {
166
163
  :ip => '198.41.0.4',
@@ -171,31 +168,31 @@ class TestDNS < Test::Unit::TestCase
171
168
  :host => 'h.root-servers.net',
172
169
  },
173
170
  ]
174
-
171
+
175
172
  res = DNS.new
176
- tests.each do |test|
173
+ tests.each do |test|
177
174
  name = res.getname(test[:ip])
178
-
175
+
179
176
  assert_instance_of(Name,name)
180
-
177
+
181
178
  next unless name
182
-
179
+
183
180
  assert_equal(name.to_s, test[:host], "getname(#{test[:ip]}) works")
184
181
  end # do
185
182
  end # test
186
-
183
+
187
184
  def test_searchlist
188
185
  res = DNS.new(
189
186
  :domain => 't.dnsruby.validation-test-servers.nominet.org.uk',
190
187
  :search => ["t.dnsruby.validation-test-servers.nominet.org.uk", "dnsruby.validation-test-servers.nominet.org.uk"]
191
188
  )
192
-
193
- #
194
- # test the send_query() appends the default domain and
195
- # searchlist correctly.
196
- #
197
- #@TODO@ Should really be done in Config test!
198
-
189
+
190
+ #
191
+ # test the send_query() appends the default domain and
192
+ # searchlist correctly.
193
+ #
194
+ # @TODO@ Should really be done in Config test!
195
+
199
196
  tests = [
200
197
  {
201
198
  :method => 'search',
@@ -210,30 +207,30 @@ class TestDNS < Test::Unit::TestCase
210
207
  :name => 'a'
211
208
  }
212
209
  ]
213
-
210
+
214
211
  res.send_query("a.t.dnsruby.validation-test-servers.nominet.org.uk", "A")
215
212
  res.config.ndots=2
216
-
213
+
217
214
  tests.each do |test|
218
215
  method = test[:method]
219
-
216
+
220
217
  if (method=="query")
221
218
  res.config.apply_search_list=false
222
219
  else
223
220
  res.config.apply_search_list=true
224
221
  end
225
-
222
+
226
223
  ans, query = res.send_query(test[:name])
227
-
224
+
228
225
  assert_instance_of(Message, ans)
229
-
226
+
230
227
  assert_equal(1, ans.header.ancount, "Correct answer count (with persistent socket and #{method})")
231
-
228
+
232
229
  a = ans.answer
233
-
230
+
234
231
  assert_instance_of(RR::IN::A, a[0])
235
232
  assert_equal(a[0].name.to_s, 'a.t.dnsruby.validation-test-servers.nominet.org.uk',"Correct name (with persistent socket and #{method})")
236
233
  end
237
-
234
+
238
235
  end
239
236
  end