dnsimple 7.0.0 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/.github/CODEOWNERS +1 -0
  3. data/.github/dependabot.yml +11 -1
  4. data/.github/workflows/ci.yml +67 -0
  5. data/.github/workflows/release.yml +28 -0
  6. data/.markdownlint.yaml +3 -0
  7. data/.rubocop.yml +2 -5
  8. data/.rubocop_dnsimple.yml +28 -18
  9. data/.rubocop_todo.yml +1 -1
  10. data/.yamllint.yml +29 -0
  11. data/CHANGELOG.md +19 -13
  12. data/CONTRIBUTING.md +6 -21
  13. data/Gemfile +1 -1
  14. data/LICENSE.txt +1 -1
  15. data/README.md +5 -9
  16. data/Rakefile +1 -1
  17. data/UPGRADING.md +4 -5
  18. data/dnsimple.gemspec +1 -1
  19. data/lib/dnsimple/client/certificates.rb +5 -7
  20. data/lib/dnsimple/client/clients.rb +0 -5
  21. data/lib/dnsimple/client/domains_delegation_signer_records.rb +5 -4
  22. data/lib/dnsimple/client/registrar.rb +0 -29
  23. data/lib/dnsimple/default.rb +9 -9
  24. data/lib/dnsimple/extra.rb +1 -1
  25. data/lib/dnsimple/struct/delegation_signer_record.rb +3 -0
  26. data/lib/dnsimple/struct/tld.rb +3 -0
  27. data/lib/dnsimple/version.rb +1 -1
  28. data/spec/dnsimple/client/certificates_spec.rb +8 -9
  29. data/spec/dnsimple/client/contacts_spec.rb +2 -2
  30. data/spec/dnsimple/client/domains_collaborators_spec.rb +2 -2
  31. data/spec/dnsimple/client/domains_delegation_signer_records_spec.rb +3 -2
  32. data/spec/dnsimple/client/domains_email_forwards_spec.rb +2 -2
  33. data/spec/dnsimple/client/domains_spec.rb +2 -2
  34. data/spec/dnsimple/client/registrar_spec.rb +1 -49
  35. data/spec/dnsimple/client/services_spec.rb +1 -1
  36. data/spec/dnsimple/client/templates_records_spec.rb +1 -1
  37. data/spec/dnsimple/client/templates_spec.rb +2 -2
  38. data/spec/dnsimple/client/tlds_spec.rb +2 -1
  39. data/spec/dnsimple/client/zones_records_spec.rb +3 -3
  40. data/spec/dnsimple/client/zones_spec.rb +2 -2
  41. data/spec/dnsimple/client_spec.rb +32 -33
  42. data/spec/dnsimple/extra_spec.rb +1 -1
  43. data/spec/fixtures.http/createDelegationSignerRecord/created.http +1 -1
  44. data/spec/fixtures.http/getDelegationSignerRecord/success.http +1 -1
  45. data/spec/fixtures.http/getTld/success.http +1 -1
  46. data/spec/fixtures.http/listDelegationSignerRecords/success.http +1 -1
  47. data/spec/fixtures.http/listTlds/success.http +1 -1
  48. metadata +10 -186
  49. data/.travis.yml +0 -25
@@ -23,11 +23,6 @@ module Dnsimple
23
23
  @services[:domains] ||= Client::DomainsService.new(self)
24
24
  end
25
25
 
26
- # @return [Dnsimple::Client::DomainServicesService] The domain-services-related API proxy.
27
- def domain_services
28
- @services[:domains] ||= Client::DomainServicesService.new(self)
29
- end
30
-
31
26
  # @return [Dnsimple::Client::IdentityService] The identity-related API proxy.
32
27
  def identity
33
28
  @services[:auth] ||= Client::IdentityService.new(self)
@@ -67,15 +67,16 @@ module Dnsimple
67
67
  # @param [#to_s] domain_id The domain ID or domain name
68
68
  # @param [Hash] attributes
69
69
  # @option attributes [Integer] :algorithm DNSSEC algorithm as number (required)
70
- # @option attributes [String] :digest The hexidecimal representation of the digest of the corresponding DNSKEY record (required)
71
- # @option attributes [Integer] :digest_type DNSSEC digest type (required)
72
- # @option attributes [String] :keytag A keytag that references the corresponding DNSKEY record (required)
70
+ # @option attributes [String] :digest The hexidecimal representation of the digest of the corresponding DNSKEY record (required if TLD requires DS data)
71
+ # @option attributes [Integer] :digest_type DNSSEC digest type (required if TLD requires DS data)
72
+ # @option attributes [String] :keytag A keytag that references the corresponding DNSKEY record (required if TLD requires DS data)
73
+ # @option attributes [String] :public_key A public key that references the corresponding DNSKEY record (required if TLD requires KEY data)
73
74
  # @param [Hash] options
74
75
  # @return [Dnsimple::Response<Dnsimple::Struct::DelegationSignerRecord>]
75
76
  #
76
77
  # @raise [Dnsimple::RequestError]
77
78
  def create_delegation_signer_record(account_id, domain_id, attributes, options = {})
78
- Extra.validate_mandatory_attributes(attributes, [:algorithm, :digest, :digest_type, :keytag])
79
+ Extra.validate_mandatory_attributes(attributes, [:algorithm])
79
80
  response = client.post(Client.versioned("/%s/domains/%s/ds_records" % [account_id, domain_id]), attributes, options)
80
81
 
81
82
  Dnsimple::Response.new(response, Struct::DelegationSignerRecord.new(response["data"]))
@@ -24,35 +24,6 @@ module Dnsimple
24
24
  Dnsimple::Response.new(response, Struct::DomainCheck.new(response["data"]))
25
25
  end
26
26
 
27
- # Checks the premium price for a domain
28
- #
29
- # @see https://developer.dnsimple.com/v2/registrar/#premium-price
30
- #
31
- # @example Check the ruby.codes premium price:
32
- # client.registrar.domain_premium_price(1010, "ruby.codes")
33
- #
34
- # @example Check the ruby.codes premium price for transfer:
35
- # client.registrar.domain_premium_price(1010, "ruby.codes", action: "transfer")
36
- #
37
- # @param [Integer] account_id the account ID
38
- # @param [#to_s] domain_name the domain name to check
39
- # @param [Hash] options
40
- # @option options [String] :action Optional action between "registration",
41
- # "renewal", and "transfer". If omitted, it defaults to "registration".
42
- # @return [Struct::DomainPremiumPrice]
43
- #
44
- # @raise [RequestError] When the request fails.
45
- #
46
- # @deprecated Use {#get_domain_prices} instead of this one as it will soon be removed from the API.
47
- def domain_premium_price(account_id, domain_name, options = {})
48
- Dnsimple.deprecate("Use {#get_domain_prices} instead of this one as it will soon be removed from the API.")
49
- endpoint = Client.versioned("/%s/registrar/domains/%s/premium_price" % [account_id, domain_name])
50
- options[:query] = { action: options.delete(:action) } if options.key?(:action)
51
- response = client.get(endpoint, options)
52
-
53
- Dnsimple::Response.new(response, Struct::DomainPremiumPrice.new(response["data"]))
54
- end
55
-
56
27
  # Get prices for a domain.
57
28
  # @see https://developer.dnsimple.com/v2/registrar/#getDomainPrices
58
29
  #
@@ -9,7 +9,7 @@ module Dnsimple
9
9
  BASE_URL = "https://api.dnsimple.com/"
10
10
 
11
11
  # Default User Agent header
12
- USER_AGENT = "dnsimple-ruby/#{VERSION}"
12
+ USER_AGENT = "dnsimple-ruby/#{VERSION}".freeze
13
13
 
14
14
  class << self
15
15
 
@@ -30,49 +30,49 @@ module Dnsimple
30
30
  # Configuration options
31
31
  # @return [Hash]
32
32
  def options
33
- keys.map { |key| [key, send(key)] }.to_h
33
+ keys.to_h { |key| [key, send(key)] }
34
34
  end
35
35
 
36
36
  # Default API endpoint from ENV or {BASE_URL}
37
37
  # @return [String]
38
38
  def base_url
39
- ENV['DNSIMPLE_BASE_URL'] || BASE_URL
39
+ ENV.fetch('DNSIMPLE_BASE_URL', BASE_URL)
40
40
  end
41
41
 
42
42
  # Default DNSimple username for Basic Auth from ENV
43
43
  # @return [String]
44
44
  def username
45
- ENV['DNSIMPLE_USERNAME']
45
+ ENV.fetch('DNSIMPLE_USERNAME', nil)
46
46
  end
47
47
 
48
48
  # Default DNSimple password for Basic Auth from ENV
49
49
  # @return [String]
50
50
  def password
51
- ENV['DNSIMPLE_PASSWORD']
51
+ ENV.fetch('DNSIMPLE_PASSWORD', nil)
52
52
  end
53
53
 
54
54
  # Default DNSimple access token for OAuth authentication from ENV
55
55
  # @return [String]
56
56
  def access_token
57
- ENV['DNSIMPLE_ACCESS_TOKEN']
57
+ ENV.fetch('DNSIMPLE_ACCESS_TOKEN', nil)
58
58
  end
59
59
 
60
60
  # Default DNSimple Domain API Token for Token Auth from ENV
61
61
  # @return [String]
62
62
  def domain_api_token
63
- ENV['DNSIMPLE_API_DOMAIN_TOKEN']
63
+ ENV.fetch('DNSIMPLE_API_DOMAIN_TOKEN', nil)
64
64
  end
65
65
 
66
66
  # Default User-Agent header string from ENV
67
67
  # @return [String]
68
68
  def user_agent
69
- ENV['DNSIMPLE_USER_AGENT']
69
+ ENV.fetch('DNSIMPLE_USER_AGENT', nil)
70
70
  end
71
71
 
72
72
  # Default Proxy address:port from ENV
73
73
  # @return [String]
74
74
  def proxy
75
- ENV['DNSIMPLE_PROXY']
75
+ ENV.fetch('DNSIMPLE_PROXY', nil)
76
76
  end
77
77
 
78
78
  end
@@ -37,7 +37,7 @@ module Dnsimple
37
37
  deep_merge(this_value, other_value, &block)
38
38
  else
39
39
  if block && key?(current_key)
40
- block.call(current_key, this_value, other_value)
40
+ yield(current_key, this_value, other_value)
41
41
  else
42
42
  other_value
43
43
  end
@@ -22,6 +22,9 @@ module Dnsimple
22
22
  # @return [String] The keytag for the associated DNSKEY.
23
23
  attr_accessor :keytag
24
24
 
25
+ # @return [String] The public key that references the corresponding DNSKEY record.
26
+ attr_accessor :public_key
27
+
25
28
  # @return [String] When the delegation signing record was created in DNSimple.
26
29
  attr_accessor :created_at
27
30
 
@@ -30,6 +30,9 @@ module Dnsimple
30
30
 
31
31
  # @return [Boolean] True if DNSimple supports inbound transfers for this TLD.
32
32
  attr_accessor :transfer_enabled
33
+
34
+ # @return [String, nil] Type of data interface required for DNSSEC for this TLD.
35
+ attr_accessor :dnssec_interface_type
33
36
  end
34
37
 
35
38
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dnsimple
4
- VERSION = "7.0.0"
4
+ VERSION = "8.0.0"
5
5
  end
@@ -68,8 +68,8 @@ describe Dnsimple::Client, ".certificates" do
68
68
  let(:domain_id) { "dnsimple.us" }
69
69
 
70
70
  it "delegates to client.paginate" do
71
- expect(subject).to receive(:paginate).with(:certificates, account_id, domain_id, foo: "bar")
72
- subject.all_certificates(account_id, domain_id, foo: "bar")
71
+ expect(subject).to receive(:paginate).with(:certificates, account_id, domain_id, { foo: "bar" })
72
+ subject.all_certificates(account_id, domain_id, { foo: "bar" })
73
73
  end
74
74
 
75
75
  it "supports sorting" do
@@ -232,7 +232,6 @@ describe Dnsimple::Client, ".certificates" do
232
232
  describe "#purchase_letsencrypt_certificate" do
233
233
  let(:account_id) { 1010 }
234
234
  let(:domain_id) { "bingo.pizza" }
235
- let(:contact_id) { 100 }
236
235
 
237
236
  before do
238
237
  stub_request(:post, %r{/v2/#{account_id}/domains/#{domain_id}/certificates/letsencrypt})
@@ -240,7 +239,7 @@ describe Dnsimple::Client, ".certificates" do
240
239
  end
241
240
 
242
241
  it "builds the correct request" do
243
- attributes = { contact_id: contact_id }
242
+ attributes = {}
244
243
  subject.purchase_letsencrypt_certificate(account_id, domain_id, attributes)
245
244
 
246
245
  expect(WebMock).to have_requested(:post, "https://api.dnsimple.test/v2/#{account_id}/domains/#{domain_id}/certificates/letsencrypt")
@@ -249,7 +248,7 @@ describe Dnsimple::Client, ".certificates" do
249
248
  end
250
249
 
251
250
  it "passes extra attributes" do
252
- attributes = { contact_id: contact_id, name: "www", auto_renew: true, alternate_names: ["api.example.com"] }
251
+ attributes = { name: "www", auto_renew: true, alternate_names: ["api.example.com"] }
253
252
  subject.purchase_letsencrypt_certificate(account_id, domain_id, attributes)
254
253
 
255
254
  expect(WebMock).to have_requested(:post, "https://api.dnsimple.test/v2/#{account_id}/domains/#{domain_id}/certificates/letsencrypt")
@@ -258,7 +257,7 @@ describe Dnsimple::Client, ".certificates" do
258
257
  end
259
258
 
260
259
  it "returns the certificate purchase" do
261
- response = subject.purchase_letsencrypt_certificate(account_id, domain_id, contact_id: contact_id)
260
+ response = subject.purchase_letsencrypt_certificate(account_id, domain_id)
262
261
  expect(response).to be_a(Dnsimple::Response)
263
262
 
264
263
  result = response.data
@@ -276,7 +275,7 @@ describe Dnsimple::Client, ".certificates" do
276
275
  .to_return(read_http_fixture("notfound-domain.http"))
277
276
 
278
277
  expect {
279
- subject.purchase_letsencrypt_certificate(account_id, domain_id, contact_id: contact_id)
278
+ subject.purchase_letsencrypt_certificate(account_id, domain_id)
280
279
  }.to raise_error(Dnsimple::NotFoundError)
281
280
  end
282
281
  end
@@ -311,7 +310,7 @@ describe Dnsimple::Client, ".certificates" do
311
310
  expect(result.common_name).to eq("www.bingo.pizza")
312
311
  expect(result.alternate_names).to eq([])
313
312
  expect(result.years).to eq(1)
314
- expect(result.csr).to be(nil)
313
+ expect(result.csr).to be_nil
315
314
  expect(result.state).to eq("requesting")
316
315
  expect(result.authority_identifier).to eq("letsencrypt")
317
316
  expect(result.auto_renew).to be(false)
@@ -421,7 +420,7 @@ describe Dnsimple::Client, ".certificates" do
421
420
  expect(result.common_name).to eq("www.bingo.pizza")
422
421
  expect(result.alternate_names).to eq([])
423
422
  expect(result.years).to eq(1)
424
- expect(result.csr).to be(nil)
423
+ expect(result.csr).to be_nil
425
424
  expect(result.state).to eq("requesting")
426
425
  expect(result.authority_identifier).to eq("letsencrypt")
427
426
  expect(result.auto_renew).to be(false)
@@ -73,8 +73,8 @@ describe Dnsimple::Client, ".contacts" do
73
73
  let(:account_id) { 1010 }
74
74
 
75
75
  it "delegates to client.paginate" do
76
- expect(subject).to receive(:paginate).with(:contacts, account_id, foo: "bar")
77
- subject.all_contacts(account_id, foo: "bar")
76
+ expect(subject).to receive(:paginate).with(:contacts, account_id, { foo: "bar" })
77
+ subject.all_contacts(account_id, { foo: "bar" })
78
78
  end
79
79
 
80
80
  it "supports sorting" do
@@ -116,8 +116,8 @@ describe Dnsimple::Client, ".domains" do
116
116
  result = response.data
117
117
  expect(result).to be_a(Dnsimple::Struct::Collaborator)
118
118
  expect(result.id).to be_a(Integer)
119
- expect(result.user_id).to be(nil)
120
- expect(result.accepted_at).to be(nil)
119
+ expect(result.user_id).to be_nil
120
+ expect(result.accepted_at).to be_nil
121
121
  expect(result.user_email).to eq(attributes.fetch(:email))
122
122
  expect(result.invitation).to be(true)
123
123
  end
@@ -86,8 +86,8 @@ describe Dnsimple::Client, ".domains" do
86
86
  let(:domain_id) { "example.com" }
87
87
 
88
88
  it "delegates to client.paginate" do
89
- expect(subject).to receive(:paginate).with(:delegation_signer_records, account_id, domain_id, foo: "bar")
90
- subject.all_delegation_signer_records(account_id, domain_id, foo: "bar")
89
+ expect(subject).to receive(:paginate).with(:delegation_signer_records, account_id, domain_id, { foo: "bar" })
90
+ subject.all_delegation_signer_records(account_id, domain_id, { foo: "bar" })
91
91
  end
92
92
 
93
93
  it "supports sorting" do
@@ -155,6 +155,7 @@ describe Dnsimple::Client, ".domains" do
155
155
  expect(result.digest).to eq("C1F6E04A5A61FBF65BF9DC8294C363CF11C89E802D926BDAB79C55D27BEFA94F")
156
156
  expect(result.digest_type).to eq("2")
157
157
  expect(result.keytag).to eq("44620")
158
+ expect(result.public_key).to be_nil
158
159
  expect(result.created_at).to eq("2017-03-03T13:49:58Z")
159
160
  expect(result.updated_at).to eq("2017-03-03T13:49:58Z")
160
161
  end
@@ -86,8 +86,8 @@ describe Dnsimple::Client, ".domains" do
86
86
  let(:domain_id) { "example.com" }
87
87
 
88
88
  it "delegates to client.paginate" do
89
- expect(subject).to receive(:paginate).with(:email_forwards, account_id, domain_id, foo: "bar")
90
- subject.all_email_forwards(account_id, domain_id, foo: "bar")
89
+ expect(subject).to receive(:paginate).with(:email_forwards, account_id, domain_id, { foo: "bar" })
90
+ subject.all_email_forwards(account_id, domain_id, { foo: "bar" })
91
91
  end
92
92
 
93
93
  it "supports sorting" do
@@ -79,8 +79,8 @@ describe Dnsimple::Client, ".domains" do
79
79
  let(:account_id) { 1010 }
80
80
 
81
81
  it "delegates to client.paginate" do
82
- expect(subject).to receive(:paginate).with(:domains, account_id, foo: "bar")
83
- subject.all_domains(account_id, foo: "bar")
82
+ expect(subject).to receive(:paginate).with(:domains, account_id, { foo: "bar" })
83
+ subject.all_domains(account_id, { foo: "bar" })
84
84
  end
85
85
 
86
86
  it "supports sorting" do
@@ -34,54 +34,6 @@ describe Dnsimple::Client, ".registrar" do
34
34
  end
35
35
  end
36
36
 
37
- describe "#domain_premium_price" do
38
- let(:account_id) { 1010 }
39
-
40
- context "when premium price" do
41
- before do
42
- stub_request(:get, %r{/v2/#{account_id}/registrar/domains/.+/premium_price[?action]*})
43
- .to_return(read_http_fixture("getDomainPremiumPrice/success.http"))
44
- end
45
-
46
- it "builds the correct request" do
47
- subject.domain_premium_price(account_id, domain_name = "ruby.codes")
48
-
49
- expect(WebMock).to have_requested(:get, "https://api.dnsimple.test/v2/#{account_id}/registrar/domains/#{domain_name}/premium_price")
50
- .with(headers: { "Accept" => "application/json" })
51
- end
52
-
53
- it "returns the premium price" do
54
- response = subject.domain_premium_price(account_id, "ruby.codes")
55
- expect(response).to be_a(Dnsimple::Response)
56
-
57
- result = response.data
58
- expect(result).to be_a(Dnsimple::Struct::DomainPremiumPrice)
59
- expect(result.premium_price).to eq("109.00")
60
- expect(result.action).to eq("registration")
61
- end
62
-
63
- it "builds the correct request when action is passed" do
64
- subject.domain_premium_price(account_id, domain_name = "ruby.codes", action: "registration")
65
-
66
- expect(WebMock).to have_requested(:get, "https://api.dnsimple.test/v2/#{account_id}/registrar/domains/#{domain_name}/premium_price?action=registration")
67
- .with(headers: { "Accept" => "application/json" })
68
- end
69
- end
70
-
71
- context "when not premium price" do
72
- before do
73
- stub_request(:get, %r{/v2/#{account_id}/registrar/domains/.+/premium_price$})
74
- .to_return(read_http_fixture("getDomainPremiumPrice/failure.http"))
75
- end
76
-
77
- it "raises error" do
78
- expect {
79
- subject.domain_premium_price(account_id, "example.com")
80
- }.to raise_error(Dnsimple::RequestError, "`example.com` is not a premium domain for registration")
81
- end
82
- end
83
- end
84
-
85
37
  describe "#get_domain_prices" do
86
38
  let(:account_id) { 1010 }
87
39
 
@@ -317,7 +269,7 @@ describe Dnsimple::Client, ".registrar" do
317
269
  expect(result.state).to eq("transferring")
318
270
  expect(result.auto_renew).to be(false)
319
271
  expect(result.whois_privacy).to be(false)
320
- expect(result.status_description).to eq(nil)
272
+ expect(result.status_description).to be_nil
321
273
  expect(result.created_at).to eq("2020-06-05T18:08:00Z")
322
274
  expect(result.updated_at).to eq("2020-06-05T18:08:04Z")
323
275
  end
@@ -61,7 +61,7 @@ describe Dnsimple::Client, ".services" do
61
61
  end
62
62
 
63
63
  it "delegates to client.paginate" do
64
- expect(subject).to receive(:paginate).with(:services, foo: "bar")
64
+ expect(subject).to receive(:paginate).with(:services, { foo: "bar" })
65
65
  subject.all_services(foo: "bar")
66
66
  end
67
67
 
@@ -65,7 +65,7 @@ describe Dnsimple::Client, ".templates" do
65
65
  let(:template_id) { "alpha" }
66
66
 
67
67
  it "delegates to client.paginate" do
68
- expect(subject).to receive(:paginate).with(:records, account_id, template_id, option: "value")
68
+ expect(subject).to receive(:paginate).with(:records, account_id, template_id, { option: "value" })
69
69
  subject.all_records(account_id, template_id, option: "value")
70
70
  end
71
71
 
@@ -64,8 +64,8 @@ describe Dnsimple::Client, ".templates" do
64
64
  let(:account_id) { 1010 }
65
65
 
66
66
  it "delegates to client.paginate" do
67
- expect(subject).to receive(:paginate).with(:templates, account_id, foo: "bar")
68
- subject.all_templates(account_id, foo: "bar")
67
+ expect(subject).to receive(:paginate).with(:templates, account_id, { foo: "bar" })
68
+ subject.all_templates(account_id, { foo: "bar" })
69
69
  end
70
70
 
71
71
  it "supports sorting" do
@@ -68,7 +68,7 @@ describe Dnsimple::Client, ".tlds" do
68
68
  end
69
69
 
70
70
  it "delegates to client.paginate" do
71
- expect(subject).to receive(:paginate).with(:list_tlds, foo: "bar")
71
+ expect(subject).to receive(:paginate).with(:list_tlds, { foo: "bar" })
72
72
  subject.all_tlds(foo: "bar")
73
73
  end
74
74
 
@@ -107,6 +107,7 @@ describe Dnsimple::Client, ".tlds" do
107
107
  expect(result.registration_enabled).to be(true)
108
108
  expect(result.renewal_enabled).to be(true)
109
109
  expect(result.transfer_enabled).to be(true)
110
+ expect(result.dnssec_interface_type).to eq("ds")
110
111
  end
111
112
  end
112
113
 
@@ -93,8 +93,8 @@ describe Dnsimple::Client, ".zones" do
93
93
  let(:zone_id) { "example.com" }
94
94
 
95
95
  it "delegates to client.paginate" do
96
- expect(subject).to receive(:paginate).with(:list_zone_records, account_id, zone_id, foo: "bar")
97
- subject.all_zone_records(account_id, zone_id, foo: "bar")
96
+ expect(subject).to receive(:paginate).with(:list_zone_records, account_id, zone_id, { foo: "bar" })
97
+ subject.all_zone_records(account_id, zone_id, { foo: "bar" })
98
98
  end
99
99
 
100
100
  it "supports sorting" do
@@ -179,7 +179,7 @@ describe Dnsimple::Client, ".zones" do
179
179
  expect(result).to be_a(Dnsimple::Struct::ZoneRecord)
180
180
  expect(result.id).to eq(record_id)
181
181
  expect(result.zone_id).to eq("example.com")
182
- expect(result.parent_id).to eq(nil)
182
+ expect(result.parent_id).to be_nil
183
183
  expect(result.type).to eq("MX")
184
184
  expect(result.name).to eq("")
185
185
  expect(result.content).to eq("mxa.example.com")
@@ -79,8 +79,8 @@ describe Dnsimple::Client, ".zones" do
79
79
  let(:account_id) { 1010 }
80
80
 
81
81
  it "delegates to client.paginate" do
82
- expect(subject).to receive(:paginate).with(:zones, account_id, foo: "bar")
83
- subject.all_zones(account_id, foo: "bar")
82
+ expect(subject).to receive(:paginate).with(:zones, account_id, { foo: "bar" })
83
+ subject.all_zones(account_id, { foo: "bar" })
84
84
  end
85
85
 
86
86
  it "supports sorting" do
@@ -49,36 +49,36 @@ describe Dnsimple::Client do
49
49
 
50
50
  describe "#get" do
51
51
  it "delegates to #request" do
52
- allow(subject).to receive(:execute).with(:get, "path", nil, foo: "bar").and_return(:returned)
53
- expect(subject.get("path", foo: "bar")).to eq(:returned)
52
+ allow(subject).to receive(:execute).with(:get, "path", nil, { foo: "bar" }).and_return(:returned)
53
+ expect(subject.get("path", { foo: "bar" })).to eq(:returned)
54
54
  end
55
55
  end
56
56
 
57
57
  describe "#post" do
58
58
  it "delegates to #request" do
59
59
  allow(subject).to receive(:execute).with(:post, "path", { foo: "bar" }, {}).and_return(:returned)
60
- expect(subject.post("path", foo: "bar")).to eq(:returned)
60
+ expect(subject.post("path", { foo: "bar" })).to eq(:returned)
61
61
  end
62
62
  end
63
63
 
64
64
  describe "#put" do
65
65
  it "delegates to #request" do
66
66
  allow(subject).to receive(:execute).with(:put, "path", { foo: "bar" }, {}).and_return(:returned)
67
- expect(subject.put("path", foo: "bar")).to eq(:returned)
67
+ expect(subject.put("path", { foo: "bar" })).to eq(:returned)
68
68
  end
69
69
  end
70
70
 
71
71
  describe "#patch" do
72
72
  it "delegates to #request" do
73
73
  allow(subject).to receive(:execute).with(:patch, "path", { foo: "bar" }, {}).and_return(:returned)
74
- expect(subject.patch("path", foo: "bar")).to eq(:returned)
74
+ expect(subject.patch("path", { foo: "bar" })).to eq(:returned)
75
75
  end
76
76
  end
77
77
 
78
78
  describe "#delete" do
79
79
  it "delegates to #request" do
80
80
  allow(subject).to receive(:execute).with(:delete, "path", { foo: "bar" }, {}).and_return(:returned)
81
- expect(subject.delete("path", foo: "bar")).to eq(:returned)
81
+ expect(subject.delete("path", { foo: "bar" })).to eq(:returned)
82
82
  end
83
83
  end
84
84
 
@@ -128,12 +128,12 @@ describe Dnsimple::Client do
128
128
 
129
129
  allow(HTTParty).to receive(:get)
130
130
  .with(
131
- "#{subject.base_url}foo",
132
- format: :json,
133
- basic_auth: { username: "user", password: "pass" },
134
- headers: { 'Accept' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT }
131
+ "#{subject.base_url}foo", {
132
+ format: :json,
133
+ basic_auth: { username: "user", password: "pass" },
134
+ headers: { 'Accept' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT },
135
+ }
135
136
  )
136
- .and_return(instance_double('response', code: 200))
137
137
 
138
138
  subject.request(:get, 'foo')
139
139
  end
@@ -141,14 +141,14 @@ describe Dnsimple::Client do
141
141
  it "properly extracts processes options and encodes data" do
142
142
  allow(HTTParty).to receive(:put)
143
143
  .with(
144
- "#{subject.base_url}foo",
145
- format: :json,
146
- body: JSON.dump(something: "else"),
147
- query: { foo: "bar" },
148
- basic_auth: { username: "user", password: "pass" },
149
- headers: { 'Accept' => 'application/json', 'Content-Type' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT, "Custom" => "Header" }
144
+ "#{subject.base_url}foo", {
145
+ format: :json,
146
+ body: JSON.dump(something: "else"),
147
+ query: { foo: "bar" },
148
+ basic_auth: { username: "user", password: "pass" },
149
+ headers: { 'Accept' => 'application/json', 'Content-Type' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT, "Custom" => "Header" },
150
+ }
150
151
  )
151
- .and_return(instance_double('response', code: 200))
152
152
 
153
153
  subject.request(:put, 'foo', { something: "else" }, { query: { foo: "bar" }, headers: { "Custom" => "Header" } })
154
154
  end
@@ -156,13 +156,13 @@ describe Dnsimple::Client do
156
156
  it "handles non application/json content types" do
157
157
  allow(HTTParty).to receive(:post)
158
158
  .with(
159
- "#{subject.base_url}foo",
160
- format: :json,
161
- body: { something: "else" },
162
- basic_auth: { username: "user", password: "pass" },
163
- headers: { 'Accept' => 'application/json', 'Content-Type' => 'application/x-www-form-urlencoded', 'User-Agent' => Dnsimple::Default::USER_AGENT }
159
+ "#{subject.base_url}foo", {
160
+ format: :json,
161
+ body: { something: "else" },
162
+ basic_auth: { username: "user", password: "pass" },
163
+ headers: { 'Accept' => 'application/json', 'Content-Type' => 'application/x-www-form-urlencoded', 'User-Agent' => Dnsimple::Default::USER_AGENT },
164
+ }
164
165
  )
165
- .and_return(instance_double('response', code: 200))
166
166
 
167
167
  subject.request(:post, 'foo', { something: "else" }, { headers: { "Content-Type" => "application/x-www-form-urlencoded" } })
168
168
  end
@@ -170,13 +170,13 @@ describe Dnsimple::Client do
170
170
  it "includes options for proxy support" do
171
171
  allow(HTTParty).to receive(:get)
172
172
  .with(
173
- "#{subject.base_url}test",
174
- format: :json,
175
- http_proxyaddr: "example-proxy.com",
176
- http_proxyport: "4321",
177
- headers: { 'Accept' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT }
173
+ "#{subject.base_url}test", {
174
+ format: :json,
175
+ http_proxyaddr: "example-proxy.com",
176
+ http_proxyport: "4321",
177
+ headers: { 'Accept' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT },
178
+ }
178
179
  )
179
- .and_return(instance_double('response', code: 200))
180
180
 
181
181
  subject = described_class.new(proxy: "example-proxy.com:4321")
182
182
  subject.request(:get, "test", nil, {})
@@ -186,10 +186,9 @@ describe Dnsimple::Client do
186
186
  allow(HTTParty).to receive(:get)
187
187
  .with(
188
188
  "#{subject.base_url}test",
189
- format: :json,
190
- headers: hash_including("User-Agent" => "customAgent #{Dnsimple::Default::USER_AGENT}")
189
+ { format: :json,
190
+ headers: hash_including("User-Agent" => "customAgent #{Dnsimple::Default::USER_AGENT}"), }
191
191
  )
192
- .and_return(instance_double("response", code: 200))
193
192
 
194
193
  subject = described_class.new(user_agent: "customAgent")
195
194
  subject.request(:get, "test", nil)
@@ -26,7 +26,7 @@ describe Dnsimple::Extra do
26
26
  describe ".validate_mandatory_attributes" do
27
27
  let(:mandatory_attributes) { %i(name email) }
28
28
 
29
- it "raises an error if a mandatory attribute is not present " do
29
+ it "raises an error if a mandatory attribute is not present" do
30
30
  expect {
31
31
  described_class.validate_mandatory_attributes({ name: "foo" }, mandatory_attributes)
32
32
  }.to raise_error(ArgumentError, ":email is required")
@@ -17,4 +17,4 @@ X-Permitted-Cross-Domain-Policies: none
17
17
  X-XSS-Protection: 1; mode=block
18
18
  Strict-Transport-Security: max-age=31536000
19
19
 
20
- {"data":{"id":2,"domain_id":1010,"algorithm":"13","digest":"684a1f049d7d082b7f98691657da5a65764913df7f065f6f8c36edf62d66ca03","digest_type":"2","keytag":"2371","created_at":"2017-03-03T15:24:00Z","updated_at":"2017-03-03T15:24:00Z"}}
20
+ {"data":{"id":2,"domain_id":1010,"algorithm":"13","digest":"684a1f049d7d082b7f98691657da5a65764913df7f065f6f8c36edf62d66ca03","digest_type":"2","keytag":"2371","public_key":null,"created_at":"2017-03-03T15:24:00Z","updated_at":"2017-03-03T15:24:00Z"}}
@@ -17,4 +17,4 @@ X-Permitted-Cross-Domain-Policies: none
17
17
  X-XSS-Protection: 1; mode=block
18
18
  Strict-Transport-Security: max-age=31536000
19
19
 
20
- {"data":{"id":24,"domain_id":1010,"algorithm":"8","digest":"C1F6E04A5A61FBF65BF9DC8294C363CF11C89E802D926BDAB79C55D27BEFA94F","digest_type":"2","keytag":"44620","created_at":"2017-03-03T13:49:58Z","updated_at":"2017-03-03T13:49:58Z"}}
20
+ {"data":{"id":24,"domain_id":1010,"algorithm":"8","digest":"C1F6E04A5A61FBF65BF9DC8294C363CF11C89E802D926BDAB79C55D27BEFA94F","digest_type":"2","keytag":"44620","public_key":null,"created_at":"2017-03-03T13:49:58Z","updated_at":"2017-03-03T13:49:58Z"}}
@@ -17,4 +17,4 @@ X-Permitted-Cross-Domain-Policies: none
17
17
  X-XSS-Protection: 1; mode=block
18
18
  Strict-Transport-Security: max-age=31536000
19
19
 
20
- {"data":{"tld":"com","tld_type":1,"whois_privacy":true,"auto_renew_only":false,"idn":true,"minimum_registration":1,"registration_enabled":true,"renewal_enabled":true,"transfer_enabled":true}}
20
+ {"data":{"tld":"com","tld_type":1,"whois_privacy":true,"auto_renew_only":false,"idn":true,"minimum_registration":1,"registration_enabled":true,"renewal_enabled":true,"transfer_enabled":true,"dnssec_interface_type":"ds"}}