rspec-dns 0.1.3 → 0.1.4
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.
- checksums.yaml +6 -14
- data/README.md +6 -1
- data/lib/rspec-dns/have_dns.rb +14 -1
- data/rspec-dns.gemspec +1 -1
- data/spec/rspec-dns/example.zone +14 -0
- data/spec/rspec-dns/have_dns_spec.rb +51 -0
- metadata +11 -10
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
ZTAyZWQ5NGM5YWRhNmI3YzIxOWNiZGUxMzcxNWE5ZTI1ZjY1YjVkYjY5YjI2
|
10
|
-
YjBhMTEzMWQ2OGEzYWYxYTE4MGJjOTFlYzRiNWQ0ZjJkODcyZmUzZmNhZjgw
|
11
|
-
YWFiZWE1MzQzMTk0Mzk0OTMyZDk3ZjcyOTI4YmZlNjJkNjYwN2I=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
NmEzYmE0ZjdiYmJhODJlZjllYjhjMjVkZGQ3MjMxZDc0Njc1NDE5ZjAxZjZj
|
14
|
-
YTdiNDE3ZjQzMTQxZjc1ODhlMjZlZTgzMTQyNTZjNTY1Y2M1M2NmYTE4ZTJm
|
15
|
-
MDIwZTIzOTRmZWUxNzE0ZmYyNzY0YjA5ZDg2ZGJkZjA1Y2YyZDE=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e2d0c99bfad61e22a989ccc3544a63b9a84bb7f1
|
4
|
+
data.tar.gz: c8f66c1099c58144d58bf5bc7887ba0367f2d6ed
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: af49390d95c4cbf8ae1fc2ba64734c8796f4b73224e5009affe4e04f6fc56869b76e1bd9a203c41091038b0c0e5dbce88f39972da85464c941c44b2899ac59d5
|
7
|
+
data.tar.gz: 4b6215758311f378b00bedfe13e4a54a4a5646aa00aa53d0b113b4af47d157b7259af629100c521c09aff2dbf8d9f73de0078f868f094977c069f53d27acce87
|
data/README.md
CHANGED
@@ -61,6 +61,7 @@ Currently the following chaining methods are supported:
|
|
61
61
|
- in\_authority
|
62
62
|
- refuse\_request
|
63
63
|
- config
|
64
|
+
- in\_zone\_file
|
64
65
|
|
65
66
|
Here's some usage examples:
|
66
67
|
|
@@ -77,9 +78,13 @@ Here's some usage examples:
|
|
77
78
|
expect('example.com').to have_dns.with_type('A').at_least(3)
|
78
79
|
end
|
79
80
|
|
80
|
-
it '
|
81
|
+
it 'checks with configuration' do
|
81
82
|
expect('example.com').to have_dns.with_type('A').config(nameserver: '192.0.2.4')
|
82
83
|
end
|
84
|
+
|
85
|
+
it 'checks zone file("example.zone") with specified origin("example.com.")' do
|
86
|
+
expect('example.com').to have_dns.with_type('A').in_zone_file('example.zone', 'example.com.')
|
87
|
+
end
|
83
88
|
```
|
84
89
|
|
85
90
|
The other method chains are actually [Dnsruby](http://dnsruby.rubyforge.org/classes/Dnsruby/RR.html) attributes on the record. You can prefix them with `and_`, `with_`, `and_with` or whatever your heart desires. The predicate is what is checked. The rest is syntactic sugar.
|
data/lib/rspec-dns/have_dns.rb
CHANGED
@@ -17,7 +17,9 @@ RSpec::Matchers.define :have_dns do
|
|
17
17
|
matched = _options.all? do |option, value|
|
18
18
|
begin
|
19
19
|
# To distinguish types because not all Resolv returns have type
|
20
|
-
if value
|
20
|
+
if ipaddr = (IPAddr.new(value) rescue nil) # IPAddr(v4/v6)?
|
21
|
+
ipaddr.include?(record.send(option).to_s)
|
22
|
+
elsif value.is_a? String
|
21
23
|
record.send(option).to_s == value
|
22
24
|
elsif value.is_a? Regexp
|
23
25
|
record.send(option).to_s =~ value
|
@@ -84,6 +86,11 @@ RSpec::Matchers.define :have_dns do
|
|
84
86
|
@config = c
|
85
87
|
end
|
86
88
|
|
89
|
+
chain :in_zone_file do |file = nil, origin = '.'|
|
90
|
+
@zone_file = file
|
91
|
+
@zone_origin = origin
|
92
|
+
end
|
93
|
+
|
87
94
|
def method_missing(m, *args, &block)
|
88
95
|
if m.to_s =~ /(and\_with|and|with)?\_(.*)$/
|
89
96
|
_options[$2.to_sym] = args.first
|
@@ -126,6 +133,12 @@ RSpec::Matchers.define :have_dns do
|
|
126
133
|
end
|
127
134
|
|
128
135
|
def _records
|
136
|
+
if @zone_file
|
137
|
+
@_records = Dnsruby::Message.new
|
138
|
+
rrs = Dnsruby::ZoneReader.new(@zone_origin).process_file(@zone_file)
|
139
|
+
rrs.each { |rr| @_records.add_answer(rr) }
|
140
|
+
end
|
141
|
+
|
129
142
|
@_records ||= begin
|
130
143
|
config = _config || {}
|
131
144
|
# Backwards compatible config option for rspec-dnsruby
|
data/rspec-dns.gemspec
CHANGED
@@ -31,6 +31,16 @@ describe 'rspec-dns matchers' do
|
|
31
31
|
.and_address('2001:DB8:6C::430')
|
32
32
|
end
|
33
33
|
|
34
|
+
it 'can evalutate an A/AAAA record with IPAddr range' do
|
35
|
+
stub_records(['example.com 86400 A 192.0.2.4',
|
36
|
+
'example.com 86400 AAAA 2001:DB8:6c::430'])
|
37
|
+
|
38
|
+
expect('example.com').to have_dns.with_type('A')
|
39
|
+
.and_address('192.0.2.0/24')
|
40
|
+
expect('example.com').to have_dns.with_type('AAAA')
|
41
|
+
.and_address('2001:DB8:6C::/64')
|
42
|
+
end
|
43
|
+
|
34
44
|
it 'can evalutate a CNAME record' do
|
35
45
|
stub_records(['www.example.com 300 IN CNAME example.com'])
|
36
46
|
|
@@ -106,6 +116,47 @@ describe 'rspec-dns matchers' do
|
|
106
116
|
end
|
107
117
|
end
|
108
118
|
|
119
|
+
context 'with zone file' do
|
120
|
+
it 'can evalutate records in zone file with origin' do
|
121
|
+
file = 'spec/rspec-dns/example.zone'
|
122
|
+
origin = 'example.com.'
|
123
|
+
|
124
|
+
expect('example.com').to have_dns.with_type('NS')
|
125
|
+
.and_domainname('ns.example.com')
|
126
|
+
.in_zone_file(file, origin)
|
127
|
+
expect('example.com').to have_dns.with_type('A')
|
128
|
+
.and_address('192.0.2.4')
|
129
|
+
.in_zone_file(file, origin)
|
130
|
+
expect('example.com').to have_dns.with_type('MX')
|
131
|
+
.and_preference(40).and_exchange('mail.example.com')
|
132
|
+
.in_zone_file(file, origin)
|
133
|
+
expect('www.example.com').to have_dns.with_type('A')
|
134
|
+
.and_address('192.0.2.4')
|
135
|
+
.in_zone_file(file, origin)
|
136
|
+
expect('www.example.com').to have_dns.with_type('AAAA')
|
137
|
+
.and_address('2001:DB8:6C::430')
|
138
|
+
.in_zone_file(file, origin)
|
139
|
+
end
|
140
|
+
it 'can evalutate records in zone file without origin' do
|
141
|
+
file = 'spec/rspec-dns/example.zone'
|
142
|
+
|
143
|
+
expect('.').to have_dns.with_type('NS')
|
144
|
+
.and_domainname('ns').in_zone_file(file)
|
145
|
+
expect('www').to have_dns.with_type('A')
|
146
|
+
.and_address('192.0.2.4').in_zone_file(file)
|
147
|
+
end
|
148
|
+
it 'can evalutate records with dns servers if file is nil' do
|
149
|
+
file = nil
|
150
|
+
stub_records(['example.com 86400 A 192.0.2.4'])
|
151
|
+
expect('example.com').to have_dns.with_type('A')
|
152
|
+
.and_address('192.0.2.4')
|
153
|
+
.in_zone_file(file)
|
154
|
+
expect('example.com').to have_dns.with_type('A')
|
155
|
+
.and_address('192.0.2.4')
|
156
|
+
.in_zone_file
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
109
160
|
context 'with changable connection timeout' do
|
110
161
|
it 'is_expected.to timeout within 3 seconds in default' do
|
111
162
|
stub_records(['example.com 86400 A 192.168.100.100']) do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rspec-dns
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Seth Vargo
|
@@ -11,34 +11,34 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2015-01-27 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: rake
|
18
18
|
requirement: !ruby/object:Gem::Requirement
|
19
19
|
requirements:
|
20
|
-
- -
|
20
|
+
- - '>='
|
21
21
|
- !ruby/object:Gem::Version
|
22
22
|
version: '0'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
31
|
name: rspec
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
requirements:
|
34
|
-
- -
|
34
|
+
- - '>='
|
35
35
|
- !ruby/object:Gem::Version
|
36
36
|
version: '2.9'
|
37
37
|
type: :runtime
|
38
38
|
prerelease: false
|
39
39
|
version_requirements: !ruby/object:Gem::Requirement
|
40
40
|
requirements:
|
41
|
-
- -
|
41
|
+
- - '>='
|
42
42
|
- !ruby/object:Gem::Version
|
43
43
|
version: '2.9'
|
44
44
|
- !ruby/object:Gem::Dependency
|
@@ -71,6 +71,7 @@ files:
|
|
71
71
|
- lib/rspec-dns.rb
|
72
72
|
- lib/rspec-dns/have_dns.rb
|
73
73
|
- rspec-dns.gemspec
|
74
|
+
- spec/rspec-dns/example.zone
|
74
75
|
- spec/rspec-dns/have_dns_spec.rb
|
75
76
|
- spec/spec_helper.rb
|
76
77
|
homepage: https://github.com/spotify/rspec-dns
|
@@ -83,22 +84,22 @@ require_paths:
|
|
83
84
|
- lib
|
84
85
|
required_ruby_version: !ruby/object:Gem::Requirement
|
85
86
|
requirements:
|
86
|
-
- -
|
87
|
+
- - '>='
|
87
88
|
- !ruby/object:Gem::Version
|
88
89
|
version: '0'
|
89
90
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
90
91
|
requirements:
|
91
|
-
- -
|
92
|
+
- - '>='
|
92
93
|
- !ruby/object:Gem::Version
|
93
94
|
version: '0'
|
94
95
|
requirements: []
|
95
96
|
rubyforge_project:
|
96
|
-
rubygems_version: 2.0.
|
97
|
+
rubygems_version: 2.0.3
|
97
98
|
signing_key:
|
98
99
|
specification_version: 4
|
99
100
|
summary: rspec-dns provides an easy-to-use DSL for testing your DNS records are responding
|
100
101
|
as they should.
|
101
102
|
test_files:
|
103
|
+
- spec/rspec-dns/example.zone
|
102
104
|
- spec/rspec-dns/have_dns_spec.rb
|
103
105
|
- spec/spec_helper.rb
|
104
|
-
has_rdoc:
|