splicer-dns_made_easy 1.2.6 → 2.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,10 +12,6 @@ module Splicer
12
12
  def provider
13
13
  Provider.new(self)
14
14
  end
15
-
16
- def client
17
- Client.new(key, secret)
18
- end
19
15
  end
20
16
 
21
17
  end
@@ -9,13 +9,11 @@ module Splicer
9
9
  @data = params
10
10
  end
11
11
 
12
- def id?
12
+ def persisted?
13
13
  !!@id
14
14
  end
15
+ alias_method :id?, :persisted?
15
16
 
16
- def persisted?
17
- id?
18
- end
19
17
  end
20
18
 
21
19
  end
@@ -7,7 +7,7 @@ module Splicer
7
7
 
8
8
  def initialize(config)
9
9
  @config = config
10
- @client = config.client
10
+ @client = Client.new(config.key, config.secret)
11
11
  end
12
12
 
13
13
  def create_zone(zone)
@@ -15,36 +15,12 @@ module Splicer
15
15
  domain = find_domain(zone.name)
16
16
  return false if domain.persisted?
17
17
 
18
- client.post('dns/managed', name: zone.name)
19
-
20
- zone.records.each do |record|
21
- create_record(domain.id, record)
22
- end
23
- end
24
-
25
- def update_zone(zone)
26
- Splicer.logger.debug "[SPLICER][DNSMADEEASY] #update_zone zone=#{zone.inspect}"
27
- rewrite_zone(zone)
28
- end
29
-
30
- def rewrite_zone(zone)
31
- Splicer.logger.debug "[SPLICER][DNSMADEEASY] #rewrite_zone zone=#{zone.inspect}"
32
- domain = find_domain(zone.name)
33
-
34
- unless domain.persisted?
35
- client.post('dns/managed', name: zone.name)
36
- domain = find_domain(zone.name)
37
- end
38
-
39
- if domain.persisted?
40
- fetch_records(domain.id).each do |record|
41
- delete_record(domain.id, record.id)
42
- end
43
- end
18
+ create_domain(zone)
44
19
 
45
20
  zone.records.each do |record|
46
21
  create_record(domain.id, record)
47
22
  end
23
+ true
48
24
  end
49
25
 
50
26
  def delete_zone(zone)
@@ -72,18 +48,19 @@ module Splicer
72
48
 
73
49
  records = find_records(record.name, record.type, domain.id)
74
50
  return false if records.empty?
75
-
76
51
  update_record(domain.id, records.first.id, record)
77
52
  end
78
53
 
79
54
  def create_record_in_zone(record, zone)
80
55
  Splicer.logger.debug "[SPLICER][DNSMADEEASY] #create_record_in_zone record=#{record.inspect} zone=#{zone.inspect}"
81
56
  domain = find_domain(zone.name)
82
- return false unless domain.persisted?
57
+ unless domain.persisted?
58
+ create_domain(zone)
59
+ domain = find_domain(zone.name)
60
+ end
83
61
 
84
62
  records = find_records(record.name, record.type, domain.id)
85
63
  return false unless records.empty?
86
-
87
64
  create_record(domain.id, record)
88
65
  end
89
66
 
@@ -92,7 +69,7 @@ module Splicer
92
69
  # @param [Integer] domain_id
93
70
  # @return [Array<Splicer::DnsMadeEasy::Record>]
94
71
  def fetch_records(domain_id)
95
- response = JSON.parse(client.get(records_resource_url(domain_id)))
72
+ response = JSON.parse(client.get(record_url(domain_id)))
96
73
  list = []
97
74
  response['data'].each do |r|
98
75
  list << Record.new(r)
@@ -103,13 +80,14 @@ module Splicer
103
80
  end
104
81
 
105
82
  # @param [Integer] domain_id
83
+ # @param [String] type
106
84
  # @return [Array<Splicer::DnsMadeEasy::Record>]
107
85
  def find_records(name, type, domain_id)
108
86
  payload = {
109
87
  type: type,
110
88
  recordName: name ? name : ''
111
89
  }
112
- response = JSON.parse(client.get(records_resource_url(domain_id), payload))
90
+ response = JSON.parse(client.get(record_url(domain_id), payload))
113
91
  if response['data'].is_a?(Array)
114
92
  list = []
115
93
  response['data'].each do |params|
@@ -120,15 +98,20 @@ module Splicer
120
98
  [Record.new(response['data'])]
121
99
  end
122
100
  rescue Splicer::Errors::Error => error
123
- Splicer.logger.debug "[SPLICER][DNSMADEEASY] #{error}"
124
101
  []
125
102
  end
126
103
 
104
+ def create_domain(zone)
105
+ client.post('dns/managed', name: zone.name)
106
+ end
107
+
127
108
  # @param [Integer] domain_id
128
109
  # @param [Splicer::Records::Record] splicer_record
129
110
  # @return [String]
130
111
  def create_record(domain_id, splicer_record)
131
- client.post(records_resource_url(domain_id), record_resource_payload(splicer_record))
112
+ url = record_url(domain_id)
113
+ payload = record_payload(splicer_record)
114
+ client.post(url, payload)
132
115
  end
133
116
 
134
117
  # @param [Integer] record_id
@@ -136,19 +119,23 @@ module Splicer
136
119
  # @param [Splicer::Records::Record] splicer_record
137
120
  # @return [String]
138
121
  def update_record(domain_id, record_id, splicer_record)
139
- client.put(records_resource_url(domain_id, record_id), record_resource_payload(splicer_record).merge({id: record_id}))
122
+ url = record_url(domain_id, record_id)
123
+ payload = record_payload(splicer_record).merge({id: record_id})
124
+ client.put(url, payload)
140
125
  end
141
126
 
142
127
  # @param [Integer] record_id
143
128
  # @param [Integer] domain_id
144
129
  # @return [String]
145
130
  def delete_record(domain_id, record_id)
146
- client.delete(records_resource_url(domain_id, record_id), id: record_id)
131
+ url = record_url(domain_id, record_id)
132
+ payload = { id: record_id }
133
+ client.delete(url, payload)
147
134
  end
148
135
 
149
136
  # @param [Integer] domain_id
150
137
  # @return [String]
151
- def records_resource_url(domain_id, record_id=nil)
138
+ def record_url(domain_id, record_id=nil)
152
139
  if record_id
153
140
  "dns/managed/#{domain_id}/records/#{record_id}"
154
141
  else
@@ -172,7 +159,7 @@ module Splicer
172
159
  # Returns a hash for the record data
173
160
  # @param [Splicer::Records::Record] record
174
161
  # @return [Hash]
175
- def record_resource_payload(record)
162
+ def record_payload(record)
176
163
  payload = {
177
164
  type: record.type,
178
165
  gtdLocation: 'DEFAULT',
@@ -11,9 +11,10 @@ module Splicer
11
11
  @data = params
12
12
  end
13
13
 
14
- def id?
14
+ def persisted?
15
15
  !!@id
16
16
  end
17
+ alias_method :id?, :persisted?
17
18
  end
18
19
 
19
20
  end
@@ -1,5 +1,5 @@
1
1
  module Splicer
2
2
  module DnsMadeEasy
3
- VERSION = "1.2.6"
3
+ VERSION = "2.1.1"
4
4
  end
5
5
  end
data/spec/spec_helper.rb CHANGED
@@ -5,3 +5,6 @@ require 'splicer/dns_made_easy'
5
5
  RSpec.configure do |config|
6
6
  config.mock_with :rspec
7
7
  end
8
+
9
+ Splicer.configure do |config|
10
+ end
@@ -3,5 +3,24 @@ require 'spec_helper'
3
3
  describe Splicer::DnsMadeEasy::Domain do
4
4
 
5
5
  describe '#initialize' do
6
+ def params
7
+ { 'id' => 1 }
8
+ end
9
+ subject { Splicer::DnsMadeEasy::Domain.new(params) }
10
+ its(:id) { should eq(1) }
11
+ its(:data) { should eq(params) }
12
+ end
13
+
14
+ describe '#persisted?' do
15
+ subject { domain.persisted? }
16
+ context 'when the domain is persisted' do
17
+ let(:domain) { Splicer::DnsMadeEasy::Domain.new({'id' => 1}) }
18
+ it { should be_true }
19
+ end
20
+
21
+ context 'when the domain is not persisted' do
22
+ let(:domain) { Splicer::DnsMadeEasy::Domain.new }
23
+ it { should be_false }
24
+ end
6
25
  end
7
26
  end
@@ -3,32 +3,54 @@ require 'spec_helper'
3
3
  describe Splicer::DnsMadeEasy::Provider do
4
4
  let(:config) { Splicer::DnsMadeEasy::Config.new('key','secret') }
5
5
  let(:provider) { Splicer::DnsMadeEasy::Provider.new(config) }
6
+ let(:domain) { Splicer::DnsMadeEasy::Domain.new({'id' => 1}) }
6
7
 
7
8
  describe '#create_zone' do
9
+ let(:zone) { Splicer::Zone.new('rspectesting.com') }
8
10
  subject { provider.create_zone(zone) }
9
- end
10
11
 
11
- describe '#update_zone' do
12
- subject { provider.update_zone(zone) }
12
+ context 'when the domain exists' do
13
+ before do
14
+ provider.stub(:find_domain).and_return(domain)
15
+ provider.stub(:create_domain).and_raise(Splicer::Errors::RequestError)
16
+ end
17
+ it { should be_false }
18
+ end
19
+
20
+ context 'when the domain exists' do
21
+ before do
22
+ provider.stub(:find_domain).and_return(Splicer::DnsMadeEasy::Domain.new)
23
+ provider.stub(:create_domain).and_return(true)
24
+ provider.stub(:create_record).and_return(true)
25
+ end
26
+ it { should be_true }
27
+ end
13
28
  end
14
29
 
15
- describe '#rewrite_zone' do
16
- subject { provider.rewrite_zone(zone) }
17
- end
18
30
 
19
31
  describe '#delete_zone' do
32
+ let(:zone) { Splicer::Zone.new('rspectesting.com') }
20
33
  subject { provider.delete_zone(zone) }
21
34
  end
22
35
 
36
+
23
37
  describe '#delete_record_in_zone' do
38
+ let(:record) { Splicer::Records::ARecord.new(nil, '127.0.0.1') }
39
+ let(:zone) { Splicer::Zone.new('rspectesting.com') }
24
40
  subject { provider.delete_record_in_zone(record, zone) }
25
41
  end
26
42
 
43
+
27
44
  describe '#update_record_in_zone' do
45
+ let(:record) { Splicer::Records::ARecord.new(nil, '127.0.0.1') }
46
+ let(:zone) { Splicer::Zone.new('rspectesting.com') }
28
47
  subject { provider.update_record_in_zone(record, zone) }
29
48
  end
30
49
 
50
+
31
51
  describe '#create_record_in_zone' do
52
+ let(:record) { Splicer::Records::ARecord.new(nil, '127.0.0.1') }
53
+ let(:zone) { Splicer::Zone.new('rspectesting.com') }
32
54
  subject { provider.create_record_in_zone(record, zone) }
33
55
  end
34
56
  end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Splicer::DnsMadeEasy::Record do
4
+ describe '#initialize' do
5
+ def params
6
+ {
7
+ 'id' => 1,
8
+ 'type' => 'A',
9
+ 'value' => '127.0.0.1',
10
+ 'ttl' => 3600
11
+ }
12
+ end
13
+ subject { Splicer::DnsMadeEasy::Record.new(params) }
14
+ its(:id) { should eq(params['id']) }
15
+ its(:type) { should eq(params['type']) }
16
+ its(:value) { should eq(params['value']) }
17
+ its(:ttl) { should eq(params['ttl']) }
18
+ its(:data) { should eq(params) }
19
+ end
20
+
21
+ describe '#persisted?' do
22
+ subject { record.persisted? }
23
+ context 'when the record is persisted' do
24
+ let(:record) { Splicer::DnsMadeEasy::Record.new({'id' => 1}) }
25
+ it { should be_true }
26
+ end
27
+
28
+ context 'when the record is not persisted' do
29
+ let(:record) { Splicer::DnsMadeEasy::Record.new }
30
+ it { should be_false }
31
+ end
32
+ end
33
+ end
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency('splicer', '~> 1.1')
21
+ spec.add_dependency('splicer', '~> 2.1')
22
22
  spec.add_dependency('rest-client')
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.3"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: splicer-dns_made_easy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.6
4
+ version: 2.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-21 00:00:00.000000000 Z
12
+ date: 2013-05-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: splicer
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '1.1'
21
+ version: '2.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '1.1'
29
+ version: '2.1'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rest-client
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -119,6 +119,7 @@ files:
119
119
  - spec/splicer/dns_made_easy/config_spec.rb
120
120
  - spec/splicer/dns_made_easy/domain_spec.rb
121
121
  - spec/splicer/dns_made_easy/provider_spec.rb
122
+ - spec/splicer/dns_made_easy/record_spec.rb
122
123
  - splicer-dns_made_easy.gemspec
123
124
  homepage: https://github.com/zippykid/dns_made_easy
124
125
  licenses:
@@ -135,7 +136,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
135
136
  version: '0'
136
137
  segments:
137
138
  - 0
138
- hash: 992635597092004664
139
+ hash: 2898526824841093068
139
140
  required_rubygems_version: !ruby/object:Gem::Requirement
140
141
  none: false
141
142
  requirements:
@@ -144,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
145
  version: '0'
145
146
  segments:
146
147
  - 0
147
- hash: 992635597092004664
148
+ hash: 2898526824841093068
148
149
  requirements: []
149
150
  rubyforge_project:
150
151
  rubygems_version: 1.8.25
@@ -157,3 +158,4 @@ test_files:
157
158
  - spec/splicer/dns_made_easy/config_spec.rb
158
159
  - spec/splicer/dns_made_easy/domain_spec.rb
159
160
  - spec/splicer/dns_made_easy/provider_spec.rb
161
+ - spec/splicer/dns_made_easy/record_spec.rb