assert_zone 0.2.0 → 0.3.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.
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.