stripe 1.18.0 → 1.30.0
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 +7 -0
- data/.gitignore +1 -0
- data/.travis.yml +11 -1
- data/History.txt +98 -0
- data/README.rdoc +19 -10
- data/VERSION +1 -1
- data/lib/stripe/account.rb +46 -4
- data/lib/stripe/api_operations/create.rb +3 -10
- data/lib/stripe/api_operations/delete.rb +4 -4
- data/lib/stripe/api_operations/list.rb +17 -9
- data/lib/stripe/api_operations/request.rb +41 -0
- data/lib/stripe/api_operations/update.rb +41 -40
- data/lib/stripe/api_resource.rb +7 -4
- data/lib/stripe/application_fee.rb +3 -4
- data/lib/stripe/application_fee_refund.rb +1 -1
- data/lib/stripe/balance_transaction.rb +1 -1
- data/lib/stripe/bank_account.rb +19 -0
- data/lib/stripe/bitcoin_receiver.rb +12 -2
- data/lib/stripe/bitcoin_transaction.rb +5 -0
- data/lib/stripe/card.rb +6 -4
- data/lib/stripe/charge.rb +14 -22
- data/lib/stripe/coupon.rb +2 -2
- data/lib/stripe/customer.rb +24 -26
- data/lib/stripe/dispute.rb +16 -0
- data/lib/stripe/errors/card_error.rb +3 -2
- data/lib/stripe/errors/invalid_request_error.rb +3 -2
- data/lib/stripe/errors/rate_limit_error.rb +4 -0
- data/lib/stripe/errors/stripe_error.rb +8 -2
- data/lib/stripe/event.rb +1 -1
- data/lib/stripe/file_upload.rb +12 -22
- data/lib/stripe/invoice.rb +8 -8
- data/lib/stripe/invoice_item.rb +2 -2
- data/lib/stripe/list_object.rb +77 -13
- data/lib/stripe/order.rb +19 -0
- data/lib/stripe/plan.rb +2 -2
- data/lib/stripe/product.rb +16 -0
- data/lib/stripe/recipient.rb +2 -2
- data/lib/stripe/refund.rb +2 -9
- data/lib/stripe/reversal.rb +14 -0
- data/lib/stripe/singleton_api_resource.rb +2 -2
- data/lib/stripe/sku.rb +8 -0
- data/lib/stripe/stripe_object.rb +232 -46
- data/lib/stripe/subscription.rb +3 -3
- data/lib/stripe/token.rb +1 -1
- data/lib/stripe/transfer.rb +3 -3
- data/lib/stripe/util.rb +64 -21
- data/lib/stripe/version.rb +1 -1
- data/lib/stripe.rb +102 -67
- data/stripe.gemspec +0 -2
- data/test/stripe/account_test.rb +135 -6
- data/test/stripe/api_resource_test.rb +326 -42
- data/test/stripe/application_fee_refund_test.rb +6 -6
- data/test/stripe/application_fee_test.rb +3 -3
- data/test/stripe/balance_test.rb +11 -0
- data/test/stripe/bitcoin_receiver_test.rb +30 -7
- data/test/stripe/bitcoin_transaction_test.rb +29 -0
- data/test/stripe/charge_refund_test.rb +55 -0
- data/test/stripe/charge_test.rb +32 -13
- data/test/stripe/coupon_test.rb +3 -3
- data/test/stripe/customer_card_test.rb +20 -14
- data/test/stripe/customer_test.rb +15 -15
- data/test/stripe/dispute_test.rb +45 -0
- data/test/stripe/file_upload_test.rb +17 -6
- data/test/stripe/invoice_test.rb +18 -4
- data/test/stripe/list_object_test.rb +126 -2
- data/test/stripe/metadata_test.rb +28 -13
- data/test/stripe/order_test.rb +52 -0
- data/test/stripe/product_test.rb +41 -0
- data/test/stripe/recipient_card_test.rb +9 -9
- data/test/stripe/refund_test.rb +23 -15
- data/test/stripe/reversal_test.rb +47 -0
- data/test/stripe/sku_test.rb +24 -0
- data/test/stripe/stripe_object_test.rb +67 -6
- data/test/stripe/subscription_test.rb +13 -13
- data/test/stripe/transfer_test.rb +4 -4
- data/test/stripe/util_test.rb +45 -29
- data/test/stripe_test.rb +16 -0
- data/test/test_data.rb +273 -66
- metadata +47 -76
- data/lib/stripe/certificate_blacklist.rb +0 -55
- data/test/stripe/certificate_blacklist_test.rb +0 -18
@@ -3,7 +3,7 @@ require File.expand_path('../../test_helper', __FILE__)
|
|
3
3
|
module Stripe
|
4
4
|
class SubscriptionTest < Test::Unit::TestCase
|
5
5
|
should "subscriptions should be listable" do
|
6
|
-
@mock.expects(:get).once.returns(
|
6
|
+
@mock.expects(:get).once.returns(make_response(make_customer))
|
7
7
|
|
8
8
|
customer = Stripe::Customer.retrieve('test_customer')
|
9
9
|
|
@@ -11,7 +11,7 @@ module Stripe
|
|
11
11
|
end
|
12
12
|
|
13
13
|
should "subscriptions should be refreshable" do
|
14
|
-
@mock.expects(:get).twice.returns(
|
14
|
+
@mock.expects(:get).twice.returns(make_response(make_customer), make_response(make_subscription(:id => 'refreshed_subscription')))
|
15
15
|
|
16
16
|
customer = Stripe::Customer.retrieve('test_customer')
|
17
17
|
subscription = customer.subscriptions.first
|
@@ -21,20 +21,20 @@ module Stripe
|
|
21
21
|
end
|
22
22
|
|
23
23
|
should "subscriptions should be deletable" do
|
24
|
-
@mock.expects(:get).once.returns(
|
24
|
+
@mock.expects(:get).once.returns(make_response(make_customer))
|
25
25
|
customer = Stripe::Customer.retrieve('test_customer')
|
26
26
|
subscription = customer.subscriptions.first
|
27
27
|
|
28
|
-
@mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/subscriptions/#{subscription.id}?at_period_end=true", nil, nil).returns(
|
28
|
+
@mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/subscriptions/#{subscription.id}?at_period_end=true", nil, nil).returns(make_response(make_subscription))
|
29
29
|
subscription.delete :at_period_end => true
|
30
30
|
|
31
|
-
@mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/subscriptions/#{subscription.id}", nil, nil).returns(
|
31
|
+
@mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/subscriptions/#{subscription.id}", nil, nil).returns(make_response(make_subscription))
|
32
32
|
subscription.delete
|
33
33
|
end
|
34
34
|
|
35
35
|
should "subscriptions should be updateable" do
|
36
|
-
@mock.expects(:get).once.returns(
|
37
|
-
@mock.expects(:post).once.returns(
|
36
|
+
@mock.expects(:get).once.returns(make_response(make_customer))
|
37
|
+
@mock.expects(:post).once.returns(make_response(make_subscription({:status => 'active'})))
|
38
38
|
|
39
39
|
customer = Stripe::Customer.retrieve('test_customer')
|
40
40
|
subscription = customer.subscriptions.first
|
@@ -47,8 +47,8 @@ module Stripe
|
|
47
47
|
end
|
48
48
|
|
49
49
|
should "create should return a new subscription" do
|
50
|
-
@mock.expects(:get).once.returns(
|
51
|
-
@mock.expects(:post).once.returns(
|
50
|
+
@mock.expects(:get).once.returns(make_response(make_customer))
|
51
|
+
@mock.expects(:post).once.returns(make_response(make_subscription(:id => 'test_new_subscription')))
|
52
52
|
|
53
53
|
customer = Stripe::Customer.retrieve('test_customer')
|
54
54
|
subscription = customer.subscriptions.create(:plan => 'silver')
|
@@ -56,15 +56,15 @@ module Stripe
|
|
56
56
|
end
|
57
57
|
|
58
58
|
should "be able to delete a subscriptions's discount" do
|
59
|
-
@mock.expects(:get).once.returns(
|
60
|
-
@mock.expects(:post).once.returns(
|
59
|
+
@mock.expects(:get).once.returns(make_response(make_customer))
|
60
|
+
@mock.expects(:post).once.returns(make_response(make_subscription(:id => 'test_new_subscription')))
|
61
61
|
|
62
62
|
|
63
|
-
customer = Stripe::Customer.retrieve(
|
63
|
+
customer = Stripe::Customer.retrieve('test_customer')
|
64
64
|
subscription = customer.subscriptions.create(:plan => 'silver')
|
65
65
|
|
66
66
|
url = "#{Stripe.api_base}/v1/customers/c_test_customer/subscriptions/test_new_subscription/discount"
|
67
|
-
@mock.expects(:delete).once.with(url, nil, nil).returns(
|
67
|
+
@mock.expects(:delete).once.with(url, nil, nil).returns(make_response(make_delete_discount_response))
|
68
68
|
subscription.delete_discount
|
69
69
|
assert_equal nil, subscription.discount
|
70
70
|
end
|
@@ -3,22 +3,22 @@ require File.expand_path('../../test_helper', __FILE__)
|
|
3
3
|
module Stripe
|
4
4
|
class TransferTest < Test::Unit::TestCase
|
5
5
|
should "retrieve should retrieve transfer" do
|
6
|
-
@mock.expects(:get).once.returns(
|
6
|
+
@mock.expects(:get).once.returns(make_response(make_transfer))
|
7
7
|
transfer = Stripe::Transfer.retrieve('tr_test_transfer')
|
8
8
|
assert_equal 'tr_test_transfer', transfer.id
|
9
9
|
end
|
10
10
|
|
11
11
|
should "create should create a transfer" do
|
12
|
-
@mock.expects(:post).once.returns(
|
12
|
+
@mock.expects(:post).once.returns(make_response(make_transfer))
|
13
13
|
transfer = Stripe::Transfer.create
|
14
14
|
assert_equal "tr_test_transfer", transfer.id
|
15
15
|
end
|
16
16
|
|
17
17
|
should "cancel should cancel a transfer" do
|
18
|
-
@mock.expects(:get).once.returns(
|
18
|
+
@mock.expects(:get).once.returns(make_response(make_transfer))
|
19
19
|
transfer = Stripe::Transfer.retrieve('tr_test_transfer')
|
20
20
|
|
21
|
-
@mock.expects(:post).once.with('https://api.stripe.com/v1/transfers/tr_test_transfer/cancel', nil, '').returns(
|
21
|
+
@mock.expects(:post).once.with('https://api.stripe.com/v1/transfers/tr_test_transfer/cancel', nil, '').returns(make_response(make_canceled_transfer))
|
22
22
|
transfer.cancel
|
23
23
|
end
|
24
24
|
end
|
data/test/stripe/util_test.rb
CHANGED
@@ -2,7 +2,48 @@ require File.expand_path('../../test_helper', __FILE__)
|
|
2
2
|
|
3
3
|
module Stripe
|
4
4
|
class UtilTest < Test::Unit::TestCase
|
5
|
-
should "
|
5
|
+
should "#encode_parameters should prepare parameters for an HTTP request" do
|
6
|
+
params = {
|
7
|
+
:a => 3,
|
8
|
+
:b => "+foo?",
|
9
|
+
:c => "bar&baz",
|
10
|
+
:d => { :a => "a", :b => "b" },
|
11
|
+
:e => [0, 1],
|
12
|
+
}
|
13
|
+
assert_equal(
|
14
|
+
"a=3&b=%2Bfoo%3F&c=bar%26baz&d[a]=a&d[b]=b&e[]=0&e[]=1",
|
15
|
+
Stripe::Util.encode_parameters(params)
|
16
|
+
)
|
17
|
+
end
|
18
|
+
|
19
|
+
should "#url_encode should prepare strings for HTTP" do
|
20
|
+
assert_equal "foo", Stripe::Util.url_encode("foo")
|
21
|
+
assert_equal "foo", Stripe::Util.url_encode(:foo)
|
22
|
+
assert_equal "foo%2B", Stripe::Util.url_encode("foo+")
|
23
|
+
assert_equal "foo%26", Stripe::Util.url_encode("foo&")
|
24
|
+
assert_equal "foo[bar]", Stripe::Util.url_encode("foo[bar]")
|
25
|
+
end
|
26
|
+
|
27
|
+
should "#flatten_params should encode parameters according to Rails convention" do
|
28
|
+
params = {
|
29
|
+
:a => 3,
|
30
|
+
:b => "foo?",
|
31
|
+
:c => "bar&baz",
|
32
|
+
:d => { :a => "a", :b => "b" },
|
33
|
+
:e => [0, 1],
|
34
|
+
}
|
35
|
+
assert_equal([
|
36
|
+
["a", 3],
|
37
|
+
["b", "foo?"],
|
38
|
+
["c", "bar&baz"],
|
39
|
+
["d[a]", "a"],
|
40
|
+
["d[b]", "b"],
|
41
|
+
["e[]", 0],
|
42
|
+
["e[]", 1],
|
43
|
+
], Stripe::Util.flatten_params(params))
|
44
|
+
end
|
45
|
+
|
46
|
+
should "#symbolize_names should convert names to symbols" do
|
6
47
|
start = {
|
7
48
|
'foo' => 'bar',
|
8
49
|
'array' => [{ 'foo' => 'bar' }],
|
@@ -26,34 +67,9 @@ module Stripe
|
|
26
67
|
assert_equal(finish, symbolized)
|
27
68
|
end
|
28
69
|
|
29
|
-
should "
|
30
|
-
|
31
|
-
|
32
|
-
assert_equal(nil, api_key)
|
33
|
-
end
|
34
|
-
|
35
|
-
should "parse a string opts argument" do
|
36
|
-
api_key, headers = Stripe::Util.parse_opts('foo')
|
37
|
-
assert_equal({}, headers)
|
38
|
-
assert_equal('foo', api_key)
|
39
|
-
end
|
40
|
-
|
41
|
-
should "parse a hash opts argument with just api_key" do
|
42
|
-
api_key, headers = Stripe::Util.parse_opts({:api_key => 'foo'})
|
43
|
-
assert_equal({}, headers)
|
44
|
-
assert_equal('foo', api_key)
|
45
|
-
end
|
46
|
-
|
47
|
-
should "parse a hash opts argument with just idempotency_key" do
|
48
|
-
api_key, headers = Stripe::Util.parse_opts({:idempotency_key => 'foo'})
|
49
|
-
assert_equal({:idempotency_key => 'foo'}, headers)
|
50
|
-
assert_equal(nil, api_key)
|
51
|
-
end
|
52
|
-
|
53
|
-
should "parse a hash opts argument both idempotency_key and api_key" do
|
54
|
-
api_key, headers = Stripe::Util.parse_opts({:api_key => 'bar', :idempotency_key => 'foo'})
|
55
|
-
assert_equal({:idempotency_key => 'foo'}, headers)
|
56
|
-
assert_equal('bar', api_key)
|
70
|
+
should "#normalize_opts should reject nil keys" do
|
71
|
+
assert_raise { Stripe::Util.normalize_opts(nil) }
|
72
|
+
assert_raise { Stripe::Util.normalize_opts(:api_key => nil) }
|
57
73
|
end
|
58
74
|
end
|
59
75
|
end
|
data/test/stripe_test.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require File.expand_path('../test_helper', __FILE__)
|
2
|
+
|
3
|
+
class StripeTest < Test::Unit::TestCase
|
4
|
+
should "warn that #refresh_from is deprecated" do
|
5
|
+
old_stderr = $stderr
|
6
|
+
$stderr = StringIO.new
|
7
|
+
begin
|
8
|
+
Stripe.uri_encode({})
|
9
|
+
message = "NOTE: Stripe.uri_encode is deprecated; use " +
|
10
|
+
"Stripe::Util#encode_parameters instead"
|
11
|
+
assert_match Regexp.new(message), $stderr.string
|
12
|
+
ensure
|
13
|
+
$stderr = old_stderr
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|