dnsruby 1.60.0 → 1.60.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 +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