redns 0.0.0

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.
@@ -0,0 +1,76 @@
1
+ require 'helper'
2
+
3
+ class TestReDNSName < Test::Unit::TestCase
4
+ def test_defaults
5
+ name = ReDNS::Name.new
6
+
7
+ assert_equal '.', name.to_s
8
+ assert_equal %w[ . ], name.to_a
9
+
10
+ assert name.empty?
11
+ end
12
+
13
+ def test_string_initializer
14
+ name = ReDNS::Name.new('example.net')
15
+
16
+ assert_equal 'example.net.', name.to_s
17
+
18
+ assert !name.empty?
19
+ end
20
+
21
+ def test_defaults
22
+ example_buffer = ReDNS::Buffer.new(
23
+ [
24
+ 7, ?e, ?x, ?a, ?m, ?p, ?l, ?e,
25
+ 3, ?c, ?o, ?m,
26
+ 0
27
+ ].collect(&:chr).join
28
+ )
29
+
30
+ name = ReDNS::Name.new(example_buffer)
31
+
32
+ assert_equal 'example.com.', name.to_s
33
+
34
+ assert !name.empty?
35
+
36
+ assert_equal 0, example_buffer.length
37
+ end
38
+
39
+ def test_decode_cycle
40
+ name_string = 'example.com.'.freeze
41
+
42
+ name = ReDNS::Name.new(name_string)
43
+
44
+ assert_equal name_string, name.to_s
45
+
46
+ buffer = ReDNS::Buffer.new(name)
47
+
48
+ assert_equal name_string.length + 1, buffer.length
49
+
50
+ assert_equal 'example.com.', ReDNS::Name.new(buffer).to_s
51
+ end
52
+
53
+ def test_example_pointer
54
+ example_buffer = ReDNS::Buffer.new(
55
+ [
56
+ 3, ?n, ?e, ?t,
57
+ 0,
58
+ 3, ?c, ?o, ?m,
59
+ 0,
60
+ 7, ?e, ?x, ?a, ?m, ?p, ?l, ?e,
61
+ 192, 5
62
+ ].collect(&:chr).join
63
+ )
64
+
65
+ # Skip past the first "net." / "com." part
66
+ example_buffer.advance(10)
67
+
68
+ name = ReDNS::Name.new(example_buffer)
69
+
70
+ assert_equal 'example.com.', name.to_s
71
+
72
+ assert !name.empty?
73
+
74
+ assert_equal 0, example_buffer.length
75
+ end
76
+ end
@@ -0,0 +1,24 @@
1
+ require 'helper'
2
+
3
+ class TestReDNSQuestion < Test::Unit::TestCase
4
+ def test_defaults
5
+ question = ReDNS::Question.new
6
+
7
+ assert_equal :any, question.qtype
8
+ assert_equal :in, question.qclass
9
+
10
+ assert_equal '. IN ANY', question.to_s
11
+ end
12
+
13
+ def test_example_query
14
+ question = ReDNS::Question.new(
15
+ :name => 'example.com',
16
+ :qtype => :a
17
+ )
18
+
19
+ assert_equal :a, question.qtype
20
+ assert_equal :in, question.qclass
21
+
22
+ assert_equal 'example.com. IN A', question.to_s
23
+ end
24
+ end
@@ -0,0 +1,184 @@
1
+ require 'helper'
2
+
3
+ class TestReDNSResource < Test::Unit::TestCase
4
+ def test_defaults
5
+ resource = ReDNS::Resource.new
6
+
7
+ assert resource.empty?
8
+ end
9
+
10
+ def test_serialize_cycle_mx
11
+ mx = ReDNS::Record::MX.new(
12
+ :preference => 10,
13
+ :name => 'mx.example.com'
14
+ )
15
+
16
+ assert_equal 10, mx.preference
17
+ assert_equal 'mx.example.com.', mx.name.to_s
18
+
19
+ assert_equal '10 mx.example.com.', mx.to_s
20
+
21
+ buffer = mx.serialize
22
+ assert_equal 0, buffer.offset
23
+
24
+ assert_equal 'mx.example.com.'.length + 1 + 2, buffer.length
25
+
26
+ decoded_mx = ReDNS::Record::MX.new(buffer)
27
+
28
+ assert_equal '10 mx.example.com.', decoded_mx.to_s
29
+ end
30
+
31
+ def test_serialize_cycle_record_mx
32
+ mx = ReDNS::Resource.new(
33
+ :name => 'example.com',
34
+ :rdata => ReDNS::Record::MX.new(
35
+ :preference => 10,
36
+ :name => 'mx.example.com'
37
+ ),
38
+ :ttl => 123456,
39
+ :rtype => :mx
40
+ )
41
+
42
+ assert_equal 'example.com.', mx.name.to_s
43
+ assert_equal 10, mx.rdata.preference
44
+ assert_equal 'mx.example.com.', mx.rdata.name.to_s
45
+ assert_equal 123456, mx.ttl
46
+ assert_equal :mx, mx.rtype
47
+
48
+ assert_equal 'example.com. 123456 IN MX 10 mx.example.com.', mx.to_s
49
+
50
+ buffer = mx.serialize
51
+ assert_equal 0, buffer.offset
52
+
53
+ rdata_length = mx.rdata.serialize.length
54
+
55
+ assert_equal 'example.com.'.length + 1 + 4 + 2 * 3 + rdata_length, buffer.length
56
+
57
+ decoded_mx = ReDNS::Resource.new(buffer)
58
+
59
+ assert_equal mx.to_s, decoded_mx.to_s
60
+ end
61
+
62
+ def test_serialize_cycle_soa
63
+ soa = ReDNS::Record::SOA.new(
64
+ :mname => 'example.com',
65
+ :rname => 'domainadmin.example.com',
66
+ :serial => 1001,
67
+ :refresh => 1002,
68
+ :retry => 1003,
69
+ :expire => 1004,
70
+ :minimum => 1005
71
+ )
72
+
73
+ assert_equal 'example.com.', soa.mname.to_s
74
+ assert_equal 'domainadmin.example.com.', soa.rname.to_s
75
+
76
+ assert_equal 1001, soa.serial
77
+ assert_equal 1002, soa.refresh
78
+ assert_equal 1003, soa.retry
79
+ assert_equal 1004, soa.expire
80
+ assert_equal 1005, soa.minimum
81
+
82
+ buffer = soa.serialize
83
+ assert_equal 0, buffer.offset
84
+
85
+ assert_equal 'example.com.'.length + 1 + 'domainadmin.example.com.'.length + 1 + 4 * 5, buffer.length
86
+
87
+ decoded_soa = ReDNS::Record::SOA.new(buffer)
88
+
89
+ assert_equal 'example.com. domainadmin.example.com. 1001 1002 1003 1004 1005', decoded_soa.to_s
90
+ end
91
+
92
+ def test_serialize_cycle_record_soa
93
+ soa = ReDNS::Resource.new(
94
+ :name => 'example.com',
95
+ :rdata => ReDNS::Record::SOA.new(
96
+ :mname => 'example.com',
97
+ :rname => 'domainadmin.example.com',
98
+ :serial => 1001,
99
+ :refresh => 1002,
100
+ :retry => 1003,
101
+ :expire => 1004,
102
+ :minimum => 1005
103
+ ),
104
+ :ttl => 123456,
105
+ :rtype => :soa
106
+ )
107
+
108
+ assert_equal 'example.com.', soa.name.to_s
109
+ assert_equal 123456, soa.ttl
110
+ assert_equal :soa, soa.rtype
111
+
112
+ assert_equal 'example.com.', soa.rdata.mname.to_s
113
+ assert_equal 'domainadmin.example.com.', soa.rdata.rname.to_s
114
+
115
+ assert_equal 1001, soa.rdata.serial
116
+ assert_equal 1002, soa.rdata.refresh
117
+ assert_equal 1003, soa.rdata.retry
118
+ assert_equal 1004, soa.rdata.expire
119
+ assert_equal 1005, soa.rdata.minimum
120
+
121
+ assert_equal 'example.com. 123456 IN SOA example.com. domainadmin.example.com. 1001 1002 1003 1004 1005', soa.to_s
122
+
123
+ buffer = soa.serialize
124
+ assert_equal 0, buffer.offset
125
+
126
+ rdata_length = soa.rdata.serialize.length
127
+
128
+ assert_equal 'example.com.'.length + 1 + 4 + 2 * 3 + rdata_length, buffer.length
129
+
130
+ decoded_soa = ReDNS::Resource.new(buffer)
131
+
132
+ assert_equal soa.to_s, decoded_soa.to_s
133
+
134
+ assert_equal :soa, decoded_soa.rtype
135
+ end
136
+
137
+ def test_serialize_cycle_null
138
+ null = ReDNS::Record::Null.new(
139
+ :contents => 'random data goes here'.freeze
140
+ )
141
+
142
+ assert_equal 'random data goes here', null.contents
143
+
144
+ assert_equal 'random data goes here', null.to_s
145
+
146
+ buffer = null.serialize
147
+ assert_equal 0, buffer.offset
148
+
149
+ assert_equal 'random data goes here'.length, buffer.length
150
+
151
+ decoded_null = ReDNS::Record::Null.new(buffer)
152
+
153
+ assert_equal 'random data goes here', decoded_null.to_s
154
+ end
155
+
156
+ def test_serialize_cycle_record_null
157
+ null = ReDNS::Resource.new(
158
+ :name => 'example.com',
159
+ :rdata => ReDNS::Record::Null.new(
160
+ :contents => 'random data goes here'.freeze
161
+ ),
162
+ :ttl => 123456,
163
+ :rtype => :null
164
+ )
165
+
166
+ assert_equal 'example.com.', null.name.to_s
167
+ assert_equal 'random data goes here', null.rdata.contents
168
+ assert_equal 123456, null.ttl
169
+ assert_equal :null, null.rtype
170
+
171
+ assert_equal 'example.com. 123456 IN NULL random data goes here', null.to_s
172
+
173
+ buffer = null.serialize
174
+ assert_equal 0, buffer.offset
175
+
176
+ rdata_length = null.rdata.serialize.length
177
+
178
+ assert_equal 'example.com.'.length + 1 + 4 + 2 * 3 + rdata_length, buffer.length
179
+
180
+ decoded_null = ReDNS::Resource.new(buffer)
181
+
182
+ assert_equal null.to_s, decoded_null.to_s
183
+ end
184
+ end
@@ -0,0 +1,16 @@
1
+ require 'helper'
2
+
3
+ class TestReDNSSupport < Test::Unit::TestCase
4
+ include ReDNS::Support
5
+
6
+ def test_addr_to_arpa
7
+ assert_equal '4.3.2.1.in-addr.arpa.', addr_to_arpa('1.2.3.4')
8
+ assert_equal '3.2.1.in-addr.arpa.', addr_to_arpa('1.2.3')
9
+ end
10
+
11
+ def test_inet_ntoa
12
+ assert_equal '0.0.0.0', inet_ntoa(inet_aton('0.0.0.0'))
13
+ assert_equal '1.2.3.4', inet_ntoa(inet_aton('1.2.3.4'))
14
+ assert_equal '255.255.255.255', inet_ntoa(inet_aton('255.255.255.255'))
15
+ end
16
+ end
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: redns
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 0
9
+ version: 0.0.0
10
+ platform: ruby
11
+ authors:
12
+ - tadman
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-08-13 00:00:00 -04:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: ReDNS is a pure Ruby DNS library with drivers for reactor-model engines such as EventMachine
22
+ email: github@tadman.ca
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files:
28
+ - README.rdoc
29
+ files:
30
+ - .document
31
+ - .gitignore
32
+ - README.rdoc
33
+ - Rakefile
34
+ - VERSION
35
+ - lib/redns.rb
36
+ - lib/redns/address.rb
37
+ - lib/redns/buffer.rb
38
+ - lib/redns/fragment.rb
39
+ - lib/redns/message.rb
40
+ - lib/redns/name.rb
41
+ - lib/redns/question.rb
42
+ - lib/redns/record.rb
43
+ - lib/redns/record/mx.rb
44
+ - lib/redns/record/null.rb
45
+ - lib/redns/record/soa.rb
46
+ - lib/redns/resource.rb
47
+ - lib/redns/support.rb
48
+ - redns.gemspec
49
+ - test/helper.rb
50
+ - test/test_redns.rb
51
+ - test/test_redns_address.rb
52
+ - test/test_redns_buffer.rb
53
+ - test/test_redns_fragment.rb
54
+ - test/test_redns_message.rb
55
+ - test/test_redns_name.rb
56
+ - test/test_redns_question.rb
57
+ - test/test_redns_resource.rb
58
+ - test/test_redns_support.rb
59
+ has_rdoc: true
60
+ homepage: http://github.com/tadman/redns
61
+ licenses: []
62
+
63
+ post_install_message:
64
+ rdoc_options:
65
+ - --charset=UTF-8
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ segments:
74
+ - 0
75
+ version: "0"
76
+ required_rubygems_version: !ruby/object:Gem::Requirement
77
+ none: false
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ segments:
82
+ - 0
83
+ version: "0"
84
+ requirements: []
85
+
86
+ rubyforge_project:
87
+ rubygems_version: 1.3.7
88
+ signing_key:
89
+ specification_version: 3
90
+ summary: Ruby Reactor-Ready DNS Library
91
+ test_files:
92
+ - test/helper.rb
93
+ - test/test_redns.rb
94
+ - test/test_redns_address.rb
95
+ - test/test_redns_buffer.rb
96
+ - test/test_redns_fragment.rb
97
+ - test/test_redns_message.rb
98
+ - test/test_redns_name.rb
99
+ - test/test_redns_question.rb
100
+ - test/test_redns_resource.rb
101
+ - test/test_redns_support.rb