assert_zone 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fa0ffd6f47f0c8ca157e80874169820de36d3aab
4
- data.tar.gz: e556bf0c5d46eca4db28a64cd97fde1cb17c4902
3
+ metadata.gz: b9e5033994b5619de166ece33a2f701161a3d70a
4
+ data.tar.gz: c3b867d3d040906dc9db71252d8395092f71eee0
5
5
  SHA512:
6
- metadata.gz: ce624793f4c312c70237e5eff306a32b878ef9f7d24236023e21e01e43064bf0b1b3441f63a93f2f6692e022837b5d347382637db40660c1a54384d3695d4a57
7
- data.tar.gz: c51a633907b983b39d2adb97e9ae499ffcbd87ffe49504cbb6f0d822cade7e63fb4eb44ba03d56309acacea1564d2dcdb2f1dab27ac08d4e2464ca6ca810cf89
6
+ metadata.gz: 65355bf62bd0e6374e04183bcc251a534866063fcdc388d66850514509ecb454578b422734cc9c0a4a32e84c347c277a7487892f5265c2accdf1fdab429d55f2
7
+ data.tar.gz: 9b6ff8dd6342f57844333e72481d68330c5a3a25be0ad5aae1556440a4296c834027a05f026d7bc13a7cc4cafc07fa84ed4e981d341ba4c3a253216d43c1d064
data/assert_zone.gemspec CHANGED
@@ -24,5 +24,5 @@ Gem::Specification.new do |spec|
24
24
 
25
25
  spec.add_dependency 'rspec', '~> 3.4.0'
26
26
  spec.add_dependency 'rspec-dns', '~> 0.1.6'
27
- spec.add_dependency 'dns-zone', '~> 0.2.0'
27
+ spec.add_dependency 'dns-zone', '~> 0.3.1'
28
28
  end
data/exe/assert_zone CHANGED
@@ -11,12 +11,25 @@ options = {
11
11
 
12
12
  OptionParser.new do |opts|
13
13
  opts.banner = "Usage: assert_zone ZONE_FILE [NAMESERVER] [options]"
14
- opts.on('--color', 'Use color') do |v|
14
+ opts.on('-c', '--color', 'Enable color in the output.') do
15
15
  options[:rspec_flags] << '--color'
16
16
  end
17
+ opts.on('-f', '--format FORMATTER', 'Choose a formatter.') do |v|
18
+ options[:rspec_flags] << '--format'
19
+ options[:rspec_flags] << v
20
+ end
17
21
  opts.on('--use-local-resolver', 'Use local resolver settings instead of explicit nameserver') do |v|
18
22
  options[:use_local_resolver] = true
19
23
  end
24
+ opts.on('--skip-ns', 'Skip NS records') do |v|
25
+ options[:skip_ns] = true
26
+ end
27
+ opts.on('--skip-soa', 'Skip SOA record') do |v|
28
+ options[:skip_soa] = true
29
+ end
30
+ opts.on('--ignore-ttl', 'Ignore TTL value') do |v|
31
+ options[:ignore_ttl] = true
32
+ end
20
33
  opts.on_tail('-h', '--help', 'Show this message') do
21
34
  puts opts
22
35
  exit
@@ -27,4 +40,6 @@ OptionParser.new do |opts|
27
40
  end
28
41
  end.parse!
29
42
 
30
- AssertZone.run(ARGV[0], nameserver: ARGV[1], rspec_flags: options[:rspec_flags], use_local_resolver: options[:use_local_resolver])
43
+ options[:nameserver] = ARGV[1]
44
+
45
+ AssertZone.run(ARGV[0], options)
data/lib/assert_zone.rb CHANGED
@@ -4,7 +4,7 @@ require 'rspec'
4
4
  require 'rspec-dns'
5
5
 
6
6
  module AssertZone
7
- def self.run(filename, nameserver: nil, rspec_flags: [], use_local_resolver: false)
7
+ def self.run(filename, nameserver: nil, rspec_flags: [], use_local_resolver: false, skip_soa: false, skip_ns: false, ignore_ttl: false)
8
8
  ns_config = {}
9
9
  ns_config[:nameserver] = nameserver if nameserver
10
10
 
@@ -18,20 +18,27 @@ module AssertZone
18
18
  end
19
19
 
20
20
  zone.records.each do |record|
21
- next if ['SOA', 'NS'].include?(record.type)
21
+ next if record.is_a?(DNS::Zone::RR::SOA) if skip_soa
22
+ next if record.is_a?(DNS::Zone::RR::NS) if skip_ns
22
23
 
23
24
  fqdn = record.label == '@' ? zone.origin : "#{record.label}.#{zone.origin}".chomp('.')
24
25
 
25
26
  describe fqdn do
26
- if record.is_a?(DNS::Zone::RR::A)
27
- it { is_expected.to have_dns.with_type(record.type).config(ns_config).and_ttl(record.ttl).and_address(record.address) }
28
- elsif record.is_a?(DNS::Zone::RR::CNAME)
29
- it { is_expected.to have_dns.with_type(record.type).config(ns_config).and_ttl(record.ttl).and_domainname(record.domainname.chomp('.')) }
30
- elsif record.is_a?(DNS::Zone::RR::TXT)
31
- it { is_expected.to have_dns.with_type(record.type).config(ns_config).and_ttl(record.ttl).and_data(record.text) }
32
- else
33
- it { is_expected.to have_dns.with_type(record.type).config(ns_config).and_ttl(record.ttl) }
34
- warn "WARN: Unsupported record type: #{record.type}. Value of record for #{fqdn} will not be tested."
27
+ it do
28
+ have_correct_dns = have_dns.with_type(record.type).config(ns_config)
29
+ have_correct_dns = have_correct_dns.and_ttl(record.ttl) unless ignore_ttl
30
+
31
+ if record.is_a?(DNS::Zone::RR::A)
32
+ have_correct_dns = have_correct_dns.and_address(record.address)
33
+ elsif record.is_a?(DNS::Zone::RR::CNAME)
34
+ have_correct_dns = have_correct_dns.and_domainname(record.domainname.chomp('.'))
35
+ elsif record.is_a?(DNS::Zone::RR::TXT)
36
+ have_correct_dns = have_correct_dns.and_data(record.text)
37
+ else
38
+ warn "WARN: Unsupported record type: #{record.type}. Value of #{record.type} record for #{fqdn} will not be tested."
39
+ end
40
+
41
+ is_expected.to have_correct_dns
35
42
  end
36
43
  end
37
44
  end
@@ -1,3 +1,3 @@
1
1
  module AssertZone
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: assert_zone
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Radcliffe
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-12-23 00:00:00.000000000 Z
11
+ date: 2016-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.2.0
75
+ version: 0.3.1
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.2.0
82
+ version: 0.3.1
83
83
  description: Assert that a DNS server returns the correct responses based on a zone
84
84
  file.
85
85
  email:
@@ -120,7 +120,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
120
  version: '0'
121
121
  requirements: []
122
122
  rubyforge_project:
123
- rubygems_version: 2.4.5.1
123
+ rubygems_version: 2.5.1
124
124
  signing_key:
125
125
  specification_version: 4
126
126
  summary: Assert DNS zone files.