stripe 3.3.1 → 5.38.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (205) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +962 -0
  3. data/CODE_OF_CONDUCT.md +77 -0
  4. data/Gemfile +24 -22
  5. data/History.txt +1 -689
  6. data/README.md +202 -55
  7. data/Rakefile +18 -12
  8. data/VERSION +1 -1
  9. data/bin/stripe-console +5 -3
  10. data/lib/stripe/api_operations/create.rb +4 -2
  11. data/lib/stripe/api_operations/delete.rb +31 -3
  12. data/lib/stripe/api_operations/list.rb +4 -13
  13. data/lib/stripe/api_operations/nested_resource.rb +73 -0
  14. data/lib/stripe/api_operations/request.rb +84 -17
  15. data/lib/stripe/api_operations/save.rb +25 -13
  16. data/lib/stripe/api_resource.rb +70 -11
  17. data/lib/stripe/connection_manager.rb +179 -0
  18. data/lib/stripe/error_object.rb +93 -0
  19. data/lib/stripe/errors.rb +47 -19
  20. data/lib/stripe/instrumentation.rb +84 -0
  21. data/lib/stripe/list_object.rb +54 -22
  22. data/lib/stripe/multipart_encoder.rb +131 -0
  23. data/lib/stripe/oauth.rb +29 -20
  24. data/lib/stripe/object_types.rb +107 -0
  25. data/lib/stripe/{account.rb → resources/account.rb} +70 -36
  26. data/lib/stripe/resources/account_link.rb +10 -0
  27. data/lib/stripe/resources/alipay_account.rb +34 -0
  28. data/lib/stripe/{apple_pay_domain.rb → resources/apple_pay_domain.rb} +5 -2
  29. data/lib/stripe/resources/application_fee.rb +14 -0
  30. data/lib/stripe/resources/application_fee_refund.rb +31 -0
  31. data/lib/stripe/resources/balance.rb +8 -0
  32. data/lib/stripe/resources/balance_transaction.rb +10 -0
  33. data/lib/stripe/resources/bank_account.rb +43 -0
  34. data/lib/stripe/resources/billing_portal/configuration.rb +14 -0
  35. data/lib/stripe/resources/billing_portal/session.rb +12 -0
  36. data/lib/stripe/{bitcoin_receiver.rb → resources/bitcoin_receiver.rb} +7 -5
  37. data/lib/stripe/resources/bitcoin_transaction.rb +16 -0
  38. data/lib/stripe/resources/capability.rb +34 -0
  39. data/lib/stripe/resources/card.rb +38 -0
  40. data/lib/stripe/resources/charge.rb +23 -0
  41. data/lib/stripe/resources/checkout/session.rb +16 -0
  42. data/lib/stripe/resources/country_spec.rb +10 -0
  43. data/lib/stripe/{coupon.rb → resources/coupon.rb} +5 -2
  44. data/lib/stripe/resources/credit_note.rb +33 -0
  45. data/lib/stripe/resources/credit_note_line_item.rb +8 -0
  46. data/lib/stripe/resources/customer.rb +41 -0
  47. data/lib/stripe/resources/customer_balance_transaction.rb +31 -0
  48. data/lib/stripe/resources/discount.rb +7 -0
  49. data/lib/stripe/resources/dispute.rb +22 -0
  50. data/lib/stripe/resources/ephemeral_key.rb +20 -0
  51. data/lib/stripe/resources/event.rb +10 -0
  52. data/lib/stripe/resources/exchange_rate.rb +10 -0
  53. data/lib/stripe/resources/file.rb +36 -0
  54. data/lib/stripe/resources/file_link.rb +12 -0
  55. data/lib/stripe/resources/identity/verification_report.rb +12 -0
  56. data/lib/stripe/resources/identity/verification_session.rb +35 -0
  57. data/lib/stripe/resources/invoice.rb +74 -0
  58. data/lib/stripe/{invoice_item.rb → resources/invoice_item.rb} +5 -2
  59. data/lib/stripe/resources/invoice_line_item.rb +8 -0
  60. data/lib/stripe/resources/issuing/authorization.rb +34 -0
  61. data/lib/stripe/resources/issuing/card.rb +25 -0
  62. data/lib/stripe/resources/issuing/card_details.rb +9 -0
  63. data/lib/stripe/resources/issuing/cardholder.rb +14 -0
  64. data/lib/stripe/resources/issuing/dispute.rb +25 -0
  65. data/lib/stripe/resources/issuing/transaction.rb +13 -0
  66. data/lib/stripe/resources/line_item.rb +8 -0
  67. data/lib/stripe/resources/login_link.rb +15 -0
  68. data/lib/stripe/resources/mandate.rb +8 -0
  69. data/lib/stripe/resources/order.rb +33 -0
  70. data/lib/stripe/resources/order_return.rb +10 -0
  71. data/lib/stripe/resources/payment_intent.rb +43 -0
  72. data/lib/stripe/resources/payment_method.rb +33 -0
  73. data/lib/stripe/resources/payout.rb +33 -0
  74. data/lib/stripe/resources/person.rb +32 -0
  75. data/lib/stripe/{plan.rb → resources/plan.rb} +4 -1
  76. data/lib/stripe/resources/price.rb +12 -0
  77. data/lib/stripe/{product.rb → resources/product.rb} +6 -3
  78. data/lib/stripe/resources/promotion_code.rb +12 -0
  79. data/lib/stripe/resources/quote.rb +105 -0
  80. data/lib/stripe/resources/radar/early_fraud_warning.rb +12 -0
  81. data/lib/stripe/resources/radar/value_list.rb +15 -0
  82. data/lib/stripe/resources/radar/value_list_item.rb +14 -0
  83. data/lib/stripe/resources/recipient.rb +14 -0
  84. data/lib/stripe/resources/recipient_transfer.rb +7 -0
  85. data/lib/stripe/{refund.rb → resources/refund.rb} +4 -1
  86. data/lib/stripe/resources/reporting/report_run.rb +13 -0
  87. data/lib/stripe/resources/reporting/report_type.rb +13 -0
  88. data/lib/stripe/resources/reversal.rb +30 -0
  89. data/lib/stripe/resources/review.rb +21 -0
  90. data/lib/stripe/resources/setup_attempt.rb +10 -0
  91. data/lib/stripe/resources/setup_intent.rb +33 -0
  92. data/lib/stripe/resources/sigma/scheduled_query_run.rb +16 -0
  93. data/lib/stripe/{sku.rb → resources/sku.rb} +6 -3
  94. data/lib/stripe/resources/source.rb +47 -0
  95. data/lib/stripe/resources/source_transaction.rb +7 -0
  96. data/lib/stripe/resources/subscription.rb +26 -0
  97. data/lib/stripe/resources/subscription_item.rb +26 -0
  98. data/lib/stripe/resources/subscription_schedule.rb +33 -0
  99. data/lib/stripe/resources/tax_code.rb +10 -0
  100. data/lib/stripe/resources/tax_id.rb +27 -0
  101. data/lib/stripe/resources/tax_rate.rb +12 -0
  102. data/lib/stripe/resources/terminal/connection_token.rb +12 -0
  103. data/lib/stripe/resources/terminal/location.rb +15 -0
  104. data/lib/stripe/resources/terminal/reader.rb +15 -0
  105. data/lib/stripe/{three_d_secure.rb → resources/three_d_secure.rb} +4 -1
  106. data/lib/stripe/resources/token.rb +10 -0
  107. data/lib/stripe/resources/topup.rb +23 -0
  108. data/lib/stripe/resources/transfer.rb +27 -0
  109. data/lib/stripe/resources/usage_record.rb +8 -0
  110. data/lib/stripe/resources/usage_record_summary.rb +8 -0
  111. data/lib/stripe/{recipient.rb → resources/webhook_endpoint.rb} +6 -7
  112. data/lib/stripe/resources.rb +90 -0
  113. data/lib/stripe/singleton_api_resource.rb +10 -4
  114. data/lib/stripe/stripe_client.rb +798 -346
  115. data/lib/stripe/stripe_configuration.rb +194 -0
  116. data/lib/stripe/stripe_object.rb +271 -126
  117. data/lib/stripe/stripe_response.rb +89 -27
  118. data/lib/stripe/util.rb +134 -194
  119. data/lib/stripe/version.rb +3 -1
  120. data/lib/stripe/webhook.rb +57 -18
  121. data/lib/stripe.rb +74 -186
  122. data/stripe.gemspec +35 -16
  123. metadata +110 -165
  124. data/.gitattributes +0 -4
  125. data/.github/ISSUE_TEMPLATE.md +0 -5
  126. data/.gitignore +0 -5
  127. data/.travis.yml +0 -38
  128. data/lib/stripe/alipay_account.rb +0 -22
  129. data/lib/stripe/application_fee.rb +0 -22
  130. data/lib/stripe/application_fee_refund.rb +0 -20
  131. data/lib/stripe/balance.rb +0 -5
  132. data/lib/stripe/balance_transaction.rb +0 -11
  133. data/lib/stripe/bank_account.rb +0 -30
  134. data/lib/stripe/bitcoin_transaction.rb +0 -11
  135. data/lib/stripe/card.rb +0 -27
  136. data/lib/stripe/charge.rb +0 -82
  137. data/lib/stripe/country_spec.rb +0 -11
  138. data/lib/stripe/customer.rb +0 -79
  139. data/lib/stripe/dispute.rb +0 -17
  140. data/lib/stripe/ephemeral_key.rb +0 -18
  141. data/lib/stripe/event.rb +0 -7
  142. data/lib/stripe/file_upload.rb +0 -33
  143. data/lib/stripe/invoice.rb +0 -29
  144. data/lib/stripe/invoice_line_item.rb +0 -5
  145. data/lib/stripe/login_link.rb +0 -9
  146. data/lib/stripe/order.rb +0 -29
  147. data/lib/stripe/order_return.rb +0 -11
  148. data/lib/stripe/payout.rb +0 -18
  149. data/lib/stripe/recipient_transfer.rb +0 -6
  150. data/lib/stripe/reversal.rb +0 -20
  151. data/lib/stripe/source.rb +0 -23
  152. data/lib/stripe/subscription.rb +0 -33
  153. data/lib/stripe/subscription_item.rb +0 -14
  154. data/lib/stripe/token.rb +0 -7
  155. data/lib/stripe/transfer.rb +0 -18
  156. data/test/api_stub_helpers.rb +0 -0
  157. data/test/stripe/account_test.rb +0 -202
  158. data/test/stripe/alipay_account_test.rb +0 -17
  159. data/test/stripe/api_operations_test.rb +0 -31
  160. data/test/stripe/api_resource_test.rb +0 -558
  161. data/test/stripe/apple_pay_domain_test.rb +0 -31
  162. data/test/stripe/application_fee_refund_test.rb +0 -35
  163. data/test/stripe/application_fee_test.rb +0 -12
  164. data/test/stripe/balance_test.rb +0 -11
  165. data/test/stripe/bank_account_test.rb +0 -36
  166. data/test/stripe/bitcoin_receiver_test.rb +0 -67
  167. data/test/stripe/bitcoin_transaction_test.rb +0 -19
  168. data/test/stripe/charge_test.rb +0 -57
  169. data/test/stripe/country_spec_test.rb +0 -18
  170. data/test/stripe/coupon_test.rb +0 -42
  171. data/test/stripe/customer_card_test.rb +0 -46
  172. data/test/stripe/customer_test.rb +0 -114
  173. data/test/stripe/dispute_test.rb +0 -40
  174. data/test/stripe/ephemeral_key_test.rb +0 -84
  175. data/test/stripe/errors_test.rb +0 -18
  176. data/test/stripe/file_upload_test.rb +0 -66
  177. data/test/stripe/invoice_item_test.rb +0 -53
  178. data/test/stripe/invoice_line_item_test.rb +0 -6
  179. data/test/stripe/invoice_test.rb +0 -110
  180. data/test/stripe/list_object_test.rb +0 -170
  181. data/test/stripe/login_link_test.rb +0 -35
  182. data/test/stripe/oauth_test.rb +0 -85
  183. data/test/stripe/order_return_test.rb +0 -19
  184. data/test/stripe/order_test.rb +0 -57
  185. data/test/stripe/payout_test.rb +0 -48
  186. data/test/stripe/plan_test.rb +0 -50
  187. data/test/stripe/product_test.rb +0 -45
  188. data/test/stripe/recipient_card_test.rb +0 -44
  189. data/test/stripe/recipient_test.rb +0 -48
  190. data/test/stripe/refund_test.rb +0 -37
  191. data/test/stripe/reversal_test.rb +0 -41
  192. data/test/stripe/sku_test.rb +0 -48
  193. data/test/stripe/source_test.rb +0 -68
  194. data/test/stripe/stripe_client_test.rb +0 -750
  195. data/test/stripe/stripe_object_test.rb +0 -398
  196. data/test/stripe/stripe_response_test.rb +0 -46
  197. data/test/stripe/subscription_item_test.rb +0 -52
  198. data/test/stripe/subscription_test.rb +0 -58
  199. data/test/stripe/three_d_secure_test.rb +0 -21
  200. data/test/stripe/transfer_test.rb +0 -41
  201. data/test/stripe/util_test.rb +0 -414
  202. data/test/stripe/webhook_test.rb +0 -92
  203. data/test/stripe_test.rb +0 -59
  204. data/test/test_data.rb +0 -59
  205. data/test/test_helper.rb +0 -56
@@ -1,79 +0,0 @@
1
- module Stripe
2
- class Customer < APIResource
3
- extend Stripe::APIOperations::Create
4
- include Stripe::APIOperations::Delete
5
- include Stripe::APIOperations::Save
6
- extend Stripe::APIOperations::List
7
-
8
- OBJECT_NAME = 'customer'
9
-
10
- save_nested_resource :source
11
-
12
- def add_invoice_item(params, opts={})
13
- opts = @opts.merge(Util.normalize_opts(opts))
14
- InvoiceItem.create(params.merge(:customer => id), opts)
15
- end
16
-
17
- def invoices(params={}, opts={})
18
- opts = @opts.merge(Util.normalize_opts(opts))
19
- Invoice.all(params.merge(:customer => id), opts)
20
- end
21
-
22
- def invoice_items(params={}, opts={})
23
- opts = @opts.merge(Util.normalize_opts(opts))
24
- InvoiceItem.all(params.merge(:customer => id), opts)
25
- end
26
-
27
- def upcoming_invoice(params={}, opts={})
28
- opts = @opts.merge(Util.normalize_opts(opts))
29
- Invoice.upcoming(params.merge(:customer => id), opts)
30
- end
31
-
32
- def charges(params={}, opts={})
33
- opts = @opts.merge(Util.normalize_opts(opts))
34
- Charge.all(params.merge(:customer => id), opts)
35
- end
36
-
37
- def create_upcoming_invoice(params={}, opts={})
38
- opts = @opts.merge(Util.normalize_opts(opts))
39
- Invoice.create(params.merge(:customer => id), opts)
40
- end
41
-
42
- def cancel_subscription(params={}, opts={})
43
- resp, opts = request(:delete, subscription_url, params, opts)
44
- initialize_from({ :subscription => resp.data }, opts, true)
45
- subscription
46
- end
47
-
48
- def update_subscription(params={}, opts={})
49
- resp, opts = request(:post, subscription_url, params, opts)
50
- initialize_from({ :subscription => resp.data }, opts, true)
51
- subscription
52
- end
53
-
54
- def create_subscription(params={}, opts={})
55
- resp, opts = request(:post, subscriptions_url, params, opts)
56
- initialize_from({ :subscription => resp.data }, opts, true)
57
- subscription
58
- end
59
-
60
- def delete_discount
61
- _, opts = request(:delete, discount_url)
62
- initialize_from({ :discount => nil }, opts, true)
63
- end
64
-
65
- private
66
-
67
- def discount_url
68
- resource_url + '/discount'
69
- end
70
-
71
- def subscription_url
72
- resource_url + '/subscription'
73
- end
74
-
75
- def subscriptions_url
76
- resource_url + '/subscriptions'
77
- end
78
- end
79
- end
@@ -1,17 +0,0 @@
1
- module Stripe
2
- class Dispute < APIResource
3
- extend Stripe::APIOperations::List
4
- include Stripe::APIOperations::Save
5
-
6
- OBJECT_NAME = 'dispute'
7
-
8
- def close(params={}, opts={})
9
- resp, opts = request(:post, close_url, params, opts)
10
- initialize_from(resp.data, opts)
11
- end
12
-
13
- def close_url
14
- resource_url + '/close'
15
- end
16
- end
17
- end
@@ -1,18 +0,0 @@
1
- module Stripe
2
- class EphemeralKey < APIResource
3
- extend Stripe::APIOperations::Create
4
- include Stripe::APIOperations::Delete
5
-
6
- OBJECT_NAME = 'ephemeral_key'
7
-
8
- def self.resource_url
9
- '/v1/ephemeral_keys'
10
- end
11
-
12
- def self.create(params={}, opts={})
13
- opts = Util.normalize_opts(opts)
14
- raise ArgumentError.new('stripe_version must be specified to create an ephemeral key') if !opts[:stripe_version]
15
- super
16
- end
17
- end
18
- end
data/lib/stripe/event.rb DELETED
@@ -1,7 +0,0 @@
1
- module Stripe
2
- class Event < APIResource
3
- extend Stripe::APIOperations::List
4
-
5
- OBJECT_NAME = 'event'
6
- end
7
- end
@@ -1,33 +0,0 @@
1
- module Stripe
2
- class FileUpload < APIResource
3
- extend Stripe::APIOperations::Create
4
- extend Stripe::APIOperations::List
5
-
6
- OBJECT_NAME = 'file_upload'
7
-
8
- def self.resource_url
9
- "/v1/files"
10
- end
11
-
12
- def self.request(method, url, params={}, opts={})
13
- opts = {
14
- :api_base => Stripe::uploads_base
15
- }.merge(Util.normalize_opts(opts))
16
- super
17
- end
18
-
19
- def self.create(params={}, opts={})
20
- # rest-client would accept a vanilla `File` for upload, but Faraday does
21
- # not. Support the old API by wrapping a `File` with an `UploadIO` object
22
- # if we're given one.
23
- if params[:file] && params[:file].is_a?(File)
24
- params[:file] = Faraday::UploadIO.new(params[:file], nil)
25
- end
26
-
27
- opts = {
28
- :content_type => 'multipart/form-data',
29
- }.merge(Util.normalize_opts(opts))
30
- super
31
- end
32
- end
33
- end
@@ -1,29 +0,0 @@
1
- module Stripe
2
- class Invoice < APIResource
3
- extend Stripe::APIOperations::List
4
- include Stripe::APIOperations::Save
5
- extend Stripe::APIOperations::Create
6
-
7
- OBJECT_NAME = 'invoice'
8
-
9
- def self.upcoming(params, opts={})
10
- resp, opts = request(:get, upcoming_url, params, opts)
11
- Util.convert_to_stripe_object(resp.data, opts)
12
- end
13
-
14
- def pay(params={}, opts={})
15
- resp, opts = request(:post, pay_url, params, opts)
16
- initialize_from(resp.data, opts)
17
- end
18
-
19
- private
20
-
21
- def self.upcoming_url
22
- resource_url + '/upcoming'
23
- end
24
-
25
- def pay_url
26
- resource_url + '/pay'
27
- end
28
- end
29
- end
@@ -1,5 +0,0 @@
1
- module Stripe
2
- class InvoiceLineItem < StripeObject
3
- OBJECT_NAME = 'line_item'
4
- end
5
- end
@@ -1,9 +0,0 @@
1
- module Stripe
2
- class LoginLink < APIResource
3
- OBJECT_NAME = 'login_link'
4
-
5
- def self.retrieve(id, opts=nil)
6
- raise NotImplementedError.new("Login links do not have IDs and cannot be retrieved. They can only be created using accounts.login_links.create")
7
- end
8
- end
9
- end
data/lib/stripe/order.rb DELETED
@@ -1,29 +0,0 @@
1
- module Stripe
2
- class Order < APIResource
3
- extend Stripe::APIOperations::List
4
- extend Stripe::APIOperations::Create
5
- include Stripe::APIOperations::Save
6
-
7
- OBJECT_NAME = 'order'
8
-
9
- def pay(params, opts={})
10
- resp, opts = request(:post, pay_url, params, opts)
11
- initialize_from(resp.data, opts)
12
- end
13
-
14
- def return_order(params, opts={})
15
- resp, opts = request(:post, returns_url, params, opts)
16
- Util.convert_to_stripe_object(resp.data, opts)
17
- end
18
-
19
- private
20
-
21
- def pay_url
22
- resource_url + '/pay'
23
- end
24
-
25
- def returns_url
26
- resource_url + '/returns'
27
- end
28
- end
29
- end
@@ -1,11 +0,0 @@
1
- module Stripe
2
- class OrderReturn < APIResource
3
- extend Stripe::APIOperations::List
4
-
5
- OBJECT_NAME = 'order_return'
6
-
7
- def self.resource_url
8
- "/v1/order_returns"
9
- end
10
- end
11
- end
data/lib/stripe/payout.rb DELETED
@@ -1,18 +0,0 @@
1
- module Stripe
2
- class Payout < APIResource
3
- extend Stripe::APIOperations::List
4
- extend Stripe::APIOperations::Create
5
- include Stripe::APIOperations::Save
6
-
7
- OBJECT_NAME = 'payout'
8
-
9
- def cancel
10
- resp, api_key = self.request(:post, cancel_url)
11
- initialize_from(resp.data, api_key)
12
- end
13
-
14
- def cancel_url
15
- resource_url + '/cancel'
16
- end
17
- end
18
- end
@@ -1,6 +0,0 @@
1
- module Stripe
2
- class RecipientTransfer < StripeObject
3
-
4
- OBJECT_NAME = 'recipient_transfer'
5
- end
6
- end
@@ -1,20 +0,0 @@
1
- module Stripe
2
- class Reversal < APIResource
3
- extend Stripe::APIOperations::List
4
- include Stripe::APIOperations::Save
5
-
6
- OBJECT_NAME = 'transfer_reversal'
7
-
8
- def resource_url
9
- "#{Transfer.resource_url}/#{CGI.escape(transfer)}/reversals/#{CGI.escape(id)}"
10
- end
11
-
12
- def self.update(id, params=nil, opts=nil)
13
- raise NotImplementedError.new("Reversals cannot be updated without a transfer ID. Update a reversal using `r = transfer.reversals.retrieve('reversal_id'); r.save`")
14
- end
15
-
16
- def self.retrieve(id, opts={})
17
- raise NotImplementedError.new("Reversals cannot be retrieved without a transfer ID. Retrieve a reversal using transfer.reversals.retrieve('reversal_id')")
18
- end
19
- end
20
- end
data/lib/stripe/source.rb DELETED
@@ -1,23 +0,0 @@
1
- module Stripe
2
- class Source < APIResource
3
- extend Stripe::APIOperations::Create
4
- include Stripe::APIOperations::Save
5
-
6
- OBJECT_NAME = 'source'
7
-
8
- def delete(params={}, opts={})
9
- if respond_to?(:customer) && !customer.nil? && !customer.empty?
10
- url = "#{Customer.resource_url}/#{CGI.escape(customer)}/sources/#{CGI.escape(id)}"
11
- resp, opts = request(:delete, url, params, Util.normalize_opts(opts))
12
- initialize_from(resp.data, opts)
13
- else
14
- raise NotImplementedError.new("Source objects cannot be deleted, they can only be detached from customer objects. This source object does not appear to be currently attached to a customer object.")
15
- end
16
- end
17
-
18
- def verify(params={}, opts={})
19
- resp, opts = request(:post, resource_url + '/verify', params, Util.normalize_opts(opts))
20
- initialize_from(resp.data, opts)
21
- end
22
- end
23
- end
@@ -1,33 +0,0 @@
1
- module Stripe
2
- class Subscription < APIResource
3
- extend Stripe::APIOperations::List
4
- extend Stripe::APIOperations::Create
5
- include Stripe::APIOperations::Save
6
- include Stripe::APIOperations::Delete
7
-
8
- OBJECT_NAME = 'subscription'
9
-
10
- save_nested_resource :source
11
-
12
- def delete_discount
13
- _, opts = request(:delete, discount_url)
14
- initialize_from({ :discount => nil }, opts, true)
15
- end
16
-
17
- def self.update(id, params={}, opts={})
18
- params[:items] = Util.array_to_hash(params[:items]) if params[:items]
19
- super(id, params, opts)
20
- end
21
-
22
- def self.create(params={}, opts={})
23
- params[:items] = Util.array_to_hash(params[:items]) if params[:items]
24
- super(params, opts)
25
- end
26
-
27
- private
28
-
29
- def discount_url
30
- resource_url + '/discount'
31
- end
32
- end
33
- end
@@ -1,14 +0,0 @@
1
- module Stripe
2
- class SubscriptionItem < APIResource
3
- extend Stripe::APIOperations::Create
4
- include Stripe::APIOperations::Delete
5
- extend Stripe::APIOperations::List
6
- include Stripe::APIOperations::Save
7
-
8
- OBJECT_NAME = 'subscription_item'
9
-
10
- def self.resource_url
11
- '/v1/subscription_items'
12
- end
13
- end
14
- end
data/lib/stripe/token.rb DELETED
@@ -1,7 +0,0 @@
1
- module Stripe
2
- class Token < APIResource
3
- extend Stripe::APIOperations::Create
4
-
5
- OBJECT_NAME = 'token'
6
- end
7
- end
@@ -1,18 +0,0 @@
1
- module Stripe
2
- class Transfer < APIResource
3
- extend Stripe::APIOperations::List
4
- extend Stripe::APIOperations::Create
5
- include Stripe::APIOperations::Save
6
-
7
- OBJECT_NAME = 'transfer'
8
-
9
- def cancel
10
- resp, api_key = self.request(:post, cancel_url)
11
- initialize_from(resp.data, api_key)
12
- end
13
-
14
- def cancel_url
15
- resource_url + '/cancel'
16
- end
17
- end
18
- end
File without changes
@@ -1,202 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
-
3
- module Stripe
4
- class AccountTest < Test::Unit::TestCase
5
- should "be listable" do
6
- accounts = Stripe::Account.list
7
- assert_requested :get, "#{Stripe.api_base}/v1/accounts"
8
- assert accounts.data.kind_of?(Array)
9
- assert accounts.data[0].kind_of?(Stripe::Account)
10
- end
11
-
12
- should "be retrievable using singular endpoint" do
13
- account = Stripe::Account.retrieve
14
- assert_requested :get, "#{Stripe.api_base}/v1/account"
15
- assert account.kind_of?(Stripe::Account)
16
- end
17
-
18
- should "be retrievable using plural endpoint" do
19
- account = Stripe::Account.retrieve("acct_123")
20
- assert_requested :get, "#{Stripe.api_base}/v1/accounts/acct_123"
21
- assert account.kind_of?(Stripe::Account)
22
- end
23
-
24
- should "be rejectable" do
25
- account_data = {:id => 'acct_foo'}
26
- stub_request(:get, "#{Stripe.api_base}/v1/accounts/acct_foo").
27
- to_return(body: JSON.generate(account_data))
28
-
29
- stub_request(:post, "#{Stripe.api_base}/v1/accounts/acct_foo/reject").
30
- to_return(body: JSON.generate(account_data))
31
-
32
- account = Stripe::Account.retrieve('acct_foo')
33
- account.reject(:reason => 'fraud')
34
- end
35
-
36
- should "be creatable" do
37
- account = Stripe::Account.create(:metadata => {}, :type => 'standard')
38
- assert_requested :post, "#{Stripe.api_base}/v1/accounts"
39
- assert account.kind_of?(Stripe::Account)
40
- end
41
-
42
- should "be saveable" do
43
- account = Stripe::Account.retrieve("acct_123")
44
- account.metadata['key'] = 'value'
45
- account.save
46
- assert_requested :post, "#{Stripe.api_base}/v1/accounts/#{account.id}"
47
- end
48
-
49
- should "be updateable" do
50
- account = Stripe::Account.update("acct_123", metadata: {foo: 'bar'})
51
- assert_requested :post, "#{Stripe.api_base}/v1/accounts/acct_123"
52
- assert account.kind_of?(Stripe::Account)
53
- end
54
-
55
- should "be deletable" do
56
- account = Stripe::Account.retrieve("acct_123")
57
- account = account.delete
58
- assert_requested :delete, "#{Stripe.api_base}/v1/accounts/#{account.id}"
59
- assert account.kind_of?(Stripe::Account)
60
- end
61
-
62
- context "#bank_account=" do
63
- should "warn that #bank_account= is deprecated" do
64
- old_stderr = $stderr
65
- $stderr = StringIO.new
66
- begin
67
- account = Stripe::Account.retrieve("acct_123")
68
- account.bank_account = "tok_123"
69
- message = "NOTE: Stripe::Account#bank_account= is " +
70
- "deprecated; use #external_account= instead"
71
- assert_match Regexp.new(message), $stderr.string
72
- ensure
73
- $stderr = old_stderr
74
- end
75
- end
76
- end
77
-
78
- context "#deauthorize" do
79
- should "deauthorize an account" do
80
- account = Stripe::Account.retrieve("acct_123")
81
-
82
- # Unfortunately, the OpenAPI spec doesn't yet cover anything under the
83
- # Connect endpoints, so for just stub this out with Webmock.
84
- stub_request(:post, "#{Stripe.connect_base}/oauth/deauthorize").
85
- with(body: { 'client_id' => 'ca_1234', 'stripe_user_id' => account.id}).
86
- to_return(body: JSON.generate({ 'stripe_user_id' => account.id }))
87
- account.deauthorize('ca_1234', 'sk_test_1234')
88
- end
89
- end
90
-
91
- context "#legal_entity=" do
92
- should 'disallow direct overrides' do
93
- account = Stripe::Account.retrieve("acct_123")
94
-
95
- assert_raise NoMethodError do
96
- account.legal_entity = {:first_name => 'Blah'}
97
- end
98
-
99
- account.legal_entity.first_name = 'Blah'
100
- end
101
- end
102
-
103
- context "#serialize_params" do
104
- should "serialize an a new additional_owners" do
105
- obj = Stripe::Util.convert_to_stripe_object({
106
- :object => "account",
107
- :legal_entity => Stripe::StripeObject.construct_from({
108
- }),
109
- }, {})
110
- obj.legal_entity.additional_owners = [
111
- { :first_name => "Joe" },
112
- { :first_name => "Jane" },
113
- ]
114
-
115
- expected = {
116
- :legal_entity => {
117
- :additional_owners => {
118
- "0" => { :first_name => "Joe" },
119
- "1" => { :first_name => "Jane" },
120
- }
121
- }
122
- }
123
- assert_equal(expected, obj.serialize_params)
124
- end
125
-
126
- should "serialize on an partially changed additional_owners" do
127
- obj = Stripe::Util.convert_to_stripe_object({
128
- :object => "account",
129
- :legal_entity => {
130
- :additional_owners => [
131
- Stripe::StripeObject.construct_from({
132
- :first_name => "Joe"
133
- }),
134
- Stripe::StripeObject.construct_from({
135
- :first_name => "Jane"
136
- }),
137
- ]
138
- }
139
- }, {})
140
- obj.legal_entity.additional_owners[1].first_name = "Stripe"
141
-
142
- expected = {
143
- :legal_entity => {
144
- :additional_owners => {
145
- "1" => { :first_name => "Stripe" }
146
- }
147
- }
148
- }
149
- assert_equal(expected, obj.serialize_params)
150
- end
151
-
152
- should "serialize on an unchanged additional_owners" do
153
- obj = Stripe::Util.convert_to_stripe_object({
154
- :object => "account",
155
- :legal_entity => {
156
- :additional_owners => [
157
- Stripe::StripeObject.construct_from({
158
- :first_name => "Joe"
159
- }),
160
- Stripe::StripeObject.construct_from({
161
- :first_name => "Jane"
162
- }),
163
- ]
164
- }
165
- }, {})
166
-
167
- expected = {
168
- :legal_entity => {
169
- :additional_owners => {}
170
- }
171
- }
172
- assert_equal(expected, obj.serialize_params)
173
- end
174
-
175
- # Note that the empty string that we send for this one has a special
176
- # meaning for the server, which interprets it as an array unset.
177
- should "serialize on an unset additional_owners" do
178
- obj = Stripe::Util.convert_to_stripe_object({
179
- :object => "account",
180
- :legal_entity => {
181
- :additional_owners => [
182
- Stripe::StripeObject.construct_from({
183
- :first_name => "Joe"
184
- }),
185
- Stripe::StripeObject.construct_from({
186
- :first_name => "Jane"
187
- }),
188
- ]
189
- }
190
- }, {})
191
- obj.legal_entity.additional_owners = nil
192
-
193
- expected = {
194
- :legal_entity => {
195
- :additional_owners => ""
196
- }
197
- }
198
- assert_equal(expected, obj.serialize_params)
199
- end
200
- end
201
- end
202
- end
@@ -1,17 +0,0 @@
1
- require File.expand_path('../../test_helper', __FILE__)
2
-
3
- module Stripe
4
- class AlipayAccountTest < Test::Unit::TestCase
5
- should "raise on #retrieve" do
6
- assert_raises NotImplementedError do
7
- Stripe::AlipayAccount.retrieve("aliacc_123")
8
- end
9
- end
10
-
11
- should "raise on #update" do
12
- assert_raises NotImplementedError do
13
- Stripe::AlipayAccount.update("aliacc_123", {})
14
- end
15
- end
16
- end
17
- end
@@ -1,31 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require File.expand_path('../../test_helper', __FILE__)
3
-
4
- module Stripe
5
- class ApiOperationsTest < Test::Unit::TestCase
6
- class UpdateableResource < APIResource
7
- include Stripe::APIOperations::Save
8
-
9
- def self.protected_fields
10
- [:protected]
11
- end
12
- end
13
-
14
- context ".update" do
15
- should "post the correct parameters to the resource URL" do
16
- stub_request(:post, "#{Stripe.api_base}/v1/updateableresources/id").
17
- with(body: { foo: "bar" }).
18
- to_return(body: JSON.generate({ foo: "bar" }))
19
- resource = UpdateableResource::update("id", { foo: "bar" })
20
- assert_equal('bar', resource.foo)
21
- end
22
-
23
- should "error on protected fields" do
24
- e = assert_raises do
25
- UpdateableResource::update("id", { protected: "bar" })
26
- end
27
- assert_equal "Cannot update protected field: protected", e.message
28
- end
29
- end
30
- end
31
- end