braintree 2.69.1 → 2.70.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.
- data/README.rdoc +1 -1
- data/lib/braintree.rb +3 -0
- data/lib/braintree/error_codes.rb +8 -0
- data/lib/braintree/gateway.rb +4 -0
- data/lib/braintree/ideal_payment.rb +46 -0
- data/lib/braintree/ideal_payment_gateway.rb +18 -0
- data/lib/braintree/merchant_account_gateway.rb +18 -0
- data/lib/braintree/payment_instrument_type.rb +1 -0
- data/lib/braintree/payment_method.rb +2 -2
- data/lib/braintree/payment_method_gateway.rb +9 -3
- data/lib/braintree/transaction.rb +2 -0
- data/lib/braintree/transaction/ideal_payment_details.rb +13 -0
- data/lib/braintree/transaction/paypal_details.rb +1 -1
- data/lib/braintree/transaction_gateway.rb +1 -0
- data/lib/braintree/version.rb +2 -2
- data/spec/httpsd.pid +1 -1
- data/spec/integration/braintree/client_api/spec_helper.rb +37 -14
- data/spec/integration/braintree/customer_spec.rb +2 -2
- data/spec/integration/braintree/ideal_payment_spec.rb +87 -0
- data/spec/integration/braintree/merchant_account_spec.rb +103 -0
- data/spec/integration/braintree/merchant_spec.rb +65 -55
- data/spec/integration/braintree/payment_method_spec.rb +3 -3
- data/spec/integration/braintree/transaction_spec.rb +69 -6
- data/spec/integration/braintree/us_bank_account_spec.rb +6 -6
- data/spec/spec_helper.rb +18 -1
- data/spec/unit/braintree/payment_method_spec.rb +27 -0
- data/spec/unit/braintree/transaction_spec.rb +77 -0
- metadata +169 -165
@@ -61,20 +61,14 @@ describe Braintree::MerchantGateway do
|
|
61
61
|
)
|
62
62
|
end
|
63
63
|
|
64
|
-
it "creates a
|
64
|
+
it "creates a US multi currency merchant for paypal and credit_card" do
|
65
65
|
result = @gateway.merchant.create(
|
66
66
|
:email => "name@email.com",
|
67
67
|
:country_code_alpha3 => "USA",
|
68
|
-
:payment_methods => ["paypal"],
|
69
|
-
:currencies => ["GBP", "USD"]
|
70
|
-
:paypal_account => {
|
71
|
-
:client_id => "paypal_client_id",
|
72
|
-
:client_secret => "paypal_client_secret",
|
73
|
-
}
|
68
|
+
:payment_methods => ["credit_card", "paypal"],
|
69
|
+
:currencies => ["GBP", "USD"]
|
74
70
|
)
|
75
71
|
|
76
|
-
result.should be_success
|
77
|
-
|
78
72
|
merchant = result.merchant
|
79
73
|
merchant.id.should_not be_nil
|
80
74
|
merchant.email.should == "name@email.com"
|
@@ -102,27 +96,22 @@ describe Braintree::MerchantGateway do
|
|
102
96
|
merchant_account.currency_iso_code.should == "GBP"
|
103
97
|
end
|
104
98
|
|
105
|
-
it "
|
99
|
+
it "creates an EU multi currency merchant for paypal and credit_card" do
|
106
100
|
result = @gateway.merchant.create(
|
107
101
|
:email => "name@email.com",
|
108
|
-
:country_code_alpha3 => "
|
109
|
-
:payment_methods => ["paypal"],
|
110
|
-
:
|
111
|
-
:client_id => "paypal_client_id",
|
112
|
-
:client_secret => "paypal_client_secret",
|
113
|
-
}
|
102
|
+
:country_code_alpha3 => "GBR",
|
103
|
+
:payment_methods => ["credit_card", "paypal"],
|
104
|
+
:currencies => ["GBP", "USD"]
|
114
105
|
)
|
115
106
|
|
116
|
-
result.should be_success
|
117
|
-
|
118
107
|
merchant = result.merchant
|
119
108
|
merchant.id.should_not be_nil
|
120
109
|
merchant.email.should == "name@email.com"
|
121
110
|
merchant.company_name.should == "name@email.com"
|
122
|
-
merchant.country_code_alpha3.should == "
|
123
|
-
merchant.country_code_alpha2.should == "
|
124
|
-
merchant.country_code_numeric.should == "
|
125
|
-
merchant.country_name.should == "
|
111
|
+
merchant.country_code_alpha3.should == "GBR"
|
112
|
+
merchant.country_code_alpha2.should == "GB"
|
113
|
+
merchant.country_code_numeric.should == "826"
|
114
|
+
merchant.country_name.should == "United Kingdom"
|
126
115
|
|
127
116
|
credentials = result.credentials
|
128
117
|
credentials.access_token.should_not be_nil
|
@@ -131,18 +120,24 @@ describe Braintree::MerchantGateway do
|
|
131
120
|
credentials.token_type.should == "bearer"
|
132
121
|
|
133
122
|
merchant_accounts = merchant.merchant_accounts
|
134
|
-
merchant_accounts.count.should ==
|
123
|
+
merchant_accounts.count.should == 2
|
135
124
|
|
136
|
-
merchant_account = merchant_accounts.detect { |ma| ma.id == "
|
125
|
+
merchant_account = merchant_accounts.detect { |ma| ma.id == "GBP" }
|
137
126
|
merchant_account.default.should == true
|
138
|
-
merchant_account.currency_iso_code.should == "
|
127
|
+
merchant_account.currency_iso_code.should == "GBP"
|
128
|
+
|
129
|
+
merchant_account = merchant_accounts.detect { |ma| ma.id == "USD" }
|
130
|
+
merchant_account.default.should == false
|
131
|
+
merchant_account.currency_iso_code.should == "USD"
|
139
132
|
end
|
140
133
|
|
141
|
-
|
134
|
+
|
135
|
+
it "creates a paypal-only merchant that accepts multiple currencies" do
|
142
136
|
result = @gateway.merchant.create(
|
143
137
|
:email => "name@email.com",
|
144
|
-
:country_code_alpha3 => "
|
138
|
+
:country_code_alpha3 => "USA",
|
145
139
|
:payment_methods => ["paypal"],
|
140
|
+
:currencies => ["GBP", "USD"],
|
146
141
|
:paypal_account => {
|
147
142
|
:client_id => "paypal_client_id",
|
148
143
|
:client_secret => "paypal_client_secret",
|
@@ -155,10 +150,10 @@ describe Braintree::MerchantGateway do
|
|
155
150
|
merchant.id.should_not be_nil
|
156
151
|
merchant.email.should == "name@email.com"
|
157
152
|
merchant.company_name.should == "name@email.com"
|
158
|
-
merchant.country_code_alpha3.should == "
|
159
|
-
merchant.country_code_alpha2.should == "
|
160
|
-
merchant.country_code_numeric.should == "
|
161
|
-
merchant.country_name.should == "
|
153
|
+
merchant.country_code_alpha3.should == "USA"
|
154
|
+
merchant.country_code_alpha2.should == "US"
|
155
|
+
merchant.country_code_numeric.should == "840"
|
156
|
+
merchant.country_name.should == "United States of America"
|
162
157
|
|
163
158
|
credentials = result.credentials
|
164
159
|
credentials.access_token.should_not be_nil
|
@@ -167,25 +162,22 @@ describe Braintree::MerchantGateway do
|
|
167
162
|
credentials.token_type.should == "bearer"
|
168
163
|
|
169
164
|
merchant_accounts = merchant.merchant_accounts
|
170
|
-
merchant_accounts.count.should ==
|
165
|
+
merchant_accounts.count.should == 2
|
171
166
|
|
172
167
|
merchant_account = merchant_accounts.detect { |ma| ma.id == "USD" }
|
173
168
|
merchant_account.default.should == true
|
174
169
|
merchant_account.currency_iso_code.should == "USD"
|
175
|
-
end
|
176
170
|
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
:logger => Logger.new("/dev/null")
|
182
|
-
)
|
171
|
+
merchant_account = merchant_accounts.detect { |ma| ma.id == "GBP" }
|
172
|
+
merchant_account.default.should == false
|
173
|
+
merchant_account.currency_iso_code.should == "GBP"
|
174
|
+
end
|
183
175
|
|
184
|
-
|
176
|
+
it "allows creation of non-US merchant if onboarding application is internal" do
|
177
|
+
result = @gateway.merchant.create(
|
185
178
|
:email => "name@email.com",
|
186
|
-
:country_code_alpha3 => "
|
179
|
+
:country_code_alpha3 => "JPN",
|
187
180
|
:payment_methods => ["paypal"],
|
188
|
-
:currencies => ["USD", "GBP"],
|
189
181
|
:paypal_account => {
|
190
182
|
:client_id => "paypal_client_id",
|
191
183
|
:client_secret => "paypal_client_secret",
|
@@ -198,10 +190,10 @@ describe Braintree::MerchantGateway do
|
|
198
190
|
merchant.id.should_not be_nil
|
199
191
|
merchant.email.should == "name@email.com"
|
200
192
|
merchant.company_name.should == "name@email.com"
|
201
|
-
merchant.country_code_alpha3.should == "
|
202
|
-
merchant.country_code_alpha2.should == "
|
203
|
-
merchant.country_code_numeric.should == "
|
204
|
-
merchant.country_name.should == "
|
193
|
+
merchant.country_code_alpha3.should == "JPN"
|
194
|
+
merchant.country_code_alpha2.should == "JP"
|
195
|
+
merchant.country_code_numeric.should == "392"
|
196
|
+
merchant.country_name.should == "Japan"
|
205
197
|
|
206
198
|
credentials = result.credentials
|
207
199
|
credentials.access_token.should_not be_nil
|
@@ -212,27 +204,45 @@ describe Braintree::MerchantGateway do
|
|
212
204
|
merchant_accounts = merchant.merchant_accounts
|
213
205
|
merchant_accounts.count.should == 1
|
214
206
|
|
215
|
-
merchant_account = merchant_accounts.
|
207
|
+
merchant_account = merchant_accounts.detect { |ma| ma.id == "JPY" }
|
216
208
|
merchant_account.default.should == true
|
217
|
-
merchant_account.currency_iso_code.should == "
|
209
|
+
merchant_account.currency_iso_code.should == "JPY"
|
218
210
|
end
|
219
211
|
|
220
|
-
it "
|
212
|
+
it "defaults to USD for non-US merchant if onboarding application is internal and country currency not supported" do
|
221
213
|
result = @gateway.merchant.create(
|
222
214
|
:email => "name@email.com",
|
223
|
-
:country_code_alpha3 => "
|
224
|
-
:payment_methods => ["
|
225
|
-
:currencies => ["USD", "GBP"],
|
215
|
+
:country_code_alpha3 => "YEM",
|
216
|
+
:payment_methods => ["paypal"],
|
226
217
|
:paypal_account => {
|
227
218
|
:client_id => "paypal_client_id",
|
228
219
|
:client_secret => "paypal_client_secret",
|
229
220
|
}
|
230
221
|
)
|
231
222
|
|
232
|
-
result.
|
233
|
-
|
223
|
+
result.should be_success
|
224
|
+
|
225
|
+
merchant = result.merchant
|
226
|
+
merchant.id.should_not be_nil
|
227
|
+
merchant.email.should == "name@email.com"
|
228
|
+
merchant.company_name.should == "name@email.com"
|
229
|
+
merchant.country_code_alpha3.should == "YEM"
|
230
|
+
merchant.country_code_alpha2.should == "YE"
|
231
|
+
merchant.country_code_numeric.should == "887"
|
232
|
+
merchant.country_name.should == "Yemen"
|
234
233
|
|
235
|
-
|
234
|
+
credentials = result.credentials
|
235
|
+
credentials.access_token.should_not be_nil
|
236
|
+
credentials.refresh_token.should_not be_nil
|
237
|
+
credentials.expires_at.should_not be_nil
|
238
|
+
credentials.token_type.should == "bearer"
|
239
|
+
|
240
|
+
merchant_accounts = merchant.merchant_accounts
|
241
|
+
merchant_accounts.count.should == 1
|
242
|
+
|
243
|
+
merchant_account = merchant_accounts.detect { |ma| ma.id == "USD" }
|
244
|
+
merchant_account.default.should == true
|
245
|
+
merchant_account.currency_iso_code.should == "USD"
|
236
246
|
end
|
237
247
|
|
238
248
|
it "returns error if invalid currency is passed" do
|
@@ -492,12 +492,12 @@ describe Braintree::PaymentMethod do
|
|
492
492
|
result.should be_success
|
493
493
|
us_bank_account = result.payment_method
|
494
494
|
us_bank_account.should be_a(Braintree::UsBankAccount)
|
495
|
-
us_bank_account.routing_number.should == "
|
495
|
+
us_bank_account.routing_number.should == "021000021"
|
496
496
|
us_bank_account.last_4.should == "1234"
|
497
497
|
us_bank_account.account_type.should == "checking"
|
498
498
|
us_bank_account.account_description.should == "PayPal Checking - 1234"
|
499
499
|
us_bank_account.account_holder_name.should == "Dan Schulman"
|
500
|
-
us_bank_account.bank_name.should
|
500
|
+
us_bank_account.bank_name.should =~ /CHASE/
|
501
501
|
us_bank_account.default.should == true
|
502
502
|
us_bank_account.ach_mandate.text.should == "cl mandate text"
|
503
503
|
us_bank_account.ach_mandate.accepted_at.should be_a Time
|
@@ -902,7 +902,7 @@ describe Braintree::PaymentMethod do
|
|
902
902
|
paypal_account = Braintree::PaymentMethod.find(paypal_account_token)
|
903
903
|
paypal_account.should be_a(Braintree::PayPalAccount)
|
904
904
|
|
905
|
-
result = Braintree::PaymentMethod.delete(paypal_account_token)
|
905
|
+
result = Braintree::PaymentMethod.delete(paypal_account_token, {:revoke_all_grants => false})
|
906
906
|
result.success?.should == true
|
907
907
|
|
908
908
|
expect do
|
@@ -2123,12 +2123,12 @@ describe Braintree::Transaction do
|
|
2123
2123
|
result.transaction.payment_instrument_type.should == Braintree::PaymentInstrumentType::UsBankAccount
|
2124
2124
|
result.transaction.amount.should == BigDecimal.new(Braintree::Test::TransactionAmounts::Authorize)
|
2125
2125
|
result.transaction.status.should == Braintree::Transaction::Status::SettlementPending
|
2126
|
-
result.transaction.us_bank_account_details.routing_number.should == "
|
2126
|
+
result.transaction.us_bank_account_details.routing_number.should == "021000021"
|
2127
2127
|
result.transaction.us_bank_account_details.last_4.should == "1234"
|
2128
2128
|
result.transaction.us_bank_account_details.account_type.should == "checking"
|
2129
2129
|
result.transaction.us_bank_account_details.account_description.should == "PayPal Checking - 1234"
|
2130
2130
|
result.transaction.us_bank_account_details.account_holder_name.should == "Dan Schulman"
|
2131
|
-
result.transaction.us_bank_account_details.bank_name.should
|
2131
|
+
result.transaction.us_bank_account_details.bank_name.should =~ /CHASE/
|
2132
2132
|
result.transaction.us_bank_account_details.ach_mandate.text.should == "cl mandate text"
|
2133
2133
|
result.transaction.us_bank_account_details.ach_mandate.accepted_at.should be_a Time
|
2134
2134
|
end
|
@@ -2149,12 +2149,12 @@ describe Braintree::Transaction do
|
|
2149
2149
|
result.transaction.type.should == "sale"
|
2150
2150
|
result.transaction.amount.should == BigDecimal.new(Braintree::Test::TransactionAmounts::Authorize)
|
2151
2151
|
result.transaction.status.should == Braintree::Transaction::Status::SettlementPending
|
2152
|
-
result.transaction.us_bank_account_details.routing_number.should == "
|
2152
|
+
result.transaction.us_bank_account_details.routing_number.should == "021000021"
|
2153
2153
|
result.transaction.us_bank_account_details.last_4.should == "1234"
|
2154
2154
|
result.transaction.us_bank_account_details.account_type.should == "checking"
|
2155
2155
|
result.transaction.us_bank_account_details.account_description.should == "PayPal Checking - 1234"
|
2156
2156
|
result.transaction.us_bank_account_details.account_holder_name.should == "Dan Schulman"
|
2157
|
-
result.transaction.us_bank_account_details.bank_name.should
|
2157
|
+
result.transaction.us_bank_account_details.bank_name.should =~ /CHASE/
|
2158
2158
|
result.transaction.us_bank_account_details.ach_mandate.text.should == "cl mandate text"
|
2159
2159
|
result.transaction.us_bank_account_details.ach_mandate.accepted_at.should be_a Time
|
2160
2160
|
|
@@ -2172,12 +2172,12 @@ describe Braintree::Transaction do
|
|
2172
2172
|
result.transaction.type.should == "sale"
|
2173
2173
|
result.transaction.amount.should == BigDecimal.new(Braintree::Test::TransactionAmounts::Authorize)
|
2174
2174
|
result.transaction.status.should == Braintree::Transaction::Status::SettlementPending
|
2175
|
-
result.transaction.us_bank_account_details.routing_number.should == "
|
2175
|
+
result.transaction.us_bank_account_details.routing_number.should == "021000021"
|
2176
2176
|
result.transaction.us_bank_account_details.last_4.should == "1234"
|
2177
2177
|
result.transaction.us_bank_account_details.account_type.should == "checking"
|
2178
2178
|
result.transaction.us_bank_account_details.account_description.should == "PayPal Checking - 1234"
|
2179
2179
|
result.transaction.us_bank_account_details.account_holder_name.should == "Dan Schulman"
|
2180
|
-
result.transaction.us_bank_account_details.bank_name.should
|
2180
|
+
result.transaction.us_bank_account_details.bank_name.should =~ /CHASE/
|
2181
2181
|
result.transaction.us_bank_account_details.ach_mandate.text.should == "cl mandate text"
|
2182
2182
|
result.transaction.us_bank_account_details.ach_mandate.accepted_at.should be_a Time
|
2183
2183
|
end
|
@@ -2196,6 +2196,53 @@ describe Braintree::Transaction do
|
|
2196
2196
|
result.errors.for(:transaction).on(:payment_method_nonce)[0].code.should == Braintree::ErrorCodes::Transaction::PaymentMethodNonceUnknown
|
2197
2197
|
end
|
2198
2198
|
end
|
2199
|
+
|
2200
|
+
context "ideal payment nonce" do
|
2201
|
+
it "returns a successful result for tansacting on an ideal payment nonce" do
|
2202
|
+
valid_ideal_payment_id = generate_valid_ideal_payment_nonce
|
2203
|
+
result = Braintree::Transaction.create(
|
2204
|
+
:type => "sale",
|
2205
|
+
:order_id => SpecHelper::DefaultOrderId,
|
2206
|
+
:amount => Braintree::Test::TransactionAmounts::Authorize,
|
2207
|
+
:merchant_account_id => SpecHelper::IdealMerchantAccountId,
|
2208
|
+
:payment_method_nonce => valid_ideal_payment_id,
|
2209
|
+
:options => {
|
2210
|
+
:submit_for_settlement => true,
|
2211
|
+
}
|
2212
|
+
)
|
2213
|
+
result.success?.should == true
|
2214
|
+
result.transaction.id.should =~ /^\w{6,}$/
|
2215
|
+
result.transaction.type.should == "sale"
|
2216
|
+
result.transaction.payment_instrument_type.should == Braintree::PaymentInstrumentType::IdealPayment
|
2217
|
+
result.transaction.amount.should == BigDecimal.new(Braintree::Test::TransactionAmounts::Authorize)
|
2218
|
+
result.transaction.status.should == Braintree::Transaction::Status::Settled
|
2219
|
+
result.transaction.ideal_payment_details.ideal_payment_id.should =~ /^idealpayment_\w{6,}$/
|
2220
|
+
result.transaction.ideal_payment_details.ideal_transaction_id.should =~ /^\d{16,}$/
|
2221
|
+
result.transaction.ideal_payment_details.image_url.should start_with("https://")
|
2222
|
+
result.transaction.ideal_payment_details.masked_iban.should_not be_empty
|
2223
|
+
result.transaction.ideal_payment_details.bic.should_not be_empty
|
2224
|
+
end
|
2225
|
+
|
2226
|
+
it "returns a failure if ideal payment is not complete" do
|
2227
|
+
expired_payment_amount = "3.00"
|
2228
|
+
|
2229
|
+
incomplete_payment_id = generate_valid_ideal_payment_nonce(expired_payment_amount)
|
2230
|
+
|
2231
|
+
result = Braintree::Transaction.create(
|
2232
|
+
:type => "sale",
|
2233
|
+
:order_id => SpecHelper::DefaultOrderId,
|
2234
|
+
:amount => expired_payment_amount,
|
2235
|
+
:merchant_account_id => SpecHelper::IdealMerchantAccountId,
|
2236
|
+
:payment_method_nonce => incomplete_payment_id,
|
2237
|
+
:options => {
|
2238
|
+
:submit_for_settlement => true,
|
2239
|
+
}
|
2240
|
+
)
|
2241
|
+
|
2242
|
+
result.success?.should == false
|
2243
|
+
result.errors.for(:transaction).on(:ideal_payment)[0].code.should == Braintree::ErrorCodes::Transaction::IdealPaymentNotComplete
|
2244
|
+
end
|
2245
|
+
end
|
2199
2246
|
end
|
2200
2247
|
|
2201
2248
|
describe "self.create!" do
|
@@ -2651,6 +2698,21 @@ describe Braintree::Transaction do
|
|
2651
2698
|
result.errors.for(:transaction).on(:amount)[0].code.should == Braintree::ErrorCodes::Transaction::AmountIsRequired
|
2652
2699
|
end
|
2653
2700
|
|
2701
|
+
it "skips advanced fraud checking if transaction[options][skip_advanced_fraud_checking] is set to true" do
|
2702
|
+
result = Braintree::Transaction.sale(
|
2703
|
+
:amount => Braintree::Test::TransactionAmounts::Authorize,
|
2704
|
+
:credit_card => {
|
2705
|
+
:number => Braintree::Test::CreditCardNumbers::Visa,
|
2706
|
+
:expiration_date => "05/2009"
|
2707
|
+
},
|
2708
|
+
:options => {
|
2709
|
+
:skip_advanced_fraud_checking => true
|
2710
|
+
}
|
2711
|
+
)
|
2712
|
+
result.success?.should == true
|
2713
|
+
result.transaction.risk_data.id.should be_nil
|
2714
|
+
end
|
2715
|
+
|
2654
2716
|
it "works with Apple Pay params" do
|
2655
2717
|
params = {
|
2656
2718
|
:amount => "3.12",
|
@@ -3937,6 +3999,7 @@ describe Braintree::Transaction do
|
|
3937
3999
|
transaction.paypal_details.payer_id.should_not be_nil
|
3938
4000
|
transaction.paypal_details.payer_first_name.should_not be_nil
|
3939
4001
|
transaction.paypal_details.payer_last_name.should_not be_nil
|
4002
|
+
transaction.paypal_details.payer_status.should_not be_nil
|
3940
4003
|
transaction.paypal_details.seller_protection_status.should_not be_nil
|
3941
4004
|
transaction.paypal_details.capture_id.should_not be_nil
|
3942
4005
|
transaction.paypal_details.refund_id.should_not be_nil
|
@@ -15,12 +15,12 @@ describe Braintree::UsBankAccount do
|
|
15
15
|
|
16
16
|
us_bank_account = Braintree::UsBankAccount.find(result.payment_method.token)
|
17
17
|
us_bank_account.should be_a(Braintree::UsBankAccount)
|
18
|
-
us_bank_account.routing_number.should == "
|
18
|
+
us_bank_account.routing_number.should == "021000021"
|
19
19
|
us_bank_account.last_4.should == "1234"
|
20
20
|
us_bank_account.account_type.should == "checking"
|
21
21
|
us_bank_account.account_description.should == "PayPal Checking - 1234"
|
22
22
|
us_bank_account.account_holder_name.should == "Dan Schulman"
|
23
|
-
us_bank_account.bank_name.should
|
23
|
+
us_bank_account.bank_name.should =~ /CHASE/
|
24
24
|
us_bank_account.ach_mandate.text.should == "cl mandate text"
|
25
25
|
us_bank_account.ach_mandate.accepted_at.should be_a Time
|
26
26
|
end
|
@@ -49,12 +49,12 @@ describe Braintree::UsBankAccount do
|
|
49
49
|
result.transaction.amount.should == BigDecimal.new("100.00")
|
50
50
|
result.transaction.type.should == "sale"
|
51
51
|
us_bank_account = result.transaction.us_bank_account_details
|
52
|
-
us_bank_account.routing_number.should == "
|
52
|
+
us_bank_account.routing_number.should == "021000021"
|
53
53
|
us_bank_account.last_4.should == "1234"
|
54
54
|
us_bank_account.account_type.should == "checking"
|
55
55
|
us_bank_account.account_description.should == "PayPal Checking - 1234"
|
56
56
|
us_bank_account.account_holder_name.should == "Dan Schulman"
|
57
|
-
us_bank_account.bank_name.should
|
57
|
+
us_bank_account.bank_name.should =~ /CHASE/
|
58
58
|
us_bank_account.ach_mandate.text.should == "cl mandate text"
|
59
59
|
us_bank_account.ach_mandate.accepted_at.should be_a Time
|
60
60
|
end
|
@@ -76,12 +76,12 @@ describe Braintree::UsBankAccount do
|
|
76
76
|
transaction.amount.should == BigDecimal.new("100.00")
|
77
77
|
transaction.type.should == "sale"
|
78
78
|
us_bank_account = transaction.us_bank_account_details
|
79
|
-
us_bank_account.routing_number.should == "
|
79
|
+
us_bank_account.routing_number.should == "021000021"
|
80
80
|
us_bank_account.last_4.should == "1234"
|
81
81
|
us_bank_account.account_type.should == "checking"
|
82
82
|
us_bank_account.account_description.should == "PayPal Checking - 1234"
|
83
83
|
us_bank_account.account_holder_name.should == "Dan Schulman"
|
84
|
-
us_bank_account.bank_name.should
|
84
|
+
us_bank_account.bank_name.should =~ /CHASE/
|
85
85
|
us_bank_account.ach_mandate.text.should == "cl mandate text"
|
86
86
|
us_bank_account.ach_mandate.accepted_at.should be_a Time
|
87
87
|
end
|
data/spec/spec_helper.rb
CHANGED
@@ -40,6 +40,7 @@ unless defined?(SPEC_HELPER_LOADED)
|
|
40
40
|
FakeAmexDirectMerchantAccountId = "fake_amex_direct_usd"
|
41
41
|
FakeVenmoAccountMerchantAccountId = "fake_first_data_venmo_account"
|
42
42
|
UsBankMerhantAccountId = "us_bank_merchant_account"
|
43
|
+
IdealMerchantAccountId = "ideal_merchant_account"
|
43
44
|
|
44
45
|
TrialPlan = {
|
45
46
|
:description => "Plan for integration tests -- with trial",
|
@@ -81,6 +82,8 @@ unless defined?(SPEC_HELPER_LOADED)
|
|
81
82
|
Discount11 = "discount_11"
|
82
83
|
Discount15 = "discount_15"
|
83
84
|
|
85
|
+
DefaultOrderId = "ABC123"
|
86
|
+
|
84
87
|
TestMerchantConfig = Braintree::Configuration.new(
|
85
88
|
:logger => Logger.new("/dev/null"),
|
86
89
|
:environment => Braintree::Configuration.environment,
|
@@ -107,6 +110,20 @@ unless defined?(SPEC_HELPER_LOADED)
|
|
107
110
|
response[:three_d_secure_verification][:three_d_secure_token]
|
108
111
|
end
|
109
112
|
|
113
|
+
def self.create_merchant(params={})
|
114
|
+
gateway = Braintree::Gateway.new(
|
115
|
+
:client_id => "client_id$#{Braintree::Configuration.environment}$integration_client_id",
|
116
|
+
:client_secret => "client_secret$#{Braintree::Configuration.environment}$integration_client_secret",
|
117
|
+
:logger => Logger.new("/dev/null")
|
118
|
+
)
|
119
|
+
|
120
|
+
gateway.merchant.create({
|
121
|
+
:email => "name@email.com",
|
122
|
+
:country_code_alpha3 => "GBR",
|
123
|
+
:payment_methods => ["credit_card", "paypal"],
|
124
|
+
}.merge!(params))
|
125
|
+
end
|
126
|
+
|
110
127
|
def self.stub_time_dot_now(desired_time)
|
111
128
|
Time.class_eval do
|
112
129
|
class << self
|
@@ -205,6 +222,6 @@ RSpec.configure do |config|
|
|
205
222
|
end
|
206
223
|
|
207
224
|
config.mock_with :rspec do |mock|
|
208
|
-
mock.syntax = :should
|
225
|
+
mock.syntax = [:should, :expect]
|
209
226
|
end
|
210
227
|
end
|
@@ -27,6 +27,33 @@ describe Braintree::PaymentMethod do
|
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
30
|
+
describe "delete" do
|
31
|
+
let(:http_stub) { double('http_stub').as_null_object }
|
32
|
+
it "accepts revoke_all_grants option with value true" do
|
33
|
+
Braintree::Http.stub(:new).and_return http_stub
|
34
|
+
http_stub.should_receive(:delete).with("/merchants/integration_merchant_id/payment_methods/any/some_token?revoke_all_grants=true")
|
35
|
+
Braintree::PaymentMethod.delete("some_token", {:revoke_all_grants => true})
|
36
|
+
end
|
37
|
+
|
38
|
+
it "accepts revoke_all_grants option with value false" do
|
39
|
+
Braintree::Http.stub(:new).and_return http_stub
|
40
|
+
http_stub.should_receive(:delete).with("/merchants/integration_merchant_id/payment_methods/any/some_token?revoke_all_grants=false")
|
41
|
+
Braintree::PaymentMethod.delete("some_token", {:revoke_all_grants => false})
|
42
|
+
end
|
43
|
+
|
44
|
+
it "throws error when an invalid param is used for options" do
|
45
|
+
expect do
|
46
|
+
Braintree::PaymentMethod.delete("some_token", {:invalid_key => false})
|
47
|
+
end.to raise_error(ArgumentError)
|
48
|
+
end
|
49
|
+
|
50
|
+
it "accepts just the token, revoke_all_grants is optional" do
|
51
|
+
Braintree::Http.stub(:new).and_return http_stub
|
52
|
+
http_stub.should_receive(:delete).with("/merchants/integration_merchant_id/payment_methods/any/some_token")
|
53
|
+
Braintree::PaymentMethod.delete("some_token")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
30
57
|
describe "timestamps" do
|
31
58
|
it "exposes created_at and updated_at" do
|
32
59
|
now = Time.now
|