braintree 2.98.0 → 4.23.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 (308) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/braintree.gemspec +7 -4
  4. data/lib/braintree/account_updater_daily_report.rb +4 -4
  5. data/lib/braintree/ach_mandate.rb +1 -1
  6. data/lib/braintree/add_on_gateway.rb +1 -1
  7. data/lib/braintree/address.rb +7 -27
  8. data/lib/braintree/address_gateway.rb +8 -7
  9. data/lib/braintree/advanced_search.rb +11 -12
  10. data/lib/braintree/apple_pay.rb +4 -4
  11. data/lib/braintree/apple_pay_card.rb +18 -4
  12. data/lib/braintree/apple_pay_options.rb +4 -4
  13. data/lib/braintree/authorization_adjustment.rb +4 -4
  14. data/lib/braintree/base_module.rb +11 -1
  15. data/lib/braintree/bin_data.rb +10 -3
  16. data/lib/braintree/client_token.rb +1 -1
  17. data/lib/braintree/client_token_gateway.rb +4 -3
  18. data/lib/braintree/configuration.rb +35 -35
  19. data/lib/braintree/connected_merchant_paypal_status_changed.rb +2 -2
  20. data/lib/braintree/connected_merchant_status_transitioned.rb +2 -2
  21. data/lib/braintree/credit_card.rb +40 -86
  22. data/lib/braintree/credit_card_gateway.rb +58 -44
  23. data/lib/braintree/credit_card_verification.rb +39 -20
  24. data/lib/braintree/credit_card_verification_gateway.rb +35 -5
  25. data/lib/braintree/credit_card_verification_search.rb +2 -2
  26. data/lib/braintree/customer.rb +23 -88
  27. data/lib/braintree/customer_gateway.rb +17 -32
  28. data/lib/braintree/customer_search.rb +2 -2
  29. data/lib/braintree/descriptor.rb +1 -1
  30. data/lib/braintree/digest.rb +1 -1
  31. data/lib/braintree/disbursement.rb +7 -7
  32. data/lib/braintree/discount_gateway.rb +1 -1
  33. data/lib/braintree/dispute/evidence.rb +1 -1
  34. data/lib/braintree/{transaction/coinbase_details.rb → dispute/paypal_message.rb} +5 -6
  35. data/lib/braintree/dispute/{history_event.rb → status_history.rb} +3 -1
  36. data/lib/braintree/dispute/transaction.rb +3 -1
  37. data/lib/braintree/dispute/transaction_details.rb +1 -1
  38. data/lib/braintree/dispute.rb +47 -6
  39. data/lib/braintree/dispute_gateway.rb +5 -10
  40. data/lib/braintree/dispute_search.rb +8 -4
  41. data/lib/braintree/document_upload.rb +3 -3
  42. data/lib/braintree/document_upload_gateway.rb +3 -3
  43. data/lib/braintree/enriched_customer_data.rb +21 -0
  44. data/lib/braintree/error_codes.rb +217 -175
  45. data/lib/braintree/error_result.rb +2 -3
  46. data/lib/braintree/errors.rb +3 -3
  47. data/lib/braintree/exceptions.rb +6 -5
  48. data/lib/braintree/exchange_rate.rb +13 -0
  49. data/lib/braintree/exchange_rate_quote.rb +24 -0
  50. data/lib/braintree/exchange_rate_quote_gateway.rb +35 -0
  51. data/lib/braintree/exchange_rate_quote_input.rb +21 -0
  52. data/lib/braintree/exchange_rate_quote_request.rb +18 -0
  53. data/lib/braintree/exchange_rate_quote_response.rb +18 -0
  54. data/lib/braintree/facilitated_details.rb +1 -1
  55. data/lib/braintree/facilitator_details.rb +1 -1
  56. data/lib/braintree/gateway.rb +6 -12
  57. data/lib/braintree/{android_pay_card.rb → google_pay_card.rb} +18 -5
  58. data/lib/braintree/granted_payment_instrument_update.rb +2 -2
  59. data/lib/braintree/graphql_client.rb +14 -8
  60. data/lib/braintree/http.rb +9 -10
  61. data/lib/braintree/local_payment_completed/blik_alias.rb +23 -0
  62. data/lib/braintree/local_payment_completed.rb +10 -5
  63. data/lib/braintree/local_payment_expired.rb +21 -0
  64. data/lib/braintree/local_payment_funded.rb +22 -0
  65. data/lib/braintree/local_payment_reversed.rb +19 -0
  66. data/lib/braintree/merchant.rb +4 -4
  67. data/lib/braintree/merchant_account.rb +3 -3
  68. data/lib/braintree/merchant_account_gateway.rb +10 -8
  69. data/lib/braintree/merchant_gateway.rb +1 -1
  70. data/lib/braintree/meta_checkout_card.rb +89 -0
  71. data/lib/braintree/meta_checkout_token.rb +88 -0
  72. data/lib/braintree/modification.rb +4 -4
  73. data/lib/braintree/oauth_credentials.rb +4 -4
  74. data/lib/braintree/oauth_gateway.rb +5 -5
  75. data/lib/braintree/paginated_collection.rb +2 -2
  76. data/lib/braintree/paginated_result.rb +1 -1
  77. data/lib/braintree/payment_instrument_type.rb +14 -13
  78. data/lib/braintree/payment_method_customer_data_updated_metadata.rb +24 -0
  79. data/lib/braintree/payment_method_gateway.rb +52 -22
  80. data/lib/braintree/payment_method_nonce.rb +12 -7
  81. data/lib/braintree/payment_method_nonce_details.rb +40 -0
  82. data/lib/braintree/payment_method_nonce_details_payer_info.rb +32 -0
  83. data/lib/braintree/payment_method_nonce_gateway.rb +14 -3
  84. data/lib/braintree/payment_method_parser.rb +4 -7
  85. data/lib/braintree/paypal_account.rb +3 -2
  86. data/lib/braintree/paypal_account_gateway.rb +5 -5
  87. data/lib/braintree/plan.rb +22 -2
  88. data/lib/braintree/plan_gateway.rb +101 -1
  89. data/lib/braintree/processor_response_types.rb +3 -3
  90. data/lib/braintree/resource_collection.rb +10 -5
  91. data/lib/braintree/revoked_payment_method_metadata.rb +2 -2
  92. data/lib/braintree/risk_data/liability_shift.rb +22 -0
  93. data/lib/braintree/risk_data.rb +10 -3
  94. data/lib/braintree/samsung_pay_card.rb +8 -6
  95. data/lib/braintree/sepa_direct_debit_account.rb +60 -0
  96. data/lib/braintree/sepa_direct_debit_account_gateway.rb +25 -0
  97. data/lib/braintree/sepa_direct_debit_account_nonce_details.rb +28 -0
  98. data/lib/braintree/settlement_batch_summary.rb +2 -2
  99. data/lib/braintree/settlement_batch_summary_gateway.rb +1 -1
  100. data/lib/braintree/sha256_digest.rb +1 -1
  101. data/lib/braintree/subscription/status_details.rb +1 -1
  102. data/lib/braintree/subscription.rb +13 -13
  103. data/lib/braintree/subscription_gateway.rb +6 -6
  104. data/lib/braintree/subscription_search.rb +1 -1
  105. data/lib/braintree/successful_result.rb +5 -4
  106. data/lib/braintree/test/authentication_id.rb +21 -0
  107. data/lib/braintree/test/credit_card.rb +9 -10
  108. data/lib/braintree/test/merchant_account.rb +1 -1
  109. data/lib/braintree/test/nonce.rb +27 -20
  110. data/lib/braintree/test/transaction_amounts.rb +2 -3
  111. data/lib/braintree/test/venmo_sdk.rb +2 -0
  112. data/lib/braintree/testing_gateway.rb +1 -1
  113. data/lib/braintree/three_d_secure_info.rb +23 -11
  114. data/lib/braintree/transaction/address_details.rb +14 -1
  115. data/lib/braintree/transaction/apple_pay_details.rb +13 -10
  116. data/lib/braintree/transaction/credit_card_details.rb +8 -1
  117. data/lib/braintree/transaction/customer_details.rb +3 -2
  118. data/lib/braintree/transaction/disbursement_details.rb +2 -1
  119. data/lib/braintree/transaction/{android_pay_details.rb → google_pay_details.rb} +6 -1
  120. data/lib/braintree/transaction/installment/adjustment.rb +33 -0
  121. data/lib/braintree/transaction/installment.rb +28 -0
  122. data/lib/braintree/transaction/local_payment_details.rb +3 -0
  123. data/lib/braintree/transaction/meta_checkout_card_details.rb +52 -0
  124. data/lib/braintree/transaction/meta_checkout_token_details.rb +54 -0
  125. data/lib/braintree/transaction/package_details.rb +19 -0
  126. data/lib/braintree/transaction/payment_receipt/card_present_data.rb +36 -0
  127. data/lib/braintree/transaction/payment_receipt/merchant_address.rb +19 -0
  128. data/lib/braintree/transaction/payment_receipt.rb +31 -0
  129. data/lib/braintree/transaction/paypal_details.rb +5 -0
  130. data/lib/braintree/transaction/samsung_pay_card_details.rb +3 -1
  131. data/lib/braintree/transaction/sepa_direct_debit_account_details.rb +27 -0
  132. data/lib/braintree/transaction/status_details.rb +1 -1
  133. data/lib/braintree/transaction/subscription_details.rb +3 -1
  134. data/lib/braintree/transaction/us_bank_account_details.rb +2 -1
  135. data/lib/braintree/transaction/visa_checkout_card_details.rb +1 -1
  136. data/lib/braintree/transaction.rb +119 -128
  137. data/lib/braintree/transaction_gateway.rb +138 -64
  138. data/lib/braintree/transaction_line_item.rb +14 -11
  139. data/lib/braintree/transaction_line_item_gateway.rb +1 -1
  140. data/lib/braintree/transaction_review.rb +18 -0
  141. data/lib/braintree/transaction_search.rb +11 -7
  142. data/lib/braintree/unknown_payment_method.rb +2 -2
  143. data/lib/braintree/us_bank_account.rb +5 -5
  144. data/lib/braintree/us_bank_account_verification.rb +24 -16
  145. data/lib/braintree/us_bank_account_verification_gateway.rb +1 -1
  146. data/lib/braintree/us_bank_account_verification_search.rb +1 -1
  147. data/lib/braintree/util.rb +25 -10
  148. data/lib/braintree/validation_error.rb +1 -1
  149. data/lib/braintree/validation_error_collection.rb +3 -3
  150. data/lib/braintree/venmo_account.rb +4 -4
  151. data/lib/braintree/venmo_profile_data.rb +25 -0
  152. data/lib/braintree/version.rb +2 -2
  153. data/lib/braintree/visa_checkout_card.rb +8 -8
  154. data/lib/braintree/webhook_notification.rb +55 -33
  155. data/lib/braintree/webhook_notification_gateway.rb +9 -9
  156. data/lib/braintree/webhook_testing.rb +1 -1
  157. data/lib/braintree/webhook_testing_gateway.rb +569 -46
  158. data/lib/braintree/xml/generator.rb +6 -5
  159. data/lib/braintree/xml/libxml.rb +1 -1
  160. data/lib/braintree/xml/parser.rb +24 -37
  161. data/lib/braintree/xml/rexml.rb +6 -7
  162. data/lib/braintree/xml.rb +1 -1
  163. data/lib/braintree.rb +41 -24
  164. data/lib/ssl/api_braintreegateway_com.ca.crt +401 -168
  165. data/spec/integration/braintree/add_on_spec.rb +10 -10
  166. data/spec/integration/braintree/address_spec.rb +101 -178
  167. data/spec/integration/braintree/advanced_search_spec.rb +93 -93
  168. data/spec/integration/braintree/apple_pay_spec.rb +12 -12
  169. data/spec/integration/braintree/braintree_gateway_spec.rb +2 -1
  170. data/spec/integration/braintree/client_api/client_token_spec.rb +279 -62
  171. data/spec/integration/braintree/client_api/spec_helper.rb +99 -73
  172. data/spec/integration/braintree/credit_card_spec.rb +522 -821
  173. data/spec/integration/braintree/credit_card_verification_search_spec.rb +18 -18
  174. data/spec/integration/braintree/credit_card_verification_spec.rb +219 -30
  175. data/spec/integration/braintree/customer_search_spec.rb +28 -28
  176. data/spec/integration/braintree/customer_spec.rb +840 -757
  177. data/spec/integration/braintree/disbursement_spec.rb +2 -2
  178. data/spec/integration/braintree/discount_spec.rb +9 -9
  179. data/spec/integration/braintree/dispute_search_spec.rb +45 -9
  180. data/spec/integration/braintree/dispute_spec.rb +109 -82
  181. data/spec/integration/braintree/document_upload_spec.rb +29 -17
  182. data/spec/integration/braintree/error_codes_spec.rb +3 -3
  183. data/spec/integration/braintree/exchange_rate_quote_spec.rb +97 -0
  184. data/spec/integration/braintree/graphql_client_spec.rb +0 -2
  185. data/spec/integration/braintree/http_spec.rb +31 -33
  186. data/spec/integration/braintree/merchant_account_spec.rb +155 -156
  187. data/spec/integration/braintree/merchant_spec.rb +71 -192
  188. data/spec/integration/braintree/oauth_spec.rb +72 -72
  189. data/spec/integration/braintree/package_tracking_spec.rb +130 -0
  190. data/spec/integration/braintree/payment_method_nonce_spec.rb +173 -78
  191. data/spec/integration/braintree/payment_method_spec.rb +953 -501
  192. data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +147 -234
  193. data/spec/integration/braintree/paypal_account_spec.rb +74 -72
  194. data/spec/integration/braintree/plan_spec.rb +96 -15
  195. data/spec/integration/braintree/samsung_pay_card_spec.rb +75 -73
  196. data/spec/integration/braintree/sepa_direct_debit_account_spec.rb +194 -0
  197. data/spec/integration/braintree/settlement_batch_summary_spec.rb +18 -18
  198. data/spec/integration/braintree/subscription_spec.rb +507 -513
  199. data/spec/integration/braintree/test/transaction_amounts_spec.rb +4 -4
  200. data/spec/integration/braintree/test_transaction_spec.rb +29 -29
  201. data/spec/integration/braintree/transaction_line_item_spec.rb +12 -6
  202. data/spec/integration/braintree/transaction_search_spec.rb +410 -217
  203. data/spec/integration/braintree/transaction_spec.rb +3252 -2102
  204. data/spec/integration/braintree/transaction_us_bank_account_spec.rb +42 -278
  205. data/spec/integration/braintree/us_bank_account_spec.rb +36 -36
  206. data/spec/integration/braintree/us_bank_account_verification_search_spec.rb +25 -25
  207. data/spec/integration/braintree/us_bank_account_verification_spec.rb +41 -41
  208. data/spec/integration/braintree/visa_checkout_card_spec.rb +62 -62
  209. data/spec/integration/spec_helper.rb +22 -7
  210. data/spec/oauth_test_helper.rb +1 -1
  211. data/spec/script/httpsd.rb +6 -6
  212. data/spec/spec_helper.rb +15 -20
  213. data/spec/unit/braintree/address_spec.rb +9 -17
  214. data/spec/unit/braintree/apple_pay_card_spec.rb +110 -7
  215. data/spec/unit/braintree/base_module_spec.rb +4 -4
  216. data/spec/unit/braintree/client_token_spec.rb +6 -6
  217. data/spec/unit/braintree/configuration_spec.rb +84 -84
  218. data/spec/unit/braintree/credentials_parser_spec.rb +6 -6
  219. data/spec/unit/braintree/credit_card_spec.rb +91 -58
  220. data/spec/unit/braintree/credit_card_verification_gateway_spec.rb +56 -0
  221. data/spec/unit/braintree/credit_card_verification_search_spec.rb +10 -10
  222. data/spec/unit/braintree/credit_card_verification_spec.rb +40 -18
  223. data/spec/unit/braintree/customer_spec.rb +102 -57
  224. data/spec/unit/braintree/digest_spec.rb +5 -6
  225. data/spec/unit/braintree/disbursement_spec.rb +14 -14
  226. data/spec/unit/braintree/dispute_search_spec.rb +6 -2
  227. data/spec/unit/braintree/dispute_spec.rb +144 -66
  228. data/spec/unit/braintree/document_upload_spec.rb +8 -8
  229. data/spec/unit/braintree/enriched_customer_data_spec.rb +41 -0
  230. data/spec/unit/braintree/error_result_spec.rb +11 -11
  231. data/spec/unit/braintree/errors_spec.rb +17 -17
  232. data/spec/unit/braintree/exchange_rate_quote_input_spec.rb +42 -0
  233. data/spec/unit/braintree/exchange_rate_quote_request_spec.rb +82 -0
  234. data/spec/unit/braintree/exchange_rate_quote_response_spec.rb +52 -0
  235. data/spec/unit/braintree/exchange_rate_quote_spec.rb +42 -0
  236. data/spec/unit/braintree/exchange_rate_spec.rb +23 -0
  237. data/spec/unit/braintree/http_spec.rb +19 -17
  238. data/spec/unit/braintree/local_payment_completed_spec.rb +62 -8
  239. data/spec/unit/braintree/local_payment_expired_spec.rb +24 -0
  240. data/spec/unit/braintree/local_payment_funded_spec.rb +34 -0
  241. data/spec/unit/braintree/merchant_account_spec.rb +5 -5
  242. data/spec/unit/braintree/meta_checkout_card_details_spec.rb +60 -0
  243. data/spec/unit/braintree/meta_checkout_card_spec.rb +60 -0
  244. data/spec/unit/braintree/meta_checkout_token_details_spec.rb +63 -0
  245. data/spec/unit/braintree/meta_checkout_token_spec.rb +63 -0
  246. data/spec/unit/braintree/modification_spec.rb +1 -1
  247. data/spec/unit/braintree/package_tracking_spec.rb +77 -0
  248. data/spec/unit/braintree/payment_method_customer_data_updated_metadata_spec.rb +45 -0
  249. data/spec/unit/braintree/payment_method_nonce_details_payer_info_spec.rb +31 -0
  250. data/spec/unit/braintree/payment_method_nonce_details_spec.rb +51 -0
  251. data/spec/unit/braintree/payment_method_nonce_spec.rb +40 -0
  252. data/spec/unit/braintree/payment_method_spec.rb +20 -20
  253. data/spec/unit/braintree/paypal_account_spec.rb +16 -7
  254. data/spec/unit/braintree/resource_collection_spec.rb +34 -5
  255. data/spec/unit/braintree/risk_data/liability_shift.rb +26 -0
  256. data/spec/unit/braintree/risk_data_spec.rb +38 -8
  257. data/spec/unit/braintree/sepa_debit_account_nonce_details_spec.rb +29 -0
  258. data/spec/unit/braintree/sepa_debit_account_spec.rb +86 -0
  259. data/spec/unit/braintree/sha256_digest_spec.rb +1 -1
  260. data/spec/unit/braintree/signature_service_spec.rb +2 -2
  261. data/spec/unit/braintree/subscription_search_spec.rb +18 -18
  262. data/spec/unit/braintree/subscription_spec.rb +8 -8
  263. data/spec/unit/braintree/successful_result_spec.rb +6 -6
  264. data/spec/unit/braintree/three_d_secure_info_spec.rb +37 -17
  265. data/spec/unit/braintree/transaction/credit_card_details_spec.rb +22 -6
  266. data/spec/unit/braintree/transaction/customer_details_spec.rb +3 -2
  267. data/spec/unit/braintree/transaction/deposit_details_spec.rb +4 -4
  268. data/spec/unit/braintree/transaction/installment_spec.rb +25 -0
  269. data/spec/unit/braintree/transaction/local_payment_details_spec.rb +36 -0
  270. data/spec/unit/braintree/transaction/payment_receipt_spec.rb +73 -0
  271. data/spec/unit/braintree/transaction/paypal_details_spec.rb +63 -0
  272. data/spec/unit/braintree/transaction/sepa_direct_debit_account_details_spec.rb +33 -0
  273. data/spec/unit/braintree/transaction_gateway_spec.rb +150 -0
  274. data/spec/unit/braintree/transaction_search_spec.rb +12 -12
  275. data/spec/unit/braintree/transaction_spec.rb +221 -124
  276. data/spec/unit/braintree/unknown_payment_method_spec.rb +4 -4
  277. data/spec/unit/braintree/us_bank_account_spec.rb +2 -2
  278. data/spec/unit/braintree/us_bank_account_verification_search_spec.rb +7 -7
  279. data/spec/unit/braintree/us_bank_account_verification_spec.rb +12 -7
  280. data/spec/unit/braintree/util_spec.rb +78 -44
  281. data/spec/unit/braintree/validation_error_collection_spec.rb +62 -62
  282. data/spec/unit/braintree/validation_error_spec.rb +4 -4
  283. data/spec/unit/braintree/venmo_profile_data_spec.rb +43 -0
  284. data/spec/unit/braintree/webhook_notification_spec.rb +434 -197
  285. data/spec/unit/braintree/xml/libxml_spec.rb +5 -5
  286. data/spec/unit/braintree/xml/parser_spec.rb +27 -22
  287. data/spec/unit/braintree/xml/rexml_spec.rb +5 -5
  288. data/spec/unit/braintree/xml_spec.rb +38 -38
  289. data/spec/unit/braintree_spec.rb +2 -2
  290. metadata +91 -30
  291. data/lib/braintree/amex_express_checkout_card.rb +0 -38
  292. data/lib/braintree/coinbase_account.rb +0 -34
  293. data/lib/braintree/europe_bank_account.rb +0 -36
  294. data/lib/braintree/europe_bank_account_gateway.rb +0 -17
  295. data/lib/braintree/ideal_payment.rb +0 -61
  296. data/lib/braintree/ideal_payment_gateway.rb +0 -19
  297. data/lib/braintree/masterpass_card.rb +0 -81
  298. data/lib/braintree/settlement_batch.rb +0 -0
  299. data/lib/braintree/transaction/amex_express_checkout_details.rb +0 -21
  300. data/lib/braintree/transaction/ideal_payment_details.rb +0 -19
  301. data/lib/braintree/transaction/masterpass_card_details.rb +0 -47
  302. data/lib/braintree/transparent_redirect.rb +0 -40
  303. data/lib/braintree/transparent_redirect_gateway.rb +0 -105
  304. data/spec/hacks/tcp_socket.rb +0 -18
  305. data/spec/integration/braintree/coinbase_spec.rb +0 -34
  306. data/spec/integration/braintree/masterpass_card_spec.rb +0 -97
  307. data/spec/integration/braintree/transparent_redirect_spec.rb +0 -268
  308. data/spec/unit/braintree/transparent_redirect_spec.rb +0 -223
data/spec/spec_helper.rb CHANGED
@@ -3,8 +3,8 @@ unless defined?(SPEC_HELPER_LOADED)
3
3
  project_root = File.expand_path(File.dirname(__FILE__) + "/..")
4
4
  require "rubygems"
5
5
  require "bundler/setup"
6
- require "rspec"
7
6
  require "libxml"
7
+ require "rspec"
8
8
  require "pry"
9
9
 
10
10
  braintree_lib = "#{project_root}/lib"
@@ -28,22 +28,22 @@ unless defined?(SPEC_HELPER_LOADED)
28
28
  end
29
29
  end
30
30
 
31
- def now_in_eastern
32
- (Time.now.utc - 5*60*60).strftime("%Y-%m-%d")
33
- end
34
-
35
31
  module SpecHelper
36
32
 
33
+ AdyenMerchantAccountId = "adyen_ma"
34
+ AibSwedenMaMerchantAccountId = "aib_swe_ma"
35
+ AnotherUsBankMerchantAccountId = "another_us_bank_merchant_account"
36
+ CardProcessorBRLMerchantAccountId = "card_processor_brl"
37
37
  DefaultMerchantAccountId = "sandbox_credit_card"
38
+ FakeAmexDirectMerchantAccountId = "fake_amex_direct_usd"
39
+ FakeFirstDataMerchantAccountId = "fake_first_data_merchant_account"
40
+ FakeVenmoAccountMerchantAccountId = "fake_first_data_venmo_account"
41
+ HiperBRLMerchantAccountId = "hiper_brl"
38
42
  NonDefaultMerchantAccountId = "sandbox_credit_card_non_default"
39
43
  NonDefaultSubMerchantAccountId = "sandbox_sub_merchant_account"
44
+ PinlessDebitMerchantAccountId = "pinless_debit"
40
45
  ThreeDSecureMerchantAccountId = "three_d_secure_merchant_account"
41
- FakeAmexDirectMerchantAccountId = "fake_amex_direct_usd"
42
- FakeVenmoAccountMerchantAccountId = "fake_first_data_venmo_account"
43
46
  UsBankMerchantAccountId = "us_bank_merchant_account"
44
- AnotherUsBankMerchantAccountId = "another_us_bank_merchant_account"
45
- AdyenMerchantAccountId = "adyen_ma"
46
- HiperBRLMerchantAccountId = "hiper_brl"
47
47
 
48
48
  TrialPlan = {
49
49
  :description => "Plan for integration tests -- with trial",
@@ -92,13 +92,13 @@ unless defined?(SPEC_HELPER_LOADED)
92
92
  :environment => Braintree::Configuration.environment,
93
93
  :merchant_id => "test_merchant_id",
94
94
  :public_key => "test_public_key",
95
- :private_key => "test_private_key"
95
+ :private_key => "test_private_key",
96
96
  )
97
97
 
98
98
  def self.make_past_due(subscription, number_of_days_past_due = 1)
99
99
  config = Braintree::Configuration.instantiate
100
100
  config.http.put(
101
- "#{config.base_merchant_path}/subscriptions/#{subscription.id}/make_past_due?days_past_due=#{number_of_days_past_due}"
101
+ "#{config.base_merchant_path}/subscriptions/#{subscription.id}/make_past_due?days_past_due=#{number_of_days_past_due}",
102
102
  )
103
103
  end
104
104
 
@@ -110,14 +110,14 @@ unless defined?(SPEC_HELPER_LOADED)
110
110
  def self.create_3ds_verification(merchant_account_id, params)
111
111
  config = Braintree::Configuration.instantiate
112
112
  response = config.http.post("#{config.base_merchant_path}/three_d_secure/create_verification/#{merchant_account_id}", :three_d_secure_verification => params)
113
- response[:three_d_secure_verification][:three_d_secure_token]
113
+ response[:three_d_secure_verification][:three_d_secure_authentication_id]
114
114
  end
115
115
 
116
116
  def self.create_merchant(params={})
117
117
  gateway = Braintree::Gateway.new(
118
118
  :client_id => "client_id$#{Braintree::Configuration.environment}$integration_client_id",
119
119
  :client_secret => "client_secret$#{Braintree::Configuration.environment}$integration_client_secret",
120
- :logger => Logger.new("/dev/null")
120
+ :logger => Logger.new("/dev/null"),
121
121
  )
122
122
 
123
123
  gateway.merchant.create({
@@ -188,16 +188,11 @@ unless defined?(SPEC_HELPER_LOADED)
188
188
  end
189
189
 
190
190
  def matches?(xml_string)
191
- @libxml_parse = Braintree::Xml::Parser.hash_from_xml(xml_string, Braintree::Xml::Libxml)
192
- @rexml_parse = Braintree::Xml::Parser.hash_from_xml(xml_string, Braintree::Xml::Rexml)
191
+ @libxml_parse = Braintree::Xml::Parser.hash_from_xml(xml_string)
193
192
  if @libxml_parse != @expected_hash
194
193
  @results = @libxml_parse
195
194
  @failed_parser = "libxml"
196
195
  false
197
- elsif @rexml_parse != @expected_hash
198
- @results = @rexml_parse
199
- @failed_parser = "rexml"
200
- false
201
196
  else
202
197
  true
203
198
  end
@@ -3,32 +3,32 @@ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
3
3
  describe Braintree::Address do
4
4
  describe "==" do
5
5
  it "returns true if given an address with the same id and customer_id" do
6
- first = Braintree::Address._new(:gateway, :customer_id => "c1", :id => 'a1')
6
+ first = Braintree::Address._new(:gateway, :customer_id => "c1", :id => "a1")
7
7
  second = Braintree::Address._new(:gateway, :customer_id => "c1", :id => "a1")
8
8
 
9
- first.should == second
10
- second.should == first
9
+ expect(first).to eq(second)
10
+ expect(second).to eq(first)
11
11
  end
12
12
 
13
13
  it "returns false if given an address with a different id and the same customer_id" do
14
14
  first = Braintree::Address._new(:gateway, :customer_id => "c1", :id => "a1")
15
15
  second = Braintree::Address._new(:gateway, :customer_id => "c1", :id => "not a1")
16
16
 
17
- first.should_not == second
18
- second.should_not == first
17
+ expect(first).not_to eq(second)
18
+ expect(second).not_to eq(first)
19
19
  end
20
20
 
21
21
  it "returns false if given an address with a different customer_id and the same id" do
22
22
  first = Braintree::Address._new(:gateway, :customer_id => "c1", :id => "a1")
23
23
  second = Braintree::Address._new(:gateway, :customer_id => "not c1", :id => "a1")
24
24
 
25
- first.should_not == second
26
- second.should_not == first
25
+ expect(first).not_to eq(second)
26
+ expect(second).not_to eq(first)
27
27
  end
28
28
 
29
29
  it "returns false when not given an address" do
30
30
  address = Braintree::Address._new(:gateway, :id => "a1")
31
- address.should_not == "not an address"
31
+ expect(address).not_to eq("not an address")
32
32
  end
33
33
  end
34
34
 
@@ -80,7 +80,7 @@ describe Braintree::Address do
80
80
  end
81
81
 
82
82
  it "does not raise an error if address_id does not respond to strip" do
83
- Braintree::Http.stub(:new).and_return double.as_null_object
83
+ allow(Braintree::Http).to receive(:new).and_return double.as_null_object
84
84
  expect do
85
85
  Braintree::Address.find("customer_id", 8675309)
86
86
  end.to_not raise_error
@@ -94,12 +94,4 @@ describe Braintree::Address do
94
94
  end.to raise_error(NoMethodError, /protected method .new/)
95
95
  end
96
96
  end
97
-
98
- describe "update" do
99
- it "raises an exception if hash includes an invalid key" do
100
- expect do
101
- Braintree::Address._new(Braintree::Configuration.gateway, {}).update(:street_address => "456 E Main", :invalid_key2 => "foo")
102
- end.to raise_error(ArgumentError, "invalid keys: invalid_key2")
103
- end
104
- end
105
97
  end
@@ -1,29 +1,132 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
2
 
3
3
  describe Braintree::ApplePayCard do
4
- describe "bin" do
5
- it "returns Apple pay card bin" do
6
- Braintree::ApplePayCard._new(:gateway, bin: '411111').bin.should == '411111'
4
+ let(:attributes) do
5
+ {
6
+ :billing_address => {
7
+ company: "Braintree",
8
+ country_code_alpha2: "US",
9
+ country_code_alpha3: "USA",
10
+ country_code_numeric: "840",
11
+ country_name: "United States of America",
12
+ extended_address: "Apt 1",
13
+ first_name: "John",
14
+ last_name: "Miller",
15
+ locality: "Chicago",
16
+ phone_number: "17708675309",
17
+ postal_code: "12345",
18
+ region: "Illinois",
19
+ street_address: "123 Sesame Street",
20
+ },
21
+ :bin => "411111",
22
+ :card_type => "Apple Pay - MasterCard",
23
+ :cardholder_name => "John Miller",
24
+ :commercial => "No",
25
+ :country_of_issuance => "USA",
26
+ :created_at => Time.now,
27
+ :customer_id => "cid1",
28
+ :debit => "No",
29
+ :default => true,
30
+ :durbin_regulated => "Yes",
31
+ :expiration_month => "01",
32
+ :expiration_year => "2025",
33
+ :expired => false,
34
+ :healthcare => "No",
35
+ :image_url => nil,
36
+ :issuing_bank => "Big Bad Bank",
37
+ :last_4 => "9876",
38
+ :merchant_token_identifier => "merchant-token-123",
39
+ :payment_instrument_name => nil,
40
+ :payroll => "No",
41
+ :prepaid => "No",
42
+ :product_id => "MAC",
43
+ :source_card_last4 => "1234",
44
+ :source_description => "blah",
45
+ :subscriptions => [
46
+ {
47
+ balance: "50.00",
48
+ price: "10.00",
49
+ descriptor: [],
50
+ transactions: [],
51
+ add_ons: [],
52
+ discounts: [],
53
+ },
54
+ ],
55
+ :token => "123456789",
56
+ :updated_at => Time.now,
57
+ }
58
+ end
59
+
60
+ describe "initialize" do
61
+ it "converts billing address hash to Braintree::Address object" do
62
+ card = Braintree::ApplePayCard._new(:gateway, attributes)
63
+
64
+ expect(card.billing_address).to be_instance_of(Braintree::Address)
65
+ end
66
+
67
+ it "converts subscriptions hash to Braintree::Subscription object" do
68
+ card = Braintree::ApplePayCard._new(:gateway, attributes)
69
+
70
+ expect(card.subscriptions[0]).to be_instance_of(Braintree::Subscription)
71
+ end
72
+
73
+ it "handles nil billing address" do
74
+ attributes.delete(:billing_address)
75
+ card = Braintree::ApplePayCard._new(:gateway, attributes)
76
+
77
+ expect(card.billing_address).to be_nil
78
+ end
79
+
80
+ it "handles nil subscriptions" do
81
+ attributes.delete(:subscriptions)
82
+ card = Braintree::ApplePayCard._new(:gateway, attributes)
83
+
84
+ expect(card.subscriptions).to be_empty
85
+ end
86
+
87
+ it "handles mpan attributes" do
88
+ card = Braintree::ApplePayCard._new(:gateway, attributes)
89
+
90
+ expect(card.merchant_token_identifier).to_not be_nil
91
+ expect(card.source_card_last4).to_not be_nil
7
92
  end
8
93
  end
9
94
 
10
95
  describe "default?" do
11
96
  it "is true if the Apple pay card is the default payment method for the customer" do
12
- Braintree::ApplePayCard._new(:gateway, :default => true).default?.should == true
97
+ card = Braintree::ApplePayCard._new(:gateway, attributes)
98
+
99
+ expect(card.default?).to be true
13
100
  end
14
101
 
15
102
  it "is false if the Apple pay card is not the default payment methodfor the customer" do
16
- Braintree::ApplePayCard._new(:gateway, :default => false).default?.should == false
103
+ attributes.merge!(:default => false)
104
+ card = Braintree::ApplePayCard._new(:gateway, attributes)
105
+
106
+ expect(card.default?).to be false
17
107
  end
18
108
  end
19
109
 
20
110
  describe "expired?" do
21
111
  it "is true if the Apple pay card is expired" do
22
- Braintree::ApplePayCard._new(:gateway, :expired => true).expired?.should == true
112
+ attributes.merge!(:expired => true)
113
+ card = Braintree::ApplePayCard._new(:gateway, attributes)
114
+
115
+ expect(card.expired?).to be true
23
116
  end
24
117
 
25
118
  it "is false if the Apple pay card is not expired" do
26
- Braintree::ApplePayCard._new(:gateway, :expired => false).expired?.should == false
119
+ card = Braintree::ApplePayCard._new(:gateway, attributes)
120
+
121
+ expect(card.expired?).to be false
122
+ end
123
+ end
124
+
125
+ describe "self.new" do
126
+ it "is protected" do
127
+ expect do
128
+ Braintree::ApplePayCard.new
129
+ end.to raise_error(NoMethodError, /protected method .new/)
27
130
  end
28
131
  end
29
132
  end
@@ -8,11 +8,11 @@ describe Braintree::BaseModule do
8
8
  klass = Class.new { include Braintree::BaseModule }
9
9
  klass.return_object_or_raise(:obj) { result }
10
10
  rescue Braintree::ValidationsFailed => ex
11
+ expect(ex).not_to eq(nil)
12
+ expect(ex.error_result).to eq(result)
13
+ expect(ex.inspect).to include(result.inspect)
14
+ expect(ex.to_s).to include(result.inspect)
11
15
  end
12
- ex.should_not == nil
13
- ex.error_result.should == result
14
- ex.inspect.should include(result.inspect)
15
- ex.to_s.should include(result.inspect)
16
16
  end
17
17
  end
18
18
  end
@@ -7,27 +7,27 @@ module Braintree
7
7
  it "delegates to ClientTokenGateway#generate" do
8
8
  options = {:foo => :bar}
9
9
  client_token_gateway = double(:client_token_gateway)
10
- client_token_gateway.should_receive(:generate).with(options).once
11
- ClientTokenGateway.stub(:new).and_return(client_token_gateway)
10
+ expect(client_token_gateway).to receive(:generate).with(options).once
11
+ allow(ClientTokenGateway).to receive(:new).and_return(client_token_gateway)
12
12
  ClientToken.generate(options)
13
13
  end
14
14
 
15
15
  it "can't overwrite public_key, or created_at" do
16
16
  expect {
17
- client_token = Braintree::ClientToken.generate(
17
+ Braintree::ClientToken.generate(
18
18
  :public_key => "bad_key",
19
- :created_at => "bad_time"
19
+ :created_at => "bad_time",
20
20
  )
21
21
  }.to raise_error(ArgumentError, /created_at, public_key/)
22
22
  end
23
23
  end
24
24
 
25
25
  context "adding credit_card options with no customer ID" do
26
- %w(verify_card fail_on_duplicate_payment_method make_default).each do |option_name|
26
+ %w(verify_card fail_on_duplicate_payment_method make_default fail_on_duplicate_payment_method_for_customer).each do |option_name|
27
27
  it "raises an ArgumentError if #{option_name} is present" do
28
28
  expect do
29
29
  Braintree::ClientToken.generate(
30
- option_name.to_sym => true
30
+ option_name.to_sym => true,
31
31
  )
32
32
  end.to raise_error(ArgumentError, /#{option_name}/)
33
33
  end