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.
Files changed (81) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +1 -0
  3. data/.travis.yml +11 -1
  4. data/History.txt +98 -0
  5. data/README.rdoc +19 -10
  6. data/VERSION +1 -1
  7. data/lib/stripe/account.rb +46 -4
  8. data/lib/stripe/api_operations/create.rb +3 -10
  9. data/lib/stripe/api_operations/delete.rb +4 -4
  10. data/lib/stripe/api_operations/list.rb +17 -9
  11. data/lib/stripe/api_operations/request.rb +41 -0
  12. data/lib/stripe/api_operations/update.rb +41 -40
  13. data/lib/stripe/api_resource.rb +7 -4
  14. data/lib/stripe/application_fee.rb +3 -4
  15. data/lib/stripe/application_fee_refund.rb +1 -1
  16. data/lib/stripe/balance_transaction.rb +1 -1
  17. data/lib/stripe/bank_account.rb +19 -0
  18. data/lib/stripe/bitcoin_receiver.rb +12 -2
  19. data/lib/stripe/bitcoin_transaction.rb +5 -0
  20. data/lib/stripe/card.rb +6 -4
  21. data/lib/stripe/charge.rb +14 -22
  22. data/lib/stripe/coupon.rb +2 -2
  23. data/lib/stripe/customer.rb +24 -26
  24. data/lib/stripe/dispute.rb +16 -0
  25. data/lib/stripe/errors/card_error.rb +3 -2
  26. data/lib/stripe/errors/invalid_request_error.rb +3 -2
  27. data/lib/stripe/errors/rate_limit_error.rb +4 -0
  28. data/lib/stripe/errors/stripe_error.rb +8 -2
  29. data/lib/stripe/event.rb +1 -1
  30. data/lib/stripe/file_upload.rb +12 -22
  31. data/lib/stripe/invoice.rb +8 -8
  32. data/lib/stripe/invoice_item.rb +2 -2
  33. data/lib/stripe/list_object.rb +77 -13
  34. data/lib/stripe/order.rb +19 -0
  35. data/lib/stripe/plan.rb +2 -2
  36. data/lib/stripe/product.rb +16 -0
  37. data/lib/stripe/recipient.rb +2 -2
  38. data/lib/stripe/refund.rb +2 -9
  39. data/lib/stripe/reversal.rb +14 -0
  40. data/lib/stripe/singleton_api_resource.rb +2 -2
  41. data/lib/stripe/sku.rb +8 -0
  42. data/lib/stripe/stripe_object.rb +232 -46
  43. data/lib/stripe/subscription.rb +3 -3
  44. data/lib/stripe/token.rb +1 -1
  45. data/lib/stripe/transfer.rb +3 -3
  46. data/lib/stripe/util.rb +64 -21
  47. data/lib/stripe/version.rb +1 -1
  48. data/lib/stripe.rb +102 -67
  49. data/stripe.gemspec +0 -2
  50. data/test/stripe/account_test.rb +135 -6
  51. data/test/stripe/api_resource_test.rb +326 -42
  52. data/test/stripe/application_fee_refund_test.rb +6 -6
  53. data/test/stripe/application_fee_test.rb +3 -3
  54. data/test/stripe/balance_test.rb +11 -0
  55. data/test/stripe/bitcoin_receiver_test.rb +30 -7
  56. data/test/stripe/bitcoin_transaction_test.rb +29 -0
  57. data/test/stripe/charge_refund_test.rb +55 -0
  58. data/test/stripe/charge_test.rb +32 -13
  59. data/test/stripe/coupon_test.rb +3 -3
  60. data/test/stripe/customer_card_test.rb +20 -14
  61. data/test/stripe/customer_test.rb +15 -15
  62. data/test/stripe/dispute_test.rb +45 -0
  63. data/test/stripe/file_upload_test.rb +17 -6
  64. data/test/stripe/invoice_test.rb +18 -4
  65. data/test/stripe/list_object_test.rb +126 -2
  66. data/test/stripe/metadata_test.rb +28 -13
  67. data/test/stripe/order_test.rb +52 -0
  68. data/test/stripe/product_test.rb +41 -0
  69. data/test/stripe/recipient_card_test.rb +9 -9
  70. data/test/stripe/refund_test.rb +23 -15
  71. data/test/stripe/reversal_test.rb +47 -0
  72. data/test/stripe/sku_test.rb +24 -0
  73. data/test/stripe/stripe_object_test.rb +67 -6
  74. data/test/stripe/subscription_test.rb +13 -13
  75. data/test/stripe/transfer_test.rb +4 -4
  76. data/test/stripe/util_test.rb +45 -29
  77. data/test/stripe_test.rb +16 -0
  78. data/test/test_data.rb +273 -66
  79. metadata +47 -76
  80. data/lib/stripe/certificate_blacklist.rb +0 -55
  81. data/test/stripe/certificate_blacklist_test.rb +0 -18
@@ -3,20 +3,20 @@ require File.expand_path('../../test_helper', __FILE__)
3
3
  module Stripe
4
4
  class BitcoinReceiverTest < Test::Unit::TestCase
5
5
  should "retrieve should retrieve bitcoin receiver" do
6
- @mock.expects(:get).once.returns(test_response(test_bitcoin_receiver))
6
+ @mock.expects(:get).once.returns(make_response(make_bitcoin_receiver))
7
7
  receiver = Stripe::BitcoinReceiver.retrieve('btcrcv_test_receiver')
8
8
  assert_equal 'btcrcv_test_receiver', receiver.id
9
9
  end
10
10
 
11
11
  should "create should create a bitcoin receiver" do
12
- @mock.expects(:post).once.returns(test_response(test_bitcoin_receiver))
12
+ @mock.expects(:post).once.returns(make_response(make_bitcoin_receiver))
13
13
  receiver = Stripe::BitcoinReceiver.create
14
14
  assert_equal "btcrcv_test_receiver", receiver.id
15
15
  end
16
16
 
17
17
  should "all should list bitcoin receivers" do
18
- @mock.expects(:get).once.returns(test_response(test_bitcoin_receiver_array))
19
- receivers = Stripe::BitcoinReceiver.all
18
+ @mock.expects(:get).once.returns(make_response(make_bitcoin_receiver_array))
19
+ receivers = Stripe::BitcoinReceiver.list
20
20
  assert_equal 3, receivers.data.length
21
21
  assert receivers.data.kind_of? Array
22
22
  receivers.each do |receiver|
@@ -28,11 +28,34 @@ module Stripe
28
28
  end
29
29
 
30
30
  should "maintain bitcoin transaction sublist" do
31
- @mock.expects(:get).with("#{Stripe.api_base}/v1/bitcoin/receivers/btcrcv_test_receiver", nil, nil).once.returns(test_response(test_bitcoin_receiver))
31
+ @mock.expects(:get).with("#{Stripe.api_base}/v1/bitcoin/receivers/btcrcv_test_receiver", nil, nil).once.returns(make_response(make_bitcoin_receiver))
32
32
  receiver = Stripe::BitcoinReceiver.retrieve('btcrcv_test_receiver')
33
- @mock.expects(:get).with("#{Stripe.api_base}/v1/bitcoin/receivers/btcrcv_test_receiver/transactions", nil, nil).once.returns(test_response(test_bitcoin_transaction_array))
34
- transactions = receiver.transactions.all
33
+ @mock.expects(:get).with("#{Stripe.api_base}/v1/bitcoin/receivers/btcrcv_test_receiver/transactions", nil, nil).once.returns(make_response(make_bitcoin_transaction_array))
34
+ transactions = receiver.transactions.list
35
35
  assert_equal(3, transactions.data.length)
36
36
  end
37
+
38
+ should "update should update a bitcoin receiver" do
39
+ @mock.expects(:get).once.returns(make_response(make_bitcoin_receiver))
40
+ @mock.expects(:post).with("#{Stripe.api_base}/v1/bitcoin/receivers/btcrcv_test_receiver", nil, "description=details").once.returns(make_response(make_bitcoin_receiver))
41
+ receiver = Stripe::BitcoinReceiver.construct_from(make_bitcoin_receiver)
42
+ receiver.refresh
43
+ receiver.description = "details"
44
+ receiver.save
45
+ end
46
+
47
+ should "delete a bitcoin receiver with no customer through top-level API" do
48
+ @mock.expects(:delete).with("#{Stripe.api_base}/v1/bitcoin/receivers/btcrcv_test_receiver", nil, nil).once.returns(make_response({:deleted => true, :id => "btcrcv_test_receiver"}))
49
+ receiver = Stripe::BitcoinReceiver.construct_from(make_bitcoin_receiver)
50
+ response = receiver.delete
51
+ assert(receiver.deleted)
52
+ end
53
+
54
+ should "delete a bitcoin receiver with a customer through customer's subresource API" do
55
+ @mock.expects(:delete).with("#{Stripe.api_base}/v1/customers/customer_foo/sources/btcrcv_test_receiver", nil, nil).once.returns(make_response({:deleted => true, :id => "btcrcv_test_receiver"}))
56
+ receiver = Stripe::BitcoinReceiver.construct_from(make_bitcoin_receiver(:customer => 'customer_foo'))
57
+ response = receiver.delete
58
+ assert(receiver.deleted)
59
+ end
37
60
  end
38
61
  end
@@ -0,0 +1,29 @@
1
+ require File.expand_path('../../test_helper', __FILE__)
2
+
3
+ module Stripe
4
+ class BitcoinTransactionTest < Test::Unit::TestCase
5
+ TEST_ID = "btctxn_test_transaction".freeze
6
+
7
+ should "retrieve should retrieve bitcoin receiver" do
8
+ @mock.expects(:get).
9
+ with("#{Stripe.api_base}/v1/bitcoin/transactions/#{TEST_ID}", nil, nil).
10
+ once.
11
+ returns(make_response(make_bitcoin_transaction))
12
+ receiver = Stripe::BitcoinTransaction.retrieve(TEST_ID)
13
+ assert_equal TEST_ID, receiver.id
14
+ end
15
+
16
+ should "all should list bitcoin transactions" do
17
+ @mock.expects(:get).
18
+ with("#{Stripe.api_base}/v1/bitcoin/transactions", nil, nil).
19
+ once.
20
+ returns(make_response(make_bitcoin_transaction_array))
21
+ transactions = Stripe::BitcoinTransaction.list
22
+ assert_equal 3, transactions.data.length
23
+ assert transactions.data.kind_of? Array
24
+ transactions.each do |transaction|
25
+ assert transaction.kind_of?(Stripe::BitcoinTransaction)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,55 @@
1
+ require File.expand_path('../../test_helper', __FILE__)
2
+
3
+ module Stripe
4
+ class ChargeRefundTest < Test::Unit::TestCase
5
+ should "refunds should be listable" do
6
+ @mock.expects(:get).once.returns(make_response(make_charge))
7
+
8
+ charge = Stripe::Charge.retrieve('test_charge')
9
+
10
+ assert charge.refunds.first.kind_of?(Stripe::Refund)
11
+ end
12
+
13
+ should "refunds should be refreshable" do
14
+ @mock.expects(:get).twice.returns(make_response(make_charge), make_response(make_refund(:id => 'refreshed_refund')))
15
+
16
+ charge = Stripe::Charge.retrieve('test_charge')
17
+ refund = charge.refunds.first
18
+ refund.refresh
19
+
20
+ assert_equal 'refreshed_refund', refund.id
21
+ end
22
+
23
+ should "refunds should be updateable" do
24
+ @mock.expects(:get).
25
+ with("#{Stripe.api_base}/v1/charges/test_charge", nil, nil).
26
+ once.returns(make_response(make_charge))
27
+ @mock.expects(:post).
28
+ with("#{Stripe.api_base}/v1/refunds/ref_test_refund", nil, 'metadata[key]=value').
29
+ once.returns(make_response(make_refund(:metadata => {'key' => 'value'})))
30
+
31
+ charge = Stripe::Charge.retrieve('test_charge')
32
+ refund = charge.refunds.first
33
+
34
+ assert_equal nil, refund.metadata['key']
35
+
36
+ refund.metadata['key'] = 'value'
37
+ refund.save
38
+
39
+ assert_equal 'value', refund.metadata['key']
40
+ end
41
+
42
+ should "create should return a new refund" do
43
+ @mock.expects(:get).
44
+ with("#{Stripe.api_base}/v1/charges/test_charge", nil, nil).
45
+ once.returns(make_response(make_charge(:id => 'test_charge')))
46
+ @mock.expects(:post).
47
+ with("#{Stripe.api_base}/v1/charges/test_charge/refunds", nil, 'amount=20').
48
+ once.returns(make_response(make_refund(:id => 'test_new_refund')))
49
+
50
+ charge = Stripe::Charge.retrieve('test_charge')
51
+ refund = charge.refunds.create(:amount => 20)
52
+ assert_equal 'test_new_refund', refund.id
53
+ end
54
+ end
55
+ end
@@ -3,8 +3,8 @@ require File.expand_path('../../test_helper', __FILE__)
3
3
  module Stripe
4
4
  class ChargeTest < Test::Unit::TestCase
5
5
  should "charges should be listable" do
6
- @mock.expects(:get).once.returns(test_response(test_charge_array))
7
- c = Stripe::Charge.all
6
+ @mock.expects(:get).once.returns(make_response(make_charge_array))
7
+ c = Stripe::Charge.list
8
8
  assert c.data.kind_of? Array
9
9
  c.each do |charge|
10
10
  assert charge.kind_of?(Stripe::Charge)
@@ -13,7 +13,7 @@ module Stripe
13
13
 
14
14
  should "charges should be refundable" do
15
15
  @mock.expects(:get).never
16
- @mock.expects(:post).once.returns(test_response({:id => "ch_test_charge", :refunded => true}))
16
+ @mock.expects(:post).once.returns(make_response({:id => "ch_test_charge", :refunded => true}))
17
17
  c = Stripe::Charge.new("test_charge")
18
18
  c.refund
19
19
  assert c.refunded
@@ -21,15 +21,15 @@ module Stripe
21
21
 
22
22
  should "charges should not be deletable" do
23
23
  assert_raises NoMethodError do
24
- @mock.expects(:get).once.returns(test_response(test_charge))
24
+ @mock.expects(:get).once.returns(make_response(make_charge))
25
25
  c = Stripe::Charge.retrieve("test_charge")
26
26
  c.delete
27
27
  end
28
28
  end
29
29
 
30
30
  should "charges should be updateable" do
31
- @mock.expects(:get).once.returns(test_response(test_charge))
32
- @mock.expects(:post).once.returns(test_response(test_charge))
31
+ @mock.expects(:get).once.returns(make_response(make_charge))
32
+ @mock.expects(:post).once.returns(make_response(make_charge))
33
33
  c = Stripe::Charge.new("test_charge")
34
34
  c.refresh
35
35
  c.mnemonic = "New charge description"
@@ -37,23 +37,23 @@ module Stripe
37
37
  end
38
38
 
39
39
  should "charges should be able to be marked as fraudulent" do
40
- @mock.expects(:get).once.returns(test_response(test_charge))
41
- @mock.expects(:post).once.returns(test_response(test_charge))
40
+ @mock.expects(:get).once.returns(make_response(make_charge))
41
+ @mock.expects(:post).once.returns(make_response(make_charge))
42
42
  c = Stripe::Charge.new("test_charge")
43
43
  c.refresh
44
44
  c.mark_as_fraudulent
45
45
  end
46
46
 
47
47
  should "charges should be able to be marked as safe" do
48
- @mock.expects(:get).once.returns(test_response(test_charge))
49
- @mock.expects(:post).once.returns(test_response(test_charge))
48
+ @mock.expects(:get).once.returns(make_response(make_charge))
49
+ @mock.expects(:post).once.returns(make_response(make_charge))
50
50
  c = Stripe::Charge.new("test_charge")
51
51
  c.refresh
52
52
  c.mark_as_safe
53
53
  end
54
54
 
55
55
  should "charges should have Card objects associated with their Card property" do
56
- @mock.expects(:get).once.returns(test_response(test_charge))
56
+ @mock.expects(:get).once.returns(make_response(make_charge))
57
57
  c = Stripe::Charge.retrieve("test_charge")
58
58
  assert c.card.kind_of?(Stripe::StripeObject) && c.card.object == 'card'
59
59
  end
@@ -66,7 +66,7 @@ module Stripe
66
66
  'card[number]' => ['4242424242424242'],
67
67
  'card[exp_month]' => ['11']
68
68
  }
69
- end.once.returns(test_response(test_charge))
69
+ end.once.returns(make_response(make_charge))
70
70
 
71
71
  c = Stripe::Charge.create({
72
72
  :amount => 100,
@@ -86,7 +86,7 @@ module Stripe
86
86
  'currency' => ['usd'], 'amount' => ['100'],
87
87
  'source' => ['btcrcv_test_receiver']
88
88
  }
89
- end.once.returns(test_response(test_charge))
89
+ end.once.returns(make_response(make_charge))
90
90
 
91
91
  c = Stripe::Charge.create({
92
92
  :amount => 100,
@@ -95,5 +95,24 @@ module Stripe
95
95
  })
96
96
  assert c.paid
97
97
  end
98
+
99
+ should "properly handle an array or dictionaries" do
100
+ @mock.expects(:post).with do |url, api_key, params|
101
+ url == "#{Stripe.api_base}/v1/charges" && api_key.nil? && CGI.parse(params) == {
102
+ 'currency' => ['usd'], 'amount' => ['100'],
103
+ 'source' => ['btcrcv_test_receiver'],
104
+ 'level3[][red]' => ['firstred', 'another'],
105
+ 'level3[][one]' => ['fish'],
106
+ }
107
+ end.once.returns(make_response(make_charge))
108
+
109
+ c = Stripe::Charge.create({
110
+ :amount => 100,
111
+ :source => 'btcrcv_test_receiver',
112
+ :currency => "usd",
113
+ :level3 => [{:red => 'firstred'}, {:one => 'fish', :red => 'another'}]
114
+ })
115
+ assert c.paid
116
+ end
98
117
  end
99
118
  end
@@ -3,14 +3,14 @@ require File.expand_path('../../test_helper', __FILE__)
3
3
  module Stripe
4
4
  class CouponTest < Test::Unit::TestCase
5
5
  should "create should return a new coupon" do
6
- @mock.expects(:post).once.returns(test_response(test_coupon))
6
+ @mock.expects(:post).once.returns(make_response(make_coupon))
7
7
  c = Stripe::Coupon.create
8
8
  assert_equal "co_test_coupon", c.id
9
9
  end
10
10
 
11
11
  should "coupons should be updateable" do
12
- @mock.expects(:get).once.returns(test_response(test_coupon))
13
- @mock.expects(:post).once.returns(test_response(test_coupon))
12
+ @mock.expects(:get).once.returns(make_response(make_coupon))
13
+ @mock.expects(:post).once.returns(make_response(make_coupon))
14
14
  c = Stripe::Coupon.new("test_coupon")
15
15
  c.refresh
16
16
  c.metadata['foo'] = 'bar'
@@ -2,45 +2,45 @@ require File.expand_path('../../test_helper', __FILE__)
2
2
 
3
3
  module Stripe
4
4
  class CustomerCardTest < Test::Unit::TestCase
5
- CUSTOMER_CARD_URL = '/v1/customers/test_customer/cards/test_card'
5
+ CUSTOMER_CARD_URL = '/v1/customers/test_customer/sources/test_card'
6
6
 
7
7
  def customer
8
- @mock.expects(:get).once.returns(test_response(test_customer))
8
+ @mock.expects(:get).once.returns(make_response(make_customer))
9
9
  Stripe::Customer.retrieve('test_customer')
10
10
  end
11
11
 
12
12
  should "customer cards should be listable" do
13
13
  c = customer
14
- @mock.expects(:get).once.returns(test_response(test_card_array(customer.id)))
15
- cards = c.cards.all.data
14
+ @mock.expects(:get).once.returns(make_response(make_customer_card_array(customer.id)))
15
+ cards = c.sources.list(:object => "card").data
16
16
  assert cards.kind_of? Array
17
17
  assert cards[0].kind_of? Stripe::Card
18
18
  end
19
19
 
20
20
  should "customer cards should have the correct url" do
21
21
  c = customer
22
- @mock.expects(:get).once.returns(test_response(test_card(
22
+ @mock.expects(:get).once.returns(make_response(make_card(
23
23
  :id => 'test_card',
24
24
  :customer => 'test_customer'
25
25
  )))
26
- card = c.cards.retrieve('card')
26
+ card = c.sources.retrieve('card')
27
27
  assert_equal CUSTOMER_CARD_URL, card.url
28
28
  end
29
29
 
30
30
  should "customer cards should be deletable" do
31
31
  c = customer
32
- @mock.expects(:get).once.returns(test_response(test_card))
33
- @mock.expects(:delete).once.returns(test_response(test_card(:deleted => true)))
34
- card = c.cards.retrieve('card')
32
+ @mock.expects(:get).once.returns(make_response(make_card))
33
+ @mock.expects(:delete).once.returns(make_response(make_card(:deleted => true)))
34
+ card = c.sources.retrieve('card')
35
35
  card.delete
36
36
  assert card.deleted
37
37
  end
38
38
 
39
39
  should "customer cards should be updateable" do
40
40
  c = customer
41
- @mock.expects(:get).once.returns(test_response(test_card(:exp_year => "2000")))
42
- @mock.expects(:post).once.returns(test_response(test_card(:exp_year => "2100")))
43
- card = c.cards.retrieve('card')
41
+ @mock.expects(:get).once.returns(make_response(make_card(:exp_year => "2000")))
42
+ @mock.expects(:post).once.returns(make_response(make_card(:exp_year => "2100")))
43
+ card = c.sources.retrieve('card')
44
44
  assert_equal "2000", card.exp_year
45
45
  card.exp_year = "2100"
46
46
  card.save
@@ -49,9 +49,15 @@ module Stripe
49
49
 
50
50
  should "create should return a new customer card" do
51
51
  c = customer
52
- @mock.expects(:post).once.returns(test_response(test_card(:id => "test_card")))
53
- card = c.cards.create(:card => "tok_41YJ05ijAaWaFS")
52
+ @mock.expects(:post).once.returns(make_response(make_card(:id => "test_card")))
53
+ card = c.sources.create(:source => "tok_41YJ05ijAaWaFS")
54
54
  assert_equal "test_card", card.id
55
55
  end
56
+
57
+ should "raise if accessing Stripe::Card.retrieve directly" do
58
+ assert_raises NotImplementedError do
59
+ Stripe::Card.retrieve "card_12345"
60
+ end
61
+ end
56
62
  end
57
63
  end
@@ -3,22 +3,22 @@ require File.expand_path('../../test_helper', __FILE__)
3
3
  module Stripe
4
4
  class CustomerTest < Test::Unit::TestCase
5
5
  should "customers should be listable" do
6
- @mock.expects(:get).once.returns(test_response(test_customer_array))
7
- c = Stripe::Customer.all.data
6
+ @mock.expects(:get).once.returns(make_response(make_customer_array))
7
+ c = Stripe::Customer.list.data
8
8
  assert c.kind_of? Array
9
9
  assert c[0].kind_of? Stripe::Customer
10
10
  end
11
11
 
12
12
  should "customers should be deletable" do
13
- @mock.expects(:delete).once.returns(test_response(test_customer({:deleted => true})))
13
+ @mock.expects(:delete).once.returns(make_response(make_customer({:deleted => true})))
14
14
  c = Stripe::Customer.new("test_customer")
15
15
  c.delete
16
16
  assert c.deleted
17
17
  end
18
18
 
19
19
  should "customers should be updateable" do
20
- @mock.expects(:get).once.returns(test_response(test_customer({:mnemonic => "foo"})))
21
- @mock.expects(:post).once.returns(test_response(test_customer({:mnemonic => "bar"})))
20
+ @mock.expects(:get).once.returns(make_response(make_customer({:mnemonic => "foo"})))
21
+ @mock.expects(:post).once.returns(make_response(make_customer({:mnemonic => "bar"})))
22
22
  c = Stripe::Customer.new("test_customer").refresh
23
23
  assert_equal "foo", c.mnemonic
24
24
  c.mnemonic = "bar"
@@ -27,24 +27,24 @@ module Stripe
27
27
  end
28
28
 
29
29
  should "create should return a new customer" do
30
- @mock.expects(:post).once.returns(test_response(test_customer))
30
+ @mock.expects(:post).once.returns(make_response(make_customer))
31
31
  c = Stripe::Customer.create
32
32
  assert_equal "c_test_customer", c.id
33
33
  end
34
34
 
35
35
  should "create_upcoming_invoice should create a new invoice" do
36
- @mock.expects(:post).once.returns(test_response(test_invoice))
36
+ @mock.expects(:post).once.returns(make_response(make_invoice))
37
37
  i = Stripe::Customer.new("test_customer").create_upcoming_invoice
38
38
  assert_equal "c_test_customer", i.customer
39
39
  end
40
40
 
41
41
  should "be able to update a customer's subscription" do
42
- @mock.expects(:get).once.returns(test_response(test_customer))
42
+ @mock.expects(:get).once.returns(make_response(make_customer))
43
43
  c = Stripe::Customer.retrieve("test_customer")
44
44
 
45
45
  @mock.expects(:post).once.with do |url, api_key, params|
46
46
  url == "#{Stripe.api_base}/v1/customers/c_test_customer/subscription" && api_key.nil? && CGI.parse(params) == {'plan' => ['silver']}
47
- end.returns(test_response(test_subscription(:plan => 'silver')))
47
+ end.returns(make_response(make_subscription(:plan => 'silver')))
48
48
  s = c.update_subscription({:plan => 'silver'})
49
49
 
50
50
  assert_equal 'subscription', s.object
@@ -52,15 +52,15 @@ module Stripe
52
52
  end
53
53
 
54
54
  should "be able to cancel a customer's subscription" do
55
- @mock.expects(:get).once.returns(test_response(test_customer))
55
+ @mock.expects(:get).once.returns(make_response(make_customer))
56
56
  c = Stripe::Customer.retrieve("test_customer")
57
57
 
58
58
  # Not an accurate response, but whatever
59
59
 
60
- @mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/subscription?at_period_end=true", nil, nil).returns(test_response(test_subscription(:plan => 'silver')))
60
+ @mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/subscription?at_period_end=true", nil, nil).returns(make_response(make_subscription(:plan => 'silver')))
61
61
  c.cancel_subscription({:at_period_end => 'true'})
62
62
 
63
- @mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/subscription", nil, nil).returns(test_response(test_subscription(:plan => 'silver')))
63
+ @mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/subscription", nil, nil).returns(make_response(make_subscription(:plan => 'silver')))
64
64
  c.cancel_subscription
65
65
  end
66
66
 
@@ -69,7 +69,7 @@ module Stripe
69
69
 
70
70
  @mock.expects(:post).once.with do |url, api_key, params|
71
71
  url == "#{Stripe.api_base}/v1/customers/test_customer/subscriptions" && api_key.nil? && CGI.parse(params) == {'plan' => ['silver']}
72
- end.returns(test_response(test_subscription(:plan => 'silver')))
72
+ end.returns(make_response(make_subscription(:plan => 'silver')))
73
73
  s = c.create_subscription({:plan => 'silver'})
74
74
 
75
75
  assert_equal 'subscription', s.object
@@ -77,10 +77,10 @@ module Stripe
77
77
  end
78
78
 
79
79
  should "be able to delete a customer's discount" do
80
- @mock.expects(:get).once.returns(test_response(test_customer))
80
+ @mock.expects(:get).once.returns(make_response(make_customer))
81
81
  c = Stripe::Customer.retrieve("test_customer")
82
82
 
83
- @mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/discount", nil, nil).returns(test_response(test_delete_discount_response))
83
+ @mock.expects(:delete).once.with("#{Stripe.api_base}/v1/customers/c_test_customer/discount", nil, nil).returns(make_response(make_delete_discount_response))
84
84
  c.delete_discount
85
85
  assert_equal nil, c.discount
86
86
  end
@@ -0,0 +1,45 @@
1
+ require File.expand_path('../../test_helper', __FILE__)
2
+
3
+ module Stripe
4
+ class DisputeTest < Test::Unit::TestCase
5
+ should "disputes should be retrievable" do
6
+ @mock.expects(:get).once.returns(make_response(make_dispute))
7
+ d = Stripe::Dispute.retrieve('dp_test_dispute')
8
+ assert d.kind_of?(Stripe::Dispute)
9
+ end
10
+
11
+ should "disputes should be listable" do
12
+ @mock.expects(:get).once.returns(make_response(make_dispute_array))
13
+ d = Stripe::Dispute.list
14
+ assert d.data.kind_of? Array
15
+ d.each do |dispute|
16
+ assert dispute.kind_of?(Stripe::Dispute)
17
+ end
18
+ end
19
+
20
+ should "disputes should be closeable" do
21
+ @mock.expects(:get).never
22
+ @mock.expects(:post).with(
23
+ "#{Stripe.api_base}/v1/disputes/test_dispute/close",
24
+ nil,
25
+ ''
26
+ ).once.returns(make_response({:id => 'dp_test_dispute', :status => 'lost'}))
27
+ d = Stripe::Dispute.new('test_dispute')
28
+ d.close
29
+ end
30
+
31
+ should "disputes should be updateable" do
32
+ @mock.expects(:get).once.returns(make_response(make_dispute))
33
+ @mock.expects(:post).with(
34
+ "#{Stripe.api_base}/v1/disputes/dp_test_dispute",
35
+ nil,
36
+ 'evidence[customer_name]=customer'
37
+ ).once.returns(make_response(make_dispute))
38
+
39
+ d = Stripe::Dispute.new('test_dispute')
40
+ d.refresh
41
+ d.evidence['customer_name'] = 'customer'
42
+ d.save
43
+ end
44
+ end
45
+ end
@@ -3,24 +3,35 @@ require File.expand_path('../../test_helper', __FILE__)
3
3
  module Stripe
4
4
  class FileUploadTest < Test::Unit::TestCase
5
5
  should "create should return a new file" do
6
- @mock.expects(:post).once.returns(test_response(test_file))
7
- f = Stripe::FileUpload.create({
6
+ params = {
8
7
  :purpose => "dispute_evidence",
9
8
  :file => File.new(__FILE__),
10
- })
9
+ }
10
+
11
+ @mock.expects(:post).once.
12
+ with("#{Stripe.uploads_base}/v1/files", nil, params).
13
+ returns(make_response(make_file))
14
+
15
+ f = Stripe::FileUpload.create(params)
11
16
  assert_equal "fil_test_file", f.id
12
17
  end
13
18
 
14
19
  should "files should be retrievable" do
15
- @mock.expects(:get).once.returns(test_response(test_file))
20
+ @mock.expects(:get).once.
21
+ with("#{Stripe.uploads_base}/v1/files/fil_test_file", nil, nil).
22
+ returns(make_response(make_file))
23
+
16
24
  c = Stripe::FileUpload.new("fil_test_file")
17
25
  c.refresh
18
26
  assert_equal 1403047735, c.created
19
27
  end
20
28
 
21
29
  should "files should be listable" do
22
- @mock.expects(:get).once.returns(test_response(test_file_array))
23
- c = Stripe::FileUpload.all.data
30
+ @mock.expects(:get).once.
31
+ with("#{Stripe.uploads_base}/v1/files", nil, nil).
32
+ returns(make_response(make_file_array))
33
+
34
+ c = Stripe::FileUpload.list.data
24
35
  assert c.kind_of? Array
25
36
  assert c[0].kind_of? Stripe::FileUpload
26
37
  end
@@ -3,22 +3,36 @@ require File.expand_path('../../test_helper', __FILE__)
3
3
  module Stripe
4
4
  class InvoiceTest < Test::Unit::TestCase
5
5
  should "retrieve should retrieve invoices" do
6
- @mock.expects(:get).once.returns(test_response(test_invoice))
6
+ @mock.expects(:get).once.returns(make_response(make_invoice))
7
7
  i = Stripe::Invoice.retrieve('in_test_invoice')
8
8
  assert_equal 'in_test_invoice', i.id
9
9
  end
10
10
 
11
11
  should "create should create a new invoice" do
12
- @mock.expects(:post).once.returns(test_response(test_invoice))
12
+ @mock.expects(:post).once.returns(make_response(make_invoice))
13
13
  i = Stripe::Invoice.create
14
14
  assert_equal "in_test_invoice", i.id
15
15
  end
16
16
 
17
17
  should "pay should pay an invoice" do
18
- @mock.expects(:get).once.returns(test_response(test_invoice))
18
+ @mock.expects(:get).once.returns(make_response(make_invoice))
19
19
  i = Stripe::Invoice.retrieve('in_test_invoice')
20
20
 
21
- @mock.expects(:post).once.with('https://api.stripe.com/v1/invoices/in_test_invoice/pay', nil, '').returns(test_response(test_paid_invoice))
21
+ @mock.expects(:post).once.with('https://api.stripe.com/v1/invoices/in_test_invoice/pay', nil, '').returns(make_response(make_paid_invoice))
22
+ i.pay
23
+ assert_equal nil, i.next_payment_attempt
24
+ end
25
+
26
+ should "pay with extra opts should pay an invoice" do
27
+ @mock.expects(:get).once.returns(make_response(make_invoice))
28
+ i = Stripe::Invoice.retrieve('in_test_invoice', {:api_key => 'foobar'})
29
+
30
+ Stripe.expects(:execute_request).with do |opts|
31
+ opts[:url] == "#{Stripe.api_base}/v1/invoices/in_test_invoice/pay" &&
32
+ opts[:method] == :post &&
33
+ opts[:headers][:authorization] == 'Bearer foobar'
34
+ end.returns(make_response(make_paid_invoice))
35
+
22
36
  i.pay
23
37
  assert_equal nil, i.next_payment_attempt
24
38
  end