braintree 4.14.0 → 4.15.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 (112) hide show
  1. checksums.yaml +4 -4
  2. data/lib/braintree/credit_card.rb +13 -0
  3. data/lib/braintree/credit_card_gateway.rb +15 -3
  4. data/lib/braintree/payment_method_gateway.rb +15 -3
  5. data/lib/braintree/test/nonce.rb +1 -0
  6. data/lib/braintree/test/venmo_sdk.rb +2 -0
  7. data/lib/braintree/transaction/credit_card_details.rb +3 -0
  8. data/lib/braintree/transaction/local_payment_details.rb +2 -0
  9. data/lib/braintree/transaction.rb +5 -4
  10. data/lib/braintree/transaction_gateway.rb +15 -3
  11. data/lib/braintree/transaction_search.rb +6 -5
  12. data/lib/braintree/version.rb +1 -1
  13. data/lib/braintree/webhook_notification.rb +1 -0
  14. data/lib/braintree/webhook_testing_gateway.rb +17 -0
  15. data/spec/integration/braintree/add_on_spec.rb +9 -9
  16. data/spec/integration/braintree/address_spec.rb +69 -69
  17. data/spec/integration/braintree/advanced_search_spec.rb +45 -45
  18. data/spec/integration/braintree/apple_pay_spec.rb +8 -8
  19. data/spec/integration/braintree/client_api/client_token_spec.rb +15 -15
  20. data/spec/integration/braintree/credit_card_spec.rb +223 -223
  21. data/spec/integration/braintree/credit_card_verification_search_spec.rb +16 -16
  22. data/spec/integration/braintree/credit_card_verification_spec.rb +52 -52
  23. data/spec/integration/braintree/customer_search_spec.rb +20 -20
  24. data/spec/integration/braintree/customer_spec.rb +313 -313
  25. data/spec/integration/braintree/disbursement_spec.rb +2 -2
  26. data/spec/integration/braintree/discount_spec.rb +9 -9
  27. data/spec/integration/braintree/dispute_spec.rb +87 -87
  28. data/spec/integration/braintree/document_upload_spec.rb +17 -17
  29. data/spec/integration/braintree/error_codes_spec.rb +2 -2
  30. data/spec/integration/braintree/http_spec.rb +28 -28
  31. data/spec/integration/braintree/merchant_account_spec.rb +127 -127
  32. data/spec/integration/braintree/merchant_spec.rb +103 -103
  33. data/spec/integration/braintree/oauth_spec.rb +61 -61
  34. data/spec/integration/braintree/payment_method_nonce_spec.rb +73 -73
  35. data/spec/integration/braintree/payment_method_spec.rb +389 -389
  36. data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +78 -78
  37. data/spec/integration/braintree/paypal_account_spec.rb +38 -38
  38. data/spec/integration/braintree/plan_spec.rb +15 -15
  39. data/spec/integration/braintree/samsung_pay_card_spec.rb +65 -65
  40. data/spec/integration/braintree/sepa_direct_debit_account_spec.rb +51 -51
  41. data/spec/integration/braintree/settlement_batch_summary_spec.rb +11 -11
  42. data/spec/integration/braintree/subscription_spec.rb +364 -364
  43. data/spec/integration/braintree/test/transaction_amounts_spec.rb +2 -2
  44. data/spec/integration/braintree/test_transaction_spec.rb +19 -19
  45. data/spec/integration/braintree/transaction_line_item_spec.rb +6 -6
  46. data/spec/integration/braintree/transaction_search_spec.rb +198 -165
  47. data/spec/integration/braintree/transaction_spec.rb +1315 -1149
  48. data/spec/integration/braintree/transaction_us_bank_account_spec.rb +32 -32
  49. data/spec/integration/braintree/us_bank_account_spec.rb +30 -30
  50. data/spec/integration/braintree/us_bank_account_verification_search_spec.rb +18 -18
  51. data/spec/integration/braintree/us_bank_account_verification_spec.rb +33 -33
  52. data/spec/integration/braintree/visa_checkout_card_spec.rb +57 -57
  53. data/spec/spec_helper.rb +9 -8
  54. data/spec/unit/braintree/address_spec.rb +8 -8
  55. data/spec/unit/braintree/base_module_spec.rb +4 -4
  56. data/spec/unit/braintree/client_token_spec.rb +2 -2
  57. data/spec/unit/braintree/configuration_spec.rb +57 -57
  58. data/spec/unit/braintree/credentials_parser_spec.rb +6 -6
  59. data/spec/unit/braintree/credit_card_spec.rb +31 -29
  60. data/spec/unit/braintree/credit_card_verification_gateway_spec.rb +28 -28
  61. data/spec/unit/braintree/credit_card_verification_search_spec.rb +9 -9
  62. data/spec/unit/braintree/credit_card_verification_spec.rb +17 -17
  63. data/spec/unit/braintree/customer_spec.rb +41 -40
  64. data/spec/unit/braintree/digest_spec.rb +5 -5
  65. data/spec/unit/braintree/disbursement_spec.rb +11 -11
  66. data/spec/unit/braintree/dispute_search_spec.rb +2 -2
  67. data/spec/unit/braintree/dispute_spec.rb +56 -56
  68. data/spec/unit/braintree/document_upload_spec.rb +8 -8
  69. data/spec/unit/braintree/enriched_customer_data_spec.rb +2 -2
  70. data/spec/unit/braintree/error_result_spec.rb +5 -5
  71. data/spec/unit/braintree/errors_spec.rb +9 -9
  72. data/spec/unit/braintree/http_spec.rb +8 -8
  73. data/spec/unit/braintree/local_payment_completed_spec.rb +11 -11
  74. data/spec/unit/braintree/local_payment_expired_spec.rb +2 -2
  75. data/spec/unit/braintree/local_payment_funded_spec.rb +6 -6
  76. data/spec/unit/braintree/merchant_account_spec.rb +4 -4
  77. data/spec/unit/braintree/modification_spec.rb +1 -1
  78. data/spec/unit/braintree/payment_method_customer_data_updated_metadata_spec.rb +6 -6
  79. data/spec/unit/braintree/payment_method_nonce_details_payer_info_spec.rb +7 -7
  80. data/spec/unit/braintree/payment_method_nonce_details_spec.rb +14 -14
  81. data/spec/unit/braintree/payment_method_spec.rb +19 -19
  82. data/spec/unit/braintree/paypal_account_spec.rb +4 -4
  83. data/spec/unit/braintree/resource_collection_spec.rb +7 -7
  84. data/spec/unit/braintree/sepa_debit_account_nonce_details_spec.rb +1 -1
  85. data/spec/unit/braintree/sha256_digest_spec.rb +1 -1
  86. data/spec/unit/braintree/signature_service_spec.rb +2 -2
  87. data/spec/unit/braintree/subscription_search_spec.rb +17 -17
  88. data/spec/unit/braintree/subscription_spec.rb +8 -8
  89. data/spec/unit/braintree/successful_result_spec.rb +5 -5
  90. data/spec/unit/braintree/three_d_secure_info_spec.rb +20 -20
  91. data/spec/unit/braintree/transaction/credit_card_details_spec.rb +5 -5
  92. data/spec/unit/braintree/transaction/customer_details_spec.rb +1 -1
  93. data/spec/unit/braintree/transaction/deposit_details_spec.rb +2 -2
  94. data/spec/unit/braintree/transaction/local_payment_details_spec.rb +30 -0
  95. data/spec/unit/braintree/transaction_gateway_spec.rb +9 -6
  96. data/spec/unit/braintree/transaction_search_spec.rb +2 -2
  97. data/spec/unit/braintree/transaction_spec.rb +101 -93
  98. data/spec/unit/braintree/unknown_payment_method_spec.rb +4 -4
  99. data/spec/unit/braintree/us_bank_account_spec.rb +2 -2
  100. data/spec/unit/braintree/us_bank_account_verification_search_spec.rb +7 -7
  101. data/spec/unit/braintree/us_bank_account_verification_spec.rb +7 -7
  102. data/spec/unit/braintree/util_spec.rb +27 -27
  103. data/spec/unit/braintree/validation_error_collection_spec.rb +34 -34
  104. data/spec/unit/braintree/validation_error_spec.rb +4 -4
  105. data/spec/unit/braintree/venmo_profile_data_spec.rb +5 -5
  106. data/spec/unit/braintree/webhook_notification_spec.rb +206 -191
  107. data/spec/unit/braintree/xml/libxml_spec.rb +5 -5
  108. data/spec/unit/braintree/xml/parser_spec.rb +8 -8
  109. data/spec/unit/braintree/xml/rexml_spec.rb +5 -5
  110. data/spec/unit/braintree/xml_spec.rb +17 -17
  111. data/spec/unit/braintree_spec.rb +2 -2
  112. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4b00fbf3fe7587ce0788471b730caa3db11f9b574a0077d83e03a9c0aef54e01
4
- data.tar.gz: 3dd4395b7ca564f1ac454a290451c9716953b9297ad3b9101d7d6e07f3cc1972
3
+ metadata.gz: 71fab9e9404ac3f2c30216aca3642baecbd01c942a25c16c70b6748563f32435
4
+ data.tar.gz: b8900d8aa7aac3716db035478510532bb82edd40ba599626d7cbe770fa939849
5
5
  SHA512:
6
- metadata.gz: 665d8cef94dfe888f82c1b50c65bad773f5c6b4600937118b37cdc68f92b47150c148d6c0c45130e8e867f7507f13929975f3357ac769c8b9e982f1d7988cab6
7
- data.tar.gz: 3555eb3944bf02f23912d17c323250d7112722f09bd825b7e6a5571fa44470d52800a7e92d4d738e6ab8f69c6a2fb98adddf626139b4ec78d39679beea0fee86
6
+ metadata.gz: 9470b1e652814a7ae2fda1250b2c9f670069f1ef98a601ce2a382a4e3430017eaeaeaf7dabe4bc1b456c755d1b0fb258b06fc0593432d2b35c2ce9fc02671d5a
7
+ data.tar.gz: e376876f7c6ae2c5a1ce588c847d3494e828b29c4f2aee273d5e2c97348577db364b4bcc48ba0588074d87644a39f771b45c7eb56e7865be1cec730a76e72162
@@ -23,6 +23,16 @@ module Braintree
23
23
  All = constants.map { |c| const_get(c) }
24
24
  end
25
25
 
26
+ module DebitNetwork
27
+ Accel = "ACCEL"
28
+ Nyce = "NYCE"
29
+ Pulse = "PULSE"
30
+ Star = "STAR"
31
+ Star_Access = "STAR_ACCESS"
32
+
33
+ All = constants.map { |c| const_get(c) }
34
+ end
35
+
26
36
  module CustomerLocation
27
37
  International = "international"
28
38
  US = "us"
@@ -160,7 +170,10 @@ module Braintree
160
170
  end
161
171
 
162
172
  # Returns true if the card is associated with Venmo SDK
173
+ # NEXT_MAJOR_VERSION Remove this method
174
+ # The old venmo SDK class has been deprecated
163
175
  def venmo_sdk?
176
+ warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
164
177
  @venmo_sdk
165
178
  end
166
179
 
@@ -12,6 +12,10 @@ module Braintree
12
12
  if attributes.has_key?(:expiration_date) && (attributes.has_key?(:expiration_month) || attributes.has_key?(:expiration_year))
13
13
  raise ArgumentError.new("create with both expiration_month and expiration_year or only expiration_date")
14
14
  end
15
+ # NEXT_MAJOR_VERSION remove this check
16
+ if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
17
+ warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
18
+ end
15
19
  Util.verify_keys(CreditCardGateway._create_signature, attributes)
16
20
  _do_create("/payment_methods", :credit_card => attributes)
17
21
  end
@@ -61,6 +65,10 @@ module Braintree
61
65
  end
62
66
 
63
67
  def update(token, attributes)
68
+ # NEXT_MAJOR_VERSION remove this check
69
+ if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
70
+ warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
71
+ end
64
72
  Util.verify_keys(CreditCardGateway._update_signature, attributes)
65
73
  _do_update(:put, "/payment_methods/credit_card/#{token}", :credit_card => attributes)
66
74
  end
@@ -79,21 +87,25 @@ module Braintree
79
87
 
80
88
  def self._signature(type) # :nodoc:
81
89
  billing_address_params = AddressGateway._shared_signature
90
+ # NEXT_MAJOR_VERSION Remove venmo_sdk_session
91
+ # The old venmo SDK class has been deprecated
82
92
  options = [
83
93
  :fail_on_duplicate_payment_method,
84
94
  :make_default,
85
95
  :skip_advanced_fraud_checking,
86
- :venmo_sdk_session,
96
+ :venmo_sdk_session, # Deprecated
87
97
  :verification_account_type,
88
98
  :verification_amount,
89
99
  :verification_currency_iso_code,
90
100
  :verification_merchant_account_id,
91
101
  :verify_card
92
102
  ]
103
+ # NEXT_MAJOR_VERSION Remove venmo_sdk_payment_method_code
104
+ # The old venmo SDK class has been deprecated
93
105
  signature = [
94
106
  :billing_address_id, :cardholder_name, :cvv, :expiration_date, :expiration_month,
95
- :expiration_year, :number, :token, :venmo_sdk_payment_method_code, :device_data,
96
- :payment_method_nonce,
107
+ :expiration_year, :number, :token, :venmo_sdk_payment_method_code, # Deprecated
108
+ :device_data, :payment_method_nonce,
97
109
  {:external_vault => [:network_transaction_id]},
98
110
  {:options => options},
99
111
  {:billing_address => billing_address_params}
@@ -9,6 +9,10 @@ module Braintree
9
9
  end
10
10
 
11
11
  def create(attributes)
12
+ # NEXT_MAJOR_VERSION remove this check
13
+ if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
14
+ warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
15
+ end
12
16
  Util.verify_keys(PaymentMethodGateway._create_signature, attributes)
13
17
  _do_create("/payment_methods", :payment_method => attributes)
14
18
  end
@@ -60,6 +64,10 @@ module Braintree
60
64
  end
61
65
 
62
66
  def update(token, attributes)
67
+ # NEXT_MAJOR_VERSION remove this check
68
+ if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
69
+ warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
70
+ end
63
71
  Util.verify_keys(PaymentMethodGateway._update_signature, attributes)
64
72
  _do_update(:put, "/payment_methods/any/#{token}", :payment_method => attributes)
65
73
  end
@@ -149,11 +157,13 @@ module Braintree
149
157
  def self._signature(type) # :nodoc:
150
158
  billing_address_params = AddressGateway._shared_signature
151
159
  paypal_options_shipping_signature = AddressGateway._shared_signature
160
+ # NEXT_MAJOR_VERSION Remove venmo_sdk_session
161
+ # The old venmo SDK class has been deprecated
152
162
  options = [
153
163
  :make_default,
154
164
  :skip_advanced_fraud_checking,
155
165
  :us_bank_account_verification_method,
156
- :venmo_sdk_session,
166
+ :venmo_sdk_session, # Deprecated
157
167
  :verification_account_type,
158
168
  :verification_amount,
159
169
  :verification_currency_iso_code,
@@ -168,10 +178,12 @@ module Braintree
168
178
  {:shipping => paypal_options_shipping_signature}
169
179
  ],
170
180
  ]
181
+ # NEXT_MAJOR_VERSION Remove venmo_sdk_payment_method_code
182
+ # The old venmo SDK class has been deprecated
171
183
  signature = [
172
184
  :billing_address_id, :cardholder_name, :cvv, :expiration_date, :expiration_month,
173
- :expiration_year, :number, :token, :venmo_sdk_payment_method_code, :device_data,
174
- :payment_method_nonce,
185
+ :expiration_year, :number, :token, :venmo_sdk_payment_method_code, # Deprecated
186
+ :device_data, :payment_method_nonce,
175
187
  {:options => options},
176
188
  {:billing_address => billing_address_params}
177
189
  ]
@@ -53,6 +53,7 @@ module Braintree
53
53
  TransactableCountryOfIssuanceUSA = "fake-valid-country-of-issuance-usa-nonce"
54
54
  TransactableCountryOfIssuanceCAD = "fake-valid-country-of-issuance-cad-nonce"
55
55
  TransactableIssuingBankNetworkOnly = "fake-valid-issuing-bank-network-only-nonce"
56
+ TransactablePinlessDebitVisa = "fake-pinless-debit-visa-nonce"
56
57
  ProcessorDeclinedVisa = "fake-processor-declined-visa-nonce"
57
58
  ProcessorDeclinedMasterCard = "fake-processor-declined-mastercard-nonce"
58
59
  ProcessorDeclinedAmEx = "fake-processor-declined-amex-nonce"
@@ -1,3 +1,5 @@
1
+ # NEXT_MAJOR_VERSION Remove this class
2
+ # The old venmo SDK class has been deprecated
1
3
  module Braintree
2
4
  module Test
3
5
  module VenmoSDK
@@ -64,7 +64,10 @@ module Braintree
64
64
  "#{bin}******#{last_4}"
65
65
  end
66
66
 
67
+ # NEXT_MAJOR_VERSION Remove this method
68
+ # The old venmo SDK class has been deprecated
67
69
  def venmo_sdk?
70
+ warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
68
71
  @venmo_sdk
69
72
  end
70
73
 
@@ -8,6 +8,8 @@ module Braintree
8
8
  attr_reader :debug_id
9
9
  attr_reader :description
10
10
  attr_reader :funding_source
11
+ attr_reader :implicitly_vaulted_payment_method_global_id
12
+ attr_reader :implicitly_vaulted_payment_method_token
11
13
  attr_reader :payer_id
12
14
  attr_reader :payment_id
13
15
  attr_reader :refund_from_transaction_fee_amount
@@ -91,8 +91,9 @@ module Braintree
91
91
  end
92
92
  end
93
93
 
94
- attr_reader :acquirer_reference_number
95
94
  attr_reader :ach_return_code
95
+ attr_reader :ach_return_responses
96
+ attr_reader :acquirer_reference_number
96
97
  attr_reader :add_ons
97
98
  attr_reader :additional_processor_response # The raw response from the processor.
98
99
  attr_reader :amount
@@ -111,6 +112,7 @@ module Braintree
111
112
  attr_reader :custom_fields
112
113
  attr_reader :customer_details
113
114
  attr_reader :cvv_response_code
115
+ attr_reader :debit_network
114
116
  attr_reader :descriptor
115
117
  attr_reader :disbursement_details
116
118
  attr_reader :discount_amount
@@ -150,8 +152,8 @@ module Braintree
150
152
  attr_reader :purchase_order_number
151
153
  attr_reader :recurring
152
154
  attr_reader :refund_ids
153
- attr_reader :refunded_transaction_id
154
155
  attr_reader :refunded_installments
156
+ attr_reader :refunded_transaction_id
155
157
  attr_reader :retried
156
158
  attr_reader :retried_transaction_id # the primary/parent transaction id of any retried transaction
157
159
  attr_reader :retrieval_reference_number
@@ -159,9 +161,9 @@ module Braintree
159
161
  attr_reader :risk_data
160
162
  attr_reader :samsung_pay_card_details
161
163
  attr_reader :sca_exemption_requested
162
- attr_reader :service_fee_amount
163
164
  attr_reader :sepa_direct_debit_account_details
164
165
  attr_reader :sepa_direct_debit_return_code
166
+ attr_reader :service_fee_amount
165
167
  attr_reader :settlement_batch_id
166
168
  attr_reader :shipping_amount
167
169
  attr_reader :shipping_details
@@ -179,7 +181,6 @@ module Braintree
179
181
  attr_reader :venmo_account_details
180
182
  attr_reader :visa_checkout_card_details
181
183
  attr_reader :voice_referral_number
182
- attr_reader :ach_return_responses
183
184
 
184
185
  def self.adjust_authorization(*args)
185
186
  Configuration.gateway.transaction.adjust_authorization(*args)
@@ -9,6 +9,14 @@ module Braintree
9
9
  end
10
10
 
11
11
  def create(attributes)
12
+ # NEXT_MAJOR_VERSION remove this check
13
+ if attributes.has_key?(:venmo_sdk_payment_method_code) || attributes.has_key?(:venmo_sdk_session)
14
+ warn "[DEPRECATED] The Venmo SDK integration is Unsupported. Please update your integration to use Pay with Venmo instead."
15
+ end
16
+ # NEXT_MAJOR_VERSION remove this check
17
+ if attributes.has_key?(:three_d_secure_token)
18
+ warn "[DEPRECATED] Passing :three_d_secure_token to create is deprecated. Please use :three_d_secure_authentication_id"
19
+ end
12
20
  Util.verify_keys(TransactionGateway._create_signature, attributes)
13
21
  _do_create "/transactions", :transaction => attributes
14
22
  end
@@ -183,6 +191,10 @@ module Braintree
183
191
  [:amount, :channel, {:options => [:submit_for_settlement]}]
184
192
  end
185
193
 
194
+
195
+ # NEXT_MAJOR_VERSION Remove venmo_sdk_payment_method_code, venmo_sdk_session, and three_d_secure_token
196
+ # The old venmo SDK class has been deprecated
197
+ # three_d_secure_token has been deprecated in favor of three_d_secure_authentication_id
186
198
  def self._create_signature # :nodoc:
187
199
  [
188
200
  :amount, :billing_address_id, :channel, :customer_id, :device_data, :discount_amount,
@@ -190,8 +202,8 @@ module Braintree
190
202
  :product_sku, :purchase_order_number, :service_fee_amount, :shared_billing_address_id,
191
203
  :shared_customer_id, :shared_payment_method_nonce, :shared_payment_method_token,
192
204
  :shared_shipping_address_id, :shipping_address_id, :shipping_amount,
193
- :ships_from_postal_code, :tax_amount, :tax_exempt, :three_d_secure_authentication_id,
194
- :three_d_secure_token, :transaction_source, :type, :venmo_sdk_payment_method_code,
205
+ :ships_from_postal_code, :tax_amount, :tax_exempt, :three_d_secure_authentication_id,:three_d_secure_token, #Deprecated
206
+ :transaction_source, :type, :venmo_sdk_payment_method_code, # Deprecated
195
207
  :sca_exemption, :currency_iso_code, :exchange_rate_quote_id,
196
208
  {:line_items => [:quantity, :name, :description, :kind, :unit_amount, :unit_tax_amount, :total_amount, :discount_amount, :tax_amount, :unit_of_measure, :product_code, :commodity_code, :url]},
197
209
  {:risk_data => [:customer_browser, :customer_device_id, :customer_ip, :customer_location_zip, :customer_tenure]},
@@ -222,7 +234,7 @@ module Braintree
222
234
  :submit_for_settlement,
223
235
  :add_billing_address_to_payment_method,
224
236
  :store_shipping_address_in_vault,
225
- :venmo_sdk_session,
237
+ :venmo_sdk_session, # Deprecated
226
238
  :payee_id,
227
239
  :payee_email,
228
240
  :skip_advanced_fraud_checking,
@@ -54,15 +54,16 @@ module Braintree
54
54
  CreditCard::CustomerLocation::International,
55
55
  CreditCard::CustomerLocation::US
56
56
  ]
57
+ multiple_value_field :debit_network, :allows => CreditCard::DebitNetwork::All
57
58
  multiple_value_field :ids
58
- multiple_value_field :payment_instrument_type
59
- multiple_value_field :user
60
59
  multiple_value_field :merchant_account_id
61
- multiple_value_field :status, :allows => Transaction::Status::All
60
+ multiple_value_field :payment_instrument_type
61
+ multiple_value_field :reason_code
62
62
  multiple_value_field :source
63
- multiple_value_field :type, :allows => Transaction::Type::All
63
+ multiple_value_field :status, :allows => Transaction::Status::All
64
64
  multiple_value_field :store_ids
65
- multiple_value_field :reason_code
65
+ multiple_value_field :type, :allows => Transaction::Type::All
66
+ multiple_value_field :user
66
67
 
67
68
  key_value_fields :refund
68
69
 
@@ -1,7 +1,7 @@
1
1
  module Braintree
2
2
  module Version
3
3
  Major = 4
4
- Minor = 14
4
+ Minor = 15
5
5
  Tiny = 0
6
6
 
7
7
  String = "#{Major}.#{Minor}.#{Tiny}"
@@ -45,6 +45,7 @@ module Braintree
45
45
 
46
46
  RecipientUpdatedGrantedPaymentMethod = "recipient_updated_granted_payment_method"
47
47
 
48
+ SubscriptionBillingSkipped = "subscription_billing_skipped"
48
49
  SubscriptionCanceled = "subscription_canceled"
49
50
  SubscriptionChargedSuccessfully = "subscription_charged_successfully"
50
51
  SubscriptionChargedUnsuccessfully = "subscription_charged_unsuccessfully"
@@ -72,6 +72,8 @@ module Braintree
72
72
  _disbursement_exception_sample_xml(id)
73
73
  when Braintree::WebhookNotification::Kind::Disbursement
74
74
  _disbursement_sample_xml(id)
75
+ when Braintree::WebhookNotification::Kind::SubscriptionBillingSkipped
76
+ _subscription_billing_skipped(id)
75
77
  when Braintree::WebhookNotification::Kind::SubscriptionChargedSuccessfully
76
78
  _subscription_charged_successfully(id)
77
79
  when Braintree::WebhookNotification::Kind::SubscriptionChargedUnsuccessfully
@@ -112,6 +114,21 @@ module Braintree
112
114
  XML
113
115
  end
114
116
 
117
+ def _subscription_billing_skipped(id)
118
+
119
+ <<-XML
120
+ <subscription>
121
+ <id>#{id}</id>
122
+ <transactions type="array">
123
+ </transactions>
124
+ <add_ons type="array">
125
+ </add_ons>
126
+ <discounts type="array">
127
+ </discounts>
128
+ </subscription>
129
+ XML
130
+ end
131
+
115
132
  def _subscription_charged_successfully(id)
116
133
 
117
134
  <<-XML
@@ -20,15 +20,15 @@ describe Braintree::AddOn do
20
20
  add_ons = Braintree::AddOn.all
21
21
  add_on = add_ons.select { |add_on| add_on.id == id }.first
22
22
 
23
- add_on.should_not be_nil
24
- add_on.amount.should == BigDecimal(expected[:amount])
25
- add_on.created_at.should_not be_nil
26
- add_on.description.should == expected[:description]
27
- add_on.kind.should == expected[:kind]
28
- add_on.name.should == expected[:name]
29
- add_on.never_expires.should == expected[:never_expires]
30
- add_on.number_of_billing_cycles.should == expected[:number_of_billing_cycles]
31
- add_on.updated_at.should_not be_nil
23
+ expect(add_on).not_to be_nil
24
+ expect(add_on.amount).to eq(BigDecimal(expected[:amount]))
25
+ expect(add_on.created_at).not_to be_nil
26
+ expect(add_on.description).to eq(expected[:description])
27
+ expect(add_on.kind).to eq(expected[:kind])
28
+ expect(add_on.name).to eq(expected[:name])
29
+ expect(add_on.never_expires).to eq(expected[:never_expires])
30
+ expect(add_on.number_of_billing_cycles).to eq(expected[:number_of_billing_cycles])
31
+ expect(add_on.updated_at).not_to be_nil
32
32
  end
33
33
 
34
34
  it "raises with a helpful error if public_key and private_key are not set" do
@@ -18,21 +18,21 @@ describe Braintree::Address do
18
18
  :postal_code => "60622",
19
19
  :country_name => "United States of America",
20
20
  )
21
- result.success?.should == true
22
- result.address.customer_id.should == customer.id
23
- result.address.first_name.should == "Ben"
24
- result.address.last_name.should == "Moore"
25
- result.address.company.should == "Moore Co."
26
- result.address.street_address.should == "1811 E Main St"
27
- result.address.extended_address.should == "Suite 200"
28
- result.address.locality.should == "Chicago"
29
- result.address.region.should == "Illinois"
30
- result.address.phone_number.should == "5551231234"
31
- result.address.postal_code.should == "60622"
32
- result.address.country_name.should == "United States of America"
33
- result.address.country_code_alpha2.should == "US"
34
- result.address.country_code_alpha3.should == "USA"
35
- result.address.country_code_numeric.should == "840"
21
+ expect(result.success?).to eq(true)
22
+ expect(result.address.customer_id).to eq(customer.id)
23
+ expect(result.address.first_name).to eq("Ben")
24
+ expect(result.address.last_name).to eq("Moore")
25
+ expect(result.address.company).to eq("Moore Co.")
26
+ expect(result.address.street_address).to eq("1811 E Main St")
27
+ expect(result.address.extended_address).to eq("Suite 200")
28
+ expect(result.address.locality).to eq("Chicago")
29
+ expect(result.address.region).to eq("Illinois")
30
+ expect(result.address.phone_number).to eq("5551231234")
31
+ expect(result.address.postal_code).to eq("60622")
32
+ expect(result.address.country_name).to eq("United States of America")
33
+ expect(result.address.country_code_alpha2).to eq("US")
34
+ expect(result.address.country_code_alpha3).to eq("USA")
35
+ expect(result.address.country_code_numeric).to eq("840")
36
36
  end
37
37
 
38
38
  it "accepts country_codes" do
@@ -43,11 +43,11 @@ describe Braintree::Address do
43
43
  :country_code_alpha3 => "ASM",
44
44
  :country_code_numeric => "16",
45
45
  )
46
- result.success?.should == true
47
- result.address.country_name.should == "American Samoa"
48
- result.address.country_code_alpha2.should == "AS"
49
- result.address.country_code_alpha3.should == "ASM"
50
- result.address.country_code_numeric.should == "016"
46
+ expect(result.success?).to eq(true)
47
+ expect(result.address.country_name).to eq("American Samoa")
48
+ expect(result.address.country_code_alpha2).to eq("AS")
49
+ expect(result.address.country_code_alpha3).to eq("ASM")
50
+ expect(result.address.country_code_numeric).to eq("016")
51
51
  end
52
52
 
53
53
  it "accepts utf-8 country names" do
@@ -56,8 +56,8 @@ describe Braintree::Address do
56
56
  :customer_id => customer.id,
57
57
  :country_name => "Åland",
58
58
  )
59
- result.success?.should == true
60
- result.address.country_name.should == "Åland"
59
+ expect(result.success?).to eq(true)
60
+ expect(result.address.country_name).to eq("Åland")
61
61
  end
62
62
 
63
63
  it "returns an error response given inconsistent country codes" do
@@ -67,8 +67,8 @@ describe Braintree::Address do
67
67
  :country_code_alpha2 => "AS",
68
68
  :country_code_alpha3 => "USA",
69
69
  )
70
- result.success?.should == false
71
- result.errors.for(:address).on(:base).map { |e| e.code }.should include(Braintree::ErrorCodes::Address::InconsistentCountry)
70
+ expect(result.success?).to eq(false)
71
+ expect(result.errors.for(:address).on(:base).map { |e| e.code }).to include(Braintree::ErrorCodes::Address::InconsistentCountry)
72
72
  end
73
73
 
74
74
  it "returns an error response given an invalid country_code_alpha2" do
@@ -77,8 +77,8 @@ describe Braintree::Address do
77
77
  :customer_id => customer.id,
78
78
  :country_code_alpha2 => "zz",
79
79
  )
80
- result.success?.should == false
81
- result.errors.for(:address).on(:country_code_alpha2).map { |e| e.code }.should include(Braintree::ErrorCodes::Address::CountryCodeAlpha2IsNotAccepted)
80
+ expect(result.success?).to eq(false)
81
+ expect(result.errors.for(:address).on(:country_code_alpha2).map { |e| e.code }).to include(Braintree::ErrorCodes::Address::CountryCodeAlpha2IsNotAccepted)
82
82
  end
83
83
 
84
84
  it "returns an error response given an invalid country_code_alpha3" do
@@ -87,8 +87,8 @@ describe Braintree::Address do
87
87
  :customer_id => customer.id,
88
88
  :country_code_alpha3 => "zzz",
89
89
  )
90
- result.success?.should == false
91
- result.errors.for(:address).on(:country_code_alpha3).map { |e| e.code }.should include(Braintree::ErrorCodes::Address::CountryCodeAlpha3IsNotAccepted)
90
+ expect(result.success?).to eq(false)
91
+ expect(result.errors.for(:address).on(:country_code_alpha3).map { |e| e.code }).to include(Braintree::ErrorCodes::Address::CountryCodeAlpha3IsNotAccepted)
92
92
  end
93
93
 
94
94
  it "returns an error response given an invalid country_code_numeric" do
@@ -97,8 +97,8 @@ describe Braintree::Address do
97
97
  :customer_id => customer.id,
98
98
  :country_code_numeric => "zz",
99
99
  )
100
- result.success?.should == false
101
- result.errors.for(:address).on(:country_code_numeric).map { |e| e.code }.should include(Braintree::ErrorCodes::Address::CountryCodeNumericIsNotAccepted)
100
+ expect(result.success?).to eq(false)
101
+ expect(result.errors.for(:address).on(:country_code_numeric).map { |e| e.code }).to include(Braintree::ErrorCodes::Address::CountryCodeNumericIsNotAccepted)
102
102
  end
103
103
 
104
104
  it "returns an error response if invalid" do
@@ -107,8 +107,8 @@ describe Braintree::Address do
107
107
  :customer_id => customer.id,
108
108
  :country_name => "United States of Invalid",
109
109
  )
110
- result.success?.should == false
111
- result.errors.for(:address).on(:country_name)[0].message.should == "Country name is not an accepted country."
110
+ expect(result.success?).to eq(false)
111
+ expect(result.errors.for(:address).on(:country_name)[0].message).to eq("Country name is not an accepted country.")
112
112
  end
113
113
 
114
114
  it "allows -, _, A-Z, a-z, and 0-9 in customer_id without raising an ArgumentError" do
@@ -137,14 +137,14 @@ describe Braintree::Address do
137
137
  :postal_code => "60623",
138
138
  :country_name => "United States of America",
139
139
  )
140
- address.customer_id.should == customer.id
141
- address.street_address.should == "1812 E Main St"
142
- address.extended_address.should == "Suite 201"
143
- address.locality.should == "Bartlett"
144
- address.region.should == "IL"
145
- address.phone_number.should == "5551231234"
146
- address.postal_code.should == "60623"
147
- address.country_name.should == "United States of America"
140
+ expect(address.customer_id).to eq(customer.id)
141
+ expect(address.street_address).to eq("1812 E Main St")
142
+ expect(address.extended_address).to eq("Suite 201")
143
+ expect(address.locality).to eq("Bartlett")
144
+ expect(address.region).to eq("IL")
145
+ expect(address.phone_number).to eq("5551231234")
146
+ expect(address.postal_code).to eq("60623")
147
+ expect(address.country_name).to eq("United States of America")
148
148
  end
149
149
 
150
150
  it "raises a ValidationsFailed if invalid" do
@@ -162,7 +162,7 @@ describe Braintree::Address do
162
162
  it "deletes the address given a customer id and an address id" do
163
163
  customer = Braintree::Customer.create!(:last_name => "Wilson")
164
164
  address = Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
165
- Braintree::Address.delete(customer.id, address.id).success?.should == true
165
+ expect(Braintree::Address.delete(customer.id, address.id).success?).to eq(true)
166
166
  expect do
167
167
  Braintree::Address.find(customer.id, address.id)
168
168
  end.to raise_error(Braintree::NotFoundError)
@@ -171,7 +171,7 @@ describe Braintree::Address do
171
171
  it "deletes the address given a customer and an address id" do
172
172
  customer = Braintree::Customer.create!(:last_name => "Wilson")
173
173
  address = Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
174
- Braintree::Address.delete(customer, address.id).success?.should == true
174
+ expect(Braintree::Address.delete(customer, address.id).success?).to eq(true)
175
175
  expect do
176
176
  Braintree::Address.find(customer.id, address.id)
177
177
  end.to raise_error(Braintree::NotFoundError)
@@ -182,13 +182,13 @@ describe Braintree::Address do
182
182
  it "finds the address given a customer and an address id" do
183
183
  customer = Braintree::Customer.create!(:last_name => "Wilson")
184
184
  address = Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
185
- Braintree::Address.find(customer, address.id).should == address
185
+ expect(Braintree::Address.find(customer, address.id)).to eq(address)
186
186
  end
187
187
 
188
188
  it "finds the address given a customer id and an address id" do
189
189
  customer = Braintree::Customer.create!(:last_name => "Wilson")
190
190
  address = Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
191
- Braintree::Address.find(customer.id, address.id).should == address
191
+ expect(Braintree::Address.find(customer.id, address.id)).to eq(address)
192
192
  end
193
193
 
194
194
  it "raises a NotFoundError if it cannot be found because of customer id" do
@@ -242,16 +242,16 @@ describe Braintree::Address do
242
242
  :postal_code => "60621",
243
243
  :country_name => "United States of America",
244
244
  )
245
- result.success?.should == true
246
- result.address.street_address.should == "123 E New St"
247
- result.address.extended_address.should == "New Suite 3"
248
- result.address.locality.should == "Chicago"
249
- result.address.region.should == "Illinois"
250
- result.address.postal_code.should == "60621"
251
- result.address.country_name.should == "United States of America"
252
- result.address.country_code_alpha2.should == "US"
253
- result.address.country_code_alpha3.should == "USA"
254
- result.address.country_code_numeric.should == "840"
245
+ expect(result.success?).to eq(true)
246
+ expect(result.address.street_address).to eq("123 E New St")
247
+ expect(result.address.extended_address).to eq("New Suite 3")
248
+ expect(result.address.locality).to eq("Chicago")
249
+ expect(result.address.region).to eq("Illinois")
250
+ expect(result.address.postal_code).to eq("60621")
251
+ expect(result.address.country_name).to eq("United States of America")
252
+ expect(result.address.country_code_alpha2).to eq("US")
253
+ expect(result.address.country_code_alpha3).to eq("USA")
254
+ expect(result.address.country_code_numeric).to eq("840")
255
255
  end
256
256
 
257
257
  it "accepts country_codes" do
@@ -266,11 +266,11 @@ describe Braintree::Address do
266
266
  :country_name => "Azerbaijan",
267
267
  )
268
268
 
269
- result.success?.should == true
270
- result.address.country_name.should == "Azerbaijan"
271
- result.address.country_code_alpha2.should == "AZ"
272
- result.address.country_code_alpha3.should == "AZE"
273
- result.address.country_code_numeric.should == "031"
269
+ expect(result.success?).to eq(true)
270
+ expect(result.address.country_name).to eq("Azerbaijan")
271
+ expect(result.address.country_code_alpha2).to eq("AZ")
272
+ expect(result.address.country_code_alpha3).to eq("AZE")
273
+ expect(result.address.country_code_numeric).to eq("031")
274
274
  end
275
275
 
276
276
  it "returns an error response if invalid" do
@@ -285,8 +285,8 @@ describe Braintree::Address do
285
285
  :street_address => "123 E New St",
286
286
  :country_name => "United States of Invalid",
287
287
  )
288
- result.success?.should == false
289
- result.errors.for(:address).on(:country_name)[0].message.should == "Country name is not an accepted country."
288
+ expect(result.success?).to eq(false)
289
+ expect(result.errors.for(:address).on(:country_name)[0].message).to eq("Country name is not an accepted country.")
290
290
  end
291
291
  end
292
292
 
@@ -320,13 +320,13 @@ describe Braintree::Address do
320
320
  :postal_code => "60621",
321
321
  :country_name => "United States of America",
322
322
  )
323
- updated_address.should == address
324
- updated_address.street_address.should == "123 E New St"
325
- updated_address.extended_address.should == "New Suite 3"
326
- updated_address.locality.should == "Chicago"
327
- updated_address.region.should == "Illinois"
328
- updated_address.postal_code.should == "60621"
329
- updated_address.country_name.should == "United States of America"
323
+ expect(updated_address).to eq(address)
324
+ expect(updated_address.street_address).to eq("123 E New St")
325
+ expect(updated_address.extended_address).to eq("New Suite 3")
326
+ expect(updated_address.locality).to eq("Chicago")
327
+ expect(updated_address.region).to eq("Illinois")
328
+ expect(updated_address.postal_code).to eq("60621")
329
+ expect(updated_address.country_name).to eq("United States of America")
330
330
  end
331
331
 
332
332
  it "raises a ValidationsFailed invalid" do
@@ -352,7 +352,7 @@ describe Braintree::Address do
352
352
  customer = Braintree::Customer.create!(:last_name => "Wilson")
353
353
  address = Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
354
354
  result = Braintree::Address.delete(customer.id, address.id)
355
- result.success?.should == true
355
+ expect(result.success?).to eq(true)
356
356
  expect do
357
357
  Braintree::Address.find(customer.id, address.id)
358
358
  end.to raise_error(Braintree::NotFoundError)