dnsruby 1.60.0 → 1.60.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 +4 -4
  2. data/RELEASE_NOTES.md +14 -0
  3. data/lib/dnsruby/bit_mapping.rb +1 -1
  4. data/lib/dnsruby/code_mapper.rb +3 -3
  5. data/lib/dnsruby/code_mappers.rb +4 -2
  6. data/lib/dnsruby/config.rb +1 -1
  7. data/lib/dnsruby/dnssec.rb +1 -1
  8. data/lib/dnsruby/packet_sender.rb +8 -5
  9. data/lib/dnsruby/resolver.rb +6 -6
  10. data/lib/dnsruby/resource/APL.rb +146 -0
  11. data/lib/dnsruby/resource/CAA.rb +70 -0
  12. data/lib/dnsruby/resource/IN.rb +4 -1
  13. data/lib/dnsruby/resource/MX.rb +3 -0
  14. data/lib/dnsruby/resource/OPT.rb +1 -1
  15. data/lib/dnsruby/resource/RRSIG.rb +1 -1
  16. data/lib/dnsruby/resource/TLSA.rb +149 -0
  17. data/lib/dnsruby/resource/domain_name.rb +1 -1
  18. data/lib/dnsruby/resource/generic.rb +1 -0
  19. data/lib/dnsruby/version.rb +1 -1
  20. data/lib/dnsruby/zone_transfer.rb +5 -2
  21. data/test/run-tests-individually +347 -0
  22. data/test/spec_helper.rb +3 -3
  23. data/test/tc_caa.rb +49 -0
  24. data/test/tc_cache.rb +6 -16
  25. data/test/tc_dlv.rb +3 -2
  26. data/test/tc_dns.rb +3 -1
  27. data/test/tc_ds.rb +4 -1
  28. data/test/tc_escapedchars.rb +3 -1
  29. data/test/tc_gpos.rb +2 -2
  30. data/test/tc_header.rb +3 -1
  31. data/test/tc_hip.rb +3 -1
  32. data/test/tc_hs.rb +0 -2
  33. data/test/tc_ipseckey.rb +3 -1
  34. data/test/tc_message.rb +0 -16
  35. data/test/tc_name.rb +3 -1
  36. data/test/tc_naptr.rb +3 -1
  37. data/test/tc_nsec.rb +3 -3
  38. data/test/tc_nsec3.rb +3 -1
  39. data/test/tc_nsec3param.rb +3 -1
  40. data/test/tc_nxt.rb +2 -2
  41. data/test/tc_packet.rb +3 -2
  42. data/test/tc_packet_unique_push.rb +3 -1
  43. data/test/tc_ptrin.rb +2 -1
  44. data/test/tc_question.rb +3 -1
  45. data/test/tc_res_env.rb +3 -1
  46. data/test/tc_res_opt.rb +3 -1
  47. data/test/tc_resolv.rb +1 -2
  48. data/test/tc_resolver.rb +18 -19
  49. data/test/tc_rr-opt.rb +3 -2
  50. data/test/tc_rr-txt.rb +3 -1
  51. data/test/tc_rr-unknown.rb +3 -1
  52. data/test/tc_rr.rb +15 -1
  53. data/test/tc_single_resolver.rb +4 -1
  54. data/test/tc_soak.rb +2 -1
  55. data/test/tc_soak_base.rb +2 -0
  56. data/test/tc_sshfp.rb +3 -1
  57. data/test/tc_tlsa.rb +191 -0
  58. data/test/tc_tsig.rb +3 -1
  59. data/test/tc_update.rb +6 -3
  60. data/test/tc_validator.rb +3 -2
  61. data/test/tc_zone_reader.rb +4 -2
  62. data/test/ts_offline.rb +1 -0
  63. data/test/ts_online.rb +6 -7
  64. metadata +8 -2
@@ -18,10 +18,9 @@ require_relative 'spec_helper'
18
18
 
19
19
  require 'socket'
20
20
 
21
- include Dnsruby
22
21
  class TestRrOpt < Minitest::Test
23
22
 
24
-
23
+ include Dnsruby
25
24
 
26
25
  # This test illustrates that when an OPT record specifying a maximum
27
26
  # UDP size is added to a query, the server will respect that setting
@@ -100,6 +99,7 @@ class TestRrOpt < Minitest::Test
100
99
 
101
100
  # Now send query
102
101
  res = Resolver.new("127.0.0.1")
102
+ res.dnssec = true
103
103
  res.port = port
104
104
  res.udp_size = 4096
105
105
  assert(res.udp_size == 4096)
@@ -177,6 +177,7 @@ class TestRrOpt < Minitest::Test
177
177
  }
178
178
  # Now send query
179
179
  res = Resolver.new("127.0.0.1")
180
+ res.dnssec = true
180
181
  res.port = port
181
182
  res.udp_size = 4096
182
183
  assert(res.udp_size == 4096)
@@ -16,8 +16,10 @@
16
16
 
17
17
  require_relative 'spec_helper'
18
18
 
19
- include Dnsruby
20
19
  class TestRrTest < Minitest::Test
20
+
21
+ include Dnsruby
22
+
21
23
  # Stimulus, expected response, and test name:
22
24
 
23
25
  TESTLIST = [
@@ -16,8 +16,10 @@
16
16
 
17
17
  require_relative 'spec_helper'
18
18
 
19
- include Dnsruby
20
19
  class TestRrUnknown < Minitest::Test
20
+
21
+ include Dnsruby
22
+
21
23
  def test_RrUnknown
22
24
  assert_equal(10226, Types::typesbyname('TYPE10226'), 'typesbyname(TYPE10226) returns 10226')
23
25
  assert_equal('TYPE10226', Types::typesbyval(10226), 'typesbyval(10226) returns TYPE10226')
@@ -16,8 +16,10 @@
16
16
 
17
17
  require_relative 'spec_helper'
18
18
 
19
- include Dnsruby
20
19
  class TestRR < Minitest::Test
20
+
21
+ include Dnsruby
22
+
21
23
  def test_rr
22
24
  # ------------------------------------------------------------------------------
23
25
  # Canned data.
@@ -178,6 +180,18 @@ class TestRR < Minitest::Test
178
180
  :preference => 10,
179
181
  :exchange => 'kx-exchange.example.com',
180
182
  },
183
+ { # [26]
184
+ :type => Types.APL,
185
+ :prefixes => '1:10.0.0.0/8 !1:172.16.0.0/12 1:192.168.0.0/16 !1:192.168.0.0/24',
186
+ },
187
+ { # [27]
188
+ :type => Types.APL,
189
+ :prefixes => '!2:fe80::/10 2:2001:db8::/32 2:2001:db8::/64',
190
+ },
191
+ { # [28]
192
+ :type => Types.APL,
193
+ :prefixes => '1:0.0.0.0/0 1:255.255.255.255/32 2:::/0 2:::1/128',
194
+ }
181
195
  ]
182
196
 
183
197
 
@@ -16,8 +16,10 @@
16
16
 
17
17
  require_relative 'spec_helper'
18
18
 
19
- include Dnsruby
20
19
  class TestSingleResolver < Minitest::Test
20
+
21
+ include Dnsruby
22
+
21
23
  Thread::abort_on_exception = true
22
24
  # Dnsruby.log.level=Logger::DEBUG
23
25
 
@@ -109,6 +111,7 @@ class TestSingleResolver < Minitest::Test
109
111
  udps.bind("127.0.0.1", 0)
110
112
  port = *udps.addr.values_at(3, 1)
111
113
  res = SingleResolver.new("127.0.0.1")
114
+ res.dnssec = true
112
115
  res.port = port
113
116
  res.packet_timeout=1
114
117
  q = Queue.new
@@ -20,7 +20,6 @@ require_relative 'spec_helper'
20
20
  require_relative 'tc_soak_base'
21
21
  require_relative 'test_dnsserver'
22
22
 
23
- include Dnsruby
24
23
 
25
24
  # This class tries to soak test the Dnsruby library.
26
25
  # It can't do this very well, owing to the small number of sockets allowed to be open simultaneously.
@@ -30,6 +29,8 @@ include Dnsruby
30
29
 
31
30
  class MyServer < RubyDNS::Server
32
31
 
32
+ include Dnsruby
33
+
33
34
  IP = "127.0.0.1"
34
35
  PORT = 53927
35
36
 
@@ -17,7 +17,9 @@
17
17
  require_relative 'spec_helper'
18
18
 
19
19
  class TestSoakBase # < Minitest::Test
20
+
20
21
  include Dnsruby
22
+
21
23
  Rrs = [
22
24
  {
23
25
  :type => Types.A,
@@ -17,8 +17,10 @@
17
17
 
18
18
  require_relative 'spec_helper'
19
19
 
20
- include Dnsruby
21
20
  class TestSSHFP < Minitest::Test
21
+
22
+ include Dnsruby
23
+
22
24
  def test_sshfp
23
25
  txt = "apt-blade6.nominet.org.uk. 85826 IN SSHFP 1 1 6D4CF7C68E3A959990855099E15D6E0D4DEA4FFF"
24
26
  sshfp = RR.create(txt)
@@ -0,0 +1,191 @@
1
+ require_relative 'spec_helper'
2
+
3
+ require 'openssl'
4
+ require 'digest'
5
+
6
+ class TLSATest < Minitest::Test
7
+ include Dnsruby
8
+
9
+ INPUT = ['_443._tcp.example.jp. IN TLSA 3 0 1 ( 6609173804b9e31895f550db027ef7c7fa6f1bc9326c99371b61f1ba5 '\
10
+ 'cb3595d )',
11
+ '_443._tcp.example.jp. IN TLSA 255 255 255 ( 6609173804b9e31895f550db027ef7c7fa6f1bc9326c99371b61f1ba5 '\
12
+ 'cb3595d )',
13
+ '_443._tcp.data.iana.org. IN TLSA 3 0 0 ( 308206833082056ba003020102021009cabbe2191c8f569dd4b6dd250 '\
14
+ 'f21d8300d06092a864886f70d01010b05003070310b30090603550406 '\
15
+ '1302555331153013060355040a130c446967694365727420496e63311 '\
16
+ '93017060355040b13107777772e64696769636572742e636f6d312f30 '\
17
+ '2d0603550403132644696769436572742053484132204869676820417 '\
18
+ '3737572616e636520536572766572204341301e170d31343130323730 '\
19
+ '30303030305a170d3138303130333132303030305a3081a3310b30090 '\
20
+ '60355040613025553311330110603550408130a43616c69666f726e69 '\
21
+ '61311430120603550407130b4c6f7320416e67656c6573313c303a060 '\
22
+ '355040a1333496e7465726e657420436f72706f726174696f6e20666f '\
23
+ '722041737369676e6564204e616d657320616e64204e756d626572733 '\
24
+ '1163014060355040b130d4954204f7065726174696f6e733113301106 '\
25
+ '035504030c0a2a2e69616e612e6f726730820222300d06092a864886f '\
26
+ '70d01010105000382020f003082020a02820201009dbdfddeb5cae53a '\
27
+ '559747e2fda63728e4aba60f18b79a69f03310bf0164e5ee7db6b15bf '\
28
+ '56df23fddbae6a1bb38449b8c883f18102bbd8bb655ac0e2dac2ee3ed '\
29
+ '5cf4315868d2c598068284854b24894dcd4bd37811f0ad3a282cd4b4e '\
30
+ '599ffd07d8d2d3f2478554f81020b320ee12f44948e2ea1edbc990b83 '\
31
+ '0ca5cca6b4a839fb27b51850c9847eac74f26609eb24365b9751fb1c3 '\
32
+ '208f56913bacbcae49201347c78b7e54a9d99979404c37f00fb65db84 '\
33
+ '9fd75e3a68770c30f2abe65b33256fb59b450050b00d8139d4d80d36f '\
34
+ '7bc46daf303e48f0f0791b2fdd72ec60b2cb3ad533c3f288c9c194e49 '\
35
+ '337a69c496731f086d4f1f9825900713e2a551d05cb6057567850d91e '\
36
+ '6001c4ce27176f0957873a95b880acbec19e7bd9bcf1286d0452b7378 '\
37
+ '9c41905dd470971cd73aea52c77b080cd779af58234f337225c26f87a '\
38
+ '8c13e2a65e9dd4e03a5b41d7e06b3353f38129b2327a531ec9627a21d '\
39
+ 'c423733aa029d4989448ba3322891c1a5690ddf2d25c8ec8aaa894b14 '\
40
+ 'aa92130c6b6d969a21ff671b60c4c923a94a93ea1dd0492c93393ca6e '\
41
+ 'dd61f33ca77e9208d01d6bd15107662ec088733df4c876a7e1608b829 '\
42
+ '73a0f7592e84ed15579d181e79024ae8a7e4b9f0078eb2005b23f9d09 '\
43
+ 'a1df1bbc7de2a5a6085a3646d9fadb0e9da273a5f403cdd42831ce6f0 '\
44
+ 'ca46889585602bb8bc36bb3be861ff6d1a62e350203010001a38201e3 '\
45
+ '308201df301f0603551d230418301680145168ff90af0207753cccd96 '\
46
+ '56462a212b859723b301d0603551d0e04160414c7d0acef898b20e4b9 '\
47
+ '14668933032394f6bf3a61301f0603551d1104183016820a2a2e69616 '\
48
+ 'e612e6f7267820869616e612e6f7267300e0603551d0f0101ff040403 '\
49
+ '0205a0301d0603551d250416301406082b0601050507030106082b060 '\
50
+ '1050507030230750603551d1f046e306c3034a032a030862e68747470 '\
51
+ '3a2f2f63726c332e64696769636572742e636f6d2f736861322d68612 '\
52
+ 'd7365727665722d67332e63726c3034a032a030862e687474703a2f2f '\
53
+ '63726c342e64696769636572742e636f6d2f736861322d68612d73657 '\
54
+ '27665722d67332e63726c30420603551d20043b303930370609608648 '\
55
+ '0186fd6c0101302a302806082b06010505070201161c68747470733a2 '\
56
+ 'f2f7777772e64696769636572742e636f6d2f43505330818306082b06 '\
57
+ '01050507010104773075302406082b060105050730018618687474703 '\
58
+ 'a2f2f6f6373702e64696769636572742e636f6d304d06082b06010505 '\
59
+ '0730028641687474703a2f2f636163657274732e64696769636572742 '\
60
+ 'e636f6d2f446967694365727453484132486967684173737572616e63 '\
61
+ '6553657276657243412e637274300c0603551d130101ff04023000300 '\
62
+ 'd06092a864886f70d01010b0500038201010070314c38e7c02fd80810 '\
63
+ '500b9df6dae85de9b23e29fbd68bfdb5f23411c89acfaf9ae05af9123 '\
64
+ 'a8aa6bce6954a4e68dc7cfc480a65d76f229c4bd5f5674b0c9ac6d06a '\
65
+ '37a1a1c145c3956120b8efe67c887ab4ff7d6aa950ff3698f27c4a19d '\
66
+ '59d93a39aca5a7b6d6c75e34974e50f5a590005b3cb665ddbd7074f9f '\
67
+ 'cbcbf9c50228d5e25596b64ada160b48f77a93aaced22617bfe005e00 '\
68
+ 'fe20a532a0adcb818c878dc5d6649277777ca1a814e21d0b53308af40 '\
69
+ '78be4554715e4ce4828b012f25ffa13a6ceb30d20a75deba8a344e41d '\
70
+ '627fa638feff38a3063a0187519b39b053f7134d9cd83e6091accf5d2 '\
71
+ 'e3a05edfa1dfbe181a87ad86ba24fe6b97fe )',
72
+ '_443._tcp.data.iana.org. IN TLSA 3 0 1 ( 2760bc55bbb8cf398e4c90da21018b2eaafc9e375f7428cf0708e7c88 '\
73
+ '8261b49',
74
+ '_443._tcp.data.iana.org. IN TLSA 3 0 2 ( e6f38e78b1c9f8e0969e81c555e2770eeccb3f120986558adfb2c48aa '\
75
+ 'dc6f85d3596f0cc7362a6a6cda7b6dea222a968fef5aeeaf6d334c8b9 '\
76
+ '725543f27683db )',
77
+ '_443._tcp.data.iana.org. IN TLSA 3 1 0 (30820222300d06092a864886f70d01010105000382020f003082020a0 '\
78
+ '2820201009dbdfddeb5cae53a559747e2fda63728e4aba60f18b79a69 '\
79
+ 'f03310bf0164e5ee7db6b15bf56df23fddbae6a1bb38449b8c883f181 '\
80
+ '02bbd8bb655ac0e2dac2ee3ed5cf4315868d2c598068284854b24894d '\
81
+ 'cd4bd37811f0ad3a282cd4b4e599ffd07d8d2d3f2478554f81020b320 '\
82
+ 'ee12f44948e2ea1edbc990b830ca5cca6b4a839fb27b51850c9847eac '\
83
+ '74f26609eb24365b9751fb1c3208f56913bacbcae49201347c78b7e54 '\
84
+ 'a9d99979404c37f00fb65db849fd75e3a68770c30f2abe65b33256fb5 '\
85
+ '9b450050b00d8139d4d80d36f7bc46daf303e48f0f0791b2fdd72ec60 '\
86
+ 'b2cb3ad533c3f288c9c194e49337a69c496731f086d4f1f9825900713 '\
87
+ 'e2a551d05cb6057567850d91e6001c4ce27176f0957873a95b880acbe '\
88
+ 'c19e7bd9bcf1286d0452b73789c41905dd470971cd73aea52c77b080c '\
89
+ 'd779af58234f337225c26f87a8c13e2a65e9dd4e03a5b41d7e06b3353 '\
90
+ 'f38129b2327a531ec9627a21dc423733aa029d4989448ba3322891c1a '\
91
+ '5690ddf2d25c8ec8aaa894b14aa92130c6b6d969a21ff671b60c4c923 '\
92
+ 'a94a93ea1dd0492c93393ca6edd61f33ca77e9208d01d6bd15107662e '\
93
+ 'c088733df4c876a7e1608b82973a0f7592e84ed15579d181e79024ae8 '\
94
+ 'a7e4b9f0078eb2005b23f9d09a1df1bbc7de2a5a6085a3646d9fadb0e '\
95
+ '9da273a5f403cdd42831ce6f0ca46889585602bb8bc36bb3be861ff6d '\
96
+ '1a62e350203010001 )',
97
+ '_443._tcp.data.iana.org. IN TLSA 3 1 1 ( d56f85824b6ed2ab15b9040c20b574515d9a0ab415ca253b42cbc915a '\
98
+ '11de18d )',
99
+ '_443._tcp.data.iana.org. IN TLSA 3 1 2 ( ba8b1b6f74782cb681373c314cf7bf4d2468c6a9dee47909fae1381ca '\
100
+ '6447249c42cb2a4d6d808fa1486ba70b7c1bb70dd76657a281441110b '\
101
+ 'b4043007ee5ce3 )'
102
+ ].freeze
103
+ CERT = "-----BEGIN CERTIFICATE-----
104
+ MIIGgzCCBWugAwIBAgIQCcq74hkcj1ad1LbdJQ8h2DANBgkqhkiG9w0BAQsFADBw
105
+ MQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3
106
+ d3cuZGlnaWNlcnQuY29tMS8wLQYDVQQDEyZEaWdpQ2VydCBTSEEyIEhpZ2ggQXNz
107
+ dXJhbmNlIFNlcnZlciBDQTAeFw0xNDEwMjcwMDAwMDBaFw0xODAxMDMxMjAwMDBa
108
+ MIGjMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEUMBIGA1UEBxML
109
+ TG9zIEFuZ2VsZXMxPDA6BgNVBAoTM0ludGVybmV0IENvcnBvcmF0aW9uIGZvciBB
110
+ c3NpZ25lZCBOYW1lcyBhbmQgTnVtYmVyczEWMBQGA1UECxMNSVQgT3BlcmF0aW9u
111
+ czETMBEGA1UEAwwKKi5pYW5hLm9yZzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCC
112
+ AgoCggIBAJ29/d61yuU6VZdH4v2mNyjkq6YPGLeaafAzEL8BZOXufbaxW/Vt8j/d
113
+ uuahuzhEm4yIPxgQK72LtlWsDi2sLuPtXPQxWGjSxZgGgoSFSySJTc1L03gR8K06
114
+ KCzUtOWZ/9B9jS0/JHhVT4ECCzIO4S9ElI4uoe28mQuDDKXMprSoOfsntRhQyYR+
115
+ rHTyZgnrJDZbl1H7HDII9WkTusvK5JIBNHx4t+VKnZmXlATDfwD7ZduEn9deOmh3
116
+ DDDyq+ZbMyVvtZtFAFCwDYE51NgNNve8RtrzA+SPDweRsv3XLsYLLLOtUzw/KIyc
117
+ GU5JM3ppxJZzHwhtTx+YJZAHE+KlUdBctgV1Z4UNkeYAHEzicXbwlXhzqVuICsvs
118
+ Gee9m88ShtBFK3N4nEGQXdRwlxzXOupSx3sIDNd5r1gjTzNyJcJvh6jBPipl6d1O
119
+ A6W0HX4GszU/OBKbIyelMeyWJ6IdxCNzOqAp1JiUSLozIokcGlaQ3fLSXI7IqqiU
120
+ sUqpITDGttlpoh/2cbYMTJI6lKk+od0Ekskzk8pu3WHzPKd+kgjQHWvRUQdmLsCI
121
+ cz30yHan4WCLgpc6D3WS6E7RVXnRgeeQJK6KfkufAHjrIAWyP50Jod8bvH3ipaYI
122
+ WjZG2frbDp2ic6X0A83UKDHObwykaIlYVgK7i8Nrs76GH/bRpi41AgMBAAGjggHj
123
+ MIIB3zAfBgNVHSMEGDAWgBRRaP+QrwIHdTzM2WVkYqISuFlyOzAdBgNVHQ4EFgQU
124
+ x9Cs74mLIOS5FGaJMwMjlPa/OmEwHwYDVR0RBBgwFoIKKi5pYW5hLm9yZ4IIaWFu
125
+ YS5vcmcwDgYDVR0PAQH/BAQDAgWgMB0GA1UdJQQWMBQGCCsGAQUFBwMBBggrBgEF
126
+ BQcDAjB1BgNVHR8EbjBsMDSgMqAwhi5odHRwOi8vY3JsMy5kaWdpY2VydC5jb20v
127
+ c2hhMi1oYS1zZXJ2ZXItZzMuY3JsMDSgMqAwhi5odHRwOi8vY3JsNC5kaWdpY2Vy
128
+ dC5jb20vc2hhMi1oYS1zZXJ2ZXItZzMuY3JsMEIGA1UdIAQ7MDkwNwYJYIZIAYb9
129
+ bAEBMCowKAYIKwYBBQUHAgEWHGh0dHBzOi8vd3d3LmRpZ2ljZXJ0LmNvbS9DUFMw
130
+ gYMGCCsGAQUFBwEBBHcwdTAkBggrBgEFBQcwAYYYaHR0cDovL29jc3AuZGlnaWNl
131
+ cnQuY29tME0GCCsGAQUFBzAChkFodHRwOi8vY2FjZXJ0cy5kaWdpY2VydC5jb20v
132
+ RGlnaUNlcnRTSEEySGlnaEFzc3VyYW5jZVNlcnZlckNBLmNydDAMBgNVHRMBAf8E
133
+ AjAAMA0GCSqGSIb3DQEBCwUAA4IBAQBwMUw458Av2AgQUAud9troXemyPin71ov9
134
+ tfI0Eciaz6+a4Fr5EjqKprzmlUpOaNx8/EgKZddvIpxL1fVnSwyaxtBqN6GhwUXD
135
+ lWEguO/mfIh6tP99aqlQ/zaY8nxKGdWdk6Oaylp7bWx140l05Q9aWQAFs8tmXdvX
136
+ B0+fy8v5xQIo1eJVlrZK2hYLSPd6k6rO0iYXv+AF4A/iClMqCty4GMh43F1mSSd3
137
+ d8oagU4h0LUzCK9AeL5FVHFeTOSCiwEvJf+hOmzrMNIKdd66ijROQdYn+mOP7/OK
138
+ MGOgGHUZs5sFP3E02c2D5gkazPXS46Be36Hfvhgah62GuiT+a5f+
139
+ -----END CERTIFICATE-----".freeze
140
+
141
+ def test_tlsa_from_string
142
+ t1 = Dnsruby::RR.create(INPUT[0])
143
+ assert_equal(3, t1.usage)
144
+ assert_equal(0, t1.selector)
145
+ assert_equal(1, t1.matching_type)
146
+ assert_equal('6609173804b9e31895f550db027ef7c7fa6f1bc9326c99371b61f1ba5 cb3595d', t1.data)
147
+
148
+ t2 = Dnsruby::RR.create(INPUT[1])
149
+ assert_equal(255, t2.usage)
150
+ assert_equal(255, t2.selector)
151
+ assert_equal(255, t2.matching_type)
152
+ assert_equal('6609173804b9e31895f550db027ef7c7fa6f1bc9326c99371b61f1ba5 cb3595d', t2.data)
153
+ end
154
+
155
+ def test_tlsa_from_data
156
+ t1 = Dnsruby::RR.create(INPUT[0])
157
+ m = Dnsruby::Message.new
158
+ m.add_additional(t1)
159
+ data = m.encode
160
+ m2 = Dnsruby::Message.decode(data)
161
+ t3 = m2.additional[0]
162
+ assert_equal(t1.to_s, t3.to_s)
163
+ end
164
+
165
+ def test_tlsa_verify_rsa_cert
166
+ cert = OpenSSL::X509::Certificate.new(CERT)
167
+ der = cert.to_der
168
+ t4 = Dnsruby::RR.create(INPUT[2])
169
+ assert_equal(t4.databin, der)
170
+
171
+ t5 = Dnsruby::RR.create(INPUT[3])
172
+ assert_equal(t5.databin, OpenSSL::Digest::SHA256.digest(der))
173
+
174
+ t6 = Dnsruby::RR.create(INPUT[4])
175
+ assert_equal(t6.databin, OpenSSL::Digest::SHA512.digest(der))
176
+ end
177
+
178
+ def test_tlsa_verify_rsa_pkey
179
+ cert = OpenSSL::X509::Certificate.new(CERT)
180
+ pkey = cert.public_key.to_der
181
+
182
+ t7 = Dnsruby::RR.create(INPUT[5])
183
+ assert_equal(t7.databin, pkey)
184
+
185
+ t8 = Dnsruby::RR.create(INPUT[6])
186
+ assert_equal(t8.databin, OpenSSL::Digest::SHA256.digest(pkey))
187
+
188
+ t9 = Dnsruby::RR.create(INPUT[7])
189
+ assert_equal(t9.databin, OpenSSL::Digest::SHA512.digest(pkey))
190
+ end
191
+ end
@@ -17,8 +17,10 @@
17
17
  require_relative 'spec_helper'
18
18
 
19
19
  require "digest/md5"
20
- include Dnsruby
21
20
  class TestTSig < Minitest::Test
21
+
22
+ include Dnsruby
23
+
22
24
  KEY_NAME="rubytsig"
23
25
  KEY = "8n6gugn4aJ7MazyNlMccGKH1WxD2B3UvN/O/RA6iBupO2/03u9CTa3Ewz3gBWTSBCH3crY4Kk+tigNdeJBAvrw=="
24
26
  def is_empty(string)
@@ -16,8 +16,10 @@
16
16
 
17
17
  require_relative 'spec_helper'
18
18
 
19
- include Dnsruby
20
19
  class TestUpdate < Minitest::Test
20
+
21
+ include Dnsruby
22
+
21
23
  def is_empty(string)
22
24
  return true if string == nil || string.length == 0
23
25
 
@@ -236,7 +238,8 @@ class TestUpdate < Minitest::Test
236
238
  assert_equal(rr.ttl, 0, 'nxdomain - right ttl')
237
239
  assert_equal(rr.klass.string, 'NONE', 'nxdomain - right class')
238
240
  assert_equal(rr.type.string, 'CNAME', 'nxdomain - right type')
239
- assert_equal(rr.rdata, nil, 'nxdomain - data empty')
241
+ # assert_nil(rr.rdata, 'nxdomain - data empty')
242
+ assert(is_empty(rr.rdata), 'nxdomain - data empty')
240
243
  end
241
244
 
242
245
  def test_delete_specific_cname
@@ -262,7 +265,7 @@ class TestUpdate < Minitest::Test
262
265
  assert_equal 0, rr.ttl, 'delete_cname - right ttl'
263
266
  assert_equal 'ANY', rr.klass.string, 'delete_cname - right class'
264
267
  assert_equal 'CNAME', rr.type.string, 'delete_cname - right type'
265
- assert_equal nil, rr.rdata, 'delete_cname - right rdata'
268
+ assert(is_empty(rr.rdata), 'delete_cname - right rdata')
266
269
  end
267
270
 
268
271
  def test_txt
@@ -16,9 +16,10 @@
16
16
 
17
17
  require_relative 'spec_helper'
18
18
 
19
- include Dnsruby
20
-
21
19
  class TestValidator < Minitest::Test
20
+
21
+ include Dnsruby
22
+
22
23
  def test_validation
23
24
  # Dnsruby::TheLog.level = Logger::DEBUG
24
25
  Dnsruby::Dnssec.clear_trusted_keys
@@ -1,10 +1,10 @@
1
1
 
2
2
  require_relative 'spec_helper'
3
3
 
4
- include Dnsruby
5
-
6
4
  class ZoneReaderTest < Minitest::Test
7
5
 
6
+ include Dnsruby
7
+
8
8
  def setup
9
9
  @zone_data = <<ZONEDATA
10
10
  $TTL 3600
@@ -25,6 +25,7 @@ www IN A 192.0.2.10
25
25
  IN AAAA 2001:DB8::10
26
26
  ftp.example.com. IN CNAME www
27
27
  db IN CNAME www.example.com.
28
+ foo.example.com. IN CAA 0 issue "ca.example.net; account=230123"
28
29
  ZONEDATA
29
30
 
30
31
  @zone_file = Tempfile.new('zonefile')
@@ -49,6 +50,7 @@ ZONEDATA
49
50
  assert_equal("2001:DB8::10", zone[6].rdata)
50
51
  assert_equal("www.example.com.", zone[7].rdata)
51
52
  assert_equal("www.example.com.", zone[8].rdata)
53
+ assert_equal('0 issue "ca.example.net; account=230123"', zone[9].rdata)
52
54
  end
53
55
 
54
56
  def test_process_file_with_filename
@@ -34,6 +34,7 @@ TESTS = %w(
34
34
  nsec3
35
35
  nsec3param
36
36
  nxt
37
+ tlsa
37
38
  packet
38
39
  packet_unique_push
39
40
  ptrin
@@ -52,15 +52,14 @@ if online?
52
52
  resolver
53
53
  tcp
54
54
  tcp_pipelining
55
-
56
- single_resolver
57
- cache
58
- dns
59
- rr-opt
60
- res_config
61
-
55
+ single_resolver
56
+ cache
57
+ dns
58
+ rr-opt
59
+ res_config
62
60
  )
63
61
 
62
+
64
63
  # Excluded are:
65
64
  #
66
65
  # inet6