braintree 3.2.0 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
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