paid 1.0.1 → 1.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.txt +6 -0
- data/Rakefile +1 -1
- data/VERSION +1 -1
- data/lib/paid.rb +32 -207
- data/lib/paid/account.rb +22 -10
- data/lib/paid/api_list.rb +56 -17
- data/lib/paid/api_method.rb +93 -0
- data/lib/paid/api_resource.rb +130 -8
- data/lib/paid/customer.rb +104 -40
- data/lib/paid/errors/api_connection_error.rb +1 -1
- data/lib/paid/errors/api_error.rb +25 -3
- data/lib/paid/errors/authentication_error.rb +1 -1
- data/lib/paid/errors/paid_error.rb +2 -9
- data/lib/paid/event.rb +28 -17
- data/lib/paid/event_data.rb +10 -0
- data/lib/paid/headers_builder.rb +75 -0
- data/lib/paid/invoice.rb +55 -16
- data/lib/paid/params_builder.rb +26 -0
- data/lib/paid/path_builder.rb +38 -0
- data/lib/paid/plan.rb +38 -13
- data/lib/paid/refund_list.rb +26 -0
- data/lib/paid/requester.rb +97 -0
- data/lib/paid/subscription.rb +47 -16
- data/lib/paid/transaction.rb +64 -16
- data/lib/paid/util.rb +14 -40
- data/paid.gemspec +1 -1
- data/test/paid/{api_class_test.rb → _api_resource_test.rb} +31 -17
- data/test/paid/account_test.rb +3 -3
- data/test/paid/api_list_test.rb +14 -8
- data/test/paid/api_method_test.rb +89 -0
- data/test/paid/customer_test.rb +20 -10
- data/test/paid/event_test.rb +3 -4
- data/test/paid/headers_builder_test.rb +39 -0
- data/test/paid/invoice_test.rb +3 -3
- data/test/paid/params_builder_test.rb +57 -0
- data/test/paid/path_builder_test.rb +67 -0
- data/test/paid/plan_test.rb +3 -3
- data/test/paid/requester_test.rb +86 -0
- data/test/paid/subscription_test.rb +3 -3
- data/test/paid/transaction_test.rb +4 -4
- data/test/paid/util_test.rb +36 -35
- data/test/test_data.rb +9 -2
- data/test/test_helper.rb +14 -14
- metadata +23 -19
- data/lib/paid/api_class.rb +0 -338
- data/lib/paid/api_singleton.rb +0 -5
- data/lib/paid/errors/invalid_request_error.rb +0 -10
- data/test/mock_resource.rb +0 -69
- data/test/paid/api_resource_test.rb +0 -28
- data/test/paid/api_singleton_test.rb +0 -12
- data/test/paid/authentication_test.rb +0 -50
- data/test/paid/status_codes_test.rb +0 -63
data/lib/paid/api_singleton.rb
DELETED
data/test/mock_resource.rb
DELETED
@@ -1,69 +0,0 @@
|
|
1
|
-
# Setup a fake resource for testing the APIResource
|
2
|
-
|
3
|
-
class NestedResource < Paid::APIResource
|
4
|
-
attribute :price
|
5
|
-
|
6
|
-
def self.path
|
7
|
-
"/nested_resources"
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
class MockResource < Paid::APIResource
|
12
|
-
attribute :name
|
13
|
-
attribute :tarray
|
14
|
-
attribute :thash
|
15
|
-
attribute :nested, NestedResource
|
16
|
-
|
17
|
-
api_class_method :retrieve, :get, ":path/:id", :arguments => [:id]
|
18
|
-
api_class_method :all, :get, :constructor => Paid::APIList.constructor(MockResource)
|
19
|
-
api_class_method :create, :post
|
20
|
-
api_class_method :many_args_get, :get, ":path/:b/many", :arguments => [:a, :b, :c]
|
21
|
-
api_class_method :many_args_post, :post, ":path/:b/many", :arguments => [:a, :b, :c]
|
22
|
-
api_class_method :crazy_path, :get, ":crazy"
|
23
|
-
|
24
|
-
api_class_method :with_con_self, :get, :constructor => :self
|
25
|
-
api_class_method :with_con_class, :get, :constructor => MockResource
|
26
|
-
api_class_method :with_con_lambda, :get, :constructor => lambda{ |json| "lamdba result" }
|
27
|
-
api_class_method :with_con_default, :get
|
28
|
-
|
29
|
-
def self.default_lambda
|
30
|
-
lambda do |this|
|
31
|
-
self.default_values
|
32
|
-
end
|
33
|
-
end
|
34
|
-
api_class_method :with_lambda, :post, :default_params => self.default_lambda
|
35
|
-
api_class_method :with_symbol, :post, :default_params => :default_values
|
36
|
-
api_class_method :with_symbol_and_args, :post, :default_params => :default_values, :arguments => [:name]
|
37
|
-
|
38
|
-
api_instance_method :refresh, :get, :constructor => :self
|
39
|
-
api_instance_method :save, :put, :default_params => changed_lambda, :constructor => :self
|
40
|
-
api_instance_method :delete, :delete
|
41
|
-
api_instance_method :custom_path, :get, ":path", :arguments => [:path]
|
42
|
-
api_instance_method :name_path, :get, ":name"
|
43
|
-
api_instance_method :crazy_path, :get, ":crazy"
|
44
|
-
|
45
|
-
api_instance_method :with_con_self, :get, :constructor => :self
|
46
|
-
api_instance_method :with_con_class, :get, :constructor => MockResource
|
47
|
-
api_instance_method :with_con_lambda, :get, :constructor => lambda{ |json| "lamdba result" }
|
48
|
-
api_instance_method :with_con_default, :get
|
49
|
-
|
50
|
-
api_instance_method :with_lambda, :put, :default_params => changed_lambda
|
51
|
-
api_instance_method :with_symbol, :put, :default_params => :changed_attributes
|
52
|
-
api_instance_method :with_symbol_and_args, :put, :default_params => :changed_attributes, :arguments => [:name]
|
53
|
-
|
54
|
-
def self.path
|
55
|
-
"/mocks"
|
56
|
-
end
|
57
|
-
|
58
|
-
def self.crazy
|
59
|
-
"/crazy_path"
|
60
|
-
end
|
61
|
-
|
62
|
-
def self.default_values
|
63
|
-
{
|
64
|
-
:name => "default name",
|
65
|
-
:tarray => [1,2,3]
|
66
|
-
}
|
67
|
-
end
|
68
|
-
|
69
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require File.expand_path('../../test_helper', __FILE__)
|
2
|
-
|
3
|
-
module Paid
|
4
|
-
class ApiResourceTest < Test::Unit::TestCase
|
5
|
-
|
6
|
-
should 'have an id attribute' do
|
7
|
-
assert(Paid::APIResource.method_defined?(:id))
|
8
|
-
assert(Paid::APIResource.method_defined?(:id=))
|
9
|
-
end
|
10
|
-
|
11
|
-
should 'have an object attribute' do
|
12
|
-
assert(Paid::APIResource.method_defined?(:object))
|
13
|
-
assert(Paid::APIResource.method_defined?(:object=))
|
14
|
-
end
|
15
|
-
|
16
|
-
should 'have a default path' do
|
17
|
-
mr = MockResource.new('fake_id')
|
18
|
-
assert_equal("#{MockResource.path}/fake_id", mr.path)
|
19
|
-
end
|
20
|
-
|
21
|
-
should 'raise an InvalidRequestError when no ID is present for instance path' do
|
22
|
-
@mock.expects(:get).never
|
23
|
-
c = MockResource.new
|
24
|
-
assert_raises(Paid::InvalidRequestError) { c.refresh }
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
require File.expand_path('../../test_helper', __FILE__)
|
2
|
-
|
3
|
-
module Paid
|
4
|
-
class ApiSingletonTest < Test::Unit::TestCase
|
5
|
-
|
6
|
-
should 'have an object attribute' do
|
7
|
-
assert(Paid::APISingleton.method_defined?(:object))
|
8
|
-
assert(Paid::APISingleton.method_defined?(:object=))
|
9
|
-
end
|
10
|
-
|
11
|
-
end
|
12
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
require File.expand_path('../../test_helper', __FILE__)
|
3
|
-
|
4
|
-
module Paid
|
5
|
-
class StatusCodesTest < Test::Unit::TestCase
|
6
|
-
|
7
|
-
context 'AuthenticationError' do
|
8
|
-
should 'be raised with no API credentials' do
|
9
|
-
Paid.api_key = nil
|
10
|
-
assert_raises(Paid::AuthenticationError) do
|
11
|
-
MockResource.retrieve('fake_id')
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
should 'be raised with invalid credentials' do
|
16
|
-
Paid.api_key = 'invalid api key' # spaces aren't valid
|
17
|
-
assert_raises(Paid::AuthenticationError) do
|
18
|
-
MockResource.new('fake_id').refresh
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
context 'that has been raised' do
|
23
|
-
setup do
|
24
|
-
Paid.api_key = 'invalid'
|
25
|
-
response = test_response(test_invalid_api_key_error, 401)
|
26
|
-
begin
|
27
|
-
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 401))
|
28
|
-
MockResource.retrieve('failing')
|
29
|
-
rescue Paid::AuthenticationError => e
|
30
|
-
@error = e
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
should 'have an http status of 401' do
|
35
|
-
assert_equal(401, @error.http_status)
|
36
|
-
end
|
37
|
-
|
38
|
-
should 'have an http body' do
|
39
|
-
assert(!!@error.http_body)
|
40
|
-
end
|
41
|
-
|
42
|
-
should 'have a JSON body with an error message' do
|
43
|
-
assert(!!@error.json_body[:error][:message])
|
44
|
-
assert_equal(test_invalid_api_key_error[:error][:message], @error.json_body[:error][:message])
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
50
|
-
end
|
@@ -1,63 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
require File.expand_path('../../test_helper', __FILE__)
|
3
|
-
|
4
|
-
module Paid
|
5
|
-
class StatusCodesTest < Test::Unit::TestCase
|
6
|
-
|
7
|
-
context 'InvalidRequestError' do
|
8
|
-
should 'be raised when HTTP status code is 400' do
|
9
|
-
response = test_response(test_missing_id_error, 400)
|
10
|
-
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 404))
|
11
|
-
begin
|
12
|
-
MockResource.retrieve('bad_id')
|
13
|
-
rescue Paid::InvalidRequestError => e
|
14
|
-
assert_equal(400, e.http_status)
|
15
|
-
assert(!!e.http_body)
|
16
|
-
assert(e.json_body.is_a?(Hash))
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
should 'be raised when HTTP status code is 404' do
|
21
|
-
response = test_response(test_missing_id_error, 404)
|
22
|
-
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 404))
|
23
|
-
assert_raises
|
24
|
-
begin
|
25
|
-
MockResource.retrieve('foo')
|
26
|
-
rescue Paid::InvalidRequestError => e
|
27
|
-
rescued = true
|
28
|
-
assert_equal(404, e.http_status)
|
29
|
-
assert_equal(true, !!e.http_body)
|
30
|
-
assert_equal(true, e.json_body.is_a?(Hash))
|
31
|
-
end
|
32
|
-
assert(rescued)
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
context 'APIError' do
|
37
|
-
should 'be raised when HTTP status code is 5XX' do
|
38
|
-
response = test_response(test_api_error, 500)
|
39
|
-
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 500))
|
40
|
-
|
41
|
-
begin
|
42
|
-
MockResource.new('fake_id').refresh
|
43
|
-
rescue Paid::APIError => e
|
44
|
-
rescued = true
|
45
|
-
assert(e.is_a?(Paid::APIError))
|
46
|
-
end
|
47
|
-
assert(rescued)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
context 'AuthenticationError' do
|
52
|
-
should 'be raised when HTTP status code is 401 (invalid credentials)' do
|
53
|
-
Paid.api_key = 'invalid'
|
54
|
-
response = test_response(test_invalid_api_key_error, 401)
|
55
|
-
assert_raises(Paid::AuthenticationError) do
|
56
|
-
@mock.expects(:get).once.raises(RestClient::ExceptionWithResponse.new(response, 401))
|
57
|
-
MockResource.retrieve('failing')
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
end
|
63
|
-
end
|