redns 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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