dnsimple-ruby 1.3.2 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (111) hide show
  1. checksums.yaml +15 -0
  2. data/.gitignore +9 -2
  3. data/.rspec +1 -0
  4. data/.ruby-gemset +1 -0
  5. data/.ruby-version +1 -0
  6. data/.travis.yml +7 -0
  7. data/CHANGELOG.md +20 -0
  8. data/Gemfile +0 -2
  9. data/LICENSE +2 -2
  10. data/README.md +121 -0
  11. data/Rakefile +30 -14
  12. data/bin/dnsimple.rb +1 -1
  13. data/dnsimple-ruby.gemspec +9 -8
  14. data/features/README +1 -1
  15. data/features/step_definitions/cli_steps.rb +1 -1
  16. data/features/support/env.rb +4 -4
  17. data/fixtures/vcr_cassettes/DNSimple_Certificate/_all.yml +45 -32
  18. data/fixtures/vcr_cassettes/DNSimple_Certificate/_purchase.yml +45 -32
  19. data/fixtures/vcr_cassettes/DNSimple_Certificate/_submit.yml +45 -32
  20. data/fixtures/vcr_cassettes/DNSimple_Contact/a_new_contact.yml +39 -31
  21. data/fixtures/vcr_cassettes/DNSimple_Contact/an_existing_contact.yml +39 -31
  22. data/fixtures/vcr_cassettes/DNSimple_Domain/_all.yml +113 -94
  23. data/fixtures/vcr_cassettes/DNSimple_Domain/applying_templates.yml +186 -156
  24. data/fixtures/vcr_cassettes/DNSimple_Domain/creating_a_new_domain.yml +39 -32
  25. data/fixtures/vcr_cassettes/DNSimple_Domain/finding_an_existing_domain/by_id.yml +39 -32
  26. data/fixtures/vcr_cassettes/DNSimple_Domain/finding_an_existing_domain/by_name.yml +39 -32
  27. data/fixtures/vcr_cassettes/DNSimple_Domain/registration/with_a_new_registrant_contact.yml +40 -32
  28. data/fixtures/vcr_cassettes/DNSimple_Domain/registration/with_an_existing_contact.yml +40 -32
  29. data/fixtures/vcr_cassettes/DNSimple_ExtendedAttribute/list_extended_attributes/for_ca.yml +262 -29
  30. data/fixtures/vcr_cassettes/DNSimple_ExtendedAttribute/list_extended_attributes/for_com.yml +35 -29
  31. data/fixtures/vcr_cassettes/DNSimple_Record/_all.yml +147 -125
  32. data/fixtures/vcr_cassettes/DNSimple_Record/creating_a_new_record.yml +39 -32
  33. data/fixtures/vcr_cassettes/DNSimple_Record/find_a_record.yml +39 -32
  34. data/fixtures/vcr_cassettes/DNSimple_Template/a_template.yml +41 -32
  35. data/fixtures/vcr_cassettes/DNSimple_User/_me.yml +38 -31
  36. data/lib/dnsimple.rb +14 -1
  37. data/lib/dnsimple/base.rb +7 -5
  38. data/lib/dnsimple/certificate.rb +100 -95
  39. data/lib/dnsimple/cli.rb +92 -93
  40. data/lib/dnsimple/client.rb +109 -99
  41. data/lib/dnsimple/commands/{describe_certificate.rb → certificate_describe.rb} +2 -2
  42. data/lib/dnsimple/commands/{list_certificates.rb → certificate_list.rb} +2 -2
  43. data/lib/dnsimple/commands/{purchase_certificate.rb → certificate_purchase.rb} +3 -5
  44. data/lib/dnsimple/commands/{submit_certificate.rb → certificate_submit.rb} +3 -5
  45. data/lib/dnsimple/commands/{create_contact.rb → contact_create.rb} +8 -6
  46. data/lib/dnsimple/commands/{delete_contact.rb → contact_delete.rb} +2 -2
  47. data/lib/dnsimple/commands/{describe_contact.rb → contact_describe.rb} +2 -2
  48. data/lib/dnsimple/commands/{list_contacts.rb → contact_list.rb} +2 -2
  49. data/lib/dnsimple/commands/{update_contact.rb → contact_update.rb} +2 -2
  50. data/lib/dnsimple/commands/{apply_template.rb → domain_apply_template.rb} +2 -2
  51. data/lib/dnsimple/commands/{check_domain.rb → domain_check.rb} +2 -2
  52. data/lib/dnsimple/commands/{clear_domain.rb → domain_clear.rb} +2 -2
  53. data/lib/dnsimple/commands/{create_domain.rb → domain_create.rb} +2 -2
  54. data/lib/dnsimple/commands/{delete_domain.rb → domain_delete.rb} +2 -2
  55. data/lib/dnsimple/commands/{describe_domain.rb → domain_describe.rb} +2 -2
  56. data/lib/dnsimple/commands/{list_domains.rb → domain_list.rb} +2 -2
  57. data/lib/dnsimple/commands/{register_domain.rb → domain_register.rb} +2 -2
  58. data/lib/dnsimple/commands/{transfer_domain.rb → domain_transfer.rb} +2 -2
  59. data/lib/dnsimple/commands/{list_extended_attributes.rb → extended_attribute_list.rb} +2 -2
  60. data/lib/dnsimple/commands/{describe_user.rb → me.rb} +2 -2
  61. data/lib/dnsimple/commands/{create_record.rb → record_create.rb} +5 -7
  62. data/lib/dnsimple/commands/{delete_record.rb → record_delete.rb} +2 -2
  63. data/lib/dnsimple/commands/{describe_record.rb → record_describe.rb} +2 -2
  64. data/lib/dnsimple/commands/{list_records.rb → record_list.rb} +4 -6
  65. data/lib/dnsimple/commands/{update_record.rb → record_update.rb} +2 -2
  66. data/lib/dnsimple/commands/{add_service.rb → service_add.rb} +3 -5
  67. data/lib/dnsimple/commands/{describe_service.rb → service_describe.rb} +2 -2
  68. data/lib/dnsimple/commands/{list_services.rb → service_list.rb} +2 -2
  69. data/lib/dnsimple/commands/{list_applied_services.rb → service_list_applied.rb} +2 -2
  70. data/lib/dnsimple/commands/{list_available_services.rb → service_list_available.rb} +2 -2
  71. data/lib/dnsimple/commands/{remove_service.rb → service_remove.rb} +2 -2
  72. data/lib/dnsimple/commands/{create_template.rb → template_create.rb} +2 -2
  73. data/lib/dnsimple/commands/{delete_template.rb → template_delete.rb} +2 -2
  74. data/lib/dnsimple/commands/{add_template_record.rb → template_record_create.rb} +2 -2
  75. data/lib/dnsimple/commands/{delete_template_record.rb → template_record_delete.rb} +2 -2
  76. data/lib/dnsimple/commands/{list_template_records.rb → template_record_list.rb} +2 -2
  77. data/lib/dnsimple/commands/{list_templates.rb → templates_list.rb} +2 -2
  78. data/lib/dnsimple/contact.rb +115 -110
  79. data/lib/dnsimple/domain.rb +134 -132
  80. data/lib/dnsimple/error.rb +8 -19
  81. data/lib/dnsimple/extended_attribute.rb +39 -33
  82. data/lib/dnsimple/record.rb +71 -67
  83. data/lib/dnsimple/service.rb +31 -24
  84. data/lib/dnsimple/template.rb +52 -46
  85. data/lib/dnsimple/template_record.rb +61 -53
  86. data/lib/dnsimple/transfer_order.rb +24 -18
  87. data/lib/dnsimple/user.rb +22 -18
  88. data/lib/dnsimple/version.rb +1 -1
  89. data/spec/README +1 -1
  90. data/spec/ci/.dnsimple.test +3 -0
  91. data/spec/commands/{purchase_certificate_spec.rb → certificate_purchase_spec.rb} +3 -4
  92. data/spec/commands/{submit_certificate_spec.rb → certificate_submit_spec.rb} +3 -4
  93. data/spec/commands/{create_record_spec.rb → record_create_spec.rb} +4 -4
  94. data/spec/commands/{list_records_spec.rb → records_list_spec.rb} +2 -13
  95. data/spec/commands/{add_service_spec.rb → service_add_spec.rb} +3 -12
  96. data/spec/{certificate_spec.rb → dnsimple/certificate_spec.rb} +0 -0
  97. data/spec/dnsimple/client_spec.rb +45 -18
  98. data/spec/{contact_spec.rb → dnsimple/contact_spec.rb} +3 -1
  99. data/spec/{domain_spec.rb → dnsimple/domain_spec.rb} +2 -0
  100. data/spec/{extended_attributes_spec.rb → dnsimple/extended_attributes_spec.rb} +4 -0
  101. data/spec/{record_spec.rb → dnsimple/record_spec.rb} +2 -0
  102. data/spec/{template_spec.rb → dnsimple/template_spec.rb} +0 -0
  103. data/spec/{user_spec.rb → dnsimple/user_spec.rb} +2 -0
  104. data/spec/spec_helper.rb +24 -10
  105. metadata +96 -99
  106. data/Gemfile.lock +0 -71
  107. data/README +0 -108
  108. data/README.rdoc +0 -108
  109. data/README.textile +0 -138
  110. data/lib/dnsimple/command.rb +0 -10
  111. data/spec/command_spec.rb +0 -19
@@ -1,72 +1,80 @@
1
- class DNSimple::TemplateRecord < DNSimple::Base # A single record in a template
2
- # The id of the template record
3
- attr_accessor :id
1
+ module DNSimple
4
2
 
5
- # The template the record belongs to
6
- attr_accessor :template
3
+ # A single record in a template.
4
+ class TemplateRecord < Base
7
5
 
8
- # The name the record points to. This may be blank.
9
- attr_accessor :name
6
+ # The id of the template record
7
+ attr_accessor :id
10
8
 
11
- # The content for the record.
12
- attr_accessor :content
9
+ # The template the record belongs to
10
+ attr_accessor :template
13
11
 
14
- # The record type
15
- attr_accessor :record_type
12
+ # The name the record points to. This may be blank.
13
+ attr_accessor :name
16
14
 
17
- # The time-to-live
18
- attr_accessor :ttl
15
+ # The content for the record.
16
+ attr_accessor :content
19
17
 
20
- # The priority (only for MX records)
21
- attr_accessor :prio
18
+ # The record type
19
+ attr_accessor :record_type
22
20
 
23
- def delete(options={})
24
- DNSimple::Client.delete("templates/#{template.id}/template_records/#{id}.json", options)
25
- end
26
- alias :destroy :delete
21
+ # The time-to-live
22
+ attr_accessor :ttl
27
23
 
28
- def self.create(short_name, name, record_type, content, options={})
29
- template = DNSimple::Template.find(short_name)
24
+ # The priority (only for MX records)
25
+ attr_accessor :prio
30
26
 
31
- record_hash = {:name => name, :record_type => record_type, :content => content}
32
- record_hash[:ttl] = options.delete(:ttl) || 3600
33
- record_hash[:prio] = options.delete(:prio) || ''
27
+ def delete(options={})
28
+ DNSimple::Client.delete("templates/#{template.id}/template_records/#{id}", options)
29
+ end
30
+ alias :destroy :delete
34
31
 
35
- options.merge!({:query => {:dns_template_record => record_hash}})
32
+ def self.create(short_name, name, record_type, content, options={})
33
+ template = DNSimple::Template.find(short_name)
36
34
 
37
- response = DNSimple::Client.post("templates/#{template.id}/template_records.json", options)
35
+ record_hash = {:name => name, :record_type => record_type, :content => content}
36
+ record_hash[:ttl] = options.delete(:ttl) || 3600
37
+ record_hash[:prio] = options.delete(:prio) || ''
38
38
 
39
- case response.code
40
- when 201
41
- return new({:template => template}.merge(response["dns_template_record"]))
42
- else
43
- raise DNSimple::Error.new("#{name}", response["errors"])
44
- end
45
- end
39
+ options.merge!({:query => {:dns_template_record => record_hash}})
46
40
 
47
- def self.find(short_name, id, options={})
48
- template = DNSimple::Template.find(short_name)
49
- response = DNSimple::Client.get("templates/#{template.id}/template_records/#{id}.json", options)
41
+ response = DNSimple::Client.post("templates/#{template.id}/template_records", options)
50
42
 
51
- case response.code
52
- when 200
53
- return new({:template => template}.merge(response["dns_template_record"]))
54
- when 404
55
- raise RuntimeError, "Could not find template record #{id} for template #{short_name}"
43
+ case response.code
44
+ when 201
45
+ new({:template => template}.merge(response["dns_template_record"]))
46
+ else
47
+ raise RequestError.new("Error creating template record", response)
48
+ end
49
+ end
50
+
51
+ def self.find(short_name, id, options={})
52
+ template = DNSimple::Template.find(short_name)
53
+ response = DNSimple::Client.get("templates/#{template.id}/template_records/#{id}", options)
54
+
55
+ case response.code
56
+ when 200
57
+ new({:template => template}.merge(response["dns_template_record"]))
58
+ when 404
59
+ raise RecordNotFound, "Could not find template record #{id} for template #{template.id}"
60
+ else
61
+ raise RequestError.new("Error finding template record", response)
62
+ end
56
63
  end
57
- end
58
64
 
59
- # Get all of the template records for the template with the
60
- # given short name.
61
- def self.all(short_name, options={})
62
- template = DNSimple::Template.find(short_name)
63
- response = DNSimple::Client.get("templates/#{template.id}/template_records.json", options)
64
-
65
- case response.code
66
- when 200
67
- response.map { |r| new({:template => template}.merge(r["dns_template_record"])) }
68
- else
69
- raise RuntimeError, "Error: #{response.code}"
65
+ # Get all of the template records for the template with the
66
+ # given short name.
67
+ def self.all(short_name, options={})
68
+ template = DNSimple::Template.find(short_name)
69
+ response = DNSimple::Client.get("templates/#{template.id}/template_records", options)
70
+
71
+ case response.code
72
+ when 200
73
+ response.map { |r| new({:template => template}.merge(r["dns_template_record"])) }
74
+ else
75
+ raise RequestError.new("Error listing template records", response)
76
+ end
70
77
  end
78
+
71
79
  end
72
80
  end
@@ -1,28 +1,34 @@
1
- class DNSimple::TransferOrder # Class representing a transfer order in DNSimple
2
- attr_accessor :id
1
+ module DNSimple
3
2
 
4
- attr_accessor :status
3
+ # Represents a transfer order.
4
+ class TransferOrder < Base
5
5
 
6
- def self.create(name, authinfo='', registrant={}, extended_attributes={}, options={})
7
- body = {:domain => {:name => name}, :transfer_order => {:authinfo => authinfo}}
6
+ attr_accessor :id
8
7
 
9
- if registrant[:id]
10
- body[:domain][:registrant_id] = registrant[:id]
11
- else
12
- body.merge!(:contact => Contact.resolve_attributes(registrant))
13
- end
8
+ attr_accessor :status
9
+
10
+ def self.create(name, authinfo='', registrant={}, extended_attributes={}, options={})
11
+ body = {:domain => {:name => name}, :transfer_order => {:authinfo => authinfo}}
14
12
 
15
- body.merge!(:extended_attribute => extended_attributes)
13
+ if registrant[:id]
14
+ body[:domain][:registrant_id] = registrant[:id]
15
+ else
16
+ body.merge!(:contact => Contact.resolve_attributes(registrant))
17
+ end
16
18
 
17
- options.merge!({:body => body})
19
+ body.merge!(:extended_attribute => extended_attributes)
18
20
 
19
- response = DNSimple::Client.post 'domain_transfers.json', options
21
+ options.merge!({:body => body})
20
22
 
21
- case response.code
22
- when 201
23
- return new(response["transfer_order"])
24
- else
25
- raise DNSimple::Error.new(name, response["errors"])
23
+ response = DNSimple::Client.post("domain_transfers", options)
24
+
25
+ case response.code
26
+ when 201
27
+ new(response["transfer_order"])
28
+ else
29
+ raise RequestError.new("Error creating transfer order", response)
30
+ end
26
31
  end
32
+
27
33
  end
28
34
  end
data/lib/dnsimple/user.rb CHANGED
@@ -1,30 +1,34 @@
1
- class DNSimple::User < DNSimple::Base
2
- attr_accessor :id
1
+ module DNSimple
2
+ class User < Base
3
3
 
4
- attr_accessor :created_at
4
+ attr_accessor :id
5
5
 
6
- attr_accessor :updated_at
6
+ attr_accessor :created_at
7
7
 
8
- attr_accessor :email
8
+ attr_accessor :updated_at
9
9
 
10
- attr_accessor :login_count
10
+ attr_accessor :email
11
11
 
12
- attr_accessor :failed_login_count
12
+ attr_accessor :login_count
13
13
 
14
- attr_accessor :domain_count
14
+ attr_accessor :failed_login_count
15
15
 
16
- attr_accessor :domain_limit
16
+ attr_accessor :domain_count
17
17
 
18
- def self.me(options={})
19
- response = DNSimple::Client.get("users/me.json", options)
18
+ attr_accessor :domain_limit
20
19
 
21
- case response.code
22
- when 200
23
- return new(response["user"])
24
- when 404
25
- raise DNSimple::UserNotFound, "Could not find user"
26
- else
27
- raise DNSimple::Error, "Error: #{response.code} #{response.message}"
20
+ def self.me(options={})
21
+ response = DNSimple::Client.get("users/me", options)
22
+
23
+ case response.code
24
+ when 200
25
+ new(response["user"])
26
+ when 404
27
+ raise RecordNotFound, "Could not find account with current credentials"
28
+ else
29
+ raise RequestError.new("Error finding account", response)
30
+ end
28
31
  end
32
+
29
33
  end
30
34
  end
@@ -1,3 +1,3 @@
1
1
  module DNSimple
2
- VERSION = '1.3.2'
2
+ VERSION = '1.4.0'
3
3
  end
data/spec/README CHANGED
@@ -6,5 +6,5 @@ Before running the DNSimple Ruby Client specifications, you must do the followin
6
6
 
7
7
  username: YOUR_USERNAME
8
8
  password: YOUR_PASSWORD
9
- site: https://test.dnsimple.com
9
+ host: test.dnsimple.com
10
10
 
@@ -0,0 +1,3 @@
1
+ username: username
2
+ password: password
3
+ base_uri: https://test.dnsimple.com
@@ -1,9 +1,8 @@
1
1
  require 'spec_helper'
2
2
  require 'dnsimple/certificate'
3
- require 'dnsimple/commands/purchase_certificate'
3
+ require 'dnsimple/commands/certificate_purchase'
4
4
 
5
- describe DNSimple::Commands::PurchaseCertificate do
6
- let(:out) { StringIO.new }
5
+ describe DNSimple::Commands::CertificatePurchase do
7
6
  let(:domain_name) { 'example.com' }
8
7
  let(:domain) { stub('domain') }
9
8
  let(:contact) { stub('contact') }
@@ -19,7 +18,7 @@ describe DNSimple::Commands::PurchaseCertificate do
19
18
  with(domain, 'certname', contact).
20
19
  returns(stub("certificate", :fqdn => domain_name))
21
20
 
22
- DNSimple::Commands::PurchaseCertificate.new(out).
21
+ DNSimple::Commands::CertificatePurchase.new.
23
22
  execute([domain_name, 'certname', stub('contact id')])
24
23
  end
25
24
  end
@@ -1,8 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'dnsimple/commands/submit_certificate'
2
+ require 'dnsimple/commands/certificate_submit'
3
3
 
4
- describe DNSimple::Commands::SubmitCertificate do
5
- let(:out) { StringIO.new }
4
+ describe DNSimple::Commands::CertificateSubmit do
6
5
  let(:domain) { DNSimple::Domain.new(:name => domain_name) }
7
6
  let(:domain_name) { 'example.com' }
8
7
  let(:name) { 'www' }
@@ -14,6 +13,6 @@ describe DNSimple::Commands::SubmitCertificate do
14
13
  DNSimple::Domain.stubs(:find).with(domain_name).returns(domain)
15
14
  DNSimple::Certificate.expects(:find).with(domain, certificate_id).returns(certificate)
16
15
  certificate.expects(:submit).with(approver_email)
17
- DNSimple::Commands::SubmitCertificate.new(out).execute([domain_name, certificate_id, approver_email])
16
+ DNSimple::Commands::CertificateSubmit.new.execute([domain_name, certificate_id, approver_email])
18
17
  end
19
18
  end
@@ -1,14 +1,14 @@
1
1
  require 'spec_helper'
2
2
  require 'dnsimple/domain'
3
3
  require 'dnsimple/record'
4
- require 'dnsimple/commands/create_record'
4
+ require 'dnsimple/commands/record_create'
5
5
 
6
- describe DNSimple::Commands::CreateRecord do
7
- let(:out) { StringIO.new }
6
+ describe DNSimple::Commands::RecordCreate do
8
7
  let(:domain_name) { 'example.com' }
9
8
  let(:record_name) { 'www' }
10
9
  let(:record_type) { 'CNAME' }
11
10
  let(:ttl) { "3600" }
11
+
12
12
  context "with one argument" do
13
13
  it "purchases the certificate" do
14
14
  domain_stub = stub("domain", :name => domain_name)
@@ -16,7 +16,7 @@ describe DNSimple::Commands::CreateRecord do
16
16
  DNSimple::Domain.expects(:find).with(domain_name).returns(domain_stub)
17
17
  DNSimple::Record.expects(:create).with(domain_stub, record_name, record_type, domain_name, :ttl => ttl, :prio => nil).returns(record_stub)
18
18
 
19
- DNSimple::Commands::CreateRecord.new(out).execute([domain_name, record_name, record_type, domain_name, ttl])
19
+ DNSimple::Commands::RecordCreate.new.execute([domain_name, record_name, record_type, domain_name, ttl])
20
20
  end
21
21
  end
22
22
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
- require 'dnsimple/commands/list_records'
2
+ require 'dnsimple/commands/record_list'
3
3
 
4
- describe DNSimple::Commands::ListRecords do
4
+ describe DNSimple::Commands::RecordList do
5
5
  before do
6
6
  DNSimple::Record.expects(:all).with(instance_of(DNSimple::Domain)).returns(records)
7
7
  end
@@ -18,17 +18,6 @@ describe DNSimple::Commands::ListRecords do
18
18
  let(:args) { [ domain_name ] }
19
19
  let(:domain_name) { 'example.com' }
20
20
  let(:domain) { DNSimple::Domain.new(:name => domain_name) }
21
- let(:out) { StringIO.new }
22
21
 
23
- it 'should retrieve all records and print them' do
24
- described_class.new(out).execute(args)
25
-
26
- out.string.should include(ttl)
27
- out.string.should include(id)
28
- out.string.should include(record_type)
29
- out.string.should include(name)
30
- out.string.should include(domain_name)
31
- out.string.should include(content)
32
- end
33
22
  end
34
23
 
@@ -1,12 +1,9 @@
1
1
  require 'spec_helper'
2
- require 'dnsimple/commands/add_service'
3
-
4
- describe DNSimple::Commands::AddService do
5
- let(:out) { StringIO.new }
2
+ require 'dnsimple/commands/service_add'
6
3
 
4
+ describe DNSimple::Commands::ServiceAdd do
7
5
  let(:domain_name) { 'example.com' }
8
6
  let(:short_name) { 'service-name' }
9
- let(:args) { [domain_name, short_name] }
10
7
 
11
8
  let(:domain) { DNSimple::Domain.new(:name => domain_name) }
12
9
  let(:service) { stub("service", :name => "Service") }
@@ -18,12 +15,6 @@ describe DNSimple::Commands::AddService do
18
15
 
19
16
  it "adds a service to a domain" do
20
17
  domain.expects(:add_service).with(short_name)
21
- DNSimple::Commands::AddService.new(out).execute(args)
22
- end
23
-
24
- it "reports to the caller" do
25
- domain.stubs(:add_service)
26
- DNSimple::Commands::AddService.new(out).execute(args)
27
- out.string.should eq("Added #{service.name} to #{domain_name}\n")
18
+ DNSimple::Commands::ServiceAdd.new.execute([domain_name, short_name])
28
19
  end
29
20
  end
@@ -1,15 +1,21 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe DNSimple::Client do
4
+
5
+ let(:klass) { described_class }
6
+
4
7
  before :each do
5
- @username, @password, @api_token = DNSimple::Client.username,
6
- DNSimple::Client.password, DNSimple::Client.api_token
8
+ @_username = DNSimple::Client.username
9
+ @_password = DNSimple::Client.password
10
+ @_api_token = DNSimple::Client.api_token
11
+ @_base_uri = DNSimple::Client.base_uri
7
12
  end
8
13
 
9
- after :each do
10
- DNSimple::Client.username = @username
11
- DNSimple::Client.password = @password
12
- DNSimple::Client.api_token = @api_token
14
+ after do
15
+ DNSimple::Client.username = @_username
16
+ DNSimple::Client.password = @_password
17
+ DNSimple::Client.api_token = @_api_token
18
+ DNSimple::Client.base_uri = @_base_uri
13
19
  end
14
20
 
15
21
  [:get, :post, :put, :delete].each do |method|
@@ -17,12 +23,13 @@ describe DNSimple::Client do
17
23
  let(:response) { stub('response', :code => 200) }
18
24
 
19
25
  it "uses HTTP authentication if there's a password provided" do
20
- DNSimple::Client.username = 'user'
21
- DNSimple::Client.password = 'pass'
22
- DNSimple::Client.api_token = nil
26
+ DNSimple::Client.username = 'user'
27
+ DNSimple::Client.password = 'pass'
28
+ DNSimple::Client.api_token = nil
29
+ DNSimple::Client.base_uri = 'https://test.example.com'
23
30
 
24
31
  HTTParty.expects(method).
25
- with('http://localhost:3000/domains',
32
+ with('https://test.example.com/domains',
26
33
  :format => :json, :headers => {'Accept' => 'application/json'},
27
34
  :basic_auth => {:username => 'user', :password => 'pass'}).
28
35
  returns(response)
@@ -31,12 +38,13 @@ describe DNSimple::Client do
31
38
  end
32
39
 
33
40
  it "uses header authentication if there's an api token provided" do
34
- DNSimple::Client.username = 'user'
35
- DNSimple::Client.password = nil
36
- DNSimple::Client.api_token = 'token'
41
+ DNSimple::Client.username = 'user'
42
+ DNSimple::Client.password = nil
43
+ DNSimple::Client.api_token = 'token'
44
+ DNSimple::Client.base_uri = 'https://test.example.com'
37
45
 
38
46
  HTTParty.expects(method).
39
- with('http://localhost:3000/domains',
47
+ with('https://test.example.com/domains',
40
48
  :format => :json, :headers => {'Accept' => 'application/json',
41
49
  'X-DNSimple-Token' => 'user:token'}).
42
50
  returns(response)
@@ -45,14 +53,33 @@ describe DNSimple::Client do
45
53
  end
46
54
 
47
55
  it "raises an error if there's no password or api token provided" do
48
- DNSimple::Client.username = 'user'
49
- DNSimple::Client.password = nil
50
- DNSimple::Client.api_token = nil
56
+ DNSimple::Client.username = 'user'
57
+ DNSimple::Client.password = nil
58
+ DNSimple::Client.api_token = nil
59
+ DNSimple::Client.base_uri = 'https://test.example.com'
51
60
 
52
61
  lambda {
53
62
  DNSimple::Client.send(method, 'domains')
54
- }.should raise_error(RuntimeError, 'A password or API token is required for all API requests.')
63
+ }.should raise_error(DNSimple::Error, 'A password or API token is required for all API requests.')
55
64
  end
56
65
  end
57
66
  end
67
+
68
+
69
+ describe ".base_uri" do
70
+ it "returns the qualified API uri" do
71
+ klass.base_uri = "http://api.dnsimple.com"
72
+ klass.base_uri.should eq("http://api.dnsimple.com")
73
+ end
74
+ end
75
+
76
+ describe ".base_uri=" do
77
+ it "sets the base_uri" do
78
+ klass.base_uri = "http://api1.dnsimple.com/"
79
+ klass.base_uri.should eq("http://api1.dnsimple.com")
80
+ klass.base_uri = "http://api2.dnsimple.com"
81
+ klass.base_uri.should eq("http://api2.dnsimple.com")
82
+ end
83
+ end
84
+
58
85
  end