braintree 4.18.0 → 4.20.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 (42) hide show
  1. checksums.yaml +4 -4
  2. data/lib/braintree/advanced_search.rb +1 -2
  3. data/lib/braintree/client_token_gateway.rb +1 -0
  4. data/lib/braintree/configuration.rb +1 -1
  5. data/lib/braintree/credit_card.rb +12 -0
  6. data/lib/braintree/credit_card_gateway.rb +6 -0
  7. data/lib/braintree/disbursement.rb +1 -1
  8. data/lib/braintree/dispute.rb +1 -0
  9. data/lib/braintree/error_codes.rb +2 -0
  10. data/lib/braintree/http.rb +2 -4
  11. data/lib/braintree/util.rb +1 -1
  12. data/lib/braintree/version.rb +1 -1
  13. data/lib/braintree/webhook_notification.rb +4 -3
  14. data/lib/braintree/webhook_testing_gateway.rb +78 -6
  15. data/lib/braintree/xml/parser.rb +2 -2
  16. data/spec/integration/braintree/address_spec.rb +3 -3
  17. data/spec/integration/braintree/advanced_search_spec.rb +3 -3
  18. data/spec/integration/braintree/client_api/client_token_spec.rb +28 -2
  19. data/spec/integration/braintree/client_api/spec_helper.rb +1 -1
  20. data/spec/integration/braintree/credit_card_spec.rb +13 -10
  21. data/spec/integration/braintree/credit_card_verification_spec.rb +1 -1
  22. data/spec/integration/braintree/customer_spec.rb +8 -8
  23. data/spec/integration/braintree/dispute_search_spec.rb +0 -1
  24. data/spec/integration/braintree/dispute_spec.rb +1 -1
  25. data/spec/integration/braintree/document_upload_spec.rb +1 -1
  26. data/spec/integration/braintree/http_spec.rb +0 -2
  27. data/spec/integration/braintree/oauth_spec.rb +1 -1
  28. data/spec/integration/braintree/payment_method_spec.rb +10 -12
  29. data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +3 -3
  30. data/spec/integration/braintree/paypal_account_spec.rb +6 -6
  31. data/spec/integration/braintree/plan_spec.rb +0 -1
  32. data/spec/integration/braintree/sepa_direct_debit_account_spec.rb +0 -2
  33. data/spec/integration/braintree/subscription_spec.rb +5 -6
  34. data/spec/integration/braintree/transaction_search_spec.rb +3 -7
  35. data/spec/integration/braintree/transaction_spec.rb +6 -22
  36. data/spec/unit/braintree/client_token_spec.rb +1 -1
  37. data/spec/unit/braintree/digest_spec.rb +0 -1
  38. data/spec/unit/braintree/error_result_spec.rb +1 -1
  39. data/spec/unit/braintree/paypal_account_spec.rb +1 -1
  40. data/spec/unit/braintree/transaction_spec.rb +2 -2
  41. data/spec/unit/braintree/webhook_notification_spec.rb +16 -0
  42. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b8d5039746bfcbc33e3899cb43cf5a014084278543b5c83ea0b09146a0c0b63b
4
- data.tar.gz: 688a569cbff984a1d6a0571095a7f990efda7ce717ee9393c93263f8b9007f80
3
+ metadata.gz: 5738048bf9abc767f859d8f10d42baa075a3f5986dca2a1fe6bb86b744a2a29a
4
+ data.tar.gz: 994d4b0dce9d1d6da5cbf929cb4debd0460b85087396c6400ca854af3c5fb882
5
5
  SHA512:
6
- metadata.gz: df005acb10a67bdcf42ab131f49b93f595ad9431004922502b255c54d4222960e54a344a018abd0175c3b340d8474215a1f49b0a210b590fbe78fe020bf7daf1
7
- data.tar.gz: 783676045da0d1240f5b9cd808149f04fd9a7005c99015ff5ec07ff0a0ffcf4093e1e0ab896334f2e7e0f953829a62b8532130a3057bef5c344d506c58064d67
6
+ metadata.gz: 96280a78f3e0fbabdbf95f950ca6bd417c7ab02c10e23169cb3a9b829dddc59b125fbb36d6164ef108a52aaba199b5677e1e9c3f2c95e8e6e4e1468ec6ce10b8
7
+ data.tar.gz: 1a9ca31d02662aaa179da5e2031bf096ecebcdef55d0f9a514cb20693d44c378933f6430ae95cc395b57da0e7b026221ee2ac0ba9061142b595db866437a5db9
@@ -80,8 +80,7 @@ module Braintree
80
80
  operators :is
81
81
 
82
82
  def between(min, max)
83
- self >= min
84
- self <= max
83
+ self >= min && self <= max
85
84
  end
86
85
 
87
86
  def >=(min)
@@ -29,6 +29,7 @@ module Braintree
29
29
  [
30
30
  :address_id, :customer_id, :proxy_merchant_id, :merchant_account_id,
31
31
  :version,
32
+ {:domains => [:_any_key_]},
32
33
  {:options => [:make_default, :verify_card, :fail_on_duplicate_payment_method]}
33
34
  ]
34
35
  end
@@ -72,7 +72,7 @@ module Braintree
72
72
  end
73
73
 
74
74
  def self.instantiate
75
- config = new(
75
+ new(
76
76
  :custom_user_agent => @custom_user_agent,
77
77
  :endpoint => @endpoint,
78
78
  :environment => environment,
@@ -81,11 +81,17 @@ module Braintree
81
81
  Configuration.gateway.credit_card.create!(*args)
82
82
  end
83
83
 
84
+ # NEXT_MAJOR_VERSION remove this method
85
+ # CreditCard.credit has been deprecated in favor of Transaction.credit
84
86
  def self.credit(token, transaction_attributes)
87
+ warn "[DEPRECATED] CreditCard.credit is deprecated. Use Transaction.credit instead"
85
88
  Transaction.credit(transaction_attributes.merge(:payment_method_token => token))
86
89
  end
87
90
 
91
+ # NEXT_MAJOR_VERSION remove this method
92
+ # CreditCard.credit has been deprecated in favor of Transaction.credit
88
93
  def self.credit!(token, transaction_attributes)
94
+ warn "[DEPRECATED] CreditCard.credit is deprecated. Use Transaction.credit instead"
89
95
  return_object_or_raise(:transaction) { credit(token, transaction_attributes) }
90
96
  end
91
97
 
@@ -109,11 +115,17 @@ module Braintree
109
115
  Configuration.gateway.credit_card.from_nonce(*args)
110
116
  end
111
117
 
118
+ # NEXT_MAJOR_VERSION remove this method
119
+ # CreditCard.sale has been deprecated in favor of Transaction.sale
112
120
  def self.sale(token, transaction_attributes)
121
+ warn "[DEPRECATED] CreditCard.sale is deprecated. Use Transaction.sale instead"
113
122
  Configuration.gateway.transaction.sale(transaction_attributes.merge(:payment_method_token => token))
114
123
  end
115
124
 
125
+ # NEXT_MAJOR_VERSION remove this method
126
+ # CreditCard.sale has been deprecated in favor of Transaction.sale
116
127
  def self.sale!(token, transaction_attributes)
128
+ warn "[DEPRECATED] CreditCard.sale is deprecated. Use Transaction.sale instead"
117
129
  return_object_or_raise(:transaction) { sale(token, transaction_attributes) }
118
130
  end
119
131
 
@@ -24,11 +24,17 @@ module Braintree
24
24
  return_object_or_raise(:credit_card) { create(*args) }
25
25
  end
26
26
 
27
+ # NEXT_MAJOR_VERSION remove this method
28
+ # CreditCard.credit has been deprecated in favor of Transaction.credit
27
29
  def credit(token, transaction_attributes)
30
+ warn "[DEPRECATED] CreditCard.credit is deprecated. Use Transaction.credit instead"
28
31
  @gateway.transaction.credit(transaction_attributes.merge(:payment_method_token => token))
29
32
  end
30
33
 
34
+ # NEXT_MAJOR_VERSION remove this method
35
+ # CreditCard.credit has been deprecated in favor of Transaction.credit
31
36
  def credit!(*args)
37
+ warn "[DEPRECATED] CreditCard.credit is deprecated. Use Transaction.credit instead"
32
38
  return_object_or_raise(:transaction) { credit(*args) }
33
39
  end
34
40
 
@@ -29,7 +29,7 @@ module Braintree
29
29
  end
30
30
 
31
31
  def transactions
32
- transactions = @gateway.transaction.search do |search|
32
+ @gateway.transaction.search do |search|
33
33
  search.ids.in transaction_ids
34
34
  end
35
35
  end
@@ -43,6 +43,7 @@ module Braintree
43
43
  Expired = "expired"
44
44
  Open = "open"
45
45
  Lost = "lost"
46
+ UnderReview = "under_review"
46
47
  Won = "won"
47
48
 
48
49
  All = constants.map { |c| const_get(c) }
@@ -708,9 +708,11 @@ module Braintree
708
708
  module ClientToken
709
709
  CustomerDoesNotExist = "92804"
710
710
  FailOnDuplicatePaymentMethodRequiresCustomerId = "92803"
711
+ InvalidDomainFormat = "92011"
711
712
  MakeDefaultRequiresCustomerId = "92801"
712
713
  MerchantAccountDoesNotExist = "92807"
713
714
  ProxyMerchantDoesNotExist = "92805"
715
+ TooManyDomains = "92810"
714
716
  UnsupportedVersion = "92806"
715
717
  VerifyCardRequiresCustomerId = "92802"
716
718
  end
@@ -8,7 +8,6 @@ module Braintree
8
8
  end
9
9
 
10
10
  def delete(path, query_params = {})
11
- full_path = path + _build_query_string(query_params)
12
11
  response = _http_do Net::HTTP::Delete, path
13
12
  if response.code.to_i == 200 || response.code.to_i == 204
14
13
  true
@@ -20,7 +19,6 @@ module Braintree
20
19
  end
21
20
 
22
21
  def get(path, query_params = {})
23
- full_path = path + _build_query_string(query_params)
24
22
  response = _http_do Net::HTTP::Get, path
25
23
  if response.code.to_i == 200 || response.code.to_i == 422
26
24
  Xml.hash_from_xml(_body(response))
@@ -69,7 +67,7 @@ module Braintree
69
67
 
70
68
  def _setup_connection(server = @config.server, port = @config.port)
71
69
  if @config.proxy_address
72
- connection = Net::HTTP.new(
70
+ Net::HTTP.new(
73
71
  server,
74
72
  port,
75
73
  @config.proxy_address,
@@ -78,7 +76,7 @@ module Braintree
78
76
  @config.proxy_pass,
79
77
  )
80
78
  else
81
- connection = Net::HTTP.new(server, port)
79
+ Net::HTTP.new(server, port)
82
80
  end
83
81
  end
84
82
 
@@ -191,7 +191,7 @@ module Braintree
191
191
  def self._get_invalid_keys(valid_keys, hash)
192
192
  flattened_valid_keys = _flatten_valid_keys(valid_keys)
193
193
  keys = _flatten_hash_keys(hash) - flattened_valid_keys
194
- keys = _remove_wildcard_keys(flattened_valid_keys, keys)
194
+ _remove_wildcard_keys(flattened_valid_keys, keys)
195
195
  end
196
196
 
197
197
  module IdEquality
@@ -1,7 +1,7 @@
1
1
  module Braintree
2
2
  module Version
3
3
  Major = 4
4
- Minor = 18
4
+ Minor = 20
5
5
  Tiny = 0
6
6
 
7
7
  String = "#{Major}.#{Minor}.#{Tiny}"
@@ -15,13 +15,14 @@ module Braintree
15
15
  Disbursement = "disbursement"
16
16
  DisbursementException = "disbursement_exception"
17
17
 
18
- DisputeOpened = "dispute_opened"
19
- DisputeLost = "dispute_lost"
20
- DisputeWon = "dispute_won"
21
18
  DisputeAccepted = "dispute_accepted"
22
19
  DisputeAutoAccepted = "dispute_auto_accepted"
23
20
  DisputeDisputed = "dispute_disputed"
24
21
  DisputeExpired = "dispute_expired"
22
+ DisputeLost = "dispute_lost"
23
+ DisputeOpened = "dispute_opened"
24
+ DisputeUnderReview = "dispute_under_review"
25
+ DisputeWon = "dispute_won"
25
26
 
26
27
  GrantedPaymentInstrumentRevoked = "granted_payment_instrument_revoked"
27
28
 
@@ -34,12 +34,6 @@ module Braintree
34
34
  case kind
35
35
  when Braintree::WebhookNotification::Kind::Check
36
36
  _check
37
- when Braintree::WebhookNotification::Kind::DisputeOpened
38
- _dispute_opened_sample_xml(id)
39
- when Braintree::WebhookNotification::Kind::DisputeLost
40
- _dispute_lost_sample_xml(id)
41
- when Braintree::WebhookNotification::Kind::DisputeWon
42
- _dispute_won_sample_xml(id)
43
37
  when Braintree::WebhookNotification::Kind::DisputeAccepted
44
38
  _dispute_accepted_sample_xml(id)
45
39
  when Braintree::WebhookNotification::Kind::DisputeAutoAccepted
@@ -48,6 +42,14 @@ module Braintree
48
42
  _dispute_disputed_sample_xml(id)
49
43
  when Braintree::WebhookNotification::Kind::DisputeExpired
50
44
  _dispute_expired_sample_xml(id)
45
+ when Braintree::WebhookNotification::Kind::DisputeLost
46
+ _dispute_lost_sample_xml(id)
47
+ when Braintree::WebhookNotification::Kind::DisputeOpened
48
+ _dispute_opened_sample_xml(id)
49
+ when Braintree::WebhookNotification::Kind::DisputeUnderReview
50
+ _dispute_under_review_sample_xml(id)
51
+ when Braintree::WebhookNotification::Kind::DisputeWon
52
+ _dispute_won_sample_xml(id)
51
53
  when Braintree::WebhookNotification::Kind::PartnerMerchantConnected
52
54
  _partner_merchant_connected_sample_xml(id)
53
55
  when Braintree::WebhookNotification::Kind::PartnerMerchantDisconnected
@@ -324,6 +326,14 @@ module Braintree
324
326
  XML
325
327
  end
326
328
 
329
+ def _dispute_under_review_sample_xml(id)
330
+ if id == "legacy_dispute_id"
331
+ _old_dispute_under_review_sample_xml(id)
332
+ else
333
+ _new_dispute_under_review_sample_xml(id)
334
+ end
335
+ end
336
+
327
337
  def _dispute_opened_sample_xml(id)
328
338
  if id == "legacy_dispute_id"
329
339
  _old_dispute_opened_sample_xml(id)
@@ -380,6 +390,26 @@ module Braintree
380
390
  end
381
391
  end
382
392
 
393
+ def _old_dispute_under_review_sample_xml(id)
394
+ <<-XML
395
+ <dispute>
396
+ <amount>100.00</amount>
397
+ <currency-iso-code>USD</currency-iso-code>
398
+ <received-date type="date">2014-03-01</received-date>
399
+ <reply-by-date type="date">2014-03-21</reply-by-date>
400
+ <kind>chargeback</kind>
401
+ <status>under_review</status>
402
+ <reason>fraud</reason>
403
+ <id>#{id}</id>
404
+ <transaction>
405
+ <id>#{id}</id>
406
+ <amount>100.00</amount>
407
+ </transaction>
408
+ <date-opened type=\"date\">2014-03-21</date-opened>
409
+ </dispute>
410
+ XML
411
+ end
412
+
383
413
  def _old_dispute_opened_sample_xml(id)
384
414
  <<-XML
385
415
  <dispute>
@@ -521,6 +551,48 @@ module Braintree
521
551
  XML
522
552
  end
523
553
 
554
+ def _new_dispute_under_review_sample_xml(id)
555
+ <<-XML
556
+ <dispute>
557
+ <id>#{id}</id>
558
+ <amount>100.00</amount>
559
+ <amount-disputed>100.00</amount-disputed>
560
+ <amount-won>95.00</amount-won>
561
+ <case-number>CASE-12345</case-number>
562
+ <created-at type="datetime">2017-06-16T20:44:41Z</created-at>
563
+ <currency-iso-code>USD</currency-iso-code>
564
+ <forwarded-comments nil="true"/>
565
+ <kind>chargeback</kind>
566
+ <merchant-account-id>ytnlulaloidoqwvzxjrdqputg</merchant-account-id>
567
+ <reason>fraud</reason>
568
+ <reason-code nil="true"/>
569
+ <reason-description nil="true"/>
570
+ <received-date type="date">2016-02-15</received-date>
571
+ <reference-number>REF-9876</reference-number>
572
+ <reply-by-date type="date">2016-02-22</reply-by-date>
573
+ <status>under_review</status>
574
+ <updated-at type="datetime">2017-06-16T20:44:41Z</updated-at>
575
+ <original-dispute-id>9qde5qgp</original-dispute-id>
576
+ <status-history type="array">
577
+ <status-history>
578
+ <status>under_review</status>
579
+ <timestamp type="datetime">2017-06-16T20:44:41Z</timestamp>
580
+ </status-history>
581
+ </status-history>
582
+ <evidence type="array"/>
583
+ <transaction>
584
+ <id>#{id}</id>
585
+ <amount>100.00</amount>
586
+ <created-at>2017-06-21T20:44:41Z</created-at>
587
+ <order-id nil="true"/>
588
+ <purchase-order-number nil="true"/>
589
+ <payment-instrument-subtype>Visa</payment-instrument-subtype>
590
+ </transaction>
591
+ <date-opened type=\"date\">2014-03-21</date-opened>
592
+ </dispute>
593
+ XML
594
+ end
595
+
524
596
  def _new_dispute_opened_sample_xml(id)
525
597
  <<-XML
526
598
  <dispute>
@@ -32,7 +32,7 @@ module Braintree
32
32
  case value.class.to_s
33
33
  when "Hash"
34
34
  if value["type"] == "array"
35
- child_key, entries = value.detect { |k,_v| k != "type" } # child_key is throwaway
35
+ _child_key, entries = value.detect { |k,_v| k != "type" } # child_key is throwaway
36
36
  if entries.nil? || ((c = value[CONTENT_ROOT]) && c.strip.empty?)
37
37
  []
38
38
  else
@@ -47,7 +47,7 @@ module Braintree
47
47
  end
48
48
  elsif value.has_key?(CONTENT_ROOT)
49
49
  content = value[CONTENT_ROOT]
50
- if (parser = XML_PARSING[value["type"]])
50
+ if (XML_PARSING[value["type"]])
51
51
  XML_PARSING[value["type"]].call(content)
52
52
  else
53
53
  content
@@ -203,7 +203,7 @@ describe Braintree::Address do
203
203
 
204
204
  it "raises a NotFoundError if it cannot be found because of address id" do
205
205
  customer = Braintree::Customer.create!(:last_name => "Wilson")
206
- address = Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
206
+ Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
207
207
  expect do
208
208
  Braintree::Address.find(customer, "invalid")
209
209
  end.to raise_error(
@@ -215,7 +215,7 @@ describe Braintree::Address do
215
215
  describe "self.update" do
216
216
  it "raises NotFoundError if the address can't be found" do
217
217
  customer = Braintree::Customer.create!(:last_name => "Wilson")
218
- address = Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
218
+ Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
219
219
  expect do
220
220
  Braintree::Address.update(customer.id, "bad-id", {})
221
221
  end.to raise_error(Braintree::NotFoundError)
@@ -293,7 +293,7 @@ describe Braintree::Address do
293
293
  describe "self.update!" do
294
294
  it "raises NotFoundError if the address can't be found" do
295
295
  customer = Braintree::Customer.create!(:last_name => "Wilson")
296
- address = Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
296
+ Braintree::Address.create!(:customer_id => customer.id, :street_address => "123 E Main St")
297
297
  expect do
298
298
  Braintree::Address.update!(customer.id, "bad-id", {})
299
299
  end.to raise_error(Braintree::NotFoundError)
@@ -263,19 +263,19 @@ describe Braintree::AdvancedSearch do
263
263
  context "multiple_value_or_text_field" do
264
264
  describe "in" do
265
265
  it "works for the in operator" do
266
- subscription1 = Braintree::Subscription.create(
266
+ Braintree::Subscription.create(
267
267
  :payment_method_token => @credit_card.token,
268
268
  :plan_id => SpecHelper::TriallessPlan[:id],
269
269
  :price => "17",
270
270
  ).subscription
271
271
 
272
- subscription2 = Braintree::Subscription.create(
272
+ Braintree::Subscription.create(
273
273
  :payment_method_token => @credit_card.token,
274
274
  :plan_id => SpecHelper::TrialPlan[:id],
275
275
  :price => "17",
276
276
  ).subscription
277
277
 
278
- subscription3 = Braintree::Subscription.create(
278
+ Braintree::Subscription.create(
279
279
  :payment_method_token => @credit_card.token,
280
280
  :plan_id => SpecHelper::AddOnDiscountPlan[:id],
281
281
  :price => "17",
@@ -20,6 +20,34 @@ describe Braintree::ClientToken do
20
20
  expect(response.code).to eq("200")
21
21
  end
22
22
 
23
+ describe "domains" do
24
+ it "allows a domain to be specified" do
25
+ client_token_string = Braintree::ClientToken.generate(:domains => ["example.com"])
26
+ client_token = decode_client_token(client_token_string)
27
+ authorization_fingerprint = Base64.decode64(client_token["authorizationFingerprint"])
28
+ expect(authorization_fingerprint.include? "example.com").to eq(true)
29
+ end
30
+
31
+ it "raises ClientTokenTooManyDomains on too many domains" do
32
+ expect do
33
+ Braintree::ClientToken.generate(
34
+ :domains => ["example1.com",
35
+ "example2.com",
36
+ "example3.com",
37
+ "example4.com",
38
+ "example5.com",
39
+ "example6.com"
40
+ ])
41
+ end.to raise_error(ArgumentError, "Cannot specify more than 5 client token domains")
42
+ end
43
+
44
+ it "raises ClientTokenInvalidDomainFormat on invalid format" do
45
+ expect do
46
+ Braintree::ClientToken.generate(:domains => ["example"])
47
+ end.to raise_error(ArgumentError, "Client token domains must be valid domain names (RFC 1035), e.g. example.com")
48
+ end
49
+ end
50
+
23
51
  it "raises ArgumentError on invalid parameters (422)" do
24
52
  expect do
25
53
  Braintree::ClientToken.generate(:options => {:make_default => true})
@@ -28,14 +56,12 @@ describe Braintree::ClientToken do
28
56
 
29
57
  describe "version" do
30
58
  it "allows a client token version to be specified" do
31
- config = Braintree::Configuration.instantiate
32
59
  client_token_string = Braintree::ClientToken.generate(:version => 1)
33
60
  client_token = JSON.parse(client_token_string)
34
61
  expect(client_token["version"]).to eq(1)
35
62
  end
36
63
 
37
64
  it "defaults to 2" do
38
- config = Braintree::Configuration.instantiate
39
65
  client_token_string = Braintree::ClientToken.generate
40
66
  client_token = decode_client_token(client_token_string)
41
67
  expect(client_token["version"]).to eq(2)
@@ -144,7 +144,7 @@ def generate_invalid_us_bank_account_nonce
144
144
  nonce_characters = "bcdfghjkmnpqrstvwxyz23456789".chars.to_a
145
145
  nonce = "tokenusbankacct_"
146
146
  nonce += 4.times.map { sample(nonce_characters) }.join("_")
147
- nonce += "_xxx"
147
+ nonce + "_xxx"
148
148
  end
149
149
 
150
150
  def _cosmos_post(token, url, payload)
@@ -322,16 +322,15 @@ describe Braintree::CreditCard do
322
322
  expect(result.success?).to eq(true)
323
323
 
324
324
  three_d_secure_info = result.credit_card.verification.three_d_secure_info
325
- expect(three_d_secure_info.enrolled).to eq("Y")
325
+ expect(three_d_secure_info.status).to eq("authenticate_successful")
326
326
  expect(three_d_secure_info).to be_liability_shifted
327
327
  expect(three_d_secure_info).to be_liability_shift_possible
328
- expect(three_d_secure_info.status).to eq("authenticate_successful")
329
- expect(three_d_secure_info.cavv).to eq("cavv_value")
330
- expect(three_d_secure_info.xid).to eq("xid_value")
331
- expect(three_d_secure_info.eci_flag).to eq("05")
332
- expect(three_d_secure_info.three_d_secure_version).to eq("1.0.2")
333
- expect(three_d_secure_info.ds_transaction_id).to eq(nil)
334
- expect(three_d_secure_info.three_d_secure_authentication_id).not_to be_nil
328
+ expect(three_d_secure_info.enrolled).to be_a(String)
329
+ expect(three_d_secure_info.cavv).to be_a(String)
330
+ expect(three_d_secure_info.xid).to be_a(String)
331
+ expect(three_d_secure_info.eci_flag).to be_a(String)
332
+ expect(three_d_secure_info.three_d_secure_version).to be_a(String)
333
+ expect(three_d_secure_info.three_d_secure_authentication_id).to be_a(String)
335
334
  end
336
335
 
337
336
  it "adds credit card with billing address to customer" do
@@ -649,7 +648,6 @@ describe Braintree::CreditCard do
649
648
  end
650
649
 
651
650
  it "errors with invalid account_type" do
652
- customer = Braintree::Customer.create!
653
651
  result = Braintree::CreditCard.create(
654
652
  :number => Braintree::Test::CreditCardNumbers::Hiper,
655
653
  :expiration_month => "11",
@@ -666,7 +664,6 @@ describe Braintree::CreditCard do
666
664
  end
667
665
 
668
666
  it "errors when account_type not supported by merchant" do
669
- customer = Braintree::Customer.create!
670
667
  result = Braintree::CreditCard.create(
671
668
  :number => Braintree::Test::CreditCardNumbers::Visa,
672
669
  :expiration_month => "11",
@@ -710,6 +707,8 @@ describe Braintree::CreditCard do
710
707
  end
711
708
  end
712
709
 
710
+ # NEXT_MAJOR_VERSION remove this test
711
+ # CreditCard.credit has been deprecated in favor of Transaction.credit
713
712
  describe "self.credit" do
714
713
  it "creates a credit transaction using the payment method token, returning a result object" do
715
714
  customer = Braintree::Customer.create!(
@@ -1341,6 +1340,8 @@ describe Braintree::CreditCard do
1341
1340
  end
1342
1341
  end
1343
1342
 
1343
+ # NEXT_MAJOR_VERSION remove these tests
1344
+ # CreditCard.sale has been deprecated in favor of Transaction.sale
1344
1345
  describe "self.sale" do
1345
1346
  it "creates a sale transaction using the credit card, returning a result object" do
1346
1347
  customer = Braintree::Customer.create!(
@@ -1384,6 +1385,8 @@ describe Braintree::CreditCard do
1384
1385
  end
1385
1386
  end
1386
1387
 
1388
+ # NEXT_MAJOR_VERSION remove this test
1389
+ # CreditCard.sale has been deprecated in favor of Transaction.sale
1387
1390
  describe "self.sale!" do
1388
1391
  it "creates a sale transaction using the credit card, returning the transaction" do
1389
1392
  customer = Braintree::Customer.create!(
@@ -283,7 +283,7 @@ describe Braintree::CreditCardVerification, "search" do
283
283
  it "returns prepaid on a prepaid card" do
284
284
  cardholder_name = "Tom #{rand(1_000_000)} Smith"
285
285
 
286
- result = Braintree::Customer.create(
286
+ Braintree::Customer.create(
287
287
  :credit_card => {
288
288
  :cardholder_name => cardholder_name,
289
289
  :expiration_date => "05/2012",
@@ -924,11 +924,11 @@ describe Braintree::Customer do
924
924
  },
925
925
  ).credit_card
926
926
 
927
- subscription = Braintree::Subscription.create(
927
+ Braintree::Subscription.create(
928
928
  :payment_method_token => credit_card.token,
929
929
  :plan_id => "integration_trialless_plan",
930
930
  :price => "1.00",
931
- ).subscription
931
+ )
932
932
 
933
933
  found_customer = Braintree::Customer.find(customer.id, {
934
934
  :association_filter_id => "customernoassociations"
@@ -958,11 +958,11 @@ describe Braintree::Customer do
958
958
  },
959
959
  ).credit_card
960
960
 
961
- subscription = Braintree::Subscription.create(
961
+ Braintree::Subscription.create(
962
962
  :payment_method_token => credit_card.token,
963
963
  :plan_id => "integration_trialless_plan",
964
964
  :price => "1.00",
965
- ).subscription
965
+ )
966
966
 
967
967
  found_customer = Braintree::Customer.find(customer.id, {
968
968
  :association_filter_id => "customertoplevelassociations"
@@ -1233,7 +1233,7 @@ describe Braintree::Customer do
1233
1233
 
1234
1234
  token1 = random_payment_method_token
1235
1235
 
1236
- payment_method1 = Braintree::PaymentMethod.create(
1236
+ Braintree::PaymentMethod.create(
1237
1237
  :customer_id => customer.id,
1238
1238
  :payment_method_nonce => Braintree::Test::Nonce::TransactableVisa,
1239
1239
  :token => token1,
@@ -1244,7 +1244,7 @@ describe Braintree::Customer do
1244
1244
 
1245
1245
  token2 = random_payment_method_token
1246
1246
 
1247
- payment_method2 = Braintree::PaymentMethod.create(
1247
+ Braintree::PaymentMethod.create(
1248
1248
  :customer_id => customer.id,
1249
1249
  :payment_method_nonce => Braintree::Test::Nonce::TransactableMasterCard,
1250
1250
  :token => token2,
@@ -1266,7 +1266,7 @@ describe Braintree::Customer do
1266
1266
 
1267
1267
  token1 = random_payment_method_token
1268
1268
 
1269
- payment_method1 = Braintree::PaymentMethod.create(
1269
+ Braintree::PaymentMethod.create(
1270
1270
  :customer_id => customer.id,
1271
1271
  :payment_method_nonce => Braintree::Test::Nonce::TransactableVisa,
1272
1272
  :token => token1,
@@ -1277,7 +1277,7 @@ describe Braintree::Customer do
1277
1277
 
1278
1278
  token2 = random_payment_method_token
1279
1279
 
1280
- payment_method2 = Braintree::PaymentMethod.create(
1280
+ Braintree::PaymentMethod.create(
1281
1281
  :customer_id => customer.id,
1282
1282
  :payment_method_nonce => Braintree::Test::Nonce::TransactableMasterCard,
1283
1283
  :token => token2,
@@ -74,7 +74,6 @@ describe Braintree::Dispute, "search" do
74
74
  end
75
75
 
76
76
  expect(collection.disputes.count).to be >= 2
77
- dispute = collection.disputes.first
78
77
  end
79
78
 
80
79
  it "correctly returns disputes by chargeback protection level flag" do
@@ -6,7 +6,7 @@ describe Braintree::Dispute do
6
6
  let(:document_upload) do
7
7
  file = File.new("#{File.dirname(__FILE__)}/../../fixtures/files/bt_logo.png", "r")
8
8
  response = Braintree::DocumentUpload.create({:kind => Braintree::DocumentUpload::Kind::EvidenceDocument, :file => file})
9
- document_upload = response.document_upload
9
+ response.document_upload
10
10
  end
11
11
 
12
12
  let(:transaction) do
@@ -67,7 +67,7 @@ describe Braintree::DocumentUploadGateway do
67
67
 
68
68
  it "returns invalid keys error if signature is invalid" do
69
69
  expect do
70
- response = Braintree::DocumentUpload.create({:invalid_key => "do not add", :kind => Braintree::DocumentUpload::Kind::EvidenceDocument})
70
+ Braintree::DocumentUpload.create({:invalid_key => "do not add", :kind => Braintree::DocumentUpload::Kind::EvidenceDocument})
71
71
  end.to raise_error(ArgumentError, "invalid keys: invalid_key")
72
72
  end
73
73
  end
@@ -255,7 +255,6 @@ describe Braintree::Http do
255
255
  old_logger = Braintree::Configuration.logger
256
256
  output = StringIO.new
257
257
  Braintree::Configuration.logger = Logger.new(output)
258
- utc_or_gmt = Time.now.utc.strftime("%Z")
259
258
  context = OpenSSL::X509::StoreContext.new(OpenSSL::X509::Store.new)
260
259
  context.error = 19
261
260
  expect(Braintree::Configuration.instantiate.http._verify_ssl_certificate(false, context)).to eq(false)
@@ -270,7 +269,6 @@ describe Braintree::Http do
270
269
  old_logger = Braintree::Configuration.logger
271
270
  output = StringIO.new
272
271
  Braintree::Configuration.logger = Logger.new(output)
273
- utc_or_gmt = Time.now.utc.strftime("%Z")
274
272
  context = OpenSSL::X509::StoreContext.new(OpenSSL::X509::Store.new)
275
273
  expect do
276
274
  Braintree::Configuration.instantiate.http._verify_ssl_certificate(true, context)
@@ -36,7 +36,7 @@ describe "OAuth" do
36
36
  )
37
37
 
38
38
  expect(result).not_to be_success
39
- errors = expect(result.errors.for(:credentials).on(:code)[0].code).to eq(Braintree::ErrorCodes::OAuth::InvalidGrant)
39
+ expect(result.errors.for(:credentials).on(:code)[0].code).to eq(Braintree::ErrorCodes::OAuth::InvalidGrant)
40
40
  expect(result.message).to match(/Invalid grant: code not found/)
41
41
  end
42
42
 
@@ -390,15 +390,14 @@ describe Braintree::PaymentMethod do
390
390
  expect(result.success?).to eq(true)
391
391
 
392
392
  three_d_secure_info = result.payment_method.verification.three_d_secure_info
393
- expect(three_d_secure_info.enrolled).to eq("Y")
393
+ expect(three_d_secure_info.status).to eq("authenticate_successful")
394
394
  expect(three_d_secure_info).to be_liability_shifted
395
395
  expect(three_d_secure_info).to be_liability_shift_possible
396
- expect(three_d_secure_info.status).to eq("authenticate_successful")
397
- expect(three_d_secure_info.cavv).to eq("cavv_value")
398
- expect(three_d_secure_info.xid).to eq("xid_value")
399
- expect(three_d_secure_info.eci_flag).to eq("05")
400
- expect(three_d_secure_info.three_d_secure_version).to eq("1.0.2")
401
- expect(three_d_secure_info.ds_transaction_id).to eq(nil)
396
+ expect(three_d_secure_info.enrolled).to be_a(String)
397
+ expect(three_d_secure_info.cavv).to be_a(String)
398
+ expect(three_d_secure_info.xid).to be_a(String)
399
+ expect(three_d_secure_info.eci_flag).to be_a(String)
400
+ expect(three_d_secure_info.three_d_secure_version).to be_a(String)
402
401
  end
403
402
 
404
403
  it "respects fail_on_duplicate_payment_method when included outside of the nonce" do
@@ -1409,7 +1408,6 @@ describe Braintree::PaymentMethod do
1409
1408
 
1410
1409
  it "raises a NotFoundError exception if payment method cannot be found" do
1411
1410
  token = make_token
1412
- customer = Braintree::Customer.create!
1413
1411
 
1414
1412
  expect do
1415
1413
  Braintree::PaymentMethod.delete(token)
@@ -1878,7 +1876,7 @@ describe Braintree::PaymentMethod do
1878
1876
  )
1879
1877
 
1880
1878
  updated_token = make_token
1881
- updated_result = Braintree::PaymentMethod.update(
1879
+ Braintree::PaymentMethod.update(
1882
1880
  original_token,
1883
1881
  :token => updated_token,
1884
1882
  )
@@ -1907,7 +1905,7 @@ describe Braintree::PaymentMethod do
1907
1905
  :customer_id => customer.id,
1908
1906
  ).payment_method.token
1909
1907
 
1910
- updated_result = Braintree::PaymentMethod.update(
1908
+ Braintree::PaymentMethod.update(
1911
1909
  original_token,
1912
1910
  :options => {:make_default => true},
1913
1911
  )
@@ -1925,7 +1923,7 @@ describe Braintree::PaymentMethod do
1925
1923
  :consent_code => "consent-code",
1926
1924
  :token => first_token,
1927
1925
  )
1928
- first_result = Braintree::PaymentMethod.create(
1926
+ Braintree::PaymentMethod.create(
1929
1927
  :payment_method_nonce => first_nonce,
1930
1928
  :customer_id => customer.id,
1931
1929
  )
@@ -1934,7 +1932,7 @@ describe Braintree::PaymentMethod do
1934
1932
  :consent_code => "consent-code",
1935
1933
  :token => second_token,
1936
1934
  )
1937
- second_result = Braintree::PaymentMethod.create(
1935
+ Braintree::PaymentMethod.create(
1938
1936
  :payment_method_nonce => second_nonce,
1939
1937
  :customer_id => customer.id,
1940
1938
  )
@@ -116,7 +116,7 @@ describe Braintree::PaymentMethod do
116
116
 
117
117
  it "returns additional processor response for failed NetworkCheck" do
118
118
  customer = Braintree::Customer.create.customer
119
- invalid_nonce = generate_non_plaid_us_bank_account_nonce(account_number = "1000000005")
119
+ invalid_nonce = generate_non_plaid_us_bank_account_nonce("1000000005")
120
120
  result = Braintree::PaymentMethod.create(
121
121
  :payment_method_nonce => invalid_nonce,
122
122
  :customer_id => customer.id,
@@ -189,7 +189,7 @@ describe Braintree::PaymentMethod do
189
189
  context "unverified token" do
190
190
  let(:payment_method) do
191
191
  customer = Braintree::Customer.create.customer
192
- result = Braintree::PaymentMethod.create(
192
+ Braintree::PaymentMethod.create(
193
193
  :payment_method_nonce => generate_non_plaid_us_bank_account_nonce,
194
194
  :customer_id => customer.id,
195
195
  :options => {
@@ -260,7 +260,7 @@ describe Braintree::PaymentMethod do
260
260
  context "unverified token" do
261
261
  let(:payment_method) do
262
262
  customer = Braintree::Customer.create.customer
263
- result = Braintree::PaymentMethod.create(
263
+ Braintree::PaymentMethod.create(
264
264
  :payment_method_nonce => generate_non_plaid_us_bank_account_nonce,
265
265
  :customer_id => customer.id,
266
266
  :options => {
@@ -51,7 +51,7 @@ describe Braintree::PayPalAccount do
51
51
 
52
52
  it "does not return a different payment method type" do
53
53
  customer = Braintree::Customer.create!
54
- result = Braintree::CreditCard.create(
54
+ Braintree::CreditCard.create(
55
55
  :customer_id => customer.id,
56
56
  :number => Braintree::Test::CreditCardNumbers::Visa,
57
57
  :expiration_date => "05/2009",
@@ -171,7 +171,7 @@ describe Braintree::PayPalAccount do
171
171
  )
172
172
 
173
173
  updated_token = "UPDATED_TOKEN-" + rand(36**3).to_s(36)
174
- updated_result = Braintree::PayPalAccount.update(
174
+ Braintree::PayPalAccount.update(
175
175
  original_token,
176
176
  :token => updated_token,
177
177
  )
@@ -200,7 +200,7 @@ describe Braintree::PayPalAccount do
200
200
  :customer_id => customer.id,
201
201
  ).payment_method.token
202
202
 
203
- updated_result = Braintree::PayPalAccount.update(
203
+ Braintree::PayPalAccount.update(
204
204
  original_token,
205
205
  :options => {:make_default => true},
206
206
  )
@@ -218,7 +218,7 @@ describe Braintree::PayPalAccount do
218
218
  :consent_code => "consent-code",
219
219
  :token => first_token,
220
220
  )
221
- first_result = Braintree::PaymentMethod.create(
221
+ Braintree::PaymentMethod.create(
222
222
  :payment_method_nonce => first_nonce,
223
223
  :customer_id => customer.id,
224
224
  )
@@ -227,7 +227,7 @@ describe Braintree::PayPalAccount do
227
227
  :consent_code => "consent-code",
228
228
  :token => second_token,
229
229
  )
230
- second_result = Braintree::PaymentMethod.create(
230
+ Braintree::PaymentMethod.create(
231
231
  :payment_method_nonce => second_nonce,
232
232
  :customer_id => customer.id,
233
233
  )
@@ -256,7 +256,7 @@ describe Braintree::PayPalAccount do
256
256
  :customer_id => customer.id,
257
257
  )
258
258
 
259
- result = Braintree::PayPalAccount.delete(token)
259
+ Braintree::PayPalAccount.delete(token)
260
260
 
261
261
  expect do
262
262
  Braintree::PayPalAccount.find(token)
@@ -113,7 +113,6 @@ describe Braintree::Plan do
113
113
  end
114
114
 
115
115
  it "returns the updated plan if valid" do
116
- new_id = rand(36**9).to_s(36)
117
116
  plan = Braintree::Plan.update!(@plan.id,
118
117
  :name => "updated name",
119
118
  :price => 99.88,
@@ -53,8 +53,6 @@ describe Braintree::SepaDirectDebitAccount do
53
53
 
54
54
  context "subscriptions" do
55
55
  it "returns subscriptions associated with a SEPA direct debit account" do
56
- customer = Braintree::Customer.create!
57
-
58
56
  subscription1 = Braintree::Subscription.create(
59
57
  :payment_method_token => token,
60
58
  :plan_id => SpecHelper::TriallessPlan[:id],
@@ -136,7 +136,6 @@ describe Braintree::Subscription do
136
136
  end
137
137
 
138
138
  it "returns an error if the payment_method_nonce hasn't been vaulted" do
139
- customer = Braintree::Customer.create!
140
139
  result = Braintree::Subscription.create(
141
140
  :payment_method_nonce => Braintree::Test::Nonce::PayPalFuturePayment,
142
141
  :plan_id => SpecHelper::TriallessPlan[:id],
@@ -937,17 +936,17 @@ describe Braintree::Subscription do
937
936
 
938
937
  it "has validation errors on duplicate id" do
939
938
  duplicate_id = "new_id_#{rand(36**6).to_s(36)}"
940
- duplicate = Braintree::Subscription.create(
939
+ Braintree::Subscription.create(
941
940
  :payment_method_token => @credit_card.token,
942
941
  :plan_id => SpecHelper::TrialPlan[:id],
943
942
  :id => duplicate_id,
944
943
  )
945
- result = Braintree::Subscription.update(
944
+ duplicate = Braintree::Subscription.update(
946
945
  @subscription.id,
947
946
  :id => duplicate_id,
948
947
  )
949
- expect(result.success?).to eq(false)
950
- expect(result.errors.for(:subscription).on(:id)[0].code).to eq(Braintree::ErrorCodes::Subscription::IdIsInUse)
948
+ expect(duplicate.success?).to eq(false)
949
+ expect(duplicate.errors.for(:subscription).on(:id)[0].code).to eq(Braintree::ErrorCodes::Subscription::IdIsInUse)
951
950
  end
952
951
 
953
952
  it "cannot update a canceled subscription" do
@@ -1203,7 +1202,7 @@ describe Braintree::Subscription do
1203
1202
 
1204
1203
  it "returns a validation error if record not found" do
1205
1204
  expect {
1206
- r = Braintree::Subscription.cancel("noSuchSubscription")
1205
+ Braintree::Subscription.cancel("noSuchSubscription")
1207
1206
  }.to raise_error(Braintree::NotFoundError, 'subscription with id "noSuchSubscription" not found')
1208
1207
  end
1209
1208
 
@@ -640,7 +640,7 @@ describe Braintree::Transaction, "search" do
640
640
  context "invalid search" do
641
641
  it "raises an exception on invalid transaction type" do
642
642
  expect do
643
- collection = Braintree::Transaction.search do |search|
643
+ Braintree::Transaction.search do |search|
644
644
  search.customer_id.is "9171566"
645
645
  search.type.is "settled"
646
646
  end
@@ -649,7 +649,7 @@ describe Braintree::Transaction, "search" do
649
649
 
650
650
  it "raises an exception on invalid debit network" do
651
651
  expect do
652
- collection = Braintree::Transaction.search do |search|
652
+ Braintree::Transaction.search do |search|
653
653
  search.debit_network.is "invalid_network"
654
654
  end
655
655
  end.to raise_error(ArgumentError)
@@ -849,8 +849,6 @@ describe Braintree::Transaction, "search" do
849
849
 
850
850
  context "ach return response created at" do
851
851
  it "it finds records within date range of the custom field" do
852
- reason_code = "any_reason_code"
853
-
854
852
  date_search = Braintree::Transaction.search do |search|
855
853
  search.ach_return_responses_created_at.between(DateTime.now - 1.0, DateTime.now + 1.0)
856
854
  end
@@ -859,8 +857,6 @@ describe Braintree::Transaction, "search" do
859
857
  end
860
858
 
861
859
  it "it does not find records not within date range of the custom field" do
862
- reason_code = "any_reason_code"
863
-
864
860
  neg_date_search = Braintree::Transaction.search do |search|
865
861
  search.ach_return_responses_created_at.between(DateTime.now + 1.0, DateTime.now - 1.0)
866
862
  end
@@ -1488,7 +1484,7 @@ describe Braintree::Transaction, "search" do
1488
1484
  context "when the search times out" do
1489
1485
  it "raises a UnexpectedError" do
1490
1486
  expect {
1491
- collection = Braintree::Transaction.search do |search|
1487
+ Braintree::Transaction.search do |search|
1492
1488
  search.amount.is(-10)
1493
1489
  end
1494
1490
  }.to raise_error(Braintree::UnexpectedError)
@@ -2098,7 +2098,6 @@ describe Braintree::Transaction do
2098
2098
  end
2099
2099
 
2100
2100
  it "can create a transaction with a params nonce with PayPal account params" do
2101
- customer = Braintree::Customer.create!
2102
2101
  nonce = nonce_for_new_payment_method(
2103
2102
  :paypal_account => {
2104
2103
  :consent_code => "PAYPAL_CONSENT_CODE",
@@ -2174,7 +2173,6 @@ describe Braintree::Transaction do
2174
2173
  end
2175
2174
 
2176
2175
  it "can create a transaction with a fake apple pay nonce" do
2177
- customer = Braintree::Customer.create!
2178
2176
  result = Braintree::Transaction.create(
2179
2177
  :type => "sale",
2180
2178
  :amount => Braintree::Test::TransactionAmounts::Authorize,
@@ -2203,7 +2201,6 @@ describe Braintree::Transaction do
2203
2201
  end
2204
2202
 
2205
2203
  it "can create a vaulted transaction with a fake apple pay nonce" do
2206
- customer = Braintree::Customer.create!
2207
2204
  result = Braintree::Transaction.create(
2208
2205
  :type => "sale",
2209
2206
  :amount => Braintree::Test::TransactionAmounts::Authorize,
@@ -2225,7 +2222,6 @@ describe Braintree::Transaction do
2225
2222
  end
2226
2223
 
2227
2224
  it "can create a transaction with a fake google pay proxy card nonce" do
2228
- customer = Braintree::Customer.create!
2229
2225
  result = Braintree::Transaction.create(
2230
2226
  :type => "sale",
2231
2227
  :amount => Braintree::Test::TransactionAmounts::Authorize,
@@ -2257,7 +2253,6 @@ describe Braintree::Transaction do
2257
2253
  end
2258
2254
 
2259
2255
  it "can create a vaulted transaction with a fake google pay proxy card nonce" do
2260
- customer = Braintree::Customer.create!
2261
2256
  result = Braintree::Transaction.create(
2262
2257
  :type => "sale",
2263
2258
  :amount => Braintree::Test::TransactionAmounts::Authorize,
@@ -2282,7 +2277,6 @@ describe Braintree::Transaction do
2282
2277
  end
2283
2278
 
2284
2279
  it "can create a transaction with a fake google pay network token nonce" do
2285
- customer = Braintree::Customer.create!
2286
2280
  result = Braintree::Transaction.create(
2287
2281
  :type => "sale",
2288
2282
  :amount => Braintree::Test::TransactionAmounts::Authorize,
@@ -2335,7 +2329,6 @@ describe Braintree::Transaction do
2335
2329
  end
2336
2330
 
2337
2331
  it "can create a transaction with an unknown nonce" do
2338
- customer = Braintree::Customer.create!
2339
2332
  result = Braintree::Transaction.create(
2340
2333
  :type => "sale",
2341
2334
  :amount => Braintree::Test::TransactionAmounts::Authorize,
@@ -2364,7 +2357,6 @@ describe Braintree::Transaction do
2364
2357
  end
2365
2358
 
2366
2359
  it "can create a transaction with a payee id" do
2367
- customer = Braintree::Customer.create!
2368
2360
  nonce = nonce_for_new_payment_method(
2369
2361
  :paypal_account => {
2370
2362
  :consent_code => "PAYPAL_CONSENT_CODE",
@@ -2388,7 +2380,6 @@ describe Braintree::Transaction do
2388
2380
  end
2389
2381
 
2390
2382
  it "can create a transaction with a payee id in the options params" do
2391
- customer = Braintree::Customer.create!
2392
2383
  nonce = nonce_for_new_payment_method(
2393
2384
  :paypal_account => {
2394
2385
  :consent_code => "PAYPAL_CONSENT_CODE",
@@ -2413,7 +2404,6 @@ describe Braintree::Transaction do
2413
2404
  end
2414
2405
 
2415
2406
  it "can create a transaction with a payee id in options.paypal" do
2416
- customer = Braintree::Customer.create!
2417
2407
  nonce = nonce_for_new_payment_method(
2418
2408
  :paypal_account => {
2419
2409
  :consent_code => "PAYPAL_CONSENT_CODE",
@@ -2439,7 +2429,6 @@ describe Braintree::Transaction do
2439
2429
  end
2440
2430
 
2441
2431
  it "can create a transaction with a payee email" do
2442
- customer = Braintree::Customer.create!
2443
2432
  nonce = nonce_for_new_payment_method(
2444
2433
  :paypal_account => {
2445
2434
  :consent_code => "PAYPAL_CONSENT_CODE",
@@ -2463,7 +2452,6 @@ describe Braintree::Transaction do
2463
2452
  end
2464
2453
 
2465
2454
  it "can create a transaction with a payee email in the options params" do
2466
- customer = Braintree::Customer.create!
2467
2455
  nonce = nonce_for_new_payment_method(
2468
2456
  :paypal_account => {
2469
2457
  :consent_code => "PAYPAL_CONSENT_CODE",
@@ -2488,7 +2476,6 @@ describe Braintree::Transaction do
2488
2476
  end
2489
2477
 
2490
2478
  it "can create a transaction with a payee email in options.paypal" do
2491
- customer = Braintree::Customer.create!
2492
2479
  nonce = nonce_for_new_payment_method(
2493
2480
  :paypal_account => {
2494
2481
  :consent_code => "PAYPAL_CONSENT_CODE",
@@ -2514,7 +2501,6 @@ describe Braintree::Transaction do
2514
2501
  end
2515
2502
 
2516
2503
  it "can create a transaction with a paypal custom field" do
2517
- customer = Braintree::Customer.create!
2518
2504
  nonce = nonce_for_new_payment_method(
2519
2505
  :paypal_account => {
2520
2506
  :consent_code => "PAYPAL_CONSENT_CODE",
@@ -2540,7 +2526,6 @@ describe Braintree::Transaction do
2540
2526
  end
2541
2527
 
2542
2528
  it "can create a transaction with a paypal description" do
2543
- customer = Braintree::Customer.create!
2544
2529
  nonce = nonce_for_new_payment_method(
2545
2530
  :paypal_account => {
2546
2531
  :consent_code => "PAYPAL_CONSENT_CODE",
@@ -2566,7 +2551,6 @@ describe Braintree::Transaction do
2566
2551
  end
2567
2552
 
2568
2553
  it "can create a transaction with STC supplementary data" do
2569
- customer = Braintree::Customer.create!
2570
2554
  nonce = nonce_for_new_payment_method(
2571
2555
  :paypal_account => {
2572
2556
  :consent_code => "PAYPAL_CONSENT_CODE",
@@ -3300,7 +3284,7 @@ describe Braintree::Transaction do
3300
3284
  )
3301
3285
 
3302
3286
  config = Braintree::Configuration.instantiate
3303
- response = config.http.put("#{config.base_merchant_path}/transactions/#{transaction.id}/settle")
3287
+ config.http.put("#{config.base_merchant_path}/transactions/#{transaction.id}/settle")
3304
3288
  transaction = Braintree::Transaction.find(transaction.id)
3305
3289
 
3306
3290
  result = Braintree::Transaction.refund(
@@ -3390,7 +3374,7 @@ describe Braintree::Transaction do
3390
3374
  },
3391
3375
  )
3392
3376
  config = Braintree::Configuration.instantiate
3393
- response = config.http.put("#{config.base_merchant_path}/transactions/#{transaction.id}/settle")
3377
+ config.http.put("#{config.base_merchant_path}/transactions/#{transaction.id}/settle")
3394
3378
  result = Braintree::Transaction.refund(transaction.id, :amount => "2046.00")
3395
3379
  expect(result.success?).to eq(false)
3396
3380
  expect(result.transaction.id).to match(/^\w{6,}$/)
@@ -3411,7 +3395,7 @@ describe Braintree::Transaction do
3411
3395
  },
3412
3396
  )
3413
3397
  config = Braintree::Configuration.instantiate
3414
- response = config.http.put("#{config.base_merchant_path}/transactions/#{transaction.id}/settle")
3398
+ config.http.put("#{config.base_merchant_path}/transactions/#{transaction.id}/settle")
3415
3399
  result = Braintree::Transaction.refund(transaction.id, :amount => "2009.00")
3416
3400
  expect(result.success?).to eq(false)
3417
3401
  expect(result.transaction.id).to match(/^\w{6,}$/)
@@ -7256,7 +7240,7 @@ describe Braintree::Transaction do
7256
7240
  )
7257
7241
 
7258
7242
  config = Braintree::Configuration.instantiate
7259
- response = config.http.put("#{config.base_merchant_path}/transactions/#{transaction.id}/settle")
7243
+ config.http.put("#{config.base_merchant_path}/transactions/#{transaction.id}/settle")
7260
7244
  Braintree::Transaction.find(transaction.id)
7261
7245
  end
7262
7246
 
@@ -7287,8 +7271,8 @@ describe Braintree::Transaction do
7287
7271
  )
7288
7272
 
7289
7273
  config = Braintree::Configuration.instantiate
7290
- response = config.http.put("#{config.base_merchant_path}/transactions/#{transaction.id}/settle")
7291
- response = config.http.put("#{config.base_merchant_path}/transactions/#{transaction.id}/escrow")
7274
+ config.http.put("#{config.base_merchant_path}/transactions/#{transaction.id}/settle")
7275
+ config.http.put("#{config.base_merchant_path}/transactions/#{transaction.id}/escrow")
7292
7276
  Braintree::Transaction.find(transaction.id)
7293
7277
  end
7294
7278
 
@@ -14,7 +14,7 @@ module Braintree
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
19
  :created_at => "bad_time",
20
20
  )
@@ -3,7 +3,6 @@ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
3
3
  describe Braintree::Digest do
4
4
  describe "self.hexdigest" do
5
5
  it "returns the sha1 hmac of the input string (test case 6 from RFC 2202)" do
6
- original_key = Braintree::Configuration.private_key
7
6
  private_key = "\xaa" * 80
8
7
  data = "Test Using Larger Than Block-Size Key - Hash Key First"
9
8
  expect(Braintree::Digest.hexdigest(private_key, data)).to eq("aa4ae5e15272d00e95705637ce8a3b55ed402112")
@@ -5,7 +5,7 @@ describe Braintree::ErrorResult do
5
5
  it "ignores data other than params, errors, and message" do
6
6
  # so that we can add more data into the response in the future without breaking the client lib
7
7
  expect do
8
- result = Braintree::ErrorResult.new(
8
+ Braintree::ErrorResult.new(
9
9
  :gateway,
10
10
  :params => "params",
11
11
  :errors => {:errors => []},
@@ -4,7 +4,7 @@ describe Braintree::PayPalAccount do
4
4
  describe "self.create" do
5
5
  it "raises an exception if attributes contain an invalid key" do
6
6
  expect do
7
- result = Braintree::PayPalAccount.create(
7
+ Braintree::PayPalAccount.create(
8
8
  :invalid_key => "bad stuff",
9
9
  :options => {
10
10
  :invalid_option => "bad option",
@@ -200,8 +200,8 @@ describe Braintree::Transaction do
200
200
  },
201
201
  )
202
202
 
203
- expect(transaction.three_d_secure_info.enrolled).to eq("Y")
204
203
  expect(transaction.three_d_secure_info.status).to eq("authenticate_successful")
204
+ expect(transaction.three_d_secure_info.enrolled).to eq("Y")
205
205
  expect(transaction.three_d_secure_info.liability_shifted).to eq(true)
206
206
  expect(transaction.three_d_secure_info.liability_shift_possible).to eq(true)
207
207
  end
@@ -258,7 +258,7 @@ describe Braintree::Transaction do
258
258
  end
259
259
 
260
260
  it "handles receiving custom as an empty string" do
261
- transaction = Braintree::Transaction._new(
261
+ Braintree::Transaction._new(
262
262
  :gateway,
263
263
  :custom => "\n ",
264
264
  )
@@ -168,6 +168,22 @@ describe Braintree::WebhookNotification do
168
168
  expect(dispute.kind).to eq(Braintree::Dispute::Kind::Chargeback)
169
169
  end
170
170
 
171
+ it "builds a sample notification for a dispute under_review webhook" do
172
+ sample_notification = Braintree::WebhookTesting.sample_notification(
173
+ Braintree::WebhookNotification::Kind::DisputeUnderReview,
174
+ dispute_id,
175
+ )
176
+
177
+ notification = Braintree::WebhookNotification.parse(sample_notification[:bt_signature], sample_notification[:bt_payload])
178
+
179
+ expect(notification.kind).to eq(Braintree::WebhookNotification::Kind::DisputeUnderReview)
180
+
181
+ dispute = notification.dispute
182
+ expect(dispute.status).to eq(Braintree::Dispute::Status::UnderReview)
183
+ expect(dispute.id).to eq(dispute_id)
184
+ expect(dispute.kind).to eq(Braintree::Dispute::Kind::Chargeback)
185
+ end
186
+
171
187
  it "builds a sample notification for a dispute won webhook" do
172
188
  sample_notification = Braintree::WebhookTesting.sample_notification(
173
189
  Braintree::WebhookNotification::Kind::DisputeWon,
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: braintree
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.18.0
4
+ version: 4.20.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Braintree
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-01-09 00:00:00.000000000 Z
11
+ date: 2024-03-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: builder