braintree 3.2.0 → 4.2.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 (150) hide show
  1. checksums.yaml +4 -4
  2. data/braintree.gemspec +3 -3
  3. data/lib/braintree.rb +6 -1
  4. data/lib/braintree/account_updater_daily_report.rb +1 -1
  5. data/lib/braintree/address.rb +2 -1
  6. data/lib/braintree/apple_pay.rb +1 -1
  7. data/lib/braintree/apple_pay_card.rb +1 -1
  8. data/lib/braintree/apple_pay_options.rb +1 -1
  9. data/lib/braintree/authorization_adjustment.rb +1 -1
  10. data/lib/braintree/client_token.rb +1 -1
  11. data/lib/braintree/configuration.rb +11 -11
  12. data/lib/braintree/connected_merchant_paypal_status_changed.rb +1 -1
  13. data/lib/braintree/connected_merchant_status_transitioned.rb +1 -1
  14. data/lib/braintree/credit_card.rb +2 -2
  15. data/lib/braintree/credit_card_gateway.rb +14 -4
  16. data/lib/braintree/credit_card_verification.rb +5 -5
  17. data/lib/braintree/credit_card_verification_search.rb +1 -1
  18. data/lib/braintree/customer.rb +6 -4
  19. data/lib/braintree/customer_gateway.rb +2 -0
  20. data/lib/braintree/customer_search.rb +1 -1
  21. data/lib/braintree/disbursement.rb +1 -1
  22. data/lib/braintree/dispute.rb +15 -1
  23. data/lib/braintree/dispute/paypal_message.rb +15 -0
  24. data/lib/braintree/dispute_gateway.rb +2 -2
  25. data/lib/braintree/dispute_search.rb +3 -2
  26. data/lib/braintree/document_upload.rb +1 -1
  27. data/lib/braintree/error_codes.rb +10 -6
  28. data/lib/braintree/google_pay_card.rb +1 -1
  29. data/lib/braintree/granted_payment_instrument_update.rb +1 -1
  30. data/lib/braintree/graphql_client.rb +7 -7
  31. data/lib/braintree/http.rb +3 -3
  32. data/lib/braintree/local_payment_completed.rb +1 -1
  33. data/lib/braintree/local_payment_reversed.rb +19 -0
  34. data/lib/braintree/merchant.rb +1 -1
  35. data/lib/braintree/merchant_account.rb +1 -1
  36. data/lib/braintree/merchant_account_gateway.rb +1 -1
  37. data/lib/braintree/merchant_gateway.rb +1 -1
  38. data/lib/braintree/modification.rb +1 -1
  39. data/lib/braintree/oauth_credentials.rb +1 -1
  40. data/lib/braintree/oauth_gateway.rb +5 -5
  41. data/lib/braintree/payment_instrument_type.rb +10 -10
  42. data/lib/braintree/payment_method_gateway.rb +10 -7
  43. data/lib/braintree/payment_method_nonce.rb +7 -4
  44. data/lib/braintree/payment_method_nonce_details.rb +37 -0
  45. data/lib/braintree/payment_method_nonce_details_payer_info.rb +32 -0
  46. data/lib/braintree/payment_method_nonce_gateway.rb +1 -1
  47. data/lib/braintree/plan.rb +1 -1
  48. data/lib/braintree/processor_response_types.rb +3 -3
  49. data/lib/braintree/revoked_payment_method_metadata.rb +1 -1
  50. data/lib/braintree/risk_data.rb +3 -1
  51. data/lib/braintree/samsung_pay_card.rb +1 -1
  52. data/lib/braintree/settlement_batch_summary.rb +2 -2
  53. data/lib/braintree/subscription.rb +6 -6
  54. data/lib/braintree/three_d_secure_info.rb +22 -12
  55. data/lib/braintree/transaction.rb +32 -24
  56. data/lib/braintree/transaction_gateway.rb +24 -5
  57. data/lib/braintree/transaction_line_item.rb +1 -1
  58. data/lib/braintree/transaction_search.rb +3 -1
  59. data/lib/braintree/unknown_payment_method.rb +1 -1
  60. data/lib/braintree/us_bank_account.rb +3 -3
  61. data/lib/braintree/us_bank_account_verification.rb +1 -1
  62. data/lib/braintree/us_bank_account_verification_gateway.rb +1 -1
  63. data/lib/braintree/util.rb +4 -4
  64. data/lib/braintree/venmo_account.rb +1 -1
  65. data/lib/braintree/version.rb +1 -1
  66. data/lib/braintree/visa_checkout_card.rb +2 -2
  67. data/lib/braintree/webhook_notification.rb +30 -20
  68. data/lib/braintree/webhook_notification_gateway.rb +5 -5
  69. data/lib/braintree/webhook_testing_gateway.rb +30 -0
  70. data/lib/braintree/xml/generator.rb +5 -4
  71. data/lib/braintree/xml/libxml.rb +0 -1
  72. data/lib/braintree/xml/parser.rb +22 -12
  73. data/lib/braintree/xml/rexml.rb +70 -0
  74. data/spec/integration/braintree/add_on_spec.rb +1 -1
  75. data/spec/integration/braintree/address_spec.rb +28 -24
  76. data/spec/integration/braintree/advanced_search_spec.rb +45 -45
  77. data/spec/integration/braintree/apple_pay_spec.rb +3 -3
  78. data/spec/integration/braintree/braintree_gateway_spec.rb +2 -1
  79. data/spec/integration/braintree/client_api/client_token_spec.rb +14 -14
  80. data/spec/integration/braintree/client_api/spec_helper.rb +5 -5
  81. data/spec/integration/braintree/credit_card_spec.rb +213 -122
  82. data/spec/integration/braintree/credit_card_verification_search_spec.rb +2 -2
  83. data/spec/integration/braintree/credit_card_verification_spec.rb +1 -1
  84. data/spec/integration/braintree/customer_search_spec.rb +8 -8
  85. data/spec/integration/braintree/customer_spec.rb +282 -165
  86. data/spec/integration/braintree/dispute_search_spec.rb +28 -3
  87. data/spec/integration/braintree/dispute_spec.rb +6 -6
  88. data/spec/integration/braintree/error_codes_spec.rb +1 -1
  89. data/spec/integration/braintree/http_spec.rb +2 -2
  90. data/spec/integration/braintree/merchant_account_spec.rb +25 -26
  91. data/spec/integration/braintree/merchant_spec.rb +14 -14
  92. data/spec/integration/braintree/oauth_spec.rb +11 -11
  93. data/spec/integration/braintree/payment_method_nonce_spec.rb +28 -35
  94. data/spec/integration/braintree/payment_method_spec.rb +269 -165
  95. data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +9 -9
  96. data/spec/integration/braintree/paypal_account_spec.rb +28 -28
  97. data/spec/integration/braintree/samsung_pay_card_spec.rb +9 -9
  98. data/spec/integration/braintree/settlement_batch_summary_spec.rb +8 -8
  99. data/spec/integration/braintree/subscription_spec.rb +133 -133
  100. data/spec/integration/braintree/test/transaction_amounts_spec.rb +2 -2
  101. data/spec/integration/braintree/test_transaction_spec.rb +10 -10
  102. data/spec/integration/braintree/transaction_search_spec.rb +93 -67
  103. data/spec/integration/braintree/transaction_spec.rb +574 -360
  104. data/spec/integration/braintree/transaction_us_bank_account_spec.rb +20 -20
  105. data/spec/integration/braintree/us_bank_account_spec.rb +6 -6
  106. data/spec/integration/braintree/us_bank_account_verification_search_spec.rb +7 -7
  107. data/spec/integration/braintree/us_bank_account_verification_spec.rb +8 -8
  108. data/spec/integration/braintree/visa_checkout_card_spec.rb +5 -5
  109. data/spec/integration/spec_helper.rb +9 -3
  110. data/spec/oauth_test_helper.rb +1 -1
  111. data/spec/script/httpsd.rb +6 -6
  112. data/spec/spec_helper.rb +6 -3
  113. data/spec/unit/braintree/address_spec.rb +1 -1
  114. data/spec/unit/braintree/apple_pay_card_spec.rb +1 -1
  115. data/spec/unit/braintree/client_token_spec.rb +2 -2
  116. data/spec/unit/braintree/configuration_spec.rb +42 -42
  117. data/spec/unit/braintree/credit_card_spec.rb +13 -13
  118. data/spec/unit/braintree/credit_card_verification_search_spec.rb +1 -1
  119. data/spec/unit/braintree/credit_card_verification_spec.rb +8 -4
  120. data/spec/unit/braintree/customer_spec.rb +20 -10
  121. data/spec/unit/braintree/disbursement_spec.rb +7 -7
  122. data/spec/unit/braintree/dispute_search_spec.rb +1 -0
  123. data/spec/unit/braintree/dispute_spec.rb +34 -9
  124. data/spec/unit/braintree/error_result_spec.rb +5 -5
  125. data/spec/unit/braintree/errors_spec.rb +8 -8
  126. data/spec/unit/braintree/http_spec.rb +5 -5
  127. data/spec/unit/braintree/merchant_account_spec.rb +1 -1
  128. data/spec/unit/braintree/payment_method_nonce_details_payer_info_spec.rb +31 -0
  129. data/spec/unit/braintree/payment_method_nonce_details_spec.rb +43 -0
  130. data/spec/unit/braintree/payment_method_nonce_spec.rb +40 -0
  131. data/spec/unit/braintree/payment_method_spec.rb +1 -1
  132. data/spec/unit/braintree/paypal_account_spec.rb +2 -2
  133. data/spec/unit/braintree/resource_collection_spec.rb +9 -9
  134. data/spec/unit/braintree/risk_data_spec.rb +9 -5
  135. data/spec/unit/braintree/subscription_search_spec.rb +1 -1
  136. data/spec/unit/braintree/successful_result_spec.rb +1 -1
  137. data/spec/unit/braintree/three_d_secure_info_spec.rb +32 -14
  138. data/spec/unit/braintree/transaction/credit_card_details_spec.rb +3 -3
  139. data/spec/unit/braintree/transaction/customer_details_spec.rb +1 -1
  140. data/spec/unit/braintree/transaction/deposit_details_spec.rb +2 -2
  141. data/spec/unit/braintree/transaction/paypal_details_spec.rb +1 -1
  142. data/spec/unit/braintree/transaction_search_spec.rb +12 -12
  143. data/spec/unit/braintree/transaction_spec.rb +25 -17
  144. data/spec/unit/braintree/util_spec.rb +18 -18
  145. data/spec/unit/braintree/validation_error_collection_spec.rb +36 -36
  146. data/spec/unit/braintree/webhook_notification_spec.rb +88 -56
  147. data/spec/unit/braintree/xml/rexml_spec.rb +51 -0
  148. data/spec/unit/braintree/xml_spec.rb +31 -31
  149. metadata +16 -8
  150. data/lib/braintree/settlement_batch.rb +0 -0
@@ -108,7 +108,7 @@ describe Braintree::CreditCardVerification, "search" do
108
108
  search.id.is verification.id
109
109
  search.created_at.between(
110
110
  created_at - 60,
111
- created_at + 60
111
+ created_at + 60,
112
112
  )
113
113
  end
114
114
 
@@ -135,7 +135,7 @@ describe Braintree::CreditCardVerification, "search" do
135
135
  search.id.is verification.id
136
136
  search.created_at.between(
137
137
  created_at - 300,
138
- created_at - 100
138
+ created_at - 100,
139
139
  )
140
140
  end
141
141
 
@@ -242,7 +242,7 @@ describe Braintree::CreditCardVerification, "search" do
242
242
  :cardholder_name => cardholder_name,
243
243
  :expiration_date => "05/2012",
244
244
  :number => Braintree::Test::CreditCardNumbers::CardTypeIndicators::Prepaid,
245
- :cvv => '200',
245
+ :cvv => "200",
246
246
  :options => {
247
247
  :verify_card => true
248
248
  }
@@ -36,7 +36,7 @@ describe Braintree::Transaction, "search" do
36
36
  :postal_code => "60622",
37
37
  :country_name => "United States of America"
38
38
  }
39
- }
39
+ },
40
40
  )
41
41
 
42
42
  customer = Braintree::Customer.find(customer.id)
@@ -96,7 +96,7 @@ describe Braintree::Transaction, "search" do
96
96
  :credit_card => {
97
97
  :number => Braintree::Test::CreditCardNumbers::Maestro,
98
98
  :expiration_date => "05/2012"
99
- }
99
+ },
100
100
  ).customer
101
101
 
102
102
  joe = Braintree::Customer.create(
@@ -104,7 +104,7 @@ describe Braintree::Transaction, "search" do
104
104
  :credit_card => {
105
105
  :number => Braintree::Test::CreditCardNumbers::Maestro,
106
106
  :expiration_date => "05/2012"
107
- }
107
+ },
108
108
  ).customer
109
109
 
110
110
  collection = Braintree::Customer.search do |search|
@@ -118,7 +118,7 @@ describe Braintree::Transaction, "search" do
118
118
  it "can search by created_at" do
119
119
  company = "Company #{rand(1_000_000)}"
120
120
  customer = Braintree::Customer.create!(
121
- :company => company
121
+ :company => company,
122
122
  )
123
123
 
124
124
  created_at = customer.created_at
@@ -128,7 +128,7 @@ describe Braintree::Transaction, "search" do
128
128
  search.company.is company
129
129
  search.created_at.between(
130
130
  created_at - 60,
131
- created_at + 60
131
+ created_at + 60,
132
132
  )
133
133
  end
134
134
 
@@ -155,7 +155,7 @@ describe Braintree::Transaction, "search" do
155
155
  search.company.is customer.company
156
156
  search.created_at.between(
157
157
  created_at - 300,
158
- created_at - 100
158
+ created_at - 100,
159
159
  )
160
160
  end
161
161
 
@@ -175,13 +175,13 @@ describe Braintree::Transaction, "search" do
175
175
  paypal_token = rand(36**3).to_s(36)
176
176
  nonce = nonce_for_paypal_account(
177
177
  :consent_code => "PAYPAL_CONSENT_CODE",
178
- :token => paypal_token
178
+ :token => paypal_token,
179
179
  )
180
180
 
181
181
  customer_id = "UNIQUE_CUSTOMER_ID_" + rand(36**3).to_s(36)
182
182
  customer = Braintree::Customer.create!(
183
183
  :payment_method_nonce => nonce,
184
- :id => customer_id
184
+ :id => customer_id,
185
185
  )
186
186
 
187
187
  collection = Braintree::Customer.search do |search|
@@ -8,7 +8,7 @@ describe Braintree::Customer do
8
8
  customers = Braintree::Customer.all
9
9
  customers.maximum_size.should > 100
10
10
 
11
- customer_ids = customers.map {|c| c.id }.uniq.compact
11
+ customer_ids = customers.map { |c| c.id }.uniq.compact
12
12
  customer_ids.size.should == customers.maximum_size
13
13
  end
14
14
  end
@@ -17,7 +17,7 @@ describe Braintree::Customer do
17
17
  it "deletes the customer with the given id" do
18
18
  create_result = Braintree::Customer.create(
19
19
  :first_name => "Joe",
20
- :last_name => "Cool"
20
+ :last_name => "Cool",
21
21
  )
22
22
  create_result.success?.should == true
23
23
  customer = create_result.customer
@@ -39,7 +39,8 @@ describe Braintree::Customer do
39
39
  :email => "bill@microsoft.com",
40
40
  :phone => "312.555.1234",
41
41
  :fax => "614.555.5678",
42
- :website => "www.microsoft.com"
42
+ :website => "www.microsoft.com",
43
+ :tax_identifiers => [{:country_code => "US", :identifier => "987654321"}],
43
44
  )
44
45
  result.success?.should == true
45
46
  result.customer.id.should =~ /^\d{6,}$/
@@ -58,7 +59,7 @@ describe Braintree::Customer do
58
59
  oauth_gateway = Braintree::Gateway.new(
59
60
  :client_id => "client_id$#{Braintree::Configuration.environment}$integration_client_id",
60
61
  :client_secret => "client_secret$#{Braintree::Configuration.environment}$integration_client_secret",
61
- :logger => Logger.new("/dev/null")
62
+ :logger => Logger.new("/dev/null"),
62
63
  )
63
64
  access_token = Braintree::OAuthTestHelper.create_token(oauth_gateway, {
64
65
  :merchant_public_id => "integration_merchant_id",
@@ -67,7 +68,7 @@ describe Braintree::Customer do
67
68
 
68
69
  gateway = Braintree::Gateway.new(
69
70
  :access_token => access_token,
70
- :logger => Logger.new("/dev/null")
71
+ :logger => Logger.new("/dev/null"),
71
72
  )
72
73
 
73
74
  result = gateway.customer.create(
@@ -77,7 +78,7 @@ describe Braintree::Customer do
77
78
  :email => "joe@example.com",
78
79
  :phone => "312.555.1234",
79
80
  :fax => "614.555.5678",
80
- :website => "www.example.com"
81
+ :website => "www.example.com",
81
82
  )
82
83
  result.success?.should == true
83
84
  result.customer.id.should =~ /^\d{6,}$/
@@ -92,7 +93,7 @@ describe Braintree::Customer do
92
93
  :expiration_date => "05/2010",
93
94
  :cvv => "100",
94
95
  :device_data => "device_data",
95
- }
96
+ },
96
97
  )
97
98
 
98
99
  result.should be_success
@@ -108,7 +109,58 @@ describe Braintree::Customer do
108
109
  :risk_data => {
109
110
  :customer_browser => "IE5",
110
111
  :customer_ip => "192.168.0.1"
111
- }
112
+ },
113
+ )
114
+
115
+ result.should be_success
116
+ end
117
+
118
+ it "includes risk data when skip_advanced_fraud_checking is false" do
119
+ with_fraud_protection_enterprise_merchant do
120
+ result = Braintree::Customer.create(
121
+ :credit_card => {
122
+ :number => Braintree::Test::CreditCardNumbers::MasterCard,
123
+ :expiration_date => "05/2010",
124
+ :cvv => "100",
125
+ :options => {
126
+ :skip_advanced_fraud_checking => false,
127
+ :verify_card => true,
128
+ },
129
+ },
130
+ )
131
+
132
+ expect(result).to be_success
133
+ verification = result.customer.credit_cards.first.verification
134
+ expect(verification.risk_data).not_to be_nil
135
+ end
136
+ end
137
+
138
+ it "does not include risk data when skip_advanced_fraud_checking is true" do
139
+ with_fraud_protection_enterprise_merchant do
140
+ result = Braintree::Customer.create(
141
+ :credit_card => {
142
+ :number => Braintree::Test::CreditCardNumbers::MasterCard,
143
+ :expiration_date => "05/2010",
144
+ :cvv => "100",
145
+ :options => {
146
+ :skip_advanced_fraud_checking => true,
147
+ :verify_card => true,
148
+ },
149
+ },
150
+ )
151
+
152
+ expect(result).to be_success
153
+ verification = result.customer.credit_cards.first.verification
154
+ expect(verification.risk_data).to be_nil
155
+ end
156
+ end
157
+
158
+ it "supports creation with tax_identifiers" do
159
+ result = Braintree::Customer.create(
160
+ :tax_identifiers => [
161
+ {:country_code => "US", :identifier => "987654321"},
162
+ {:country_code => "CL", :identifier => "123456789"}
163
+ ],
112
164
  )
113
165
 
114
166
  result.should be_success
@@ -134,21 +186,21 @@ describe Braintree::Customer do
134
186
  found_customer.last_name.should == last_name
135
187
  else
136
188
  result.customer.first_name.should == "José"
137
- result.customer.first_name.bytes.map {|b| b.to_s(8)}.should == ["112", "157", "163", "303", "251"]
189
+ result.customer.first_name.bytes.map { |b| b.to_s(8) }.should == ["112", "157", "163", "303", "251"]
138
190
  result.customer.last_name.should == "Muñoz"
139
- result.customer.last_name.bytes.map {|b| b.to_s(8)}.should == ["115", "165", "303", "261", "157", "172"]
191
+ result.customer.last_name.bytes.map { |b| b.to_s(8) }.should == ["115", "165", "303", "261", "157", "172"]
140
192
 
141
193
  found_customer = Braintree::Customer.find(result.customer.id)
142
194
  found_customer.first_name.should == "José"
143
- found_customer.first_name.bytes.map {|b| b.to_s(8)}.should == ["112", "157", "163", "303", "251"]
195
+ found_customer.first_name.bytes.map { |b| b.to_s(8) }.should == ["112", "157", "163", "303", "251"]
144
196
  found_customer.last_name.should == "Muñoz"
145
- found_customer.last_name.bytes.map {|b| b.to_s(8)}.should == ["115", "165", "303", "261", "157", "172"]
197
+ found_customer.last_name.bytes.map { |b| b.to_s(8) }.should == ["115", "165", "303", "261", "157", "172"]
146
198
  end
147
199
  end
148
200
 
149
201
  it "returns an error response if invalid" do
150
202
  result = Braintree::Customer.create(
151
- :email => "@invalid.com"
203
+ :email => "@invalid.com",
152
204
  )
153
205
  result.success?.should == false
154
206
  result.errors.for(:customer).on(:email)[0].message.should == "Email is an invalid format."
@@ -162,7 +214,7 @@ describe Braintree::Customer do
162
214
  :number => Braintree::Test::CreditCardNumbers::MasterCard,
163
215
  :expiration_date => "05/2010",
164
216
  :cvv => "100"
165
- }
217
+ },
166
218
  )
167
219
 
168
220
  result.success?.should == true
@@ -182,7 +234,7 @@ describe Braintree::Customer do
182
234
  :email => "other@example.com",
183
235
  :billing_agreement_id => "B-123456",
184
236
  :options => {:make_default => true}
185
- }
237
+ },
186
238
  )
187
239
 
188
240
  result.success?.should == true
@@ -200,7 +252,7 @@ describe Braintree::Customer do
200
252
  :number => Braintree::Test::CreditCardNumbers::FailsSandboxVerification::MasterCard,
201
253
  :expiration_date => "05/2010",
202
254
  :options => {:verify_card => true}
203
- }
255
+ },
204
256
  )
205
257
  result.success?.should == false
206
258
  result.credit_card_verification.status.should == Braintree::Transaction::Status::ProcessorDeclined
@@ -214,7 +266,7 @@ describe Braintree::Customer do
214
266
  :number => Braintree::Test::CreditCardNumbers::MasterCard,
215
267
  :expiration_date => "05/2019",
216
268
  :options => {:verify_card => true, :verification_amount => "2.00"}
217
- }
269
+ },
218
270
  )
219
271
  result.success?.should == true
220
272
  end
@@ -224,7 +276,7 @@ describe Braintree::Customer do
224
276
  Braintree::CreditCard.create(
225
277
  :customer_id => customer.id,
226
278
  :number => Braintree::Test::CreditCardNumbers::Visa,
227
- :expiration_date => "05/2015"
279
+ :expiration_date => "05/2015",
228
280
  )
229
281
 
230
282
  result = Braintree::Customer.create(
@@ -234,7 +286,7 @@ describe Braintree::Customer do
234
286
  :number => Braintree::Test::CreditCardNumbers::Visa,
235
287
  :expiration_date => "05/2015",
236
288
  :options => {:fail_on_duplicate_payment_method => true}
237
- }
289
+ },
238
290
  )
239
291
  result.success?.should == false
240
292
  result.errors.for(:customer).for(:credit_card).on(:number)[0].message.should == "Duplicate card exists in the vault."
@@ -251,7 +303,7 @@ describe Braintree::Customer do
251
303
  :verify_card => true,
252
304
  :verification_merchant_account_id => SpecHelper::NonDefaultMerchantAccountId
253
305
  }
254
- }
306
+ },
255
307
  )
256
308
  result.success?.should == false
257
309
  result.credit_card_verification.status.should == Braintree::Transaction::Status::ProcessorDeclined
@@ -269,7 +321,7 @@ describe Braintree::Customer do
269
321
  :verify_card => true,
270
322
  :verification_currency_iso_code => "USD"
271
323
  }
272
- }
324
+ },
273
325
  )
274
326
 
275
327
  result.success?.should == true
@@ -294,7 +346,7 @@ describe Braintree::Customer do
294
346
  :verify_card => true,
295
347
  :verification_currency_iso_code => "GBP"
296
348
  }
297
- }
349
+ },
298
350
  )
299
351
  expect(result).to_not be_success
300
352
  expect(result.errors.for(:customer).for(:credit_card).for(:options).on(:verification_currency_iso_code)[0].code).to eq Braintree::ErrorCodes::CreditCard::CurrencyCodeNotSupportedByMerchantAccount
@@ -312,7 +364,7 @@ describe Braintree::Customer do
312
364
  :verification_merchant_account_id => SpecHelper::NonDefaultMerchantAccountId,
313
365
  :verification_currency_iso_code => "USD"
314
366
  }
315
- }
367
+ },
316
368
  )
317
369
  result.success?.should == true
318
370
  result.customer.credit_cards[0].verification.currency_iso_code == "USD"
@@ -336,7 +388,7 @@ describe Braintree::Customer do
336
388
  :verification_merchant_account_id => SpecHelper::NonDefaultMerchantAccountId,
337
389
  :verification_currency_iso_code => "GBP"
338
390
  }
339
- }
391
+ },
340
392
  )
341
393
  expect(result).to_not be_success
342
394
  expect(result.errors.for(:customer).for(:credit_card).for(:options).on(:verification_currency_iso_code)[0].code).to eq Braintree::ErrorCodes::CreditCard::CurrencyCodeNotSupportedByMerchantAccount
@@ -358,7 +410,7 @@ describe Braintree::Customer do
358
410
  :postal_code => "60622",
359
411
  :country_name => "United States of America"
360
412
  }
361
- }
413
+ },
362
414
  )
363
415
  result.success?.should == true
364
416
  result.customer.first_name.should == "Mike"
@@ -389,7 +441,7 @@ describe Braintree::Customer do
389
441
  :country_code_alpha3 => "COM",
390
442
  :country_code_numeric => "174"
391
443
  }
392
- }
444
+ },
393
445
  )
394
446
  result.success?.should == true
395
447
  result.customer.addresses[0].country_name.should == "Comoros"
@@ -404,7 +456,7 @@ describe Braintree::Customer do
404
456
  :last_name => "Gates",
405
457
  :custom_fields => {
406
458
  :store_me => "custom value"
407
- }
459
+ },
408
460
  )
409
461
  result.success?.should == true
410
462
  result.customer.custom_fields[:store_me].should == "custom value"
@@ -414,7 +466,7 @@ describe Braintree::Customer do
414
466
  result = Braintree::Customer.create(
415
467
  :first_name => "Bill",
416
468
  :last_name => "Gates",
417
- :custom_fields => { :store_me => "" }
469
+ :custom_fields => {:store_me => ""},
418
470
  )
419
471
  result.success?.should == true
420
472
  result.customer.custom_fields.should == {}
@@ -428,7 +480,7 @@ describe Braintree::Customer do
428
480
  :billing_address => {
429
481
  :country_name => "invalid"
430
482
  }
431
- }
483
+ },
432
484
  )
433
485
  result.success?.should == false
434
486
  result.errors.for(:customer).on(:email)[0].message.should == "Email is an invalid format."
@@ -448,10 +500,10 @@ describe Braintree::Customer do
448
500
  :country_code_alpha2 => "US",
449
501
  :country_code_alpha3 => "COM",
450
502
  }
451
- }
503
+ },
452
504
  )
453
505
  result.success?.should == false
454
- result.errors.for(:customer).for(:credit_card).for(:billing_address).on(:base).map {|e| e.code}.should include(Braintree::ErrorCodes::Address::InconsistentCountry)
506
+ result.errors.for(:customer).for(:credit_card).for(:billing_address).on(:base).map { |e| e.code }.should include(Braintree::ErrorCodes::Address::InconsistentCountry)
455
507
  end
456
508
 
457
509
  it "returns an error if country code alpha2 is invalid" do
@@ -464,10 +516,10 @@ describe Braintree::Customer do
464
516
  :billing_address => {
465
517
  :country_code_alpha2 => "zz",
466
518
  }
467
- }
519
+ },
468
520
  )
469
521
  result.success?.should == false
470
- result.errors.for(:customer).for(:credit_card).for(:billing_address).on(:country_code_alpha2).map {|e| e.code}.should include(Braintree::ErrorCodes::Address::CountryCodeAlpha2IsNotAccepted)
522
+ result.errors.for(:customer).for(:credit_card).for(:billing_address).on(:country_code_alpha2).map { |e| e.code }.should include(Braintree::ErrorCodes::Address::CountryCodeAlpha2IsNotAccepted)
471
523
  end
472
524
 
473
525
  it "returns an error if country code alpha3 is invalid" do
@@ -480,10 +532,10 @@ describe Braintree::Customer do
480
532
  :billing_address => {
481
533
  :country_code_alpha3 => "zzz",
482
534
  }
483
- }
535
+ },
484
536
  )
485
537
  result.success?.should == false
486
- result.errors.for(:customer).for(:credit_card).for(:billing_address).on(:country_code_alpha3).map {|e| e.code}.should include(Braintree::ErrorCodes::Address::CountryCodeAlpha3IsNotAccepted)
538
+ result.errors.for(:customer).for(:credit_card).for(:billing_address).on(:country_code_alpha3).map { |e| e.code }.should include(Braintree::ErrorCodes::Address::CountryCodeAlpha3IsNotAccepted)
487
539
  end
488
540
 
489
541
  it "returns an error if country code numeric is invalid" do
@@ -496,10 +548,10 @@ describe Braintree::Customer do
496
548
  :billing_address => {
497
549
  :country_code_numeric => "zzz",
498
550
  }
499
- }
551
+ },
500
552
  )
501
553
  result.success?.should == false
502
- result.errors.for(:customer).for(:credit_card).for(:billing_address).on(:country_code_numeric).map {|e| e.code}.should include(Braintree::ErrorCodes::Address::CountryCodeNumericIsNotAccepted)
554
+ result.errors.for(:customer).for(:credit_card).for(:billing_address).on(:country_code_numeric).map { |e| e.code }.should include(Braintree::ErrorCodes::Address::CountryCodeNumericIsNotAccepted)
503
555
  end
504
556
 
505
557
  it "returns errors if custom_fields are not registered" do
@@ -508,7 +560,7 @@ describe Braintree::Customer do
508
560
  :last_name => "Kennedy",
509
561
  :custom_fields => {
510
562
  :spouse_name => "Jacqueline"
511
- }
563
+ },
512
564
  )
513
565
  result.success?.should == false
514
566
  result.errors.for(:customer).on(:custom_fields)[0].message.should == "Custom field is invalid: spouse_name."
@@ -521,7 +573,7 @@ describe Braintree::Customer do
521
573
  :last_name => "Hamlin",
522
574
  :credit_card => {
523
575
  :venmo_sdk_payment_method_code => Braintree::Test::VenmoSDK::VisaPaymentMethodCode
524
- }
576
+ },
525
577
  )
526
578
  result.success?.should == true
527
579
  result.customer.credit_cards.first.bin.should == "400934"
@@ -538,7 +590,7 @@ describe Braintree::Customer do
538
590
  :options => {
539
591
  :venmo_sdk_session => Braintree::Test::VenmoSDK::Session
540
592
  }
541
- }
593
+ },
542
594
  )
543
595
  result.success?.should == true
544
596
  result.customer.credit_cards.first.venmo_sdk?.should == false
@@ -553,13 +605,13 @@ describe Braintree::Customer do
553
605
  :expiration_month => "11",
554
606
  :expiration_year => "2099",
555
607
  },
556
- :share => true
608
+ :share => true,
557
609
  )
558
610
 
559
611
  result = Braintree::Customer.create(
560
612
  :credit_card => {
561
613
  :payment_method_nonce => nonce
562
- }
614
+ },
563
615
  )
564
616
 
565
617
  result.success?.should == true
@@ -589,7 +641,7 @@ describe Braintree::Customer do
589
641
  :number => Braintree::Test::CreditCardNumbers::Hiper,
590
642
  :expiration_month => "11",
591
643
  :expiration_year => "2099",
592
- }
644
+ },
593
645
  )
594
646
  result = Braintree::Customer.create(
595
647
  :payment_method_nonce => nonce,
@@ -599,7 +651,7 @@ describe Braintree::Customer do
599
651
  :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
600
652
  :verification_account_type => "debit",
601
653
  }
602
- }
654
+ },
603
655
  )
604
656
 
605
657
  expect(result).to be_success
@@ -611,7 +663,7 @@ describe Braintree::Customer do
611
663
  :number => Braintree::Test::CreditCardNumbers::Hiper,
612
664
  :expiration_month => "11",
613
665
  :expiration_year => "2099",
614
- }
666
+ },
615
667
  )
616
668
  result = Braintree::Customer.create(
617
669
  :payment_method_nonce => nonce,
@@ -621,7 +673,7 @@ describe Braintree::Customer do
621
673
  :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
622
674
  :verification_account_type => "credit",
623
675
  }
624
- }
676
+ },
625
677
  )
626
678
 
627
679
  expect(result).to be_success
@@ -633,7 +685,7 @@ describe Braintree::Customer do
633
685
  :number => Braintree::Test::CreditCardNumbers::Hiper,
634
686
  :expiration_month => "11",
635
687
  :expiration_year => "2099",
636
- }
688
+ },
637
689
  )
638
690
  result = Braintree::Customer.create(
639
691
  :payment_method_nonce => nonce,
@@ -643,7 +695,7 @@ describe Braintree::Customer do
643
695
  :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
644
696
  :verification_account_type => "ach",
645
697
  }
646
- }
698
+ },
647
699
  )
648
700
 
649
701
  expect(result).to_not be_success
@@ -656,7 +708,7 @@ describe Braintree::Customer do
656
708
  :number => Braintree::Test::CreditCardNumbers::Visa,
657
709
  :expiration_month => "11",
658
710
  :expiration_year => "2099",
659
- }
711
+ },
660
712
  )
661
713
  result = Braintree::Customer.create(
662
714
  :payment_method_nonce => nonce,
@@ -665,7 +717,7 @@ describe Braintree::Customer do
665
717
  :verify_card => true,
666
718
  :verification_account_type => "credit",
667
719
  }
668
- }
720
+ },
669
721
  )
670
722
 
671
723
  expect(result).to_not be_success
@@ -678,7 +730,7 @@ describe Braintree::Customer do
678
730
  it "returns the customer if successful" do
679
731
  customer = Braintree::Customer.create!(
680
732
  :first_name => "Jim",
681
- :last_name => "Smith"
733
+ :last_name => "Smith",
682
734
  )
683
735
  customer.id.should =~ /\d+/
684
736
  customer.first_name.should == "Jim"
@@ -703,7 +755,7 @@ describe Braintree::Customer do
703
755
  :credit_card => {
704
756
  :number => Braintree::Test::CreditCardNumbers::Visa,
705
757
  :expiration_date => "05/2010"
706
- }
758
+ },
707
759
  )
708
760
  result = Braintree::Customer.credit(customer.id, :amount => "100.00")
709
761
  result.success?.should == true
@@ -723,7 +775,7 @@ describe Braintree::Customer do
723
775
  :credit_card => {
724
776
  :number => Braintree::Test::CreditCardNumbers::Visa,
725
777
  :expiration_date => "05/2010"
726
- }
778
+ },
727
779
  )
728
780
  transaction = Braintree::Customer.credit!(customer.id, :amount => "100.00")
729
781
  transaction.amount.should == BigDecimal("100.00")
@@ -742,7 +794,7 @@ describe Braintree::Customer do
742
794
  :credit_card => {
743
795
  :number => Braintree::Test::CreditCardNumbers::Visa,
744
796
  :expiration_date => "05/2010"
745
- }
797
+ },
746
798
  )
747
799
  result = Braintree::Customer.sale(customer.id, :amount => "100.00")
748
800
  result.success?.should == true
@@ -762,7 +814,7 @@ describe Braintree::Customer do
762
814
  :credit_card => {
763
815
  :number => Braintree::Test::CreditCardNumbers::Visa,
764
816
  :expiration_date => "05/2010"
765
- }
817
+ },
766
818
  )
767
819
  transaction = Braintree::Customer.sale!(customer.id, :amount => "100.00")
768
820
  transaction.amount.should == BigDecimal("100.00")
@@ -781,7 +833,7 @@ describe Braintree::Customer do
781
833
  :credit_card => {
782
834
  :number => Braintree::Test::CreditCardNumbers::Visa,
783
835
  :expiration_date => "05/2010"
784
- }
836
+ },
785
837
  )
786
838
  transaction = Braintree::Customer.sale!(customer.id, :amount => "100.00")
787
839
  collection = Braintree::Customer.transactions(customer.id)
@@ -795,10 +847,10 @@ describe Braintree::Customer do
795
847
  :credit_card => {
796
848
  :number => Braintree::Test::CreditCardNumbers::Visa,
797
849
  :expiration_date => "05/2010"
798
- }
850
+ },
799
851
  )
800
852
  result = customer.credit(
801
- :amount => "100.00"
853
+ :amount => "100.00",
802
854
  )
803
855
  result.success?.should == true
804
856
  result.transaction.amount.should == BigDecimal("100.00")
@@ -817,7 +869,7 @@ describe Braintree::Customer do
817
869
  :credit_card => {
818
870
  :number => Braintree::Test::CreditCardNumbers::Visa,
819
871
  :expiration_date => "05/2010"
820
- }
872
+ },
821
873
  )
822
874
  transaction = customer.credit!(:amount => "100.00")
823
875
  transaction.amount.should == BigDecimal("100.00")
@@ -834,7 +886,7 @@ describe Braintree::Customer do
834
886
  it "deletes the customer" do
835
887
  result = Braintree::Customer.create(
836
888
  :first_name => "Joe",
837
- :last_name => "Cool"
889
+ :last_name => "Cool",
838
890
  )
839
891
  result.success?.should == true
840
892
 
@@ -851,7 +903,7 @@ describe Braintree::Customer do
851
903
  it "finds the customer with the given id" do
852
904
  result = Braintree::Customer.create(
853
905
  :first_name => "Joe",
854
- :last_name => "Cool"
906
+ :last_name => "Cool",
855
907
  )
856
908
  result.success?.should == true
857
909
 
@@ -867,13 +919,13 @@ describe Braintree::Customer do
867
919
  credit_card = Braintree::CreditCard.create(
868
920
  :customer_id => customer.id,
869
921
  :number => Braintree::Test::CreditCardNumbers::Visa,
870
- :expiration_date => "05/2012"
922
+ :expiration_date => "05/2012",
871
923
  ).credit_card
872
924
 
873
925
  subscription = Braintree::Subscription.create(
874
926
  :payment_method_token => credit_card.token,
875
927
  :plan_id => "integration_trialless_plan",
876
- :price => "1.00"
928
+ :price => "1.00",
877
929
  ).subscription
878
930
 
879
931
  found_customer = Braintree::Customer.find(customer.id)
@@ -888,7 +940,7 @@ describe Braintree::Customer do
888
940
  customer = Braintree::Customer.create(
889
941
  :custom_fields => {
890
942
  :store_me => "custom value"
891
- }
943
+ },
892
944
  ).customer
893
945
  credit_card = Braintree::CreditCard.create(
894
946
  :customer_id => customer.id,
@@ -900,13 +952,13 @@ describe Braintree::Customer do
900
952
  :region => "Illinois",
901
953
  :postal_code => "60622",
902
954
  :country_name => "United States of America"
903
- }
955
+ },
904
956
  ).credit_card
905
957
 
906
958
  subscription = Braintree::Subscription.create(
907
959
  :payment_method_token => credit_card.token,
908
960
  :plan_id => "integration_trialless_plan",
909
- :price => "1.00"
961
+ :price => "1.00",
910
962
  ).subscription
911
963
 
912
964
  found_customer = Braintree::Customer.find(customer.id, {
@@ -922,7 +974,7 @@ describe Braintree::Customer do
922
974
  customer = Braintree::Customer.create(
923
975
  :custom_fields => {
924
976
  :store_me => "custom value"
925
- }
977
+ },
926
978
  ).customer
927
979
  credit_card = Braintree::CreditCard.create(
928
980
  :customer_id => customer.id,
@@ -934,13 +986,13 @@ describe Braintree::Customer do
934
986
  :region => "Illinois",
935
987
  :postal_code => "60622",
936
988
  :country_name => "United States of America"
937
- }
989
+ },
938
990
  ).credit_card
939
991
 
940
992
  subscription = Braintree::Subscription.create(
941
993
  :payment_method_token => credit_card.token,
942
994
  :plan_id => "integration_trialless_plan",
943
- :price => "1.00"
995
+ :price => "1.00",
944
996
  ).subscription
945
997
 
946
998
  found_customer = Braintree::Customer.find(customer.id, {
@@ -958,7 +1010,7 @@ describe Braintree::Customer do
958
1010
 
959
1011
  it "returns associated ApplePayCards" do
960
1012
  result = Braintree::Customer.create(
961
- :payment_method_nonce => Braintree::Test::Nonce::ApplePayAmEx
1013
+ :payment_method_nonce => Braintree::Test::Nonce::ApplePayAmEx,
962
1014
  )
963
1015
  result.success?.should == true
964
1016
 
@@ -973,7 +1025,7 @@ describe Braintree::Customer do
973
1025
 
974
1026
  it "returns associated google pay proxy cards" do
975
1027
  result = Braintree::Customer.create(
976
- :payment_method_nonce => Braintree::Test::Nonce::GooglePayDiscover
1028
+ :payment_method_nonce => Braintree::Test::Nonce::GooglePayDiscover,
977
1029
  )
978
1030
  result.success?.should == true
979
1031
 
@@ -989,7 +1041,7 @@ describe Braintree::Customer do
989
1041
 
990
1042
  it "returns associated google pay network tokens" do
991
1043
  result = Braintree::Customer.create(
992
- :payment_method_nonce => Braintree::Test::Nonce::GooglePayMasterCard
1044
+ :payment_method_nonce => Braintree::Test::Nonce::GooglePayMasterCard,
993
1045
  )
994
1046
  result.success?.should == true
995
1047
 
@@ -1005,7 +1057,7 @@ describe Braintree::Customer do
1005
1057
 
1006
1058
  it "returns associated venmo accounts" do
1007
1059
  result = Braintree::Customer.create(
1008
- :payment_method_nonce => Braintree::Test::Nonce::VenmoAccount
1060
+ :payment_method_nonce => Braintree::Test::Nonce::VenmoAccount,
1009
1061
  )
1010
1062
  result.success?.should == true
1011
1063
 
@@ -1025,7 +1077,7 @@ describe Braintree::Customer do
1025
1077
  :options => {
1026
1078
  :verification_merchant_account_id => SpecHelper::UsBankMerchantAccountId,
1027
1079
  }
1028
- }
1080
+ },
1029
1081
  )
1030
1082
  result.should be_success
1031
1083
 
@@ -1071,7 +1123,7 @@ describe Braintree::Customer do
1071
1123
  it "updates the credit card with three_d_secure pass thru params" do
1072
1124
  customer = Braintree::Customer.create!(
1073
1125
  :first_name => "Joe",
1074
- :last_name => "Cool"
1126
+ :last_name => "Cool",
1075
1127
  )
1076
1128
  result = Braintree::Customer.update(
1077
1129
  customer.id,
@@ -1084,17 +1136,17 @@ describe Braintree::Customer do
1084
1136
  :number => 4111111111111111,
1085
1137
  :expiration_date => "05/2060",
1086
1138
  :three_d_secure_pass_thru => {
1087
- :eci_flag => '02',
1088
- :cavv => 'some_cavv',
1089
- :xid => 'some_xid',
1090
- :three_d_secure_version => '1.0.2',
1091
- :authentication_response => 'Y',
1092
- :directory_response => 'Y',
1093
- :cavv_algorithm => '2',
1094
- :ds_transaction_id => 'some_ds_transaction_id',
1139
+ :eci_flag => "02",
1140
+ :cavv => "some_cavv",
1141
+ :xid => "some_xid",
1142
+ :three_d_secure_version => "1.0.2",
1143
+ :authentication_response => "Y",
1144
+ :directory_response => "Y",
1145
+ :cavv_algorithm => "2",
1146
+ :ds_transaction_id => "some_ds_transaction_id",
1095
1147
  },
1096
1148
  :options => {:verify_card => true},
1097
- }
1149
+ },
1098
1150
  )
1099
1151
  result.success?.should == true
1100
1152
  result.customer.id.should == customer.id
@@ -1106,7 +1158,7 @@ describe Braintree::Customer do
1106
1158
  it "validates the presence of three_d_secure_version while passing three_d_secure_pass_thru in update" do
1107
1159
  customer = Braintree::Customer.create!(
1108
1160
  :first_name => "Joe",
1109
- :last_name => "Cool"
1161
+ :last_name => "Cool",
1110
1162
  )
1111
1163
  result = Braintree::Customer.update(
1112
1164
  customer.id,
@@ -1119,16 +1171,16 @@ describe Braintree::Customer do
1119
1171
  :number => 4111111111111111,
1120
1172
  :expiration_date => "05/2060",
1121
1173
  :three_d_secure_pass_thru => {
1122
- :eci_flag => '02',
1123
- :cavv => 'some_cavv',
1124
- :xid => 'some_xid',
1125
- :authentication_response => 'Y',
1126
- :directory_response => 'Y',
1127
- :cavv_algorithm => '2',
1128
- :ds_transaction_id => 'some_ds_transaction_id',
1174
+ :eci_flag => "02",
1175
+ :cavv => "some_cavv",
1176
+ :xid => "some_xid",
1177
+ :authentication_response => "Y",
1178
+ :directory_response => "Y",
1179
+ :cavv_algorithm => "2",
1180
+ :ds_transaction_id => "some_ds_transaction_id",
1129
1181
  },
1130
1182
  options: {:verify_card => true}
1131
- }
1183
+ },
1132
1184
  )
1133
1185
  expect(result).to_not be_success
1134
1186
  error = result.errors.for(:verification).first
@@ -1139,7 +1191,7 @@ describe Braintree::Customer do
1139
1191
  it "updates the customer with the given id if successful" do
1140
1192
  customer = Braintree::Customer.create!(
1141
1193
  :first_name => "Joe",
1142
- :last_name => "Cool"
1194
+ :last_name => "Cool",
1143
1195
  )
1144
1196
  result = Braintree::Customer.update(
1145
1197
  customer.id,
@@ -1147,7 +1199,7 @@ describe Braintree::Customer do
1147
1199
  :last_name => "Super Cool",
1148
1200
  :custom_fields => {
1149
1201
  :store_me => "a value"
1150
- }
1202
+ },
1151
1203
  )
1152
1204
  result.success?.should == true
1153
1205
  result.customer.id.should == customer.id
@@ -1161,7 +1213,7 @@ describe Braintree::Customer do
1161
1213
  :credit_card => {
1162
1214
  :number => 4111111111111111,
1163
1215
  :expiration_date => "05/2010",
1164
- }
1216
+ },
1165
1217
  )
1166
1218
  result = Braintree::Customer.update(
1167
1219
  customer.id,
@@ -1171,7 +1223,7 @@ describe Braintree::Customer do
1171
1223
  :options=> {
1172
1224
  :fail_on_duplicate_payment_method => true
1173
1225
  }
1174
- }
1226
+ },
1175
1227
  )
1176
1228
  result.success?.should == false
1177
1229
  result.errors.for(:customer).for(:credit_card).on(:number)[0].message.should == "Duplicate card exists in the vault."
@@ -1180,7 +1232,7 @@ describe Braintree::Customer do
1180
1232
  it "updates the default payment method" do
1181
1233
  customer = Braintree::Customer.create!(
1182
1234
  :first_name => "Joe",
1183
- :last_name => "Brown"
1235
+ :last_name => "Brown",
1184
1236
  )
1185
1237
 
1186
1238
  token1 = random_payment_method_token
@@ -1188,7 +1240,7 @@ describe Braintree::Customer do
1188
1240
  payment_method1 = Braintree::PaymentMethod.create(
1189
1241
  :customer_id => customer.id,
1190
1242
  :payment_method_nonce => Braintree::Test::Nonce::TransactableVisa,
1191
- :token => token1
1243
+ :token => token1,
1192
1244
  )
1193
1245
 
1194
1246
  payment_method1 = Braintree::PaymentMethod.find(token1)
@@ -1199,11 +1251,11 @@ describe Braintree::Customer do
1199
1251
  payment_method2 = Braintree::PaymentMethod.create(
1200
1252
  :customer_id => customer.id,
1201
1253
  :payment_method_nonce => Braintree::Test::Nonce::TransactableMasterCard,
1202
- :token => token2
1254
+ :token => token2,
1203
1255
  )
1204
1256
 
1205
1257
  Braintree::Customer.update(customer.id,
1206
- :default_payment_method_token => token2
1258
+ :default_payment_method_token => token2,
1207
1259
  )
1208
1260
 
1209
1261
  payment_method2 = Braintree::PaymentMethod.find(token2)
@@ -1213,7 +1265,7 @@ describe Braintree::Customer do
1213
1265
  it "updates the default payment method in the options" do
1214
1266
  customer = Braintree::Customer.create!(
1215
1267
  :first_name => "Joe",
1216
- :last_name => "Brown"
1268
+ :last_name => "Brown",
1217
1269
  )
1218
1270
 
1219
1271
  token1 = random_payment_method_token
@@ -1221,7 +1273,7 @@ describe Braintree::Customer do
1221
1273
  payment_method1 = Braintree::PaymentMethod.create(
1222
1274
  :customer_id => customer.id,
1223
1275
  :payment_method_nonce => Braintree::Test::Nonce::TransactableVisa,
1224
- :token => token1
1276
+ :token => token1,
1225
1277
  )
1226
1278
 
1227
1279
  payment_method1 = Braintree::PaymentMethod.find(token1)
@@ -1232,7 +1284,7 @@ describe Braintree::Customer do
1232
1284
  payment_method2 = Braintree::PaymentMethod.create(
1233
1285
  :customer_id => customer.id,
1234
1286
  :payment_method_nonce => Braintree::Test::Nonce::TransactableMasterCard,
1235
- :token => token2
1287
+ :token => token2,
1236
1288
  )
1237
1289
 
1238
1290
  Braintree::Customer.update(customer.id,
@@ -1241,7 +1293,7 @@ describe Braintree::Customer do
1241
1293
  :update_existing_token => token2,
1242
1294
  :make_default => true
1243
1295
  }
1244
- }
1296
+ },
1245
1297
  )
1246
1298
 
1247
1299
  payment_method2 = Braintree::PaymentMethod.find(token2)
@@ -1251,7 +1303,7 @@ describe Braintree::Customer do
1251
1303
  it "can use any country code" do
1252
1304
  customer = Braintree::Customer.create!(
1253
1305
  :first_name => "Alex",
1254
- :last_name => "Matterson"
1306
+ :last_name => "Matterson",
1255
1307
  )
1256
1308
  result = Braintree::Customer.update(
1257
1309
  customer.id,
@@ -1266,7 +1318,7 @@ describe Braintree::Customer do
1266
1318
  :country_code_alpha3 => "FJI",
1267
1319
  :country_code_numeric => "242"
1268
1320
  }
1269
- }
1321
+ },
1270
1322
  )
1271
1323
  result.success?.should == true
1272
1324
  result.customer.addresses[0].country_name.should == "Fiji"
@@ -1285,7 +1337,7 @@ describe Braintree::Customer do
1285
1337
  :first_name => "Joe",
1286
1338
  :postal_code => "60622"
1287
1339
  }
1288
- }
1340
+ },
1289
1341
  )
1290
1342
 
1291
1343
  result = Braintree::Customer.update(
@@ -1293,13 +1345,13 @@ describe Braintree::Customer do
1293
1345
  :first_name => "New Joe",
1294
1346
  :credit_card => {
1295
1347
  :cardholder_name => "New Joe Cardholder",
1296
- :options => { :update_existing_token => customer.credit_cards.first.token },
1348
+ :options => {:update_existing_token => customer.credit_cards.first.token},
1297
1349
  :billing_address => {
1298
1350
  :last_name => "Cool",
1299
1351
  :postal_code => "60666",
1300
- :options => { :update_existing => true }
1352
+ :options => {:update_existing => true}
1301
1353
  }
1302
- }
1354
+ },
1303
1355
  )
1304
1356
  result.success?.should == true
1305
1357
  result.customer.id.should == customer.id
@@ -1317,7 +1369,7 @@ describe Braintree::Customer do
1317
1369
 
1318
1370
  it "can update the customer and verify_card with a specific verification_amount" do
1319
1371
  customer = Braintree::Customer.create!(
1320
- :first_name => "Joe"
1372
+ :first_name => "Joe",
1321
1373
  )
1322
1374
 
1323
1375
  result = Braintree::Customer.update(
@@ -1327,8 +1379,73 @@ describe Braintree::Customer do
1327
1379
  :cardholder_name => "New Joe Cardholder",
1328
1380
  :number => Braintree::Test::CreditCardNumbers::Visa,
1329
1381
  :expiration_date => "12/2009",
1330
- :options => { :verify_card => true, :verification_amount => "2.00" }
1331
- }
1382
+ :options => {:verify_card => true, :verification_amount => "2.00"}
1383
+ },
1384
+ )
1385
+ result.success?.should == true
1386
+ end
1387
+
1388
+ it "includes risk data when skip_advanced_fraud_checking is false" do
1389
+ with_fraud_protection_enterprise_merchant do
1390
+ customer = Braintree::Customer.create!(
1391
+ :first_name => "Joe",
1392
+ )
1393
+
1394
+ updated_result = Braintree::Customer.update(
1395
+ customer.id,
1396
+ :credit_card => {
1397
+ :cardholder_name => "New Joe Cardholder",
1398
+ :number => Braintree::Test::CreditCardNumbers::Visa,
1399
+ :expiration_date => "12/2009",
1400
+ :options => {
1401
+ :skip_advanced_fraud_checking => false,
1402
+ :verify_card => true,
1403
+ },
1404
+ },
1405
+ )
1406
+
1407
+ expect(updated_result).to be_success
1408
+ verification = updated_result.customer.credit_cards.first.verification
1409
+ expect(verification.risk_data).not_to be_nil
1410
+ end
1411
+ end
1412
+
1413
+ it "does not include risk data when skip_advanced_fraud_checking is true" do
1414
+ with_fraud_protection_enterprise_merchant do
1415
+ customer = Braintree::Customer.create!(
1416
+ :first_name => "Joe",
1417
+ )
1418
+
1419
+ updated_result = Braintree::Customer.update(
1420
+ customer.id,
1421
+ :credit_card => {
1422
+ :cardholder_name => "New Joe Cardholder",
1423
+ :number => Braintree::Test::CreditCardNumbers::Visa,
1424
+ :expiration_date => "12/2009",
1425
+ :options => {
1426
+ :skip_advanced_fraud_checking => true,
1427
+ :verify_card => true,
1428
+ },
1429
+ },
1430
+ )
1431
+
1432
+ expect(updated_result).to be_success
1433
+ verification = updated_result.customer.credit_cards.first.verification
1434
+ expect(verification.risk_data).to be_nil
1435
+ end
1436
+ end
1437
+
1438
+ it "can update a tax_identifier" do
1439
+ customer = Braintree::Customer.create!(
1440
+ :tax_identifiers => [
1441
+ {:country_code => "US", :identifier => "987654321"},
1442
+ {:country_code => "CL", :identifier => "123456789"}
1443
+ ],
1444
+ )
1445
+
1446
+ result = Braintree::Customer.update(
1447
+ customer.id,
1448
+ :tax_identifiers => [{:country_code => "US", :identifier => "567891234"}],
1332
1449
  )
1333
1450
  result.success?.should == true
1334
1451
  end
@@ -1338,17 +1455,17 @@ describe Braintree::Customer do
1338
1455
  :payment_method_nonce => Braintree::Test::Nonce::ThreeDSecureVisaFullAuthentication,
1339
1456
  :credit_card => {
1340
1457
  :three_d_secure_pass_thru => {
1341
- :eci_flag => '02',
1342
- :cavv => 'some_cavv',
1343
- :xid => 'some_xid',
1344
- :three_d_secure_version => 'xx',
1345
- :authentication_response => 'Y',
1346
- :directory_response => 'Y',
1347
- :cavv_algorithm => '2',
1348
- :ds_transaction_id => 'some_ds_transaction_id',
1458
+ :eci_flag => "02",
1459
+ :cavv => "some_cavv",
1460
+ :xid => "some_xid",
1461
+ :three_d_secure_version => "xx",
1462
+ :authentication_response => "Y",
1463
+ :directory_response => "Y",
1464
+ :cavv_algorithm => "2",
1465
+ :ds_transaction_id => "some_ds_transaction_id",
1349
1466
  },
1350
1467
  :options => {:verify_card => true}
1351
- }
1468
+ },
1352
1469
  )
1353
1470
 
1354
1471
  expect(result).not_to be_success
@@ -1362,17 +1479,17 @@ describe Braintree::Customer do
1362
1479
  :payment_method_nonce => Braintree::Test::Nonce::ThreeDSecureVisaFullAuthentication,
1363
1480
  :credit_card => {
1364
1481
  :three_d_secure_pass_thru => {
1365
- :eci_flag => '02',
1366
- :cavv => 'some_cavv',
1367
- :xid => 'some_xid',
1368
- :three_d_secure_version => '2.2.1',
1369
- :authentication_response => 'Y',
1370
- :directory_response => 'Y',
1371
- :cavv_algorithm => '2',
1372
- :ds_transaction_id => 'some_ds_transaction_id',
1482
+ :eci_flag => "02",
1483
+ :cavv => "some_cavv",
1484
+ :xid => "some_xid",
1485
+ :three_d_secure_version => "2.2.1",
1486
+ :authentication_response => "Y",
1487
+ :directory_response => "Y",
1488
+ :cavv_algorithm => "2",
1489
+ :ds_transaction_id => "some_ds_transaction_id",
1373
1490
  },
1374
1491
  :options => {:verify_card => true}
1375
- }
1492
+ },
1376
1493
  )
1377
1494
 
1378
1495
  expect(result).to be_success
@@ -1383,7 +1500,7 @@ describe Braintree::Customer do
1383
1500
  :payment_method_nonce => Braintree::Test::Nonce::ThreeDSecureVisaFullAuthentication,
1384
1501
  :credit_card => {
1385
1502
  :options => {:verify_card => true}
1386
- }
1503
+ },
1387
1504
  )
1388
1505
  result.success?.should == true
1389
1506
 
@@ -1405,7 +1522,7 @@ describe Braintree::Customer do
1405
1522
  address = Braintree::Address.create!(
1406
1523
  :customer_id => customer.id,
1407
1524
  :first_name => "John",
1408
- :last_name => "Doe"
1525
+ :last_name => "Doe",
1409
1526
  )
1410
1527
 
1411
1528
  customer = Braintree::Customer.update(
@@ -1414,7 +1531,7 @@ describe Braintree::Customer do
1414
1531
  :number => Braintree::Test::CreditCardNumbers::Visa,
1415
1532
  :expiration_date => "12/2009",
1416
1533
  :billing_address_id => address.id
1417
- }
1534
+ },
1418
1535
  ).customer
1419
1536
 
1420
1537
  billing_address = customer.credit_cards.first.billing_address
@@ -1427,7 +1544,7 @@ describe Braintree::Customer do
1427
1544
  customer = Braintree::Customer.create!(:email => "valid@email.com")
1428
1545
  result = Braintree::Customer.update(
1429
1546
  customer.id,
1430
- :email => "@invalid.com"
1547
+ :email => "@invalid.com",
1431
1548
  )
1432
1549
  result.success?.should == false
1433
1550
  result.errors.for(:customer).on(:email)[0].message.should == "Email is an invalid format."
@@ -1436,7 +1553,7 @@ describe Braintree::Customer do
1436
1553
  context "verification_currency_iso_code" do
1437
1554
  it "can update the customer after validating verification_currency_iso_code" do
1438
1555
  customer = Braintree::Customer.create!(
1439
- :first_name => "Joe"
1556
+ :first_name => "Joe",
1440
1557
  )
1441
1558
 
1442
1559
  result = Braintree::Customer.update(
@@ -1446,8 +1563,8 @@ describe Braintree::Customer do
1446
1563
  :cardholder_name => "New Joe Cardholder",
1447
1564
  :number => Braintree::Test::CreditCardNumbers::Visa,
1448
1565
  :expiration_date => "12/2009",
1449
- :options => { :verify_card => true, :verification_currency_iso_code => "USD" }
1450
- }
1566
+ :options => {:verify_card => true, :verification_currency_iso_code => "USD"}
1567
+ },
1451
1568
  )
1452
1569
  result.success?.should == true
1453
1570
  result.customer.credit_cards[0].verification.currency_iso_code == "USD"
@@ -1455,7 +1572,7 @@ describe Braintree::Customer do
1455
1572
 
1456
1573
  it "can update the customer after validating verification_currency_iso_code against the given verification_merchant_account_id" do
1457
1574
  customer = Braintree::Customer.create!(
1458
- :first_name => "Joe"
1575
+ :first_name => "Joe",
1459
1576
  )
1460
1577
 
1461
1578
  result = Braintree::Customer.update(
@@ -1465,8 +1582,8 @@ describe Braintree::Customer do
1465
1582
  :cardholder_name => "New Joe Cardholder",
1466
1583
  :number => Braintree::Test::CreditCardNumbers::Visa,
1467
1584
  :expiration_date => "12/2009",
1468
- :options => { :verify_card => true, :verification_merchant_account_id => SpecHelper::NonDefaultMerchantAccountId, :verification_currency_iso_code => "USD" }
1469
- }
1585
+ :options => {:verify_card => true, :verification_merchant_account_id => SpecHelper::NonDefaultMerchantAccountId, :verification_currency_iso_code => "USD"}
1586
+ },
1470
1587
  )
1471
1588
  result.success?.should == true
1472
1589
  result.customer.credit_cards[0].verification.currency_iso_code == "USD"
@@ -1475,7 +1592,7 @@ describe Braintree::Customer do
1475
1592
 
1476
1593
  it "throws error due to verification_currency_iso_code not matching against the currency configured in default merchant account" do
1477
1594
  customer = Braintree::Customer.create!(
1478
- :first_name => "Joe"
1595
+ :first_name => "Joe",
1479
1596
  )
1480
1597
 
1481
1598
  result = Braintree::Customer.update(
@@ -1485,8 +1602,8 @@ describe Braintree::Customer do
1485
1602
  :cardholder_name => "New Joe Cardholder",
1486
1603
  :number => Braintree::Test::CreditCardNumbers::Visa,
1487
1604
  :expiration_date => "12/2009",
1488
- :options => { :verify_card => true, :verification_currency_iso_code => "GBP" }
1489
- }
1605
+ :options => {:verify_card => true, :verification_currency_iso_code => "GBP"}
1606
+ },
1490
1607
  )
1491
1608
  result.success?.should == false
1492
1609
  expect(result.errors.for(:customer).for(:credit_card).for(:options).on(:verification_currency_iso_code)[0].code).to eq Braintree::ErrorCodes::CreditCard::CurrencyCodeNotSupportedByMerchantAccount
@@ -1495,7 +1612,7 @@ describe Braintree::Customer do
1495
1612
 
1496
1613
  it "throws error due to verification_currency_iso_code not matching against the currency configured in the given verification merchant account" do
1497
1614
  customer = Braintree::Customer.create!(
1498
- :first_name => "Joe"
1615
+ :first_name => "Joe",
1499
1616
  )
1500
1617
 
1501
1618
  result = Braintree::Customer.update(
@@ -1505,8 +1622,8 @@ describe Braintree::Customer do
1505
1622
  :cardholder_name => "New Joe Cardholder",
1506
1623
  :number => Braintree::Test::CreditCardNumbers::Visa,
1507
1624
  :expiration_date => "12/2009",
1508
- :options => { :verify_card => true, :verification_merchant_account_id => SpecHelper::NonDefaultMerchantAccountId, :verification_currency_iso_code => "GBP" }
1509
- }
1625
+ :options => {:verify_card => true, :verification_merchant_account_id => SpecHelper::NonDefaultMerchantAccountId, :verification_currency_iso_code => "GBP"}
1626
+ },
1510
1627
  )
1511
1628
  result.success?.should == false
1512
1629
  expect(result.errors.for(:customer).for(:credit_card).for(:options).on(:verification_currency_iso_code)[0].code).to eq Braintree::ErrorCodes::CreditCard::CurrencyCodeNotSupportedByMerchantAccount
@@ -1529,7 +1646,7 @@ describe Braintree::Customer do
1529
1646
  :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
1530
1647
  :verification_account_type => "credit",
1531
1648
  },
1532
- }
1649
+ },
1533
1650
  )
1534
1651
  expect(update_result).to be_success
1535
1652
  end
@@ -1548,7 +1665,7 @@ describe Braintree::Customer do
1548
1665
  :verification_merchant_account_id => SpecHelper::HiperBRLMerchantAccountId,
1549
1666
  :verification_account_type => "debit",
1550
1667
  },
1551
- }
1668
+ },
1552
1669
  )
1553
1670
  expect(update_result).to be_success
1554
1671
  end
@@ -1559,12 +1676,12 @@ describe Braintree::Customer do
1559
1676
  it "returns the updated customer if successful" do
1560
1677
  customer = Braintree::Customer.create!(
1561
1678
  :first_name => "Joe",
1562
- :last_name => "Cool"
1679
+ :last_name => "Cool",
1563
1680
  )
1564
1681
  updated_customer = Braintree::Customer.update!(
1565
1682
  customer.id,
1566
1683
  :first_name => "Mr. Joe",
1567
- :last_name => "Super Cool"
1684
+ :last_name => "Super Cool",
1568
1685
  )
1569
1686
  updated_customer.first_name.should == "Mr. Joe"
1570
1687
  updated_customer.last_name.should == "Super Cool"
@@ -1588,7 +1705,7 @@ describe Braintree::Customer do
1588
1705
  :options => {
1589
1706
  :make_default => false
1590
1707
  }
1591
- }
1708
+ },
1592
1709
  )
1593
1710
 
1594
1711
  default_payment_method = Braintree::CreditCard.create!(
@@ -1597,7 +1714,7 @@ describe Braintree::Customer do
1597
1714
  :expiration_date => "11/2015",
1598
1715
  :options => {
1599
1716
  :make_default => true
1600
- }
1717
+ },
1601
1718
  )
1602
1719
 
1603
1720
  customer = Braintree::Customer.find(customer.id)
@@ -1610,7 +1727,7 @@ describe Braintree::Customer do
1610
1727
  context "future" do
1611
1728
  it "creates a customer with a future paypal account" do
1612
1729
  result = Braintree::Customer.create(
1613
- :payment_method_nonce => Braintree::Test::Nonce::PayPalFuturePayment
1730
+ :payment_method_nonce => Braintree::Test::Nonce::PayPalFuturePayment,
1614
1731
  )
1615
1732
 
1616
1733
  result.should be_success
@@ -1624,7 +1741,7 @@ describe Braintree::Customer do
1624
1741
  :options => {
1625
1742
  :make_default => true
1626
1743
  }
1627
- }
1744
+ },
1628
1745
  )
1629
1746
 
1630
1747
  paypal_account_token = "PAYPAL_ACCOUNT_TOKEN_#{rand(36**3).to_s(36)}"
@@ -1633,12 +1750,12 @@ describe Braintree::Customer do
1633
1750
  :token => paypal_account_token,
1634
1751
  :options => {
1635
1752
  :make_default => true
1636
- }
1753
+ },
1637
1754
  )
1638
1755
 
1639
1756
  result = Braintree::Customer.update(
1640
1757
  customer.id,
1641
- :payment_method_nonce => nonce
1758
+ :payment_method_nonce => nonce,
1642
1759
  )
1643
1760
 
1644
1761
  result.should be_success
@@ -1654,7 +1771,7 @@ describe Braintree::Customer do
1654
1771
  :token => paypal_account_token,
1655
1772
  :options => {
1656
1773
  :make_default => true
1657
- }
1774
+ },
1658
1775
  )
1659
1776
 
1660
1777
  result = Braintree::Customer.create(
@@ -1690,7 +1807,7 @@ describe Braintree::Customer do
1690
1807
  :options => {
1691
1808
  :make_default => true
1692
1809
  }
1693
- }
1810
+ },
1694
1811
  )
1695
1812
 
1696
1813
  paypal_account_token = "PAYPAL_ACCOUNT_TOKEN_#{rand(36**3).to_s(36)}"
@@ -1699,7 +1816,7 @@ describe Braintree::Customer do
1699
1816
  :token => paypal_account_token,
1700
1817
  :options => {
1701
1818
  :make_default => true
1702
- }
1819
+ },
1703
1820
  )
1704
1821
 
1705
1822
  result = Braintree::Customer.update(
@@ -1733,7 +1850,7 @@ describe Braintree::Customer do
1733
1850
  context "onetime" do
1734
1851
  it "does not create a customer with a onetime paypal account" do
1735
1852
  result = Braintree::Customer.create(
1736
- :payment_method_nonce => Braintree::Test::Nonce::PayPalOneTimePayment
1853
+ :payment_method_nonce => Braintree::Test::Nonce::PayPalOneTimePayment,
1737
1854
  )
1738
1855
 
1739
1856
  result.should_not be_success
@@ -1749,7 +1866,7 @@ describe Braintree::Customer do
1749
1866
  :options => {
1750
1867
  :make_default => true
1751
1868
  }
1752
- }
1869
+ },
1753
1870
  )
1754
1871
 
1755
1872
  paypal_account_token = "PAYPAL_ACCOUNT_TOKEN_#{rand(36**3).to_s(36)}"
@@ -1758,12 +1875,12 @@ describe Braintree::Customer do
1758
1875
  :token => paypal_account_token,
1759
1876
  :options => {
1760
1877
  :make_default => true
1761
- }
1878
+ },
1762
1879
  )
1763
1880
 
1764
1881
  result = Braintree::Customer.update(
1765
1882
  customer.id,
1766
- :payment_method_nonce => nonce
1883
+ :payment_method_nonce => nonce,
1767
1884
  )
1768
1885
 
1769
1886
  result.should_not be_success