braintree 4.14.0 → 4.15.0

Sign up to get free protection for your applications and to get access to all the features.
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)