dns_adapter 0.0.1 → 0.0.2

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: 3d8e3fd1654dd5ce7799fa3211d210ba4b633c67
4
- data.tar.gz: f72a3cabad09a65366f89b55fc6fca4111aae82c
3
+ metadata.gz: f19132b4cfb08ff5ec8ebf1d890930207c2b8878
4
+ data.tar.gz: 1b169dc215f89e09f844f64e4f0573704716b706
5
5
  SHA512:
6
- metadata.gz: 1630678f66915f648dceee32bc418021c3de846954824b03ef3bf0670b720f30d0944b1d9bc66457f706ea285a448418bc605597085e91b43165681993e773c9
7
- data.tar.gz: 2420893ee8679b6b13c3c8b21f62d35af148d474ed5f06dcdeb6ab7a8fd03d509f85255a4580213cb262186273e3c0c8530adb77eb79c13671e853de37738af0
6
+ metadata.gz: 95f8e9bebe8cbe45c4f9b4c8b102e4184228952c202d274b8b6595dea6a8ccc774c13f5a190e2eabd8976314d61d57da1da79d25bec9ac56444899e96fcef345
7
+ data.tar.gz: be86352abc7d1f4f5a038e6ead661fc620cc7f4955ea7d0078a6f10655b1efe5dd30cbe2f0bdddf33891ace87a6a913db2b71c3f2c80eb5aa10f5680108d8616
data/.travis.yml CHANGED
@@ -3,6 +3,7 @@ env:
3
3
  - CODECLIMATE_REPO_TOKEN=9881d1116b64b55a16845046a4a2dc43f12203d7201a33ce92fec4b7732e3c93
4
4
  rvm:
5
5
  - 2.0.0
6
- - 2.1.2
6
+ - 2.1
7
+ - 2.2
7
8
  - jruby-19mode
8
9
 
data/dns_adapter.gemspec CHANGED
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(/^(test|spec|features)\//)
19
19
  spec.require_paths = ['lib']
20
20
 
21
- spec.add_development_dependency 'bundler', '~> 1.7'
21
+ spec.add_development_dependency 'bundler'
22
22
  spec.add_development_dependency 'rake', '~> 10.0'
23
23
  spec.add_development_dependency 'rspec', '>= 3.0'
24
24
  spec.add_development_dependency 'rubocop'
@@ -16,7 +16,8 @@ module DNSAdapter
16
16
  fetch_records(domain, 'MX') do |record|
17
17
  {
18
18
  type: 'MX',
19
- exchange: record.exchange.to_s
19
+ exchange: record.exchange.to_s,
20
+ ttl: record.ttl
20
21
  }
21
22
  end
22
23
  end
@@ -25,7 +26,8 @@ module DNSAdapter
25
26
  fetch_records(arpa_address, 'PTR') do |record|
26
27
  {
27
28
  type: 'PTR',
28
- name: record.name.to_s
29
+ name: record.name.to_s,
30
+ ttl: record.ttl
29
31
  }
30
32
  end
31
33
  end
@@ -44,7 +46,8 @@ module DNSAdapter
44
46
  fetch_records(domain, type) do |record|
45
47
  {
46
48
  type: type,
47
- address: record.address.to_s
49
+ address: record.address.to_s,
50
+ ttl: record.ttl
48
51
  }
49
52
  end
50
53
  end
@@ -55,7 +58,8 @@ module DNSAdapter
55
58
  type: type,
56
59
  # Use strings.join('') to avoid JRuby issue where
57
60
  # data only returns the first string
58
- text: record.strings.join('')
61
+ text: record.strings.join(''),
62
+ ttl: record.ttl
59
63
  }
60
64
  end
61
65
  end
@@ -1,3 +1,3 @@
1
1
  module DNSAdapter
2
- VERSION = '0.0.1'
2
+ VERSION = '0.0.2'
3
3
  end
@@ -56,6 +56,16 @@ describe DNSAdapter::ResolvClient do
56
56
  subject.fetch_a_records(domain_with_trailing)
57
57
  end.to raise_error(DNSAdapter::TimeoutError)
58
58
  end
59
+
60
+ it 'should map the Resolv timeout errors to Coppertone errors' do
61
+ expect(Resolv::DNS).to receive(:new).and_return(mock_resolver)
62
+ expect(mock_resolver).to receive(:getresources)
63
+ .with(domain, Resolv::DNS::Resource::IN::A)
64
+ .and_return(nil)
65
+ expect do
66
+ subject.fetch_a_records(domain_with_trailing)
67
+ end.to raise_error(DNSAdapter::Error)
68
+ end
59
69
  end
60
70
 
61
71
  context '#fetch_aaaa_records' do
@@ -304,4 +314,58 @@ describe DNSAdapter::ResolvClient do
304
314
  .to raise_error(DNSAdapter::TimeoutError)
305
315
  end
306
316
  end
317
+
318
+ context '#fetch_ptr_records' do
319
+ let(:first_ptr_name) { SecureRandom.hex(10) }
320
+ let(:first_ptr_record) do
321
+ Resolv::DNS::Resource::IN::PTR.new(first_ptr_name)
322
+ end
323
+ let(:record_list) { [first_ptr_record] }
324
+ let(:arpa_domain) { '126.18.67.80.in-addr.arpa' }
325
+ let(:arpa_domain_with_trailing) { "#{arpa_domain}." }
326
+
327
+ it 'should map the Resolv classes to a set of hashes' do
328
+ expect(Resolv::DNS).to receive(:new).and_return(mock_resolver)
329
+ expect(mock_resolver).to receive(:getresources)
330
+ .with(arpa_domain, Resolv::DNS::Resource::IN::PTR)
331
+ .and_return(record_list)
332
+ results = subject.fetch_ptr_records(arpa_domain)
333
+ expect(results.size).to eq(record_list.length)
334
+ expect(results.map { |x| x[:type] })
335
+ .to eq(record_list.length.times.map { 'PTR' })
336
+ expect(results.map { |x| x[:name] }).to eq(
337
+ [first_ptr_name])
338
+ end
339
+
340
+ it 'should map when the domain has a trailing dot' do
341
+ expect(Resolv::DNS).to receive(:new).and_return(mock_resolver)
342
+ expect(mock_resolver).to receive(:getresources)
343
+ .with(arpa_domain, Resolv::DNS::Resource::IN::PTR)
344
+ .and_return(record_list)
345
+ results = subject.fetch_ptr_records(arpa_domain_with_trailing)
346
+ expect(results.size).to eq(record_list.length)
347
+ expect(results.map { |x| x[:type] })
348
+ .to eq(record_list.length.times.map { 'PTR' })
349
+ expect(results.map { |x| x[:name] }).to eq(
350
+ [first_ptr_name])
351
+ end
352
+
353
+ it 'should map the Resolv errors to Coppertone errors' do
354
+ expect(Resolv::DNS).to receive(:new).and_return(mock_resolver)
355
+ expect(mock_resolver).to receive(:getresources)
356
+ .with(arpa_domain, Resolv::DNS::Resource::IN::PTR)
357
+ .and_raise(Resolv::ResolvError)
358
+ expect { subject.fetch_ptr_records(arpa_domain_with_trailing) }
359
+ .to raise_error(DNSAdapter::Error)
360
+ end
361
+
362
+ it 'should map the Resolv timeout errors to Coppertone errors' do
363
+ expect(Resolv::DNS).to receive(:new).and_return(mock_resolver)
364
+ expect(mock_resolver).to receive(:getresources)
365
+ .with(arpa_domain, Resolv::DNS::Resource::IN::PTR)
366
+ .and_raise(Resolv::ResolvTimeout)
367
+ expect { subject.fetch_ptr_records(arpa_domain_with_trailing) }
368
+ .to raise_error(DNSAdapter::TimeoutError)
369
+ end
370
+ end
307
371
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dns_adapter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter M. Goldstein
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-27 00:00:00.000000000 Z
11
+ date: 2015-01-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.7'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.7'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
108
  version: '0'
109
109
  requirements: []
110
110
  rubyforge_project:
111
- rubygems_version: 2.4.1
111
+ rubygems_version: 2.4.5
112
112
  signing_key:
113
113
  specification_version: 4
114
114
  summary: An adapter layer for DNS queries.