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
@@ -29,8 +29,8 @@ describe Braintree::AdvancedSearch do
29
29
  search.id.is "subscription1_#{id}"
30
30
  end
31
31
 
32
- collection.should include(subscription1)
33
- collection.should_not include(subscription2)
32
+ expect(collection).to include(subscription1)
33
+ expect(collection).not_to include(subscription2)
34
34
  end
35
35
 
36
36
  it "is_not" do
@@ -54,8 +54,8 @@ describe Braintree::AdvancedSearch do
54
54
  search.price.is "11"
55
55
  end
56
56
 
57
- collection.should_not include(subscription1)
58
- collection.should include(subscription2)
57
+ expect(collection).not_to include(subscription1)
58
+ expect(collection).to include(subscription2)
59
59
  end
60
60
 
61
61
  it "starts_with" do
@@ -76,8 +76,8 @@ describe Braintree::AdvancedSearch do
76
76
  search.id.starts_with "subscription1_"
77
77
  end
78
78
 
79
- collection.should include(subscription1)
80
- collection.should_not include(subscription2)
79
+ expect(collection).to include(subscription1)
80
+ expect(collection).not_to include(subscription2)
81
81
  end
82
82
 
83
83
  it "ends_with" do
@@ -98,8 +98,8 @@ describe Braintree::AdvancedSearch do
98
98
  search.id.ends_with "1_#{id}"
99
99
  end
100
100
 
101
- collection.should include(subscription1)
102
- collection.should_not include(subscription2)
101
+ expect(collection).to include(subscription1)
102
+ expect(collection).not_to include(subscription2)
103
103
  end
104
104
 
105
105
  it "contains" do
@@ -120,8 +120,8 @@ describe Braintree::AdvancedSearch do
120
120
  search.id.contains "scription1_"
121
121
  end
122
122
 
123
- collection.should include(subscription1)
124
- collection.should_not include(subscription2)
123
+ expect(collection).to include(subscription1)
124
+ expect(collection).not_to include(subscription2)
125
125
  end
126
126
  end
127
127
 
@@ -147,8 +147,8 @@ describe Braintree::AdvancedSearch do
147
147
  search.price.is "12"
148
148
  end
149
149
 
150
- collection.should include(subscription1)
151
- collection.should include(subscription2)
150
+ expect(collection).to include(subscription1)
151
+ expect(collection).to include(subscription2)
152
152
  end
153
153
 
154
154
  it "returns only matching results" do
@@ -171,8 +171,8 @@ describe Braintree::AdvancedSearch do
171
171
  search.price.is "13"
172
172
  end
173
173
 
174
- collection.should include(subscription1)
175
- collection.should_not include(subscription2)
174
+ expect(collection).to include(subscription1)
175
+ expect(collection).not_to include(subscription2)
176
176
  end
177
177
 
178
178
  it "returns only matching results given an argument list" do
@@ -195,8 +195,8 @@ describe Braintree::AdvancedSearch do
195
195
  search.price.is "14"
196
196
  end
197
197
 
198
- collection.should include(subscription1)
199
- collection.should include(subscription2)
198
+ expect(collection).to include(subscription1)
199
+ expect(collection).to include(subscription2)
200
200
  end
201
201
 
202
202
  describe "is" do
@@ -220,8 +220,8 @@ describe Braintree::AdvancedSearch do
220
220
  search.price.is "15"
221
221
  end
222
222
 
223
- collection.should include(subscription1)
224
- collection.should_not include(subscription2)
223
+ expect(collection).to include(subscription1)
224
+ expect(collection).not_to include(subscription2)
225
225
  end
226
226
  end
227
227
 
@@ -245,8 +245,8 @@ describe Braintree::AdvancedSearch do
245
245
  search.price.is "16"
246
246
  end
247
247
 
248
- collection.should include(subscription1)
249
- collection.should include(subscription2)
248
+ expect(collection).to include(subscription1)
249
+ expect(collection).to include(subscription2)
250
250
  end
251
251
 
252
252
  it "returns expired subscriptions" do
@@ -254,8 +254,8 @@ describe Braintree::AdvancedSearch do
254
254
  search.status.in [Braintree::Subscription::Status::Expired]
255
255
  end
256
256
 
257
- collection.maximum_size.should > 0
258
- collection.all? { |subscription| subscription.status.should == Braintree::Subscription::Status::Expired }
257
+ expect(collection.maximum_size).to be > 0
258
+ collection.all? { |subscription| expect(subscription.status).to eq(Braintree::Subscription::Status::Expired) }
259
259
  end
260
260
  end
261
261
  end
@@ -287,7 +287,7 @@ describe Braintree::AdvancedSearch do
287
287
  search.price.is "17"
288
288
  end
289
289
 
290
- collection.maximum_size.should > 0
290
+ expect(collection.maximum_size).to be > 0
291
291
  collection.all? { |subscription| plan_ids.include?(subscription.plan_id) }
292
292
  end
293
293
  end
@@ -298,7 +298,7 @@ describe Braintree::AdvancedSearch do
298
298
  search.plan_id.is "not_a_real_plan_id"
299
299
  end
300
300
 
301
- collection.maximum_size.should == 0
301
+ expect(collection.maximum_size).to eq(0)
302
302
  end
303
303
  end
304
304
 
@@ -321,8 +321,8 @@ describe Braintree::AdvancedSearch do
321
321
  search.price.is "18"
322
322
  end
323
323
 
324
- collection.should include(trialless_subscription)
325
- collection.should_not include(trial_subscription)
324
+ expect(collection).to include(trialless_subscription)
325
+ expect(collection).not_to include(trial_subscription)
326
326
  end
327
327
  end
328
328
 
@@ -345,8 +345,8 @@ describe Braintree::AdvancedSearch do
345
345
  search.price.is "19"
346
346
  end
347
347
 
348
- collection.should_not include(trialless_subscription)
349
- collection.should include(trial_subscription)
348
+ expect(collection).not_to include(trialless_subscription)
349
+ expect(collection).to include(trial_subscription)
350
350
  end
351
351
  end
352
352
 
@@ -369,8 +369,8 @@ describe Braintree::AdvancedSearch do
369
369
  search.price.is "20"
370
370
  end
371
371
 
372
- collection.should include(trial_subscription)
373
- collection.should_not include(trialless_subscription)
372
+ expect(collection).to include(trial_subscription)
373
+ expect(collection).not_to include(trialless_subscription)
374
374
  end
375
375
  end
376
376
 
@@ -393,8 +393,8 @@ describe Braintree::AdvancedSearch do
393
393
  search.price.is "21"
394
394
  end
395
395
 
396
- collection.should include(trial_subscription)
397
- collection.should_not include(trialless_subscription)
396
+ expect(collection).to include(trial_subscription)
397
+ expect(collection).not_to include(trialless_subscription)
398
398
  end
399
399
  end
400
400
 
@@ -417,8 +417,8 @@ describe Braintree::AdvancedSearch do
417
417
  search.price.is "22"
418
418
  end
419
419
 
420
- collection.should include(trial_subscription)
421
- collection.should_not include(trialless_subscription)
420
+ expect(collection).to include(trial_subscription)
421
+ expect(collection).not_to include(trialless_subscription)
422
422
  end
423
423
  end
424
424
  end
@@ -441,8 +441,8 @@ describe Braintree::AdvancedSearch do
441
441
  search.price.is "5.00"
442
442
  end
443
443
 
444
- collection.should include(subscription_500)
445
- collection.should_not include(subscription_501)
444
+ expect(collection).to include(subscription_500)
445
+ expect(collection).not_to include(subscription_501)
446
446
  end
447
447
 
448
448
  it "<=" do
@@ -468,9 +468,9 @@ describe Braintree::AdvancedSearch do
468
468
  search.price <= "5.00"
469
469
  end
470
470
 
471
- collection.should include(subscription_499)
472
- collection.should include(subscription_500)
473
- collection.should_not include(subscription_501)
471
+ expect(collection).to include(subscription_499)
472
+ expect(collection).to include(subscription_500)
473
+ expect(collection).not_to include(subscription_501)
474
474
  end
475
475
 
476
476
  it ">=" do
@@ -496,9 +496,9 @@ describe Braintree::AdvancedSearch do
496
496
  search.price >= "1000.00"
497
497
  end
498
498
 
499
- collection.should_not include(subscription_499)
500
- collection.should include(subscription_500)
501
- collection.should include(subscription_501)
499
+ expect(collection).not_to include(subscription_499)
500
+ expect(collection).to include(subscription_500)
501
+ expect(collection).to include(subscription_501)
502
502
  end
503
503
 
504
504
  it "between" do
@@ -524,9 +524,9 @@ describe Braintree::AdvancedSearch do
524
524
  search.price.between "4.99", "5.01"
525
525
  end
526
526
 
527
- collection.should include(subscription_499)
528
- collection.should include(subscription_500)
529
- collection.should_not include(subscription_502)
527
+ expect(collection).to include(subscription_499)
528
+ expect(collection).to include(subscription_500)
529
+ expect(collection).not_to include(subscription_502)
530
530
  end
531
531
  end
532
532
  end
@@ -23,13 +23,13 @@ describe Braintree::ApplePayGateway do
23
23
  describe "register_domain" do
24
24
  it "registers an apple pay domain" do
25
25
  result = @gateway.apple_pay.register_domain("www.example.com")
26
- result.should be_success
26
+ expect(result).to be_success
27
27
  end
28
28
 
29
29
  it "gets a validation error when attempting to register no domains" do
30
30
  result = @gateway.apple_pay.register_domain("")
31
- result.should_not be_success
32
- result.errors.for(:apple_pay)[0].message.should eq("Domain name is required.")
31
+ expect(result).not_to be_success
32
+ expect(result.errors.for(:apple_pay)[0].message).to eq("Domain name is required.")
33
33
  end
34
34
  end
35
35
 
@@ -37,27 +37,27 @@ describe Braintree::ApplePayGateway do
37
37
  it "unregisters an apple pay domain" do
38
38
  domain = "example.org"
39
39
  result = @gateway.apple_pay.unregister_domain(domain)
40
- result.should be_success
40
+ expect(result).to be_success
41
41
  end
42
42
 
43
43
  it "unregisters an apple pay domain with scheme in url" do
44
44
  domain = "http://example.org"
45
45
  result = @gateway.apple_pay.unregister_domain(domain)
46
- result.should be_success
46
+ expect(result).to be_success
47
47
  end
48
48
 
49
49
  it "escapes the unregistered domain query parameter" do
50
50
  domain = "ex&mple.org"
51
51
  result = @gateway.apple_pay.unregister_domain(domain)
52
- result.should be_success
52
+ expect(result).to be_success
53
53
  end
54
54
  end
55
55
 
56
56
  describe "registered_domains" do
57
57
  it "returns stubbed registered domains" do
58
58
  result = @gateway.apple_pay.registered_domains
59
- result.should be_success
60
- result.apple_pay_options.domains.should == ["www.example.com"]
59
+ expect(result).to be_success
60
+ expect(result.apple_pay_options.domains).to eq(["www.example.com"])
61
61
  end
62
62
  end
63
63
  end
@@ -17,7 +17,7 @@ describe Braintree::ClientToken do
17
17
 
18
18
  response = http.get_payment_methods
19
19
 
20
- response.code.should == "200"
20
+ expect(response.code).to eq("200")
21
21
  end
22
22
 
23
23
  it "raises ArgumentError on invalid parameters (422)" do
@@ -31,14 +31,14 @@ describe Braintree::ClientToken do
31
31
  config = Braintree::Configuration.instantiate
32
32
  client_token_string = Braintree::ClientToken.generate(:version => 1)
33
33
  client_token = JSON.parse(client_token_string)
34
- client_token["version"].should == 1
34
+ expect(client_token["version"]).to eq(1)
35
35
  end
36
36
 
37
37
  it "defaults to 2" do
38
38
  config = Braintree::Configuration.instantiate
39
39
  client_token_string = Braintree::ClientToken.generate
40
40
  client_token = decode_client_token(client_token_string)
41
- client_token["version"].should == 2
41
+ expect(client_token["version"]).to eq(2)
42
42
  end
43
43
  end
44
44
 
@@ -68,7 +68,7 @@ describe Braintree::ClientToken do
68
68
  },
69
69
  )
70
70
 
71
- response.code.should == "422"
71
+ expect(response.code).to eq("422")
72
72
  end
73
73
 
74
74
  it "can pass make_default" do
@@ -98,7 +98,7 @@ describe Braintree::ClientToken do
98
98
  },
99
99
  )
100
100
 
101
- response.code.should == "201"
101
+ expect(response.code).to eq("201")
102
102
 
103
103
  response = http.add_payment_method(
104
104
  :credit_card => {
@@ -108,10 +108,10 @@ describe Braintree::ClientToken do
108
108
  },
109
109
  )
110
110
 
111
- response.code.should == "201"
111
+ expect(response.code).to eq("201")
112
112
 
113
113
  customer = Braintree::Customer.find(customer_id)
114
- customer.credit_cards.select { |c| c.bin == "400551" }[0].should be_default
114
+ expect(customer.credit_cards.select { |c| c.bin == "400551" }[0]).to be_default
115
115
  end
116
116
 
117
117
  it "can pass fail_on_duplicate_payment_method" do
@@ -138,7 +138,7 @@ describe Braintree::ClientToken do
138
138
  },
139
139
  )
140
140
 
141
- response.code.should == "201"
141
+ expect(response.code).to eq("201")
142
142
 
143
143
  second_raw_client_token = Braintree::ClientToken.generate(
144
144
  :customer_id => customer_id,
@@ -158,7 +158,7 @@ describe Braintree::ClientToken do
158
158
  },
159
159
  )
160
160
 
161
- response.code.should == "422"
161
+ expect(response.code).to eq("422")
162
162
  end
163
163
 
164
164
  it "can pass merchant_account_id" do
@@ -169,7 +169,7 @@ describe Braintree::ClientToken do
169
169
  )
170
170
  client_token = decode_client_token(raw_client_token)
171
171
 
172
- client_token["merchantAccountId"].should == merchant_account_id
172
+ expect(client_token["merchantAccountId"]).to eq(merchant_account_id)
173
173
  end
174
174
 
175
175
  context "paypal" do
@@ -178,11 +178,11 @@ describe Braintree::ClientToken do
178
178
  raw_client_token = Braintree::ClientToken.generate
179
179
  client_token = decode_client_token(raw_client_token)
180
180
 
181
- client_token["paypal"]["displayName"].should == "merchant who has paypal and sepa enabled"
182
- client_token["paypal"]["clientId"].should match(/.+/)
183
- client_token["paypal"]["privacyUrl"].should match("http://www.example.com/privacy_policy")
184
- client_token["paypal"]["userAgreementUrl"].should match("http://www.example.com/user_agreement")
185
- client_token["paypal"]["baseUrl"].should_not be_nil
181
+ expect(client_token["paypal"]["displayName"]).to eq("merchant who has paypal and sepa enabled")
182
+ expect(client_token["paypal"]["clientId"]).to match(/.+/)
183
+ expect(client_token["paypal"]["privacyUrl"]).to match("http://www.example.com/privacy_policy")
184
+ expect(client_token["paypal"]["userAgreementUrl"]).to match("http://www.example.com/user_agreement")
185
+ expect(client_token["paypal"]["baseUrl"]).not_to be_nil
186
186
  end
187
187
  end
188
188
  end