dns-zone2 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (60) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +2 -0
  3. data/HISTORY.md +45 -0
  4. data/README.md +151 -0
  5. data/Rakefile +15 -0
  6. data/dns-zone2.gemspec +41 -0
  7. data/lib/dns/zone.rb +207 -0
  8. data/lib/dns/zone/rr.rb +87 -0
  9. data/lib/dns/zone/rr/a.rb +21 -0
  10. data/lib/dns/zone/rr/aaaa.rb +5 -0
  11. data/lib/dns/zone/rr/cdnskey.rb +5 -0
  12. data/lib/dns/zone/rr/cds.rb +5 -0
  13. data/lib/dns/zone/rr/cname.rb +21 -0
  14. data/lib/dns/zone/rr/dlv.rb +5 -0
  15. data/lib/dns/zone/rr/dnskey.rb +38 -0
  16. data/lib/dns/zone/rr/ds.rb +38 -0
  17. data/lib/dns/zone/rr/hinfo.rb +31 -0
  18. data/lib/dns/zone/rr/mx.rb +33 -0
  19. data/lib/dns/zone/rr/naptr.rb +44 -0
  20. data/lib/dns/zone/rr/ns.rb +21 -0
  21. data/lib/dns/zone/rr/nsec.rb +32 -0
  22. data/lib/dns/zone/rr/nsec3.rb +45 -0
  23. data/lib/dns/zone/rr/nsec3param.rb +38 -0
  24. data/lib/dns/zone/rr/ptr.rb +21 -0
  25. data/lib/dns/zone/rr/record.rb +88 -0
  26. data/lib/dns/zone/rr/rrsig.rb +54 -0
  27. data/lib/dns/zone/rr/soa.rb +51 -0
  28. data/lib/dns/zone/rr/spf.rb +5 -0
  29. data/lib/dns/zone/rr/srv.rb +38 -0
  30. data/lib/dns/zone/rr/sshfp.rb +35 -0
  31. data/lib/dns/zone/rr/txt.rb +24 -0
  32. data/lib/dns/zone/test_case.rb +27 -0
  33. data/lib/dns/zone/version.rb +6 -0
  34. data/test/rr/a_test.rb +37 -0
  35. data/test/rr/aaaa_test.rb +27 -0
  36. data/test/rr/cdnskey_test.rb +31 -0
  37. data/test/rr/cds_test.rb +28 -0
  38. data/test/rr/cname_test.rb +19 -0
  39. data/test/rr/dlv_test.rb +28 -0
  40. data/test/rr/dnskey_test.rb +31 -0
  41. data/test/rr/ds_test.rb +28 -0
  42. data/test/rr/hinfo_test.rb +44 -0
  43. data/test/rr/mx_test.rb +26 -0
  44. data/test/rr/naptr_test.rb +60 -0
  45. data/test/rr/ns_test.rb +18 -0
  46. data/test/rr/nsec3_test.rb +33 -0
  47. data/test/rr/nsec3param_test.rb +29 -0
  48. data/test/rr/nsec_test.rb +24 -0
  49. data/test/rr/ptr_test.rb +19 -0
  50. data/test/rr/record_test.rb +37 -0
  51. data/test/rr/rrsig_test.rb +40 -0
  52. data/test/rr/soa_test.rb +34 -0
  53. data/test/rr/spf_test.rb +20 -0
  54. data/test/rr/srv_test.rb +24 -0
  55. data/test/rr/sshfp_test.rb +24 -0
  56. data/test/rr/txt_test.rb +44 -0
  57. data/test/rr_test.rb +50 -0
  58. data/test/version_test.rb +9 -0
  59. data/test/zone_test.rb +273 -0
  60. metadata +217 -0
@@ -0,0 +1,31 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_CDNSKEY_Test < DNS::Zone::TestCase
4
+
5
+ # FIXME (lantins): algorithm can be integer _or_ mnemonic!
6
+
7
+ TEST_KEY = 'AQPSKmynfzW4kyBv015MUG2DeIQ3Cbl+BBZH4b/0PY1kxkmvHjcZc8nokfzj31GajIQKY+5CptLr3buXA10hWqTkF7H6RfoRqXQeogmMHfpftf6zMv1LyBUgia7za6ZEzOJBOztyvhjL742iU/TpPSEDhm2SNKLijfUppn1UaNvv4w=='
8
+
9
+ def test_build_rr__cdnskey
10
+ rr = DNS::Zone::RR::CDNSKEY.new
11
+ rr.label = 'example.com.'
12
+ rr.ttl = 86400
13
+ rr.flags = 256
14
+ rr.protocol = 3
15
+ rr.algorithm = 5
16
+ rr.key = TEST_KEY
17
+
18
+ assert_equal "example.com. 86400 IN CDNSKEY 256 3 5 #{TEST_KEY}", rr.dump
19
+ end
20
+
21
+ def test_load_rr__cdnskey
22
+ rr = DNS::Zone::RR::CDNSKEY.new.load("example.com. IN CDNSKEY 256 3 5 #{TEST_KEY}")
23
+ assert_equal 'example.com.', rr.label
24
+ assert_equal 'CDNSKEY', rr.type
25
+ assert_equal 256, rr.flags
26
+ assert_equal 3, rr.protocol
27
+ assert_equal 5, rr.algorithm
28
+ assert_equal TEST_KEY, rr.key
29
+ end
30
+
31
+ end
@@ -0,0 +1,28 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_CDS_Test < DNS::Zone::TestCase
4
+
5
+ TEST_DIGEST = '2BB183AF5F22588179A53B0A98631FAD1A292118'
6
+
7
+ def test_build_rr__cds
8
+ rr = DNS::Zone::RR::CDS.new
9
+ rr.label = 'dskey.example.com.'
10
+ rr.key_tag = 60485
11
+ rr.algorithm = 5
12
+ rr.digest_type = 1
13
+ rr.digest = TEST_DIGEST
14
+
15
+ assert_equal "dskey.example.com. IN CDS 60485 5 1 #{TEST_DIGEST}", rr.dump
16
+ end
17
+
18
+ def test_load_rr__cds
19
+ rr = DNS::Zone::RR::CDS.new.load("dskey.example.com. IN CDS 60485 5 1 #{TEST_DIGEST}")
20
+ assert_equal 'dskey.example.com.', rr.label
21
+ assert_equal 'CDS', rr.type
22
+ assert_equal 60485, rr.key_tag
23
+ assert_equal 5, rr.algorithm
24
+ assert_equal 1, rr.digest_type
25
+ assert_equal TEST_DIGEST, rr.digest
26
+ end
27
+
28
+ end
@@ -0,0 +1,19 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_CNAME_Test < DNS::Zone::TestCase
4
+
5
+ def test_build_rr__cname
6
+ rr = DNS::Zone::RR::CNAME.new
7
+ rr.label = 'google9d97d7f266ee521d'
8
+ rr.domainname = 'google.com.'
9
+ assert_equal 'google9d97d7f266ee521d IN CNAME google.com.', rr.dump
10
+ end
11
+
12
+ def test_load_rr__cname
13
+ rr = DNS::Zone::RR::CNAME.new.load('foo IN CNAME example.com.')
14
+ assert_equal 'foo', rr.label
15
+ assert_equal 'CNAME', rr.type
16
+ assert_equal 'example.com.', rr.domainname
17
+ end
18
+
19
+ end
@@ -0,0 +1,28 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_DLV_Test < DNS::Zone::TestCase
4
+
5
+ TEST_DIGEST = '2BB183AF5F22588179A53B0A98631FAD1A292118'
6
+
7
+ def test_build_rr__dlv
8
+ rr = DNS::Zone::RR::DLV.new
9
+ rr.label = 'dlvtest.example.com.'
10
+ rr.key_tag = 60485
11
+ rr.algorithm = 5
12
+ rr.digest_type = 1
13
+ rr.digest = TEST_DIGEST
14
+
15
+ assert_equal "dlvtest.example.com. IN DLV 60485 5 1 #{TEST_DIGEST}", rr.dump
16
+ end
17
+
18
+ def test_load_rr__dlv
19
+ rr = DNS::Zone::RR::DLV.new.load("dlvtest.example.com. IN DLV 60485 5 1 #{TEST_DIGEST}")
20
+ assert_equal 'dlvtest.example.com.', rr.label
21
+ assert_equal 'DLV', rr.type
22
+ assert_equal 60485, rr.key_tag
23
+ assert_equal 5, rr.algorithm
24
+ assert_equal 1, rr.digest_type
25
+ assert_equal TEST_DIGEST, rr.digest
26
+ end
27
+
28
+ end
@@ -0,0 +1,31 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_DNSKEY_Test < DNS::Zone::TestCase
4
+
5
+ # FIXME (lantins): algorithm can be integer _or_ mnemonic!
6
+
7
+ TEST_KEY = 'AQPSKmynfzW4kyBv015MUG2DeIQ3Cbl+BBZH4b/0PY1kxkmvHjcZc8nokfzj31GajIQKY+5CptLr3buXA10hWqTkF7H6RfoRqXQeogmMHfpftf6zMv1LyBUgia7za6ZEzOJBOztyvhjL742iU/TpPSEDhm2SNKLijfUppn1UaNvv4w=='
8
+
9
+ def test_build_rr__dnskey
10
+ rr = DNS::Zone::RR::DNSKEY.new
11
+ rr.label = 'example.com.'
12
+ rr.ttl = 86400
13
+ rr.flags = 256
14
+ rr.protocol = 3
15
+ rr.algorithm = 5
16
+ rr.key = TEST_KEY
17
+
18
+ assert_equal "example.com. 86400 IN DNSKEY 256 3 5 #{TEST_KEY}", rr.dump
19
+ end
20
+
21
+ def test_load_rr__dnskey
22
+ rr = DNS::Zone::RR::DNSKEY.new.load("example.com. IN DNSKEY 256 3 5 #{TEST_KEY}")
23
+ assert_equal 'example.com.', rr.label
24
+ assert_equal 'DNSKEY', rr.type
25
+ assert_equal 256, rr.flags
26
+ assert_equal 3, rr.protocol
27
+ assert_equal 5, rr.algorithm
28
+ assert_equal TEST_KEY, rr.key
29
+ end
30
+
31
+ end
@@ -0,0 +1,28 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_DS_Test < DNS::Zone::TestCase
4
+
5
+ TEST_DIGEST = '2BB183AF5F22588179A53B0A98631FAD1A292118'
6
+
7
+ def test_build_rr__ds
8
+ rr = DNS::Zone::RR::DS.new
9
+ rr.label = 'dskey.example.com.'
10
+ rr.key_tag = 60485
11
+ rr.algorithm = 5
12
+ rr.digest_type = 1
13
+ rr.digest = TEST_DIGEST
14
+
15
+ assert_equal "dskey.example.com. IN DS 60485 5 1 #{TEST_DIGEST}", rr.dump
16
+ end
17
+
18
+ def test_load_rr__ds
19
+ rr = DNS::Zone::RR::DS.new.load("dskey.example.com. IN DS 60485 5 1 #{TEST_DIGEST}")
20
+ assert_equal 'dskey.example.com.', rr.label
21
+ assert_equal 'DS', rr.type
22
+ assert_equal 60485, rr.key_tag
23
+ assert_equal 5, rr.algorithm
24
+ assert_equal 1, rr.digest_type
25
+ assert_equal TEST_DIGEST, rr.digest
26
+ end
27
+
28
+ end
@@ -0,0 +1,44 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_HINFO_Test < DNS::Zone::TestCase
4
+
5
+ def test_build_rr__hinfo
6
+ rr = DNS::Zone::RR::HINFO.new
7
+ rr.cpu = 'Intel'
8
+ rr.os = 'Ubuntu'
9
+ assert_equal '@ IN HINFO "Intel" "Ubuntu"', rr.dump
10
+ end
11
+
12
+ def test_build_with_spaces
13
+ rr = DNS::Zone::RR::HINFO.new
14
+ rr.label = 'ns0'
15
+ rr.cpu = 'PC Intel 700mhz'
16
+ rr.os = 'Ubuntu 12.04 LTS'
17
+ assert_equal 'ns0 IN HINFO "PC Intel 700mhz" "Ubuntu 12.04 LTS"', rr.dump
18
+ end
19
+
20
+ def test_load_rr__hinfo
21
+ rr = DNS::Zone::RR::HINFO.new.load('ns0 IN HINFO "Intel" "Ubuntu"')
22
+ assert_equal 'ns0', rr.label
23
+ assert_equal 'HINFO', rr.type
24
+ assert_equal 'Intel', rr.cpu
25
+ assert_equal 'Ubuntu', rr.os
26
+ end
27
+
28
+ def test_load_with_spaces
29
+ rr = DNS::Zone::RR::HINFO.new.load('ns0 IN HINFO "PC Intel 700mhz" "Ubuntu 12.04 LTS"')
30
+ assert_equal 'PC Intel 700mhz', rr.cpu
31
+ assert_equal 'Ubuntu 12.04 LTS', rr.os
32
+ end
33
+
34
+ def test_load_mixed_quotes
35
+ rr = DNS::Zone::RR::HINFO.new.load('ns0 IN HINFO Intel "Ubuntu 12.04"')
36
+ assert_equal 'Intel', rr.cpu
37
+ assert_equal 'Ubuntu 12.04', rr.os
38
+
39
+ rr = DNS::Zone::RR::HINFO.new.load('ns0 IN HINFO "PC Intel" Ubuntu')
40
+ assert_equal 'PC Intel', rr.cpu
41
+ assert_equal 'Ubuntu', rr.os
42
+ end
43
+
44
+ end
@@ -0,0 +1,26 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_MX_Test < DNS::Zone::TestCase
4
+
5
+ def test_build_rr__mx
6
+ rr = DNS::Zone::RR::MX.new
7
+
8
+ # ensure we can set priority and exchange parameter
9
+ rr.priority = 10
10
+ rr.exchange = 'mx0.lividpenguin.com.'
11
+ assert_equal '@ IN MX 10 mx0.lividpenguin.com.', rr.dump
12
+
13
+ rr.priority = 20
14
+ rr.exchange = 'mx1.lividpenguin.com.'
15
+ assert_equal '@ IN MX 20 mx1.lividpenguin.com.', rr.dump
16
+ end
17
+
18
+ def test_load_rr__mx
19
+ rr = DNS::Zone::RR::MX.new.load('@ IN MX 20 mx1.lividpenguin.com.')
20
+ assert_equal '@', rr.label
21
+ assert_equal 'MX', rr.type
22
+ assert_equal 20, rr.priority
23
+ assert_equal 'mx1.lividpenguin.com.', rr.exchange
24
+ end
25
+
26
+ end
@@ -0,0 +1,60 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_NAPTR_Test < DNS::Zone::TestCase
4
+
5
+ def test_build_rr__naptr
6
+ rr = DNS::Zone::RR::NAPTR.new
7
+ rr.order = 100
8
+ rr.pref = 10
9
+ rr.flags = ''
10
+ rr.service = ''
11
+ rr.regexp = '!^urn:cid:.+@([^\.]+\.)(.*)$!\2!i'
12
+ rr.replacement = '.'
13
+
14
+ assert_equal '@ IN NAPTR 100 10 "" "" "!^urn:cid:.+@([^\.]+\.)(.*)$!\2!i" .', rr.dump
15
+ end
16
+
17
+ def test_load_rr__naptr
18
+ rr = DNS::Zone::RR::NAPTR.new.load('@ IN NAPTR 100 10 "" "" "!^urn:cid:.+@([^\.]+\.)(.*)$!\2!i" .')
19
+ assert_equal '@', rr.label
20
+ assert_equal 'NAPTR', rr.type
21
+ assert_equal 100, rr.order
22
+ assert_equal 10, rr.pref
23
+ assert_equal '', rr.flags
24
+ assert_equal '', rr.service
25
+ assert_equal '!^urn:cid:.+@([^\\.]+\\.)(.*)$!\\2!i', rr.regexp
26
+ assert_equal '.', rr.replacement
27
+
28
+ rr = DNS::Zone::RR::NAPTR.new.load('example.com. IN NAPTR 100 50 "a" "z3950+N2L+N2C" "" cidserver.example.com.')
29
+ assert_equal 'example.com.', rr.label
30
+ assert_equal 'NAPTR', rr.type
31
+ assert_equal 100, rr.order
32
+ assert_equal 50, rr.pref
33
+ assert_equal 'a', rr.flags
34
+ assert_equal 'z3950+N2L+N2C', rr.service
35
+ assert_equal '', rr.regexp
36
+ assert_equal 'cidserver.example.com.', rr.replacement
37
+
38
+ rr = DNS::Zone::RR::NAPTR.new.load('example.com. IN NAPTR 100 60 "a" "rcds+N2C" "" cidserver.example.com.')
39
+ assert_equal 'example.com.', rr.label
40
+ assert_equal 'NAPTR', rr.type
41
+ assert_equal 100, rr.order
42
+ assert_equal 60, rr.pref
43
+ assert_equal 'a', rr.flags
44
+ assert_equal 'rcds+N2C', rr.service
45
+ assert_equal '', rr.regexp
46
+ assert_equal 'cidserver.example.com.', rr.replacement
47
+
48
+ rr = DNS::Zone::RR::NAPTR.new.load('example.com. IN NAPTR 300 50 "b" "http+N2L+N2C+N2R" "" www.example.com.')
49
+ assert_equal 'example.com.', rr.label
50
+ assert_equal 'NAPTR', rr.type
51
+ assert_equal 300, rr.order
52
+ assert_equal 50, rr.pref
53
+ assert_equal 'b', rr.flags
54
+ assert_equal 'http+N2L+N2C+N2R', rr.service
55
+ assert_equal '', rr.regexp
56
+ assert_equal 'www.example.com.', rr.replacement
57
+
58
+ end
59
+
60
+ end
@@ -0,0 +1,18 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_NS_Test < DNS::Zone::TestCase
4
+
5
+ def test_build_rr__ns
6
+ rr = DNS::Zone::RR::NS.new
7
+ rr.nameserver = 'ns0.lividpenguin.com.'
8
+ assert_equal '@ IN NS ns0.lividpenguin.com.', rr.dump
9
+ end
10
+
11
+ def test_load_rr__ns
12
+ rr = DNS::Zone::RR::NS.new.load('@ IN NS ns0.lividpenguin.com.')
13
+ assert_equal '@', rr.label
14
+ assert_equal 'NS', rr.type
15
+ assert_equal 'ns0.lividpenguin.com.', rr.nameserver
16
+ end
17
+
18
+ end
@@ -0,0 +1,33 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_NSEC3_Test < DNS::Zone::TestCase
4
+
5
+ def test_build_rr__nsec3
6
+ rr = DNS::Zone::RR::NSEC3.new
7
+ rr.label = 'foo.example.com.'
8
+
9
+ rr.algorithm = 1
10
+ rr.flags = 0
11
+ rr.iterations = 12
12
+ rr.salt = 'aabbccdd'
13
+ rr.next_hashed_owner_name = 'ji6neoaepv8b5o6k4ev33abha8ht9fgc'
14
+ rr.rrset_types = 'A AAAA'
15
+
16
+ assert_equal "foo.example.com. IN NSEC3 1 0 12 aabbccdd ji6neoaepv8b5o6k4ev33abha8ht9fgc A AAAA", rr.dump
17
+
18
+ end
19
+
20
+ def test_load_rr__nsec3
21
+ rr = DNS::Zone::RR::NSEC3.new.load("foo.example.com. IN NSEC3 1 0 12 aabbccdd ji6neoaepv8b5o6k4ev33abha8ht9fgc A AAAA")
22
+ assert_equal 'foo.example.com.', rr.label
23
+ assert_equal 'NSEC3', rr.type
24
+
25
+ assert_equal 1, rr.algorithm
26
+ assert_equal 0, rr.flags
27
+ assert_equal 12, rr.iterations
28
+ assert_equal 'aabbccdd', rr.salt
29
+ assert_equal 'ji6neoaepv8b5o6k4ev33abha8ht9fgc', rr.next_hashed_owner_name
30
+ assert_equal 'A AAAA', rr.rrset_types
31
+ end
32
+
33
+ end
@@ -0,0 +1,29 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_NSEC3PARAM_Test < DNS::Zone::TestCase
4
+
5
+ def test_build_rr__nsec3param
6
+ rr = DNS::Zone::RR::NSEC3PARAM.new
7
+ rr.label = 'foo.example.com.'
8
+
9
+ rr.algorithm = 1
10
+ rr.flags = 0
11
+ rr.iterations = 12
12
+ rr.salt = 'aabbccdd'
13
+
14
+ assert_equal "foo.example.com. IN NSEC3PARAM 1 0 12 aabbccdd", rr.dump
15
+
16
+ end
17
+
18
+ def test_load_rr__nsec3param
19
+ rr = DNS::Zone::RR::NSEC3PARAM.new.load("foo.example.com. IN NSEC3PARAM 1 0 12 aabbccdd")
20
+ assert_equal 'foo.example.com.', rr.label
21
+ assert_equal 'NSEC3PARAM', rr.type
22
+
23
+ assert_equal 1, rr.algorithm
24
+ assert_equal 0, rr.flags
25
+ assert_equal 12, rr.iterations
26
+ assert_equal 'aabbccdd', rr.salt
27
+ end
28
+
29
+ end
@@ -0,0 +1,24 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_NSEC_Test < DNS::Zone::TestCase
4
+
5
+ def test_build_rr__nsec
6
+ rr = DNS::Zone::RR::NSEC.new
7
+ rr.label = 'alfa.example.com.'
8
+ rr.next_domain = 'host.example.com.'
9
+ rr.rrset_types = 'A MX RRSIG NSEC TYPE1234'
10
+
11
+ assert_equal "alfa.example.com. IN NSEC host.example.com. A MX RRSIG NSEC TYPE1234", rr.dump
12
+
13
+ end
14
+
15
+ def test_load_rr__nsec
16
+ rr = DNS::Zone::RR::NSEC.new.load("alfa.example.com. IN NSEC host.example.com. A MX RRSIG NSEC TYPE1234")
17
+ assert_equal 'alfa.example.com.', rr.label
18
+ assert_equal 'NSEC', rr.type
19
+
20
+ assert_equal 'host.example.com.', rr.next_domain
21
+ assert_equal 'A MX RRSIG NSEC TYPE1234', rr.rrset_types
22
+ end
23
+
24
+ end
@@ -0,0 +1,19 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_PTR_Test < DNS::Zone::TestCase
4
+
5
+ def test_build_rr__ptr
6
+ rr = DNS::Zone::RR::PTR.new
7
+ rr.label = '69'
8
+ rr.name = 'mx0.lividpenguin.com.'
9
+ assert_equal '69 IN PTR mx0.lividpenguin.com.', rr.dump
10
+ end
11
+
12
+ def test_load_rr__ptr
13
+ rr = DNS::Zone::RR::PTR.new.load('69 IN PTR mx0.lividpenguin.com.')
14
+ assert_equal '69', rr.label
15
+ assert_equal 'PTR', rr.type
16
+ assert_equal 'mx0.lividpenguin.com.', rr.name
17
+ end
18
+
19
+ end
@@ -0,0 +1,37 @@
1
+ require 'dns/zone/test_case'
2
+
3
+ class RR_Record_Test < DNS::Zone::TestCase
4
+
5
+ def test_rr_record_defaults
6
+ rr = DNS::Zone::RR::Record.new
7
+ assert_equal '@', rr.label, 'label is @, by default'
8
+ assert_equal nil, rr.ttl, 'ttl is nil, by default'
9
+ end
10
+
11
+ def test_rr_record_with_label
12
+ rr = DNS::Zone::RR::Record.new
13
+ rr.label = 'labelname'
14
+ assert_equal 'labelname IN <type>', rr.dump
15
+ end
16
+
17
+ def test_rr_record_with_label_and_ttl
18
+ rr = DNS::Zone::RR::Record.new
19
+ rr.label = 'labelname'
20
+ rr.ttl = '2d'
21
+ assert_equal 'labelname 2d IN <type>', rr.dump
22
+ end
23
+
24
+ def test_rr_record_with_ttl
25
+ rr = DNS::Zone::RR::Record.new
26
+ rr.ttl = '2d'
27
+ assert_equal '@ 2d IN <type>', rr.dump
28
+ end
29
+
30
+ # the load method should be overloaded by a subclass, calling direct should raise
31
+ def test_record_load_default_method_raises_exception
32
+ assert_raises(NotImplementedError) {
33
+ DNS::Zone::RR::Record.new.load('')
34
+ }
35
+ end
36
+
37
+ end