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
@@ -5,28 +5,57 @@ describe "Braintree::ResourceCollection" do
5
5
  it "iterates over the elements, yielding to the block in pages" do
6
6
  values = %w(a b c d e)
7
7
  collection = Braintree::ResourceCollection.new(:search_results => {:ids => [0,1,2,3,4], :page_size => 2}) do |ids|
8
- ids.map {|id| values[id] }
8
+ ids.map { |id| values[id] }
9
9
  end
10
10
 
11
11
  count = 0
12
12
  collection.each_with_index do |item, index|
13
- item.should == values[index]
13
+ expect(item).to eq(values[index])
14
14
  count += 1
15
15
  end
16
16
 
17
- count.should == 5
17
+ expect(count).to eq(5)
18
+ end
19
+ end
20
+
21
+ describe "#first" do
22
+ it "returns nil with no results" do
23
+ values = %w(a b c d e)
24
+ collection = Braintree::ResourceCollection.new(:search_results => {:ids => [], :page_size => 2}) do |ids|
25
+ ids.map { |id| values[id] }
26
+ end
27
+
28
+ expect(collection.first).to eq(nil)
29
+ end
30
+
31
+ context "with results" do
32
+ let(:collection) do
33
+ values = %w(a b c d e)
34
+
35
+ Braintree::ResourceCollection.new(:search_results => {:ids => [0,1,2,3,4], :page_size => 2}) do |ids|
36
+ ids.map { |id| values[id] }
37
+ end
38
+ end
39
+
40
+ it "returns the first occourence" do
41
+ expect(collection.first).to eq("a")
42
+ end
43
+
44
+ it "returns the first N occourences" do
45
+ expect(collection.first(4)).to eq(["a","b","c","d"])
46
+ end
18
47
  end
19
48
  end
20
49
 
21
50
  describe "#ids" do
22
51
  it "returns a list of the resource collection ids" do
23
52
  collection = Braintree::ResourceCollection.new(:search_results => {:ids => [0,1,2,3,4], :page_size => 2})
24
- collection.ids.should == [0,1,2,3,4]
53
+ expect(collection.ids).to eq([0,1,2,3,4])
25
54
  end
26
55
  end
27
56
 
28
57
  it "returns an empty array when the collection is empty" do
29
58
  collection = Braintree::ResourceCollection.new(:search_results => {:page_size => 2})
30
- collection.ids.should == []
59
+ expect(collection.ids).to eq([])
31
60
  end
32
61
  end
@@ -0,0 +1,26 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
2
+
3
+ describe Braintree::Transaction::LiabilityShift do
4
+ describe "#initialize" do
5
+ it "sets responsible party and conditions" do
6
+ liability_shift = Braintree::Transaction::LiabilityShift.new(
7
+ :responsible_party => "paypal",
8
+ :conditions => ["unauthorized","item_not_received"],
9
+ )
10
+
11
+ expect(liability_shift.responsible_party).to eql "paypal"
12
+ expect(liability_shift.conditions.first).to eql "unauthorized"
13
+ end
14
+ end
15
+
16
+ describe "inspect" do
17
+ it "prints the attributes" do
18
+ details = Braintree::Transaction::LiabilityShift.new(
19
+ :responsible_party => "paypal",
20
+ :conditions => ["unauthorized","item_not_received"],
21
+ )
22
+
23
+ expect(details.inspect).to eql %(#<LiabilityShift responsible_party: "paypal", conditions: ["unauthorized", "item_not_received"]>)
24
+ end
25
+ end
26
+ end
@@ -2,12 +2,31 @@ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
2
2
 
3
3
  describe Braintree::RiskData do
4
4
  describe "#initialize" do
5
- it "sets id, decision and device_data_captured" do
6
- risk_data = Braintree::RiskData.new(:id => "123", :decision => "YOU WON $1000 DOLLARS", :device_data_captured => true, :fraud_service_provider => "kount")
7
- risk_data.id.should == "123"
8
- risk_data.decision.should == "YOU WON $1000 DOLLARS"
9
- risk_data.device_data_captured.should be_truthy
10
- risk_data.fraud_service_provider.should == "kount"
5
+ it "sets id, decision, device_data_captured, decision_reasons and transaction_risk_score" do
6
+ risk_data = Braintree::RiskData.new(:id => "123", :decision => "YOU WON $1000 DOLLARS", :device_data_captured => true, :fraud_service_provider => "fraud_protection", :decision_reasons => ["reason"], :transaction_risk_score => "12")
7
+ expect(risk_data.id).to eql "123"
8
+ expect(risk_data.decision).to eql "YOU WON $1000 DOLLARS"
9
+ expect(risk_data.device_data_captured).to be_truthy
10
+ expect(risk_data.fraud_service_provider).to eql "fraud_protection"
11
+ expect(risk_data.decision_reasons).to eql ["reason"]
12
+ expect(risk_data.transaction_risk_score).to eql "12"
13
+ expect(risk_data.liability_shift).to be_nil
14
+ end
15
+
16
+ it "sets liability shift info" do
17
+ risk_data = Braintree::RiskData.new(
18
+ :id => "123",
19
+ :decision => "YOU WON $1000 DOLLARS",
20
+ :device_data_captured => true,
21
+ :fraud_service_provider => "fraud_protection",
22
+ :decision_reasons => ["reason"],
23
+ :transaction_risk_score => "12",
24
+ :liability_shift => {
25
+ :responsible_party => "paypal",
26
+ :conditions => ["unauthorized"]},
27
+ )
28
+ expect(risk_data.liability_shift.responsible_party).to eql "paypal"
29
+ expect(risk_data.liability_shift.conditions).to eql ["unauthorized"]
11
30
  end
12
31
  end
13
32
 
@@ -16,10 +35,21 @@ describe Braintree::RiskData do
16
35
  details = Braintree::RiskData.new(
17
36
  :id => "123",
18
37
  :decision => "YOU WON $1000 DOLLARS",
38
+ :decision_reasons => ["reason"],
19
39
  :device_data_captured => true,
20
- :fraud_service_provider => "kount",
40
+ :fraud_service_provider => "fraud_protection",
41
+ :transaction_risk_score => "12",
42
+ )
43
+ expect(details.inspect).to eql %(#<RiskData id: "123", decision: "YOU WON $1000 DOLLARS", decision_reasons: ["reason"], device_data_captured: true, fraud_service_provider: "fraud_protection", liability_shift: nil, transaction_risk_score: "12">)
44
+ end
45
+
46
+ it "prints liability shift attributes, too" do
47
+ details = Braintree::RiskData.new(
48
+ :liability_shift => {
49
+ :responsible_party => "paypal",
50
+ :conditions => ["unauthorized"]},
21
51
  )
22
- details.inspect.should == %(#<RiskData id: "123", decision: "YOU WON $1000 DOLLARS", device_data_captured: true, fraud_service_provider: "kount">)
52
+ expect(details.inspect).to eql %(#<RiskData id: nil, decision: nil, decision_reasons: nil, device_data_captured: nil, fraud_service_provider: nil, liability_shift: #<LiabilityShift responsible_party: "paypal", conditions: ["unauthorized"]>, transaction_risk_score: nil>)
23
53
  end
24
54
  end
25
55
  end
@@ -0,0 +1,29 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
2
+
3
+ describe Braintree::SepaDirectDebitAccountNonceDetails do
4
+ subject do
5
+ described_class.new(
6
+ :bank_reference_token => "a-bank-reference-token",
7
+ :last_4 => "abcd",
8
+ :mandate_type => "ONE_OFF",
9
+ :merchant_or_partner_customer_id => "a-mp-customer-id",
10
+ )
11
+ end
12
+
13
+ describe "#initialize" do
14
+ it "sets attributes" do
15
+ is_expected.to have_attributes(
16
+ :bank_reference_token => "a-bank-reference-token",
17
+ :last_4 => "abcd",
18
+ :mandate_type => "ONE_OFF",
19
+ :merchant_or_partner_customer_id => "a-mp-customer-id",
20
+ )
21
+ end
22
+ end
23
+
24
+ describe "inspect" do
25
+ it "prints the attributes" do
26
+ expect(subject.inspect).to eq(%(#<SepaDirectDebitAccountNonceDetailsbank_reference_token: "a-bank-reference-token", last_4: "abcd", mandate_type: "ONE_OFF", merchant_or_partner_customer_id: "a-mp-customer-id">))
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,86 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe Braintree::SepaDirectDebitAccount do
4
+ describe "self.new" do
5
+ subject do
6
+ -> { described_class.new }
7
+ end
8
+
9
+ it "is protected" do
10
+ is_expected.to raise_error(NoMethodError, /protected method .new/)
11
+ end
12
+ end
13
+
14
+ describe "self._new" do
15
+ let(:params) do
16
+ {
17
+ bank_reference_token: "a-reference-token",
18
+ created_at: Time.now,
19
+ customer_global_id: "a-customer-global-id",
20
+ customer_id: "a-customer-id",
21
+ default: true,
22
+ global_id: "a-global-id",
23
+ image_url: "a-image-url",
24
+ last_4: "4321",
25
+ mandate_type: "ONE_OFF",
26
+ merchant_or_partner_customer_id: "a-mp-customer-id",
27
+ subscriptions: [{price: "10.00"}],
28
+ token: "a-token",
29
+ updated_at: Time.now,
30
+ view_mandate_url: "a-view-mandate-url",
31
+ }
32
+ end
33
+
34
+ subject do
35
+ described_class._new(:gateway, params)
36
+ end
37
+
38
+ it "initializes the object with the appropriate attributes set" do
39
+ is_expected.to have_attributes(**params)
40
+ end
41
+ end
42
+
43
+ describe "self.find" do
44
+ let(:token) { "token" }
45
+
46
+ subject do
47
+ described_class.find(token)
48
+ end
49
+
50
+ it "calls gateway find" do
51
+ expect_any_instance_of(Braintree::SepaDirectDebitAccountGateway).to receive(:find).with(token)
52
+ subject
53
+ end
54
+ end
55
+
56
+ describe "self.delete" do
57
+ let(:token) { "token" }
58
+
59
+ subject do
60
+ described_class.delete(token)
61
+ end
62
+
63
+ it "calls gateway delete" do
64
+ expect_any_instance_of(Braintree::SepaDirectDebitAccountGateway).to receive(:delete).with(token)
65
+ subject
66
+ end
67
+ end
68
+
69
+ describe "default?" do
70
+ subject do
71
+ described_class._new(:gateway, :default => default).default?
72
+ end
73
+
74
+ context "when sepa debit account is the default payment method for the customer" do
75
+ let(:default) { true }
76
+
77
+ it { is_expected.to be true }
78
+ end
79
+
80
+ context "when sepa debit account is not the default payment method for the customer" do
81
+ let(:default) { false }
82
+
83
+ it { is_expected.to be false }
84
+ end
85
+ end
86
+ end
@@ -5,7 +5,7 @@ describe Braintree::SHA256Digest do
5
5
  it "returns the sha256 hmac of the input string (test case 6 from RFC 2202)" do
6
6
  key = "secret-key"
7
7
  message = "secret-message"
8
- Braintree::SHA256Digest.hexdigest(key, message).should == "68e7f2ecab71db67b1aca2a638f5122810315c3013f27c2196cd53e88709eecc"
8
+ expect(Braintree::SHA256Digest.hexdigest(key, message)).to eq("68e7f2ecab71db67b1aca2a638f5122810315c3013f27c2196cd53e88709eecc")
9
9
  end
10
10
  end
11
11
  end
@@ -11,13 +11,13 @@ describe Braintree::SignatureService do
11
11
  it "signs the data with its key" do
12
12
  service = Braintree::SignatureService.new("my_key", FakeDigest)
13
13
 
14
- service.sign(:foo => "foo bar").should == "foo=foo+bar_signed_with_my_key|foo=foo+bar"
14
+ expect(service.sign(:foo => "foo bar")).to eq("foo=foo+bar_signed_with_my_key|foo=foo+bar")
15
15
  end
16
16
  end
17
17
 
18
18
  describe "hash" do
19
19
  it "hashes the string with its key" do
20
- Braintree::SignatureService.new("my_key", FakeDigest).hash("foo").should == "foo_signed_with_my_key"
20
+ expect(Braintree::SignatureService.new("my_key", FakeDigest).hash("foo")).to eq("foo_signed_with_my_key")
21
21
  end
22
22
  end
23
23
  end
@@ -6,14 +6,14 @@ module Braintree
6
6
  it "allows Active, Canceled, Expired, and PastDue" do
7
7
  search = SubscriptionSearch.new
8
8
 
9
- lambda do
9
+ expect do
10
10
  search.status.in(
11
11
  Subscription::Status::Active,
12
12
  Subscription::Status::Canceled,
13
13
  Subscription::Status::Expired,
14
- Subscription::Status::PastDue
14
+ Subscription::Status::PastDue,
15
15
  )
16
- end.should_not raise_error
16
+ end.not_to raise_error
17
17
  end
18
18
  end
19
19
 
@@ -22,14 +22,14 @@ module Braintree
22
22
  search = SubscriptionSearch.new
23
23
  search.in_trial_period.is true
24
24
 
25
- search.to_hash.should == {:in_trial_period => [true]}
25
+ expect(search.to_hash).to eq({:in_trial_period => [true]})
26
26
  end
27
27
 
28
28
  it "allows false" do
29
29
  search = SubscriptionSearch.new
30
30
  search.in_trial_period.is false
31
31
 
32
- search.to_hash.should == {:in_trial_period => [false]}
32
+ expect(search.to_hash).to eq({:in_trial_period => [false]})
33
33
  end
34
34
  end
35
35
 
@@ -38,14 +38,14 @@ module Braintree
38
38
  search = SubscriptionSearch.new
39
39
  search.days_past_due.is "30"
40
40
 
41
- search.to_hash.should == {:days_past_due => {:is => "30"}}
41
+ expect(search.to_hash).to eq({:days_past_due => {:is => "30"}})
42
42
  end
43
43
 
44
44
  it "coverts ints to strings" do
45
45
  search = SubscriptionSearch.new
46
46
  search.days_past_due.is 30
47
47
 
48
- search.to_hash.should == {:days_past_due => {:is => "30"}}
48
+ expect(search.to_hash).to eq({:days_past_due => {:is => "30"}})
49
49
  end
50
50
  end
51
51
 
@@ -54,7 +54,7 @@ module Braintree
54
54
  search = SubscriptionSearch.new
55
55
  search.merchant_account_id.in "ma_id1", "ma_id2"
56
56
 
57
- search.to_hash.should == {:merchant_account_id => ["ma_id1", "ma_id2"]}
57
+ expect(search.to_hash).to eq({:merchant_account_id => ["ma_id1", "ma_id2"]})
58
58
  end
59
59
  end
60
60
 
@@ -63,63 +63,63 @@ module Braintree
63
63
  search = SubscriptionSearch.new
64
64
  search.plan_id.starts_with "plan_"
65
65
 
66
- search.to_hash.should == {:plan_id => {:starts_with => "plan_"}}
66
+ expect(search.to_hash).to eq({:plan_id => {:starts_with => "plan_"}})
67
67
  end
68
68
 
69
69
  it "ends_with" do
70
70
  search = SubscriptionSearch.new
71
71
  search.plan_id.ends_with "_id"
72
72
 
73
- search.to_hash.should == {:plan_id => {:ends_with => "_id"}}
73
+ expect(search.to_hash).to eq({:plan_id => {:ends_with => "_id"}})
74
74
  end
75
75
 
76
76
  it "is" do
77
77
  search = SubscriptionSearch.new
78
78
  search.plan_id.is "p_id"
79
79
 
80
- search.to_hash.should == {:plan_id => {:is => "p_id"}}
80
+ expect(search.to_hash).to eq({:plan_id => {:is => "p_id"}})
81
81
  end
82
82
 
83
83
  it "is_not" do
84
84
  search = SubscriptionSearch.new
85
85
  search.plan_id.is_not "p_id"
86
86
 
87
- search.to_hash.should == {:plan_id => {:is_not => "p_id"}}
87
+ expect(search.to_hash).to eq({:plan_id => {:is_not => "p_id"}})
88
88
  end
89
89
 
90
90
  it "contains" do
91
91
  search = SubscriptionSearch.new
92
92
  search.plan_id.contains "p_id"
93
93
 
94
- search.to_hash.should == {:plan_id => {:contains => "p_id"}}
94
+ expect(search.to_hash).to eq({:plan_id => {:contains => "p_id"}})
95
95
  end
96
96
 
97
97
  it "in" do
98
98
  search = SubscriptionSearch.new
99
99
  search.plan_id.in ["plan1", "plan2"]
100
100
 
101
- search.to_hash.should == {:plan_id => ["plan1", "plan2"]}
101
+ expect(search.to_hash).to eq({:plan_id => ["plan1", "plan2"]})
102
102
  end
103
103
  end
104
104
 
105
105
  context "days_past_due" do
106
106
  it "is a range node" do
107
107
  search = SubscriptionSearch.new
108
- search.days_past_due.should be_kind_of(Braintree::AdvancedSearch::RangeNode)
108
+ expect(search.days_past_due).to be_kind_of(Braintree::AdvancedSearch::RangeNode)
109
109
  end
110
110
  end
111
111
 
112
112
  context "billing_cycles_remaining" do
113
113
  it "is a range node" do
114
114
  search = SubscriptionSearch.new
115
- search.billing_cycles_remaining.should be_kind_of(Braintree::AdvancedSearch::RangeNode)
115
+ expect(search.billing_cycles_remaining).to be_kind_of(Braintree::AdvancedSearch::RangeNode)
116
116
  end
117
117
  end
118
118
 
119
119
  context "created_at" do
120
120
  it "is a range node" do
121
121
  search = SubscriptionSearch.new
122
- search.created_at.should be_kind_of(Braintree::AdvancedSearch::RangeNode)
122
+ expect(search.created_at).to be_kind_of(Braintree::AdvancedSearch::RangeNode)
123
123
  end
124
124
  end
125
125
 
@@ -128,7 +128,7 @@ module Braintree
128
128
  search = SubscriptionSearch.new
129
129
  search.id.is "s_id"
130
130
 
131
- search.to_hash.should == {:id => {:is => "s_id"}}
131
+ expect(search.to_hash).to eq({:id => {:is => "s_id"}})
132
132
  end
133
133
  end
134
134
  end
@@ -11,8 +11,8 @@ describe Braintree::Subscription do
11
11
 
12
12
  context "price" do
13
13
  it "accepts price as either a String or a BigDecimal" do
14
- Braintree::Subscription._new(:gateway, default_params.merge(:price => "12.34")).price.should == BigDecimal("12.34")
15
- Braintree::Subscription._new(:gateway, default_params.merge(:price => BigDecimal("12.34"))).price.should == BigDecimal("12.34")
14
+ expect(Braintree::Subscription._new(:gateway, default_params.merge(:price => "12.34")).price).to eq(BigDecimal("12.34"))
15
+ expect(Braintree::Subscription._new(:gateway, default_params.merge(:price => BigDecimal("12.34"))).price).to eq(BigDecimal("12.34"))
16
16
  end
17
17
 
18
18
  it "blows up if price is not a string or BigDecimal" do
@@ -42,7 +42,7 @@ describe Braintree::Subscription do
42
42
  end
43
43
 
44
44
  it "does not raise an error if subscription id does not respond to strip" do
45
- Braintree::Http.stub(:new).and_return double(:get => {:subscription => default_params})
45
+ allow(Braintree::Http).to receive(:new).and_return double(:get => {:subscription => default_params})
46
46
  expect do
47
47
  Braintree::Subscription.find(8675309)
48
48
  end.to_not raise_error
@@ -51,11 +51,11 @@ describe Braintree::Subscription do
51
51
 
52
52
  describe "self.search" do
53
53
  it "only allows specified values for status" do
54
- lambda do
54
+ expect do
55
55
  Braintree::Subscription.search do |search|
56
56
  search.status.in "Hammer"
57
57
  end
58
- end.should raise_error(ArgumentError)
58
+ end.to raise_error(ArgumentError)
59
59
  end
60
60
  end
61
61
 
@@ -63,18 +63,18 @@ describe Braintree::Subscription do
63
63
  it "returns true for subscriptions with the same id" do
64
64
  subscription1 = Braintree::Subscription._new(:gateway, default_params.merge(:id => "123"))
65
65
  subscription2 = Braintree::Subscription._new(:gateway, default_params.merge(:id => "123"))
66
- subscription1.should == subscription2
66
+ expect(subscription1).to eq(subscription2)
67
67
  end
68
68
 
69
69
  it "returns false for subscriptions with different ids" do
70
70
  subscription1 = Braintree::Subscription._new(:gateway, default_params.merge(:id => "123"))
71
71
  subscription2 = Braintree::Subscription._new(:gateway, default_params.merge(:id => "not_123"))
72
- subscription1.should_not == subscription2
72
+ expect(subscription1).not_to eq(subscription2)
73
73
  end
74
74
 
75
75
  it "returns false if not comparing to a subscription" do
76
76
  subscription = Braintree::Subscription._new(:gateway, default_params.merge(:id => "123"))
77
- subscription.should_not == "not a subscription"
77
+ expect(subscription).not_to eq("not a subscription")
78
78
  end
79
79
  end
80
80
  end
@@ -5,23 +5,23 @@ describe Braintree::SuccessfulResult do
5
5
  it "sets instance variables from the values in the hash" do
6
6
  result = Braintree::SuccessfulResult.new(
7
7
  :transaction => "transaction_value",
8
- :credit_card => "credit_card_value"
8
+ :credit_card => "credit_card_value",
9
9
  )
10
- result.success?.should == true
11
- result.transaction.should == "transaction_value"
12
- result.credit_card.should == "credit_card_value"
10
+ expect(result.success?).to eq(true)
11
+ expect(result.transaction).to eq("transaction_value")
12
+ expect(result.credit_card).to eq("credit_card_value")
13
13
  end
14
14
 
15
15
  it "can be initialized without any values" do
16
16
  result = Braintree::SuccessfulResult.new
17
- result.success?.should == true
17
+ expect(result.success?).to eq(true)
18
18
  end
19
19
  end
20
20
 
21
21
  describe "inspect" do
22
22
  it "is pretty" do
23
23
  result = Braintree::SuccessfulResult.new(:transaction => "transaction_value")
24
- result.inspect.should == "#<Braintree::SuccessfulResult transaction:\"transaction_value\">"
24
+ expect(result.inspect).to eq("#<Braintree::SuccessfulResult transaction:\"transaction_value\">")
25
25
  end
26
26
  end
27
27
  end
@@ -3,47 +3,67 @@ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
3
3
  describe Braintree::ThreeDSecureInfo do
4
4
  let(:three_d_secure_info) {
5
5
  Braintree::ThreeDSecureInfo.new(
6
+ :acs_transaction_id => "acs_id",
7
+ :cavv => "cavvvalue",
8
+ :ds_transaction_id => "dstrxid",
9
+ :eci_flag => "06",
6
10
  :enrolled => "Y",
7
- :liability_shifted => true,
8
11
  :liability_shift_possible => true,
9
- :cavv => "cavvvalue",
10
- :xid => "xidvalue",
12
+ :liability_shifted => true,
13
+ :pares_status => "Y",
11
14
  :status => "authenticate_successful",
12
- :eci_flag => "06",
15
+ :three_d_secure_authentication_id => "auth_id",
16
+ :three_d_secure_transaction_id => "trans_id",
13
17
  :three_d_secure_version => "1.0.2",
14
- :ds_transaction_id => "dstrxid",
18
+ :xid => "xidvalue",
19
+ :authentication => {
20
+ :trans_status => "authstatus",
21
+ :trans_status_reason => "authstatusreason"
22
+ },
23
+ :lookup => {
24
+ :trans_status => "lookupstatus",
25
+ :trans_status_reason => "lookupstatusreason"
26
+ },
15
27
  )
16
28
  }
17
29
 
18
30
  describe "#initialize" do
19
31
  it "sets attributes" do
20
- three_d_secure_info.enrolled.should == "Y"
21
- three_d_secure_info.status.should == "authenticate_successful"
22
- three_d_secure_info.liability_shifted.should == true
23
- three_d_secure_info.liability_shift_possible.should == true
24
- three_d_secure_info.cavv.should == "cavvvalue"
25
- three_d_secure_info.xid.should == "xidvalue"
26
- three_d_secure_info.eci_flag.should == "06"
27
- three_d_secure_info.three_d_secure_version.should == "1.0.2"
28
- three_d_secure_info.ds_transaction_id.should == "dstrxid"
32
+ expect(three_d_secure_info.acs_transaction_id).to eq("acs_id")
33
+ expect(three_d_secure_info.cavv).to eq("cavvvalue")
34
+ expect(three_d_secure_info.ds_transaction_id).to eq("dstrxid")
35
+ expect(three_d_secure_info.eci_flag).to eq("06")
36
+ expect(three_d_secure_info.enrolled).to eq("Y")
37
+ expect(three_d_secure_info.liability_shift_possible).to eq(true)
38
+ expect(three_d_secure_info.liability_shifted).to eq(true)
39
+ expect(three_d_secure_info.pares_status).to eq("Y")
40
+ expect(three_d_secure_info.status).to eq("authenticate_successful")
41
+ expect(three_d_secure_info.three_d_secure_authentication_id).to eq("auth_id")
42
+ expect(three_d_secure_info.three_d_secure_transaction_id).to eq("trans_id")
43
+ expect(three_d_secure_info.three_d_secure_version).to eq("1.0.2")
44
+ expect(three_d_secure_info.xid).to eq("xidvalue")
45
+ expect(three_d_secure_info.lookup[:trans_status]).to eq("lookupstatus")
46
+ expect(three_d_secure_info.lookup[:trans_status_reason]).to eq("lookupstatusreason")
47
+ expect(three_d_secure_info.authentication[:trans_status]).to eq("authstatus")
48
+ expect(three_d_secure_info.authentication[:trans_status_reason]).to eq("authstatusreason")
29
49
  end
30
50
  end
31
51
 
32
52
  describe "inspect" do
33
53
  it "prints the attributes" do
34
- three_d_secure_info.inspect.should == %(#<ThreeDSecureInfo enrolled: "Y", liability_shifted: true, liability_shift_possible: true, status: "authenticate_successful", cavv: "cavvvalue", xid: "xidvalue", eci_flag: "06", three_d_secure_version: "1.0.2", ds_transaction_id: "dstrxid">)
54
+ expect(three_d_secure_info.inspect).to eq(%(#<ThreeDSecureInfo acs_transaction_id: "acs_id", authentication: {:trans_status=>"authstatus", :trans_status_reason=>"authstatusreason"}, cavv: "cavvvalue", ds_transaction_id: "dstrxid", eci_flag: "06", enrolled: "Y", liability_shift_possible: true, liability_shifted: true, lookup: {:trans_status=>"lookupstatus", :trans_status_reason=>"lookupstatusreason"}, pares_status: "Y", status: "authenticate_successful", three_d_secure_authentication_id: "auth_id", three_d_secure_transaction_id: "trans_id", three_d_secure_version: "1.0.2", xid: "xidvalue">))
35
55
  end
36
56
  end
37
57
 
38
58
  describe "liability_shifted" do
39
59
  it "is aliased to liability_shifted?" do
40
- three_d_secure_info.liability_shifted?.should == true
60
+ expect(three_d_secure_info.liability_shifted?).to eq(true)
41
61
  end
42
62
  end
43
63
 
44
64
  describe "liability_shift_possible" do
45
65
  it "is aliased to liability_shift_possible?" do
46
- three_d_secure_info.liability_shift_possible?.should == true
66
+ expect(three_d_secure_info.liability_shift_possible?).to eq(true)
47
67
  end
48
68
  end
49
69
  end