braintree 2.95.0 → 2.96.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.
- checksums.yaml +4 -4
 - data/lib/braintree.rb +1 -0
 - data/lib/braintree/gateway.rb +2 -0
 - data/lib/braintree/ideal_payment.rb +2 -0
 - data/lib/braintree/ideal_payment_gateway.rb +2 -0
 - data/lib/braintree/local_payment_completed.rb +3 -0
 - data/lib/braintree/payment_instrument_type.rb +1 -1
 - data/lib/braintree/paypal_account.rb +1 -0
 - data/lib/braintree/test/nonce.rb +2 -0
 - data/lib/braintree/transaction.rb +5 -0
 - data/lib/braintree/transaction/android_pay_details.rb +10 -0
 - data/lib/braintree/transaction/apple_pay_details.rb +10 -0
 - data/lib/braintree/transaction/ideal_payment_details.rb +2 -0
 - data/lib/braintree/transaction/local_payment_details.rb +17 -0
 - data/lib/braintree/transaction/paypal_details.rb +3 -1
 - data/lib/braintree/version.rb +1 -1
 - data/lib/braintree/webhook_notification.rb +4 -1
 - data/lib/braintree/webhook_testing_gateway.rb +35 -0
 - data/spec/integration/braintree/paypal_account_spec.rb +1 -0
 - data/spec/integration/braintree/transaction_search_spec.rb +15 -0
 - data/spec/integration/braintree/transaction_spec.rb +43 -49
 - data/spec/spec_helper.rb +0 -1
 - data/spec/unit/braintree/local_payment_completed_spec.rb +12 -0
 - data/spec/unit/braintree/webhook_notification_spec.rb +24 -40
 - metadata +4 -5
 - data/spec/integration/braintree/ideal_payment_spec.rb +0 -87
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA256:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 05a36d5ea5b0870293e17db6baa85393f97e0a8aa8ba495ee34ec2f30d64f29a
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: d7291802e13bfdecf5e3258b0f9cac7bb15654fd4f6249faf0e96444de55576e
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: d5bee8dcbe48df9d0c752d150dd3c18ae3c4232a31aa3e850ac5ab1a8ef4a85f292515b96489dbf736a2bde1d4780bb1f5f1edfb4eeaeacde6b983e8c72d4825
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 5065e4ad5cde4db02b5bfdee866425a8d837604ff50b69d4c1f721915e6483cec41ef8ff9e53f03c3ce2290d1e27f13a346c01bb9a277ffd0b179284ed4fba9d
         
     | 
    
        data/lib/braintree.rb
    CHANGED
    
    | 
         @@ -76,6 +76,7 @@ require "braintree/ideal_payment" 
     | 
|
| 
       76 
76 
     | 
    
         
             
            require "braintree/ideal_payment_gateway"
         
     | 
| 
       77 
77 
     | 
    
         
             
            require "braintree/transaction/ideal_payment_details"
         
     | 
| 
       78 
78 
     | 
    
         
             
            require "braintree/local_payment_completed"
         
     | 
| 
      
 79 
     | 
    
         
            +
            require "braintree/transaction/local_payment_details"
         
     | 
| 
       79 
80 
     | 
    
         
             
            require "braintree/merchant"
         
     | 
| 
       80 
81 
     | 
    
         
             
            require "braintree/merchant_gateway"
         
     | 
| 
       81 
82 
     | 
    
         
             
            require "braintree/merchant_account"
         
     | 
    
        data/lib/braintree/gateway.rb
    CHANGED
    
    | 
         @@ -72,6 +72,8 @@ module Braintree 
     | 
|
| 
       72 
72 
     | 
    
         
             
                  UsBankAccountGateway.new(self)
         
     | 
| 
       73 
73 
     | 
    
         
             
                end
         
     | 
| 
       74 
74 
     | 
    
         | 
| 
      
 75 
     | 
    
         
            +
                # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
         
     | 
| 
      
 76 
     | 
    
         
            +
                # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
         
     | 
| 
       75 
77 
     | 
    
         
             
                def ideal_payment
         
     | 
| 
       76 
78 
     | 
    
         
             
                  IdealPaymentGateway.new(self)
         
     | 
| 
       77 
79 
     | 
    
         
             
                end
         
     | 
| 
         @@ -1,4 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Braintree
         
     | 
| 
      
 2 
     | 
    
         
            +
              # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
         
     | 
| 
      
 3 
     | 
    
         
            +
              # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
         
     | 
| 
       2 
4 
     | 
    
         
             
              class IdealPayment
         
     | 
| 
       3 
5 
     | 
    
         
             
                include BaseModule
         
     | 
| 
       4 
6 
     | 
    
         | 
| 
         @@ -1,4 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Braintree
         
     | 
| 
      
 2 
     | 
    
         
            +
              # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
         
     | 
| 
      
 3 
     | 
    
         
            +
              # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
         
     | 
| 
       2 
4 
     | 
    
         
             
              class IdealPaymentGateway
         
     | 
| 
       3 
5 
     | 
    
         
             
                def initialize(gateway)
         
     | 
| 
       4 
6 
     | 
    
         
             
                  @gateway = gateway
         
     | 
| 
         @@ -4,9 +4,12 @@ module Braintree 
     | 
|
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
                attr_reader :payment_id
         
     | 
| 
       6 
6 
     | 
    
         
             
                attr_reader :payer_id
         
     | 
| 
      
 7 
     | 
    
         
            +
                attr_reader :payment_method_nonce
         
     | 
| 
      
 8 
     | 
    
         
            +
                attr_reader :transaction
         
     | 
| 
       7 
9 
     | 
    
         | 
| 
       8 
10 
     | 
    
         
             
                def initialize(attributes) # :nodoc:
         
     | 
| 
       9 
11 
     | 
    
         
             
                  set_instance_variables_from_hash(attributes)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @transaction = Transaction._new(Configuration.gateway, transaction)
         
     | 
| 
       10 
13 
     | 
    
         
             
                end
         
     | 
| 
       11 
14 
     | 
    
         | 
| 
       12 
15 
     | 
    
         
             
                class << self
         
     | 
| 
         @@ -8,9 +8,9 @@ module Braintree 
     | 
|
| 
       8 
8 
     | 
    
         
             
                AndroidPayCard = 'android_pay_card'
         
     | 
| 
       9 
9 
     | 
    
         
             
                VenmoAccount = 'venmo_account'
         
     | 
| 
       10 
10 
     | 
    
         
             
                UsBankAccount = 'us_bank_account'
         
     | 
| 
       11 
     | 
    
         
            -
                IdealPayment = 'ideal_payment'
         
     | 
| 
       12 
11 
     | 
    
         
             
                VisaCheckoutCard = 'visa_checkout_card'
         
     | 
| 
       13 
12 
     | 
    
         
             
                MasterpassCard = 'masterpass_card'
         
     | 
| 
       14 
13 
     | 
    
         
             
                SamsungPayCard = 'samsung_pay_card'
         
     | 
| 
      
 14 
     | 
    
         
            +
                LocalPayment = 'local_payment'
         
     | 
| 
       15 
15 
     | 
    
         
             
              end
         
     | 
| 
       16 
16 
     | 
    
         
             
            end
         
     | 
    
        data/lib/braintree/test/nonce.rb
    CHANGED
    
    | 
         @@ -6,6 +6,7 @@ module Braintree 
     | 
|
| 
       6 
6 
     | 
    
         
             
                  PayPalOneTimePayment = "fake-paypal-one-time-nonce"
         
     | 
| 
       7 
7 
     | 
    
         
             
                  PayPalFuturePayment = "fake-paypal-future-nonce"
         
     | 
| 
       8 
8 
     | 
    
         
             
                  PayPalBillingAgreement = "fake-paypal-billing-agreement-nonce"
         
     | 
| 
      
 9 
     | 
    
         
            +
                  LocalPayment = "fake-local-payment-nonce"
         
     | 
| 
       9 
10 
     | 
    
         
             
                  ApplePayVisa = "fake-apple-pay-visa-nonce"
         
     | 
| 
       10 
11 
     | 
    
         
             
                  ApplePayMasterCard = "fake-apple-pay-mastercard-nonce"
         
     | 
| 
       11 
12 
     | 
    
         
             
                  ApplePayAmEx = "fake-apple-pay-amex-nonce"
         
     | 
| 
         @@ -18,6 +19,7 @@ module Braintree 
     | 
|
| 
       18 
19 
     | 
    
         
             
                  AndroidPayAmEx = "fake-android-pay-amex-nonce"
         
     | 
| 
       19 
20 
     | 
    
         
             
                  AmexExpressCheckout = "fake-amex-express-checkout-nonce"
         
     | 
| 
       20 
21 
     | 
    
         
             
                  VenmoAccount = "fake-venmo-account-nonce"
         
     | 
| 
      
 22 
     | 
    
         
            +
                  VenmoAccountTokenIssuanceError = "fake-token-issuance-error-venmo-account-nonce"
         
     | 
| 
       21 
23 
     | 
    
         
             
                  TransactableVisa = "fake-valid-visa-nonce"
         
     | 
| 
       22 
24 
     | 
    
         
             
                  TransactableAmEx = "fake-valid-amex-nonce"
         
     | 
| 
       23 
25 
     | 
    
         
             
                  TransactableMasterCard = "fake-valid-mastercard-nonce"
         
     | 
| 
         @@ -26,6 +26,7 @@ module Braintree 
     | 
|
| 
       26 
26 
     | 
    
         
             
                  Duplicate    = "duplicate"
         
     | 
| 
       27 
27 
     | 
    
         
             
                  Fraud        = "fraud"
         
     | 
| 
       28 
28 
     | 
    
         
             
                  ThreeDSecure = "three_d_secure"
         
     | 
| 
      
 29 
     | 
    
         
            +
                  TokenIssuance = "token_issuance"
         
     | 
| 
       29 
30 
     | 
    
         
             
                  Unrecognized = "unrecognized"
         
     | 
| 
       30 
31 
     | 
    
         
             
                end
         
     | 
| 
       31 
32 
     | 
    
         | 
| 
         @@ -108,7 +109,10 @@ module Braintree 
     | 
|
| 
       108 
109 
     | 
    
         
             
                attr_reader :facilitator_details
         
     | 
| 
       109 
110 
     | 
    
         
             
                attr_reader :gateway_rejection_reason
         
     | 
| 
       110 
111 
     | 
    
         
             
                attr_reader :id
         
     | 
| 
      
 112 
     | 
    
         
            +
                # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
         
     | 
| 
      
 113 
     | 
    
         
            +
                # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
         
     | 
| 
       111 
114 
     | 
    
         
             
                attr_reader :ideal_payment_details
         
     | 
| 
      
 115 
     | 
    
         
            +
                attr_reader :local_payment_details
         
     | 
| 
       112 
116 
     | 
    
         
             
                attr_reader :masterpass_card_details
         
     | 
| 
       113 
117 
     | 
    
         
             
                attr_reader :merchant_account_id
         
     | 
| 
       114 
118 
     | 
    
         
             
                attr_reader :network_transaction_id
         
     | 
| 
         @@ -282,6 +286,7 @@ module Braintree 
     | 
|
| 
       282 
286 
     | 
    
         
             
                  @status_history = attributes[:status_history] ? attributes[:status_history].map { |s| StatusDetails.new(s) } : []
         
     | 
| 
       283 
287 
     | 
    
         
             
                  @tax_amount = Util.to_big_decimal(tax_amount)
         
     | 
| 
       284 
288 
     | 
    
         
             
                  @descriptor = Descriptor.new(@descriptor)
         
     | 
| 
      
 289 
     | 
    
         
            +
                  @local_payment_details = LocalPaymentDetails.new(@local_payment)
         
     | 
| 
       285 
290 
     | 
    
         
             
                  @paypal_details = PayPalDetails.new(@paypal)
         
     | 
| 
       286 
291 
     | 
    
         
             
                  @apple_pay_details = ApplePayDetails.new(@apple_pay)
         
     | 
| 
       287 
292 
     | 
    
         
             
                  @android_pay_details = AndroidPayDetails.new(@android_pay_card)
         
     | 
| 
         @@ -15,6 +15,16 @@ module Braintree 
     | 
|
| 
       15 
15 
     | 
    
         
             
                  attr_reader :token
         
     | 
| 
       16 
16 
     | 
    
         
             
                  attr_reader :virtual_card_last_4
         
     | 
| 
       17 
17 
     | 
    
         
             
                  attr_reader :virtual_card_type
         
     | 
| 
      
 18 
     | 
    
         
            +
                  attr_reader :prepaid
         
     | 
| 
      
 19 
     | 
    
         
            +
                  attr_reader :healthcare
         
     | 
| 
      
 20 
     | 
    
         
            +
                  attr_reader :debit
         
     | 
| 
      
 21 
     | 
    
         
            +
                  attr_reader :durbin_regulated
         
     | 
| 
      
 22 
     | 
    
         
            +
                  attr_reader :commercial
         
     | 
| 
      
 23 
     | 
    
         
            +
                  attr_reader :payroll
         
     | 
| 
      
 24 
     | 
    
         
            +
                  attr_reader :issuing_bank
         
     | 
| 
      
 25 
     | 
    
         
            +
                  attr_reader :country_of_issuance
         
     | 
| 
      
 26 
     | 
    
         
            +
                  attr_reader :product_id
         
     | 
| 
      
 27 
     | 
    
         
            +
                  attr_reader :global_id
         
     | 
| 
       18 
28 
     | 
    
         | 
| 
       19 
29 
     | 
    
         
             
                  def initialize(attributes)
         
     | 
| 
       20 
30 
     | 
    
         
             
                    set_instance_variables_from_hash attributes unless attributes.nil?
         
     | 
| 
         @@ -12,6 +12,16 @@ module Braintree 
     | 
|
| 
       12 
12 
     | 
    
         
             
                  attr_reader :payment_instrument_name
         
     | 
| 
       13 
13 
     | 
    
         
             
                  attr_reader :source_description
         
     | 
| 
       14 
14 
     | 
    
         
             
                  attr_reader :token
         
     | 
| 
      
 15 
     | 
    
         
            +
                  attr_reader :prepaid
         
     | 
| 
      
 16 
     | 
    
         
            +
                  attr_reader :healthcare
         
     | 
| 
      
 17 
     | 
    
         
            +
                  attr_reader :debit
         
     | 
| 
      
 18 
     | 
    
         
            +
                  attr_reader :durbin_regulated
         
     | 
| 
      
 19 
     | 
    
         
            +
                  attr_reader :commercial
         
     | 
| 
      
 20 
     | 
    
         
            +
                  attr_reader :payroll
         
     | 
| 
      
 21 
     | 
    
         
            +
                  attr_reader :issuing_bank
         
     | 
| 
      
 22 
     | 
    
         
            +
                  attr_reader :country_of_issuance
         
     | 
| 
      
 23 
     | 
    
         
            +
                  attr_reader :product_id
         
     | 
| 
      
 24 
     | 
    
         
            +
                  attr_reader :global_id
         
     | 
| 
       15 
25 
     | 
    
         | 
| 
       16 
26 
     | 
    
         
             
                  def initialize(attributes)
         
     | 
| 
       17 
27 
     | 
    
         
             
                    set_instance_variables_from_hash attributes unless attributes.nil?
         
     | 
| 
         @@ -1,4 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Braintree
         
     | 
| 
      
 2 
     | 
    
         
            +
              # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
         
     | 
| 
      
 3 
     | 
    
         
            +
              # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
         
     | 
| 
       2 
4 
     | 
    
         
             
              class Transaction
         
     | 
| 
       3 
5 
     | 
    
         
             
                class IdealPaymentDetails # :nodoc:
         
     | 
| 
       4 
6 
     | 
    
         
             
                  include BaseModule
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Braintree
         
     | 
| 
      
 2 
     | 
    
         
            +
              class Transaction
         
     | 
| 
      
 3 
     | 
    
         
            +
                class LocalPaymentDetails
         
     | 
| 
      
 4 
     | 
    
         
            +
                  include BaseModule
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                  attr_reader :custom_field
         
     | 
| 
      
 7 
     | 
    
         
            +
                  attr_reader :description
         
     | 
| 
      
 8 
     | 
    
         
            +
                  attr_reader :funding_source
         
     | 
| 
      
 9 
     | 
    
         
            +
                  attr_reader :payer_id
         
     | 
| 
      
 10 
     | 
    
         
            +
                  attr_reader :payment_id
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                  def initialize(attributes)
         
     | 
| 
      
 13 
     | 
    
         
            +
                    set_instance_variables_from_hash attributes unless attributes.nil?
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -9,14 +9,16 @@ module Braintree 
     | 
|
| 
       9 
9 
     | 
    
         
             
                  attr_reader :debug_id
         
     | 
| 
       10 
10 
     | 
    
         
             
                  attr_reader :description
         
     | 
| 
       11 
11 
     | 
    
         
             
                  attr_reader :image_url
         
     | 
| 
       12 
     | 
    
         
            -
                  attr_reader :payee_id
         
     | 
| 
       13 
12 
     | 
    
         
             
                  attr_reader :payee_email
         
     | 
| 
      
 13 
     | 
    
         
            +
                  attr_reader :payee_id
         
     | 
| 
       14 
14 
     | 
    
         
             
                  attr_reader :payer_email
         
     | 
| 
       15 
15 
     | 
    
         
             
                  attr_reader :payer_first_name
         
     | 
| 
       16 
16 
     | 
    
         
             
                  attr_reader :payer_id
         
     | 
| 
       17 
17 
     | 
    
         
             
                  attr_reader :payer_last_name
         
     | 
| 
       18 
18 
     | 
    
         
             
                  attr_reader :payer_status
         
     | 
| 
       19 
19 
     | 
    
         
             
                  attr_reader :payment_id
         
     | 
| 
      
 20 
     | 
    
         
            +
                  attr_reader :refund_from_transaction_fee_amount
         
     | 
| 
      
 21 
     | 
    
         
            +
                  attr_reader :refund_from_transaction_fee_currency_iso_code
         
     | 
| 
       20 
22 
     | 
    
         
             
                  attr_reader :refund_id
         
     | 
| 
       21 
23 
     | 
    
         
             
                  attr_reader :seller_protection_status
         
     | 
| 
       22 
24 
     | 
    
         
             
                  attr_reader :token
         
     | 
    
        data/lib/braintree/version.rb
    CHANGED
    
    
| 
         @@ -33,6 +33,8 @@ module Braintree 
     | 
|
| 
       33 
33 
     | 
    
         | 
| 
       34 
34 
     | 
    
         
             
                  AccountUpdaterDailyReport = "account_updater_daily_report"
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
      
 36 
     | 
    
         
            +
                  # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
         
     | 
| 
      
 37 
     | 
    
         
            +
                  # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
         
     | 
| 
       36 
38 
     | 
    
         
             
                  IdealPaymentComplete = "ideal_payment_complete"
         
     | 
| 
       37 
39 
     | 
    
         
             
                  IdealPaymentFailed = "ideal_payment_failed"
         
     | 
| 
       38 
40 
     | 
    
         | 
| 
         @@ -46,6 +48,7 @@ module Braintree 
     | 
|
| 
       46 
48 
     | 
    
         
             
                  GrantorUpdatedGrantedPaymentMethod = "grantor_updated_granted_payment_method"
         
     | 
| 
       47 
49 
     | 
    
         
             
                  RecipientUpdatedGrantedPaymentMethod = "recipient_updated_granted_payment_method"
         
     | 
| 
       48 
50 
     | 
    
         
             
                  GrantedPaymentInstrumentRevoked = "granted_payment_instrument_revoked"
         
     | 
| 
      
 51 
     | 
    
         
            +
                  PaymentMethodRevokedByCustomer = "payment_method_revoked_by_customer"
         
     | 
| 
       49 
52 
     | 
    
         | 
| 
       50 
53 
     | 
    
         
             
                  LocalPaymentCompleted = "local_payment_completed"
         
     | 
| 
       51 
54 
     | 
    
         
             
                end
         
     | 
| 
         @@ -91,7 +94,7 @@ module Braintree 
     | 
|
| 
       91 
94 
     | 
    
         
             
                  @connected_merchant_status_transitioned = ConnectedMerchantStatusTransitioned._new(@subject[:connected_merchant_status_transitioned]) if @subject.has_key?(:connected_merchant_status_transitioned)
         
     | 
| 
       92 
95 
     | 
    
         
             
                  @connected_merchant_paypal_status_changed = ConnectedMerchantPayPalStatusChanged._new(@subject[:connected_merchant_paypal_status_changed]) if @subject.has_key?(:connected_merchant_paypal_status_changed)
         
     | 
| 
       93 
96 
     | 
    
         
             
                  @granted_payment_instrument_update = GrantedPaymentInstrumentUpdate._new(@subject[:granted_payment_instrument_update]) if @subject.has_key?(:granted_payment_instrument_update)
         
     | 
| 
       94 
     | 
    
         
            -
                  @revoked_payment_method_metadata = RevokedPaymentMethodMetadata._new(gateway, @subject) if  
     | 
| 
      
 97 
     | 
    
         
            +
                  @revoked_payment_method_metadata = RevokedPaymentMethodMetadata._new(gateway, @subject) if [Kind::GrantedPaymentInstrumentRevoked, Kind::PaymentMethodRevokedByCustomer].include?(@kind)
         
     | 
| 
       95 
98 
     | 
    
         
             
                  @local_payment_completed = LocalPaymentCompleted._new(@subject[:local_payment]) if @subject.has_key?(:local_payment)
         
     | 
| 
       96 
99 
     | 
    
         
             
                end
         
     | 
| 
       97 
100 
     | 
    
         | 
| 
         @@ -72,8 +72,12 @@ module Braintree 
     | 
|
| 
       72 
72 
     | 
    
         
             
                    _auth_status_transitioned_sample_xml(id)
         
     | 
| 
       73 
73 
     | 
    
         
             
                  when Braintree::WebhookNotification::Kind::ConnectedMerchantPayPalStatusChanged
         
     | 
| 
       74 
74 
     | 
    
         
             
                    _auth_paypal_status_changed_sample_xml(id)
         
     | 
| 
      
 75 
     | 
    
         
            +
                    # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
         
     | 
| 
      
 76 
     | 
    
         
            +
                    # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
         
     | 
| 
       75 
77 
     | 
    
         
             
                  when Braintree::WebhookNotification::Kind::IdealPaymentComplete
         
     | 
| 
       76 
78 
     | 
    
         
             
                    _ideal_payment_complete_sample_xml(id)
         
     | 
| 
      
 79 
     | 
    
         
            +
                    # NEXT_MAJOR_VERSION Remove this class as legacy Ideal has been removed/disabled in the Braintree Gateway
         
     | 
| 
      
 80 
     | 
    
         
            +
                    # DEPRECATED If you're looking to accept iDEAL as a payment method contact accounts@braintreepayments.com for a solution.
         
     | 
| 
       77 
81 
     | 
    
         
             
                  when Braintree::WebhookNotification::Kind::IdealPaymentFailed
         
     | 
| 
       78 
82 
     | 
    
         
             
                    _ideal_payment_failed_sample_xml(id)
         
     | 
| 
       79 
83 
     | 
    
         
             
                  # NEXT_MAJOR_VERSION remove GrantedPaymentInstrumentUpdate
         
     | 
| 
         @@ -83,6 +87,8 @@ module Braintree 
     | 
|
| 
       83 
87 
     | 
    
         
             
                    _granted_payment_instrument_update_sample_xml(id)
         
     | 
| 
       84 
88 
     | 
    
         
             
                  when Braintree::WebhookNotification::Kind::RecipientUpdatedGrantedPaymentMethod
         
     | 
| 
       85 
89 
     | 
    
         
             
                    _granted_payment_instrument_update_sample_xml(id)
         
     | 
| 
      
 90 
     | 
    
         
            +
                  when Braintree::WebhookNotification::Kind::PaymentMethodRevokedByCustomer
         
     | 
| 
      
 91 
     | 
    
         
            +
                    _payment_method_revoked_by_customer_sample_xml(id)
         
     | 
| 
       86 
92 
     | 
    
         
             
                  when Braintree::WebhookNotification::Kind::LocalPaymentCompleted
         
     | 
| 
       87 
93 
     | 
    
         
             
                    _local_payment_completed_sample_xml(id)
         
     | 
| 
       88 
94 
     | 
    
         
             
                  else
         
     | 
| 
         @@ -669,11 +675,40 @@ module Braintree 
     | 
|
| 
       669 
675 
     | 
    
         
             
                  XML
         
     | 
| 
       670 
676 
     | 
    
         
             
                end
         
     | 
| 
       671 
677 
     | 
    
         | 
| 
      
 678 
     | 
    
         
            +
                def _payment_method_revoked_by_customer_sample_xml(id)
         
     | 
| 
      
 679 
     | 
    
         
            +
                  <<-XML
         
     | 
| 
      
 680 
     | 
    
         
            +
                    <paypal-account>
         
     | 
| 
      
 681 
     | 
    
         
            +
                      <billing-agreement-id>a-billing-agreement-id</billing-agreement-id>
         
     | 
| 
      
 682 
     | 
    
         
            +
                      <created-at type="datetime">2019-01-01T12:00:00Z</created-at>
         
     | 
| 
      
 683 
     | 
    
         
            +
                      <customer-id>a-customer-id</customer-id>
         
     | 
| 
      
 684 
     | 
    
         
            +
                      <default type="boolean">true</default>
         
     | 
| 
      
 685 
     | 
    
         
            +
                      <email>name@email.com</email>
         
     | 
| 
      
 686 
     | 
    
         
            +
                      <global-id>cGF5bWVudG1ldGhvZF9jaDZieXNz</global-id>
         
     | 
| 
      
 687 
     | 
    
         
            +
                      <image-url>https://assets.braintreegateway.com/payment_method_logo/paypal.png?environment=test</image-url>
         
     | 
| 
      
 688 
     | 
    
         
            +
                      <subscriptions type="array"/>
         
     | 
| 
      
 689 
     | 
    
         
            +
                      <token>#{id}</token>
         
     | 
| 
      
 690 
     | 
    
         
            +
                      <updated-at type="datetime">2019-01-02T12:00:00Z</updated-at>
         
     | 
| 
      
 691 
     | 
    
         
            +
                      <is-channel-initiated nil="true"/>
         
     | 
| 
      
 692 
     | 
    
         
            +
                      <payer-id>a-payer-id</payer-id>
         
     | 
| 
      
 693 
     | 
    
         
            +
                      <payer-info nil="true"/>
         
     | 
| 
      
 694 
     | 
    
         
            +
                      <limited-use-order-id nil="true"/>
         
     | 
| 
      
 695 
     | 
    
         
            +
                      <revoked-at type="datetime">2019-01-02T12:00:00Z</revoked-at>
         
     | 
| 
      
 696 
     | 
    
         
            +
                    </paypal-account>
         
     | 
| 
      
 697 
     | 
    
         
            +
                  XML
         
     | 
| 
      
 698 
     | 
    
         
            +
                end
         
     | 
| 
      
 699 
     | 
    
         
            +
             
     | 
| 
       672 
700 
     | 
    
         
             
                def _local_payment_completed_sample_xml(id)
         
     | 
| 
       673 
701 
     | 
    
         
             
                  <<-XML
         
     | 
| 
       674 
702 
     | 
    
         
             
                    <local-payment>
         
     | 
| 
       675 
703 
     | 
    
         
             
                      <payment-id>PAY-XYZ123</payment-id>
         
     | 
| 
       676 
704 
     | 
    
         
             
                      <payer-id>ABCPAYER</payer-id>
         
     | 
| 
      
 705 
     | 
    
         
            +
                      <payment-method-nonce>ee257d98-de40-47e8-96b3-a6954ea7a9a4</payment-method-nonce>
         
     | 
| 
      
 706 
     | 
    
         
            +
                      <transaction>
         
     | 
| 
      
 707 
     | 
    
         
            +
                        <id>#{id}</id>
         
     | 
| 
      
 708 
     | 
    
         
            +
                        <status>authorized</status>
         
     | 
| 
      
 709 
     | 
    
         
            +
                        <amount>49.99</amount>
         
     | 
| 
      
 710 
     | 
    
         
            +
                        <order-id>order4567</order-id>
         
     | 
| 
      
 711 
     | 
    
         
            +
                      </transaction>
         
     | 
| 
       677 
712 
     | 
    
         
             
                    </local-payment>
         
     | 
| 
       678 
713 
     | 
    
         
             
                  XML
         
     | 
| 
       679 
714 
     | 
    
         
             
                end
         
     | 
| 
         @@ -25,6 +25,7 @@ describe Braintree::PayPalAccount do 
     | 
|
| 
       25 
25 
     | 
    
         
             
                  paypal_account.created_at.should_not be_nil
         
     | 
| 
       26 
26 
     | 
    
         
             
                  paypal_account.updated_at.should_not be_nil
         
     | 
| 
       27 
27 
     | 
    
         
             
                  paypal_account.customer_id.should == customer.id
         
     | 
| 
      
 28 
     | 
    
         
            +
                  paypal_account.revoked_at.should be_nil
         
     | 
| 
       28 
29 
     | 
    
         
             
                end
         
     | 
| 
       29 
30 
     | 
    
         | 
| 
       30 
31 
     | 
    
         
             
                it "returns a PayPalAccount with a billing agreement id" do
         
     | 
| 
         @@ -345,6 +345,21 @@ describe Braintree::Transaction, "search" do 
     | 
|
| 
       345 
345 
     | 
    
         
             
                    collection.first.payment_instrument_type.should == Braintree::PaymentInstrumentType::PayPalAccount
         
     | 
| 
       346 
346 
     | 
    
         
             
                  end
         
     | 
| 
       347 
347 
     | 
    
         | 
| 
      
 348 
     | 
    
         
            +
                  it "searches by payment instrument type LocalPaymentDetail" do
         
     | 
| 
      
 349 
     | 
    
         
            +
                    transaction = Braintree::Transaction.sale!(
         
     | 
| 
      
 350 
     | 
    
         
            +
                      :amount => Braintree::Test::TransactionAmounts::Authorize,
         
     | 
| 
      
 351 
     | 
    
         
            +
                      :payment_method_nonce => Braintree::Test::Nonce::LocalPayment
         
     | 
| 
      
 352 
     | 
    
         
            +
                    )
         
     | 
| 
      
 353 
     | 
    
         
            +
             
     | 
| 
      
 354 
     | 
    
         
            +
                    collection = Braintree::Transaction.search do |search|
         
     | 
| 
      
 355 
     | 
    
         
            +
                      search.id.is transaction.id
         
     | 
| 
      
 356 
     | 
    
         
            +
                      search.payment_instrument_type.in ["LocalPaymentDetail"]
         
     | 
| 
      
 357 
     | 
    
         
            +
                    end
         
     | 
| 
      
 358 
     | 
    
         
            +
             
     | 
| 
      
 359 
     | 
    
         
            +
                    collection.first.id.should == transaction.id
         
     | 
| 
      
 360 
     | 
    
         
            +
                    collection.first.payment_instrument_type.should == Braintree::PaymentInstrumentType::LocalPayment
         
     | 
| 
      
 361 
     | 
    
         
            +
                  end
         
     | 
| 
      
 362 
     | 
    
         
            +
             
     | 
| 
       348 
363 
     | 
    
         
             
                  it "searches by payment instrument type ApplePay" do
         
     | 
| 
       349 
364 
     | 
    
         
             
                    transaction = Braintree::Transaction.sale!(
         
     | 
| 
       350 
365 
     | 
    
         
             
                      :amount => Braintree::Test::TransactionAmounts::Authorize,
         
     | 
| 
         @@ -201,7 +201,7 @@ describe Braintree::Transaction do 
     | 
|
| 
       201 
201 
     | 
    
         
             
                      result.success?.should be(false)
         
     | 
| 
       202 
202 
     | 
    
         
             
                      invalid_folio = Braintree::ErrorCodes::Transaction::Industry::Lodging::FolioNumberIsInvalid
         
     | 
| 
       203 
203 
     | 
    
         
             
                      check_out_date_must_follow_check_in_date = Braintree::ErrorCodes::Transaction::Industry::Lodging::CheckOutDateMustFollowCheckInDate
         
     | 
| 
       204 
     | 
    
         
            -
                      result.errors.for(:transaction).for(:industry).map { |e| e.code }.sort.should  
     | 
| 
      
 204 
     | 
    
         
            +
                      result.errors.for(:transaction).for(:industry).map { |e| e.code }.sort.should include *[invalid_folio, check_out_date_must_follow_check_in_date]
         
     | 
| 
       205 
205 
     | 
    
         
             
                    end
         
     | 
| 
       206 
206 
     | 
    
         
             
                  end
         
     | 
| 
       207 
207 
     | 
    
         | 
| 
         @@ -766,6 +766,16 @@ describe Braintree::Transaction do 
     | 
|
| 
       766 
766 
     | 
    
         
             
                    result.success?.should == false
         
     | 
| 
       767 
767 
     | 
    
         
             
                    result.transaction.gateway_rejection_reason.should == Braintree::Transaction::GatewayRejectionReason::Fraud
         
     | 
| 
       768 
768 
     | 
    
         
             
                  end
         
     | 
| 
      
 769 
     | 
    
         
            +
             
     | 
| 
      
 770 
     | 
    
         
            +
                  it "exposes the token issuance gateway rejection reason" do
         
     | 
| 
      
 771 
     | 
    
         
            +
                    result = Braintree::Transaction.sale(
         
     | 
| 
      
 772 
     | 
    
         
            +
                      :amount => Braintree::Test::TransactionAmounts::Authorize,
         
     | 
| 
      
 773 
     | 
    
         
            +
                      :merchant_account_id => SpecHelper::FakeVenmoAccountMerchantAccountId,
         
     | 
| 
      
 774 
     | 
    
         
            +
                      :payment_method_nonce => Braintree::Test::Nonce::VenmoAccountTokenIssuanceError,
         
     | 
| 
      
 775 
     | 
    
         
            +
                    )
         
     | 
| 
      
 776 
     | 
    
         
            +
                    result.success?.should == false
         
     | 
| 
      
 777 
     | 
    
         
            +
                    result.transaction.gateway_rejection_reason.should == Braintree::Transaction::GatewayRejectionReason::TokenIssuance
         
     | 
| 
      
 778 
     | 
    
         
            +
                  end
         
     | 
| 
       769 
779 
     | 
    
         
             
                end
         
     | 
| 
       770 
780 
     | 
    
         | 
| 
       771 
781 
     | 
    
         
             
                it "accepts credit card expiration month and expiration year" do
         
     | 
| 
         @@ -1575,6 +1585,13 @@ describe Braintree::Transaction do 
     | 
|
| 
       1575 
1585 
     | 
    
         
             
                    apple_pay_details.cardholder_name.should_not be_nil
         
     | 
| 
       1576 
1586 
     | 
    
         
             
                    apple_pay_details.image_url.should_not be_nil
         
     | 
| 
       1577 
1587 
     | 
    
         
             
                    apple_pay_details.token.should be_nil
         
     | 
| 
      
 1588 
     | 
    
         
            +
                    apple_pay_details.prepaid.should_not be_nil
         
     | 
| 
      
 1589 
     | 
    
         
            +
                    apple_pay_details.healthcare.should_not be_nil
         
     | 
| 
      
 1590 
     | 
    
         
            +
                    apple_pay_details.debit.should_not be_nil
         
     | 
| 
      
 1591 
     | 
    
         
            +
                    apple_pay_details.durbin_regulated.should_not be_nil
         
     | 
| 
      
 1592 
     | 
    
         
            +
                    apple_pay_details.commercial.should_not be_nil
         
     | 
| 
      
 1593 
     | 
    
         
            +
                    apple_pay_details.payroll.should_not be_nil
         
     | 
| 
      
 1594 
     | 
    
         
            +
                    apple_pay_details.product_id.should_not be_nil
         
     | 
| 
       1578 
1595 
     | 
    
         
             
                  end
         
     | 
| 
       1579 
1596 
     | 
    
         | 
| 
       1580 
1597 
     | 
    
         
             
                  it "can create a vaulted transaction with a fake apple pay nonce" do
         
     | 
| 
         @@ -1620,6 +1637,13 @@ describe Braintree::Transaction do 
     | 
|
| 
       1620 
1637 
     | 
    
         
             
                    android_pay_details.google_transaction_id.should == "google_transaction_id"
         
     | 
| 
       1621 
1638 
     | 
    
         
             
                    android_pay_details.image_url.should_not be_nil
         
     | 
| 
       1622 
1639 
     | 
    
         
             
                    android_pay_details.token.should be_nil
         
     | 
| 
      
 1640 
     | 
    
         
            +
                    android_pay_details.prepaid.should_not be_nil
         
     | 
| 
      
 1641 
     | 
    
         
            +
                    android_pay_details.healthcare.should_not be_nil
         
     | 
| 
      
 1642 
     | 
    
         
            +
                    android_pay_details.debit.should_not be_nil
         
     | 
| 
      
 1643 
     | 
    
         
            +
                    android_pay_details.durbin_regulated.should_not be_nil
         
     | 
| 
      
 1644 
     | 
    
         
            +
                    android_pay_details.commercial.should_not be_nil
         
     | 
| 
      
 1645 
     | 
    
         
            +
                    android_pay_details.payroll.should_not be_nil
         
     | 
| 
      
 1646 
     | 
    
         
            +
                    android_pay_details.product_id.should_not be_nil
         
     | 
| 
       1623 
1647 
     | 
    
         
             
                  end
         
     | 
| 
       1624 
1648 
     | 
    
         | 
| 
       1625 
1649 
     | 
    
         
             
                  it "can create a vaulted transaction with a fake android pay proxy card nonce" do
         
     | 
| 
         @@ -2098,7 +2122,7 @@ describe Braintree::Transaction do 
     | 
|
| 
       2098 
2122 
     | 
    
         | 
| 
       2099 
2123 
     | 
    
         
             
                  it "returns an error for transaction with three_d_secure_pass_thru when processor settings do not support 3DS for card type" do
         
     | 
| 
       2100 
2124 
     | 
    
         
             
                    result = Braintree::Transaction.create(
         
     | 
| 
       2101 
     | 
    
         
            -
                      :merchant_account_id => " 
     | 
| 
      
 2125 
     | 
    
         
            +
                      :merchant_account_id => "heartland_ma",
         
     | 
| 
       2102 
2126 
     | 
    
         
             
                      :type => "sale",
         
     | 
| 
       2103 
2127 
     | 
    
         
             
                      :amount => Braintree::Test::TransactionAmounts::Authorize,
         
     | 
| 
       2104 
2128 
     | 
    
         
             
                      :credit_card => {
         
     | 
| 
         @@ -2239,6 +2263,21 @@ describe Braintree::Transaction do 
     | 
|
| 
       2239 
2263 
     | 
    
         
             
                    end
         
     | 
| 
       2240 
2264 
     | 
    
         
             
                  end
         
     | 
| 
       2241 
2265 
     | 
    
         | 
| 
      
 2266 
     | 
    
         
            +
                  context "local payments" do
         
     | 
| 
      
 2267 
     | 
    
         
            +
                    it "can create a local payment transaction with a nonce" do
         
     | 
| 
      
 2268 
     | 
    
         
            +
                      result = Braintree::Transaction.create(
         
     | 
| 
      
 2269 
     | 
    
         
            +
                        :type => "sale",
         
     | 
| 
      
 2270 
     | 
    
         
            +
                        :amount => Braintree::Test::TransactionAmounts::Authorize,
         
     | 
| 
      
 2271 
     | 
    
         
            +
                        :payment_method_nonce => Braintree::Test::Nonce::LocalPayment
         
     | 
| 
      
 2272 
     | 
    
         
            +
                      )
         
     | 
| 
      
 2273 
     | 
    
         
            +
             
     | 
| 
      
 2274 
     | 
    
         
            +
                      result.should be_success
         
     | 
| 
      
 2275 
     | 
    
         
            +
                      result.transaction.local_payment_details.should_not be_nil
         
     | 
| 
      
 2276 
     | 
    
         
            +
                      result.transaction.local_payment_details.funding_source.should_not be_nil
         
     | 
| 
      
 2277 
     | 
    
         
            +
                      result.transaction.local_payment_details.payment_id.should_not be_nil
         
     | 
| 
      
 2278 
     | 
    
         
            +
                    end
         
     | 
| 
      
 2279 
     | 
    
         
            +
                  end
         
     | 
| 
      
 2280 
     | 
    
         
            +
             
     | 
| 
       2242 
2281 
     | 
    
         
             
                  context "onetime" do
         
     | 
| 
       2243 
2282 
     | 
    
         
             
                    it "can create a paypal transaction with a nonce" do
         
     | 
| 
       2244 
2283 
     | 
    
         
             
                      result = Braintree::Transaction.create(
         
     | 
| 
         @@ -2439,53 +2478,6 @@ describe Braintree::Transaction do 
     | 
|
| 
       2439 
2478 
     | 
    
         
             
                  end
         
     | 
| 
       2440 
2479 
     | 
    
         
             
                end
         
     | 
| 
       2441 
2480 
     | 
    
         | 
| 
       2442 
     | 
    
         
            -
                context "ideal payment nonce" do
         
     | 
| 
       2443 
     | 
    
         
            -
                  it "returns a successful result for tansacting on an ideal payment nonce" do
         
     | 
| 
       2444 
     | 
    
         
            -
                    valid_ideal_payment_id = generate_valid_ideal_payment_nonce
         
     | 
| 
       2445 
     | 
    
         
            -
                    result = Braintree::Transaction.create(
         
     | 
| 
       2446 
     | 
    
         
            -
                      :type => "sale",
         
     | 
| 
       2447 
     | 
    
         
            -
                      :order_id => SpecHelper::DefaultOrderId,
         
     | 
| 
       2448 
     | 
    
         
            -
                      :amount => Braintree::Test::TransactionAmounts::Authorize,
         
     | 
| 
       2449 
     | 
    
         
            -
                      :merchant_account_id => SpecHelper::IdealMerchantAccountId,
         
     | 
| 
       2450 
     | 
    
         
            -
                      :payment_method_nonce => valid_ideal_payment_id,
         
     | 
| 
       2451 
     | 
    
         
            -
                      :options => {
         
     | 
| 
       2452 
     | 
    
         
            -
                        :submit_for_settlement => true,
         
     | 
| 
       2453 
     | 
    
         
            -
                      }
         
     | 
| 
       2454 
     | 
    
         
            -
                    )
         
     | 
| 
       2455 
     | 
    
         
            -
                    result.success?.should == true
         
     | 
| 
       2456 
     | 
    
         
            -
                    result.transaction.id.should =~ /^\w{6,}$/
         
     | 
| 
       2457 
     | 
    
         
            -
                    result.transaction.type.should == "sale"
         
     | 
| 
       2458 
     | 
    
         
            -
                    result.transaction.payment_instrument_type.should == Braintree::PaymentInstrumentType::IdealPayment
         
     | 
| 
       2459 
     | 
    
         
            -
                    result.transaction.amount.should == BigDecimal(Braintree::Test::TransactionAmounts::Authorize)
         
     | 
| 
       2460 
     | 
    
         
            -
                    result.transaction.status.should == Braintree::Transaction::Status::Settled
         
     | 
| 
       2461 
     | 
    
         
            -
                    result.transaction.ideal_payment_details.ideal_payment_id.should =~ /^idealpayment_\w{6,}$/
         
     | 
| 
       2462 
     | 
    
         
            -
                    result.transaction.ideal_payment_details.ideal_transaction_id.should =~ /^\d{16,}$/
         
     | 
| 
       2463 
     | 
    
         
            -
                    result.transaction.ideal_payment_details.image_url.should start_with("https://")
         
     | 
| 
       2464 
     | 
    
         
            -
                    result.transaction.ideal_payment_details.masked_iban.should_not be_empty
         
     | 
| 
       2465 
     | 
    
         
            -
                    result.transaction.ideal_payment_details.bic.should_not be_empty
         
     | 
| 
       2466 
     | 
    
         
            -
                  end
         
     | 
| 
       2467 
     | 
    
         
            -
             
     | 
| 
       2468 
     | 
    
         
            -
                  it "returns a failure if ideal payment is not complete" do
         
     | 
| 
       2469 
     | 
    
         
            -
                    expired_payment_amount = "3.00"
         
     | 
| 
       2470 
     | 
    
         
            -
             
     | 
| 
       2471 
     | 
    
         
            -
                    incomplete_payment_id = generate_valid_ideal_payment_nonce(expired_payment_amount)
         
     | 
| 
       2472 
     | 
    
         
            -
             
     | 
| 
       2473 
     | 
    
         
            -
                    result = Braintree::Transaction.create(
         
     | 
| 
       2474 
     | 
    
         
            -
                      :type => "sale",
         
     | 
| 
       2475 
     | 
    
         
            -
                      :order_id => SpecHelper::DefaultOrderId,
         
     | 
| 
       2476 
     | 
    
         
            -
                      :amount => expired_payment_amount,
         
     | 
| 
       2477 
     | 
    
         
            -
                      :merchant_account_id => SpecHelper::IdealMerchantAccountId,
         
     | 
| 
       2478 
     | 
    
         
            -
                      :payment_method_nonce => incomplete_payment_id,
         
     | 
| 
       2479 
     | 
    
         
            -
                      :options => {
         
     | 
| 
       2480 
     | 
    
         
            -
                        :submit_for_settlement => true,
         
     | 
| 
       2481 
     | 
    
         
            -
                      }
         
     | 
| 
       2482 
     | 
    
         
            -
                    )
         
     | 
| 
       2483 
     | 
    
         
            -
             
     | 
| 
       2484 
     | 
    
         
            -
                    result.success?.should == false
         
     | 
| 
       2485 
     | 
    
         
            -
                    result.errors.for(:transaction).on(:payment_method_nonce)[0].code.should == Braintree::ErrorCodes::Transaction::IdealPaymentNotComplete
         
     | 
| 
       2486 
     | 
    
         
            -
                  end
         
     | 
| 
       2487 
     | 
    
         
            -
                end
         
     | 
| 
       2488 
     | 
    
         
            -
             
     | 
| 
       2489 
2481 
     | 
    
         
             
                context "line items" do
         
     | 
| 
       2490 
2482 
     | 
    
         
             
                  it "allows creation with empty line items and returns none" do
         
     | 
| 
       2491 
2483 
     | 
    
         
             
                    result = Braintree::Transaction.create(
         
     | 
| 
         @@ -5863,6 +5855,8 @@ describe Braintree::Transaction do 
     | 
|
| 
       5863 
5855 
     | 
    
         
             
                    transaction.paypal_details.refund_id.should_not be_nil
         
     | 
| 
       5864 
5856 
     | 
    
         
             
                    transaction.paypal_details.transaction_fee_amount.should_not be_nil
         
     | 
| 
       5865 
5857 
     | 
    
         
             
                    transaction.paypal_details.transaction_fee_currency_iso_code.should_not be_nil
         
     | 
| 
      
 5858 
     | 
    
         
            +
                    transaction.paypal_details.refund_from_transaction_fee_amount.should_not be_nil
         
     | 
| 
      
 5859 
     | 
    
         
            +
                    transaction.paypal_details.refund_from_transaction_fee_currency_iso_code.should_not be_nil
         
     | 
| 
       5866 
5860 
     | 
    
         
             
                  end
         
     | 
| 
       5867 
5861 
     | 
    
         
             
                end
         
     | 
| 
       5868 
5862 
     | 
    
         
             
              end
         
     | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    | 
         @@ -41,7 +41,6 @@ unless defined?(SPEC_HELPER_LOADED) 
     | 
|
| 
       41 
41 
     | 
    
         
             
                FakeVenmoAccountMerchantAccountId = "fake_first_data_venmo_account"
         
     | 
| 
       42 
42 
     | 
    
         
             
                UsBankMerchantAccountId = "us_bank_merchant_account"
         
     | 
| 
       43 
43 
     | 
    
         
             
                AnotherUsBankMerchantAccountId = "another_us_bank_merchant_account"
         
     | 
| 
       44 
     | 
    
         
            -
                IdealMerchantAccountId = "ideal_merchant_account"
         
     | 
| 
       45 
44 
     | 
    
         
             
                AdyenMerchantAccountId = "adyen_ma"
         
     | 
| 
       46 
45 
     | 
    
         
             
                HiperBRLMerchantAccountId = "hiper_brl"
         
     | 
| 
       47 
46 
     | 
    
         | 
| 
         @@ -14,11 +14,23 @@ describe Braintree::LocalPaymentCompleted do 
     | 
|
| 
       14 
14 
     | 
    
         
             
                  params = {
         
     | 
| 
       15 
15 
     | 
    
         
             
                    payment_id: "a-payment-id",
         
     | 
| 
       16 
16 
     | 
    
         
             
                    payer_id: "a-payer-id",
         
     | 
| 
      
 17 
     | 
    
         
            +
                    payment_method_nonce: "a-nonce",
         
     | 
| 
      
 18 
     | 
    
         
            +
                    transaction: {
         
     | 
| 
      
 19 
     | 
    
         
            +
                      id: "a-transaction-id",
         
     | 
| 
      
 20 
     | 
    
         
            +
                      amount: "31.00",
         
     | 
| 
      
 21 
     | 
    
         
            +
                      order_id: "an-order-id",
         
     | 
| 
      
 22 
     | 
    
         
            +
                      status: Braintree::Transaction::Status::Authorized,
         
     | 
| 
      
 23 
     | 
    
         
            +
                    },
         
     | 
| 
       17 
24 
     | 
    
         
             
                  }
         
     | 
| 
       18 
25 
     | 
    
         
             
                  local_payment_completed = Braintree::LocalPaymentCompleted._new(params)
         
     | 
| 
       19 
26 
     | 
    
         | 
| 
       20 
27 
     | 
    
         
             
                  local_payment_completed.payment_id.should eq("a-payment-id")
         
     | 
| 
       21 
28 
     | 
    
         
             
                  local_payment_completed.payer_id.should eq("a-payer-id")
         
     | 
| 
      
 29 
     | 
    
         
            +
                  local_payment_completed.payment_method_nonce.should eq("a-nonce")
         
     | 
| 
      
 30 
     | 
    
         
            +
                  local_payment_completed.transaction.id.should eq("a-transaction-id")
         
     | 
| 
      
 31 
     | 
    
         
            +
                  local_payment_completed.transaction.amount.should eq(31.0)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  local_payment_completed.transaction.order_id.should eq("an-order-id")
         
     | 
| 
      
 33 
     | 
    
         
            +
                  local_payment_completed.transaction.status.should eq(Braintree::Transaction::Status::Authorized)
         
     | 
| 
       22 
34 
     | 
    
         
             
                end
         
     | 
| 
       23 
35 
     | 
    
         
             
              end
         
     | 
| 
       24 
36 
     | 
    
         
             
            end
         
     | 
| 
         @@ -305,44 +305,6 @@ describe Braintree::WebhookNotification do 
     | 
|
| 
       305 
305 
     | 
    
         
             
                  end
         
     | 
| 
       306 
306 
     | 
    
         
             
                end
         
     | 
| 
       307 
307 
     | 
    
         | 
| 
       308 
     | 
    
         
            -
                context "ideal payments" do
         
     | 
| 
       309 
     | 
    
         
            -
                  it "builds a sample notification for a ideal_payment_complete complete webhook" do
         
     | 
| 
       310 
     | 
    
         
            -
                    sample_notification = Braintree::WebhookTesting.sample_notification(
         
     | 
| 
       311 
     | 
    
         
            -
                      Braintree::WebhookNotification::Kind::IdealPaymentComplete,
         
     | 
| 
       312 
     | 
    
         
            -
                      "my_id"
         
     | 
| 
       313 
     | 
    
         
            -
                    )
         
     | 
| 
       314 
     | 
    
         
            -
             
     | 
| 
       315 
     | 
    
         
            -
                    notification = Braintree::WebhookNotification.parse(sample_notification[:bt_signature], sample_notification[:bt_payload])
         
     | 
| 
       316 
     | 
    
         
            -
                    notification.kind.should == Braintree::WebhookNotification::Kind::IdealPaymentComplete
         
     | 
| 
       317 
     | 
    
         
            -
                    ideal_payment = notification.ideal_payment
         
     | 
| 
       318 
     | 
    
         
            -
             
     | 
| 
       319 
     | 
    
         
            -
                    ideal_payment.id.should == "my_id"
         
     | 
| 
       320 
     | 
    
         
            -
                    ideal_payment.status.should == "COMPLETE"
         
     | 
| 
       321 
     | 
    
         
            -
                    ideal_payment.order_id.should == "ORDERABC"
         
     | 
| 
       322 
     | 
    
         
            -
                    ideal_payment.amount.should == "10.00"
         
     | 
| 
       323 
     | 
    
         
            -
                    ideal_payment.approval_url.should == "https://example.com"
         
     | 
| 
       324 
     | 
    
         
            -
                    ideal_payment.ideal_transaction_id.should == "1234567890"
         
     | 
| 
       325 
     | 
    
         
            -
                  end
         
     | 
| 
       326 
     | 
    
         
            -
             
     | 
| 
       327 
     | 
    
         
            -
                  it "builds a sample notification for a ideal_payment_failed webhook" do
         
     | 
| 
       328 
     | 
    
         
            -
                    sample_notification = Braintree::WebhookTesting.sample_notification(
         
     | 
| 
       329 
     | 
    
         
            -
                      Braintree::WebhookNotification::Kind::IdealPaymentFailed,
         
     | 
| 
       330 
     | 
    
         
            -
                      "my_id"
         
     | 
| 
       331 
     | 
    
         
            -
                    )
         
     | 
| 
       332 
     | 
    
         
            -
             
     | 
| 
       333 
     | 
    
         
            -
                    notification = Braintree::WebhookNotification.parse(sample_notification[:bt_signature], sample_notification[:bt_payload])
         
     | 
| 
       334 
     | 
    
         
            -
                    notification.kind.should == Braintree::WebhookNotification::Kind::IdealPaymentFailed
         
     | 
| 
       335 
     | 
    
         
            -
                    ideal_payment = notification.ideal_payment
         
     | 
| 
       336 
     | 
    
         
            -
             
     | 
| 
       337 
     | 
    
         
            -
                    ideal_payment.id.should == "my_id"
         
     | 
| 
       338 
     | 
    
         
            -
                    ideal_payment.status.should == "FAILED"
         
     | 
| 
       339 
     | 
    
         
            -
                    ideal_payment.order_id.should == "ORDERABC"
         
     | 
| 
       340 
     | 
    
         
            -
                    ideal_payment.amount.should == "10.00"
         
     | 
| 
       341 
     | 
    
         
            -
                    ideal_payment.approval_url.should == "https://example.com"
         
     | 
| 
       342 
     | 
    
         
            -
                    ideal_payment.ideal_transaction_id.should == "1234567890"
         
     | 
| 
       343 
     | 
    
         
            -
                  end
         
     | 
| 
       344 
     | 
    
         
            -
                end
         
     | 
| 
       345 
     | 
    
         
            -
             
     | 
| 
       346 
308 
     | 
    
         
             
                context "merchant account" do
         
     | 
| 
       347 
309 
     | 
    
         
             
                  it "builds a sample notification for a merchant account approved webhook" do
         
     | 
| 
       348 
310 
     | 
    
         
             
                    sample_notification = Braintree::WebhookTesting.sample_notification(
         
     | 
| 
         @@ -604,6 +566,23 @@ describe Braintree::WebhookNotification do 
     | 
|
| 
       604 
566 
     | 
    
         
             
                end
         
     | 
| 
       605 
567 
     | 
    
         
             
              end
         
     | 
| 
       606 
568 
     | 
    
         | 
| 
      
 569 
     | 
    
         
            +
              context "payment_method_revoked_by_customer" do
         
     | 
| 
      
 570 
     | 
    
         
            +
                it "builds a sample notification for a payment_method_revoked_by_customer webhook" do
         
     | 
| 
      
 571 
     | 
    
         
            +
                  sample_notification = Braintree::WebhookTesting.sample_notification(
         
     | 
| 
      
 572 
     | 
    
         
            +
                    Braintree::WebhookNotification::Kind::PaymentMethodRevokedByCustomer,
         
     | 
| 
      
 573 
     | 
    
         
            +
                    "my_payment_method_token"
         
     | 
| 
      
 574 
     | 
    
         
            +
                  )
         
     | 
| 
      
 575 
     | 
    
         
            +
             
     | 
| 
      
 576 
     | 
    
         
            +
                  notification = Braintree::WebhookNotification.parse(sample_notification[:bt_signature], sample_notification[:bt_payload])
         
     | 
| 
      
 577 
     | 
    
         
            +
                  notification.kind.should == Braintree::WebhookNotification::Kind::PaymentMethodRevokedByCustomer
         
     | 
| 
      
 578 
     | 
    
         
            +
             
     | 
| 
      
 579 
     | 
    
         
            +
                  metadata = notification.revoked_payment_method_metadata
         
     | 
| 
      
 580 
     | 
    
         
            +
                  metadata.token.should == "my_payment_method_token"
         
     | 
| 
      
 581 
     | 
    
         
            +
                  metadata.revoked_payment_method.class.should == Braintree::PayPalAccount
         
     | 
| 
      
 582 
     | 
    
         
            +
                  metadata.revoked_payment_method.revoked_at.should_not be_nil
         
     | 
| 
      
 583 
     | 
    
         
            +
                end
         
     | 
| 
      
 584 
     | 
    
         
            +
              end
         
     | 
| 
      
 585 
     | 
    
         
            +
             
     | 
| 
       607 
586 
     | 
    
         
             
              context "local_payment_completed" do
         
     | 
| 
       608 
587 
     | 
    
         
             
                it "builds a sample notification for a local_payment webhook" do
         
     | 
| 
       609 
588 
     | 
    
         
             
                  sample_notification = Braintree::WebhookTesting.sample_notification(
         
     | 
| 
         @@ -615,8 +594,13 @@ describe Braintree::WebhookNotification do 
     | 
|
| 
       615 
594 
     | 
    
         
             
                  notification.kind.should == Braintree::WebhookNotification::Kind::LocalPaymentCompleted
         
     | 
| 
       616 
595 
     | 
    
         | 
| 
       617 
596 
     | 
    
         
             
                  local_payment_completed = notification.local_payment_completed
         
     | 
| 
       618 
     | 
    
         
            -
                  local_payment_completed.payment_id.should ==  
     | 
| 
       619 
     | 
    
         
            -
                  local_payment_completed.payer_id.should ==  
     | 
| 
      
 597 
     | 
    
         
            +
                  local_payment_completed.payment_id.should == "PAY-XYZ123"
         
     | 
| 
      
 598 
     | 
    
         
            +
                  local_payment_completed.payer_id.should == "ABCPAYER"
         
     | 
| 
      
 599 
     | 
    
         
            +
                  local_payment_completed.payment_method_nonce.should == "ee257d98-de40-47e8-96b3-a6954ea7a9a4"
         
     | 
| 
      
 600 
     | 
    
         
            +
                  local_payment_completed.transaction.id.should == "my_id"
         
     | 
| 
      
 601 
     | 
    
         
            +
                  local_payment_completed.transaction.status.should == Braintree::Transaction::Status::Authorized
         
     | 
| 
      
 602 
     | 
    
         
            +
                  local_payment_completed.transaction.amount.should == 49.99
         
     | 
| 
      
 603 
     | 
    
         
            +
                  local_payment_completed.transaction.order_id.should == "order4567"
         
     | 
| 
       620 
604 
     | 
    
         
             
                end
         
     | 
| 
       621 
605 
     | 
    
         
             
              end
         
     | 
| 
       622 
606 
     | 
    
         | 
    
        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: 2. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 2.96.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Braintree
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2019- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2019-05-20 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: builder
         
     | 
| 
         @@ -151,6 +151,7 @@ files: 
     | 
|
| 
       151 
151 
     | 
    
         
             
            - lib/braintree/transaction/customer_details.rb
         
     | 
| 
       152 
152 
     | 
    
         
             
            - lib/braintree/transaction/disbursement_details.rb
         
     | 
| 
       153 
153 
     | 
    
         
             
            - lib/braintree/transaction/ideal_payment_details.rb
         
     | 
| 
      
 154 
     | 
    
         
            +
            - lib/braintree/transaction/local_payment_details.rb
         
     | 
| 
       154 
155 
     | 
    
         
             
            - lib/braintree/transaction/masterpass_card_details.rb
         
     | 
| 
       155 
156 
     | 
    
         
             
            - lib/braintree/transaction/paypal_details.rb
         
     | 
| 
       156 
157 
     | 
    
         
             
            - lib/braintree/transaction/samsung_pay_card_details.rb
         
     | 
| 
         @@ -213,7 +214,6 @@ files: 
     | 
|
| 
       213 
214 
     | 
    
         
             
            - spec/integration/braintree/error_codes_spec.rb
         
     | 
| 
       214 
215 
     | 
    
         
             
            - spec/integration/braintree/graphql_client_spec.rb
         
     | 
| 
       215 
216 
     | 
    
         
             
            - spec/integration/braintree/http_spec.rb
         
     | 
| 
       216 
     | 
    
         
            -
            - spec/integration/braintree/ideal_payment_spec.rb
         
     | 
| 
       217 
217 
     | 
    
         
             
            - spec/integration/braintree/masterpass_card_spec.rb
         
     | 
| 
       218 
218 
     | 
    
         
             
            - spec/integration/braintree/merchant_account_spec.rb
         
     | 
| 
       219 
219 
     | 
    
         
             
            - spec/integration/braintree/merchant_spec.rb
         
     | 
| 
         @@ -318,8 +318,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       318 
318 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       319 
319 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       320 
320 
     | 
    
         
             
            requirements: []
         
     | 
| 
       321 
     | 
    
         
            -
             
     | 
| 
       322 
     | 
    
         
            -
            rubygems_version: 2.7.9
         
     | 
| 
      
 321 
     | 
    
         
            +
            rubygems_version: 3.0.3
         
     | 
| 
       323 
322 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       324 
323 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       325 
324 
     | 
    
         
             
            summary: Braintree Gateway Ruby Client Library
         
     | 
| 
         @@ -1,87 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
         
     | 
| 
       2 
     | 
    
         
            -
            require File.expand_path(File.dirname(__FILE__) + "/client_api/spec_helper")
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            describe Braintree::IdealPayment do
         
     | 
| 
       5 
     | 
    
         
            -
              context "self.sale" do
         
     | 
| 
       6 
     | 
    
         
            -
                it "creates a transaction using an Ideal payment token and returns a result object" do
         
     | 
| 
       7 
     | 
    
         
            -
                  ideal_payment_id = generate_valid_ideal_payment_nonce
         
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
       9 
     | 
    
         
            -
                  result = Braintree::IdealPayment.sale(
         
     | 
| 
       10 
     | 
    
         
            -
                    ideal_payment_id,
         
     | 
| 
       11 
     | 
    
         
            -
                    :order_id => SpecHelper::DefaultOrderId,
         
     | 
| 
       12 
     | 
    
         
            -
                    :merchant_account_id => "ideal_merchant_account",
         
     | 
| 
       13 
     | 
    
         
            -
                    :amount => Braintree::Test::TransactionAmounts::Authorize
         
     | 
| 
       14 
     | 
    
         
            -
                  )
         
     | 
| 
       15 
     | 
    
         
            -
             
     | 
| 
       16 
     | 
    
         
            -
                  result.success?.should == true
         
     | 
| 
       17 
     | 
    
         
            -
                  result.transaction.amount.should == BigDecimal(Braintree::Test::TransactionAmounts::Authorize)
         
     | 
| 
       18 
     | 
    
         
            -
                  result.transaction.type.should == "sale"
         
     | 
| 
       19 
     | 
    
         
            -
                  ideal_payment_details = result.transaction.ideal_payment_details
         
     | 
| 
       20 
     | 
    
         
            -
                  ideal_payment_details.ideal_payment_id.should =~ /^idealpayment_\w{6,}$/
         
     | 
| 
       21 
     | 
    
         
            -
                  ideal_payment_details.ideal_transaction_id.should =~ /^\d{16,}$/
         
     | 
| 
       22 
     | 
    
         
            -
                  ideal_payment_details.image_url.should start_with("https://")
         
     | 
| 
       23 
     | 
    
         
            -
                  ideal_payment_details.masked_iban.should_not be_empty
         
     | 
| 
       24 
     | 
    
         
            -
                  ideal_payment_details.bic.should_not be_empty
         
     | 
| 
       25 
     | 
    
         
            -
                end
         
     | 
| 
       26 
     | 
    
         
            -
              end
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
              context "self.sale!" do
         
     | 
| 
       29 
     | 
    
         
            -
                it "creates a transaction using an ideal payment and returns a result object" do
         
     | 
| 
       30 
     | 
    
         
            -
                  ideal_payment_id = generate_valid_ideal_payment_nonce
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                  transaction = Braintree::IdealPayment.sale!(
         
     | 
| 
       33 
     | 
    
         
            -
                    ideal_payment_id,
         
     | 
| 
       34 
     | 
    
         
            -
                    :order_id => SpecHelper::DefaultOrderId,
         
     | 
| 
       35 
     | 
    
         
            -
                    :merchant_account_id => "ideal_merchant_account",
         
     | 
| 
       36 
     | 
    
         
            -
                    :amount => Braintree::Test::TransactionAmounts::Authorize
         
     | 
| 
       37 
     | 
    
         
            -
                  )
         
     | 
| 
       38 
     | 
    
         
            -
             
     | 
| 
       39 
     | 
    
         
            -
                  transaction.amount.should == BigDecimal(Braintree::Test::TransactionAmounts::Authorize)
         
     | 
| 
       40 
     | 
    
         
            -
                  transaction.type.should == "sale"
         
     | 
| 
       41 
     | 
    
         
            -
                  ideal_payment_details = transaction.ideal_payment_details
         
     | 
| 
       42 
     | 
    
         
            -
                  ideal_payment_details.ideal_payment_id.should =~ /^idealpayment_\w{6,}$/
         
     | 
| 
       43 
     | 
    
         
            -
                  ideal_payment_details.ideal_transaction_id.should =~ /^\d{16,}$/
         
     | 
| 
       44 
     | 
    
         
            -
                  ideal_payment_details.image_url.should start_with("https://")
         
     | 
| 
       45 
     | 
    
         
            -
                  ideal_payment_details.masked_iban.should_not be_empty
         
     | 
| 
       46 
     | 
    
         
            -
                  ideal_payment_details.bic.should_not be_empty
         
     | 
| 
       47 
     | 
    
         
            -
                end
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
                it "does not create a transaction using an ideal payment and returns raises an exception" do
         
     | 
| 
       50 
     | 
    
         
            -
                  expect do
         
     | 
| 
       51 
     | 
    
         
            -
                    Braintree::IdealPayment.sale!(
         
     | 
| 
       52 
     | 
    
         
            -
                      "invalid_nonce",
         
     | 
| 
       53 
     | 
    
         
            -
                      :merchant_account_id => "ideal_merchant_account",
         
     | 
| 
       54 
     | 
    
         
            -
                      :amount => Braintree::Test::TransactionAmounts::Authorize
         
     | 
| 
       55 
     | 
    
         
            -
                    )
         
     | 
| 
       56 
     | 
    
         
            -
                  end.to raise_error(Braintree::ValidationsFailed)
         
     | 
| 
       57 
     | 
    
         
            -
                end
         
     | 
| 
       58 
     | 
    
         
            -
              end
         
     | 
| 
       59 
     | 
    
         
            -
             
     | 
| 
       60 
     | 
    
         
            -
              context "self.find" do
         
     | 
| 
       61 
     | 
    
         
            -
                it "finds the Ideal payment with an id" do
         
     | 
| 
       62 
     | 
    
         
            -
                  ideal_payment_id = generate_valid_ideal_payment_nonce
         
     | 
| 
       63 
     | 
    
         
            -
                  ideal_payment = Braintree::IdealPayment.find(ideal_payment_id)
         
     | 
| 
       64 
     | 
    
         
            -
             
     | 
| 
       65 
     | 
    
         
            -
                  ideal_payment.id.should =~ /^idealpayment_\w{6,}$/
         
     | 
| 
       66 
     | 
    
         
            -
                  ideal_payment.ideal_transaction_id.should =~ /^\d{16,}$/
         
     | 
| 
       67 
     | 
    
         
            -
                  ideal_payment.currency.should_not be_empty
         
     | 
| 
       68 
     | 
    
         
            -
                  ideal_payment.amount.should_not be_empty
         
     | 
| 
       69 
     | 
    
         
            -
                  ideal_payment.status.should_not be_empty
         
     | 
| 
       70 
     | 
    
         
            -
                  ideal_payment.order_id.should_not be_empty
         
     | 
| 
       71 
     | 
    
         
            -
                  ideal_payment.issuer.should_not be_empty
         
     | 
| 
       72 
     | 
    
         
            -
                  ideal_payment.approval_url.should start_with("https://")
         
     | 
| 
       73 
     | 
    
         
            -
                  ideal_payment.iban_bank_account.account_holder_name.should_not be_empty
         
     | 
| 
       74 
     | 
    
         
            -
                  ideal_payment.iban_bank_account.bic.should_not be_empty
         
     | 
| 
       75 
     | 
    
         
            -
                  ideal_payment.iban_bank_account.masked_iban.should_not be_empty
         
     | 
| 
       76 
     | 
    
         
            -
                  ideal_payment.iban_bank_account.iban_account_number_last_4.should =~ /^\d{4}$/
         
     | 
| 
       77 
     | 
    
         
            -
                  ideal_payment.iban_bank_account.iban_country.should_not be_empty
         
     | 
| 
       78 
     | 
    
         
            -
                  ideal_payment.iban_bank_account.description.should_not be_empty
         
     | 
| 
       79 
     | 
    
         
            -
                end
         
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
       81 
     | 
    
         
            -
                it "raises if the Ideal payment is not found" do
         
     | 
| 
       82 
     | 
    
         
            -
                  expect do
         
     | 
| 
       83 
     | 
    
         
            -
                    Braintree::IdealPayment.find("idealpayment_nxyqkq_s654wq_92jr64_mnr4kr_yjz")
         
     | 
| 
       84 
     | 
    
         
            -
                  end.to raise_error(Braintree::NotFoundError)
         
     | 
| 
       85 
     | 
    
         
            -
                end
         
     | 
| 
       86 
     | 
    
         
            -
              end
         
     | 
| 
       87 
     | 
    
         
            -
            end
         
     |