braintree 2.104.0 → 3.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +1 -1
- data/braintree.gemspec +6 -3
- data/lib/braintree.rb +5 -17
- data/lib/braintree/address.rb +0 -22
- data/lib/braintree/base_module.rb +6 -0
- data/lib/braintree/bin_data.rb +9 -2
- data/lib/braintree/configuration.rb +1 -1
- data/lib/braintree/credit_card.rb +0 -75
- data/lib/braintree/credit_card_gateway.rb +4 -33
- data/lib/braintree/credit_card_verification.rb +13 -0
- data/lib/braintree/customer.rb +3 -74
- data/lib/braintree/customer_gateway.rb +0 -23
- data/lib/braintree/dispute.rb +1 -7
- data/lib/braintree/dispute/{history_event.rb → status_history.rb} +3 -1
- data/lib/braintree/dispute_gateway.rb +2 -7
- data/lib/braintree/error_codes.rb +144 -170
- data/lib/braintree/exceptions.rb +5 -3
- data/lib/braintree/gateway.rb +0 -14
- data/lib/braintree/{android_pay_card.rb → google_pay_card.rb} +1 -2
- data/lib/braintree/local_payment_completed.rb +1 -1
- data/lib/braintree/merchant_account_gateway.rb +2 -0
- data/lib/braintree/payment_instrument_type.rb +1 -5
- data/lib/braintree/payment_method_gateway.rb +5 -10
- data/lib/braintree/payment_method_parser.rb +1 -8
- data/lib/braintree/resource_collection.rb +8 -3
- data/lib/braintree/risk_data.rb +3 -1
- data/lib/braintree/subscription.rb +5 -5
- data/lib/braintree/successful_result.rb +0 -1
- data/lib/braintree/test/credit_card.rb +1 -0
- data/lib/braintree/test/nonce.rb +4 -23
- data/lib/braintree/three_d_secure_info.rb +22 -12
- data/lib/braintree/transaction.rb +12 -80
- data/lib/braintree/transaction/disbursement_details.rb +1 -0
- data/lib/braintree/transaction/{android_pay_details.rb → google_pay_details.rb} +1 -1
- data/lib/braintree/transaction/installment.rb +28 -0
- data/lib/braintree/transaction/installment/adjustment.rb +33 -0
- data/lib/braintree/transaction/paypal_details.rb +1 -0
- data/lib/braintree/transaction/subscription_details.rb +2 -0
- data/lib/braintree/transaction_gateway.rb +14 -21
- data/lib/braintree/transaction_search.rb +0 -1
- data/lib/braintree/util.rb +17 -2
- data/lib/braintree/version.rb +2 -2
- data/lib/braintree/webhook_notification.rb +0 -10
- data/lib/braintree/webhook_testing_gateway.rb +0 -43
- data/lib/braintree/xml/libxml.rb +1 -0
- data/lib/braintree/xml/parser.rb +11 -34
- data/spec/integration/braintree/address_spec.rb +2 -89
- data/spec/integration/braintree/client_api/spec_helper.rb +0 -26
- data/spec/integration/braintree/credit_card_spec.rb +13 -476
- data/spec/integration/braintree/customer_spec.rb +189 -362
- data/spec/integration/braintree/dispute_search_spec.rb +3 -3
- data/spec/integration/braintree/dispute_spec.rb +1 -2
- data/spec/integration/braintree/merchant_spec.rb +2 -2
- data/spec/integration/braintree/payment_method_spec.rb +254 -120
- data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +8 -4
- data/spec/integration/braintree/subscription_spec.rb +11 -16
- data/spec/integration/braintree/transaction_search_spec.rb +3 -3
- data/spec/integration/braintree/transaction_spec.rb +324 -550
- data/spec/integration/braintree/transaction_us_bank_account_spec.rb +12 -6
- data/spec/integration/spec_helper.rb +8 -5
- data/spec/spec_helper.rb +2 -11
- data/spec/unit/braintree/address_spec.rb +0 -8
- data/spec/unit/braintree/credit_card_spec.rb +3 -22
- data/spec/unit/braintree/credit_card_verification_spec.rb +6 -2
- data/spec/unit/braintree/customer_spec.rb +2 -13
- data/spec/unit/braintree/dispute_spec.rb +1 -12
- data/spec/unit/braintree/http_spec.rb +3 -3
- data/spec/unit/braintree/local_payment_completed_spec.rb +14 -0
- data/spec/unit/braintree/resource_collection_spec.rb +29 -0
- data/spec/unit/braintree/risk_data_spec.rb +9 -5
- data/spec/unit/braintree/three_d_secure_info_spec.rb +32 -14
- data/spec/unit/braintree/transaction/installment_spec.rb +25 -0
- data/spec/unit/braintree/transaction/paypal_details_spec.rb +2 -0
- data/spec/unit/braintree/transaction_spec.rb +1 -35
- data/spec/unit/braintree/util_spec.rb +37 -3
- data/spec/unit/braintree/webhook_notification_spec.rb +1 -1
- data/spec/unit/braintree/xml/parser_spec.rb +21 -16
- metadata +29 -30
- data/lib/braintree/amex_express_checkout_card.rb +0 -40
- data/lib/braintree/coinbase_account.rb +0 -34
- data/lib/braintree/europe_bank_account.rb +0 -36
- data/lib/braintree/europe_bank_account_gateway.rb +0 -17
- data/lib/braintree/ideal_payment.rb +0 -61
- data/lib/braintree/ideal_payment_gateway.rb +0 -19
- data/lib/braintree/masterpass_card.rb +0 -83
- data/lib/braintree/transaction/amex_express_checkout_details.rb +0 -21
- data/lib/braintree/transaction/coinbase_details.rb +0 -16
- data/lib/braintree/transaction/ideal_payment_details.rb +0 -19
- data/lib/braintree/transaction/masterpass_card_details.rb +0 -49
- data/lib/braintree/transparent_redirect.rb +0 -40
- data/lib/braintree/transparent_redirect_gateway.rb +0 -105
- data/lib/braintree/xml/rexml.rb +0 -71
- data/spec/hacks/tcp_socket.rb +0 -18
- data/spec/integration/braintree/coinbase_spec.rb +0 -34
- data/spec/integration/braintree/masterpass_card_spec.rb +0 -97
- data/spec/integration/braintree/transparent_redirect_spec.rb +0 -268
- data/spec/unit/braintree/transparent_redirect_spec.rb +0 -223
- data/spec/unit/braintree/xml/rexml_spec.rb +0 -51
|
@@ -14,7 +14,8 @@ describe Braintree::Transaction do
|
|
|
14
14
|
let(:plaid_nonce) { generate_valid_plaid_us_bank_account_nonce }
|
|
15
15
|
|
|
16
16
|
context "nonce" do
|
|
17
|
-
|
|
17
|
+
# we are temporarily skipping this test until we have a more stable CI env
|
|
18
|
+
xit "sale succeeds" do
|
|
18
19
|
result = Braintree::Transaction.create(
|
|
19
20
|
:type => "sale",
|
|
20
21
|
:amount => Braintree::Test::TransactionAmounts::Authorize,
|
|
@@ -41,7 +42,8 @@ describe Braintree::Transaction do
|
|
|
41
42
|
end
|
|
42
43
|
|
|
43
44
|
context "token" do
|
|
44
|
-
|
|
45
|
+
# we are temporarily skipping this test until we have a more stable CI env
|
|
46
|
+
xit "payment_method#create then sale succeeds" do
|
|
45
47
|
payment_method = Braintree::PaymentMethod.create(
|
|
46
48
|
:payment_method_nonce => plaid_nonce,
|
|
47
49
|
:customer_id => Braintree::Customer.create.customer.id,
|
|
@@ -84,7 +86,8 @@ describe Braintree::Transaction do
|
|
|
84
86
|
transaction.us_bank_account_details.ach_mandate.accepted_at.should be_a Time
|
|
85
87
|
end
|
|
86
88
|
|
|
87
|
-
|
|
89
|
+
# we are temporarily skipping this test until we have a more stable CI env
|
|
90
|
+
xit "transaction#create store_in_vault then sale succeeds" do
|
|
88
91
|
result = Braintree::Transaction.create(
|
|
89
92
|
:type => "sale",
|
|
90
93
|
:amount => Braintree::Test::TransactionAmounts::Authorize,
|
|
@@ -233,7 +236,8 @@ describe Braintree::Transaction do
|
|
|
233
236
|
let(:plaid_nonce) { generate_valid_plaid_us_bank_account_nonce }
|
|
234
237
|
|
|
235
238
|
context "nonce" do
|
|
236
|
-
|
|
239
|
+
# we are temporarily skipping this test until we have a more stable CI env
|
|
240
|
+
xit "sale succeeds" do
|
|
237
241
|
result = Braintree::Transaction.create(
|
|
238
242
|
:type => "sale",
|
|
239
243
|
:amount => Braintree::Test::TransactionAmounts::Authorize,
|
|
@@ -260,7 +264,8 @@ describe Braintree::Transaction do
|
|
|
260
264
|
end
|
|
261
265
|
|
|
262
266
|
context "token" do
|
|
263
|
-
|
|
267
|
+
# we are temporarily skipping this test until we have a more stable CI env
|
|
268
|
+
xit "payment_method#create then sale succeeds" do
|
|
264
269
|
result = Braintree::PaymentMethod.create(
|
|
265
270
|
:payment_method_nonce => plaid_nonce,
|
|
266
271
|
:customer_id => Braintree::Customer.create.customer.id,
|
|
@@ -305,7 +310,8 @@ describe Braintree::Transaction do
|
|
|
305
310
|
transaction.us_bank_account_details.ach_mandate.accepted_at.should be_a Time
|
|
306
311
|
end
|
|
307
312
|
|
|
308
|
-
|
|
313
|
+
# we are temporarily skipping this test until we have a more stable CI env
|
|
314
|
+
xit "transaction#create store_in_vault then sale succeeds" do
|
|
309
315
|
result = Braintree::Transaction.create(
|
|
310
316
|
:type => "sale",
|
|
311
317
|
:amount => Braintree::Test::TransactionAmounts::Authorize,
|
|
@@ -5,7 +5,6 @@ unless defined?(INTEGRATION_SPEC_HELPER_LOADED)
|
|
|
5
5
|
SSL_TEST_PORT = ENV['SSL_TEST_PORT'] || 8444
|
|
6
6
|
|
|
7
7
|
require File.dirname(__FILE__) + "/../spec_helper"
|
|
8
|
-
require File.dirname(__FILE__) + "/../hacks/tcp_socket"
|
|
9
8
|
|
|
10
9
|
def start_ssl_server
|
|
11
10
|
web_server_pid_file = File.expand_path(File.join(File.dirname(__FILE__), "..", "httpsd.pid"))
|
|
@@ -13,9 +12,7 @@ unless defined?(INTEGRATION_SPEC_HELPER_LOADED)
|
|
|
13
12
|
FileUtils.rm(web_server_pid_file) if File.exist?(web_server_pid_file)
|
|
14
13
|
command = File.expand_path(File.join(File.dirname(__FILE__), "..", "script", "httpsd.rb"))
|
|
15
14
|
`#{command} #{web_server_pid_file}`
|
|
16
|
-
TCPSocket.
|
|
17
|
-
|
|
18
|
-
yield
|
|
15
|
+
TCPSocket.new("127.0.0.1",SSL_TEST_PORT)
|
|
19
16
|
|
|
20
17
|
10.times { unless File.exists?(web_server_pid_file); sleep 1; end }
|
|
21
18
|
ensure
|
|
@@ -45,12 +42,18 @@ unless defined?(INTEGRATION_SPEC_HELPER_LOADED)
|
|
|
45
42
|
end
|
|
46
43
|
end
|
|
47
44
|
|
|
48
|
-
def
|
|
45
|
+
def with_advanced_fraud_kount_integration_merchant(&block)
|
|
49
46
|
with_other_merchant("advanced_fraud_integration_merchant_id", "advanced_fraud_integration_public_key", "advanced_fraud_integration_private_key") do
|
|
50
47
|
block.call
|
|
51
48
|
end
|
|
52
49
|
end
|
|
53
50
|
|
|
51
|
+
def with_fraud_protection_enterprise_merchant(&block)
|
|
52
|
+
with_other_merchant("fraud_protection_enterprise_integration_merchant_id", "fraud_protection_enterprise_integration_public_key", "fraud_protection_enterprise_integration_private_key") do
|
|
53
|
+
block.call
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
54
57
|
def with_altpay_merchant(&block)
|
|
55
58
|
with_other_merchant("altpay_merchant", "altpay_merchant_public_key", "altpay_merchant_private_key", &block)
|
|
56
59
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -4,7 +4,6 @@ unless defined?(SPEC_HELPER_LOADED)
|
|
|
4
4
|
require "rubygems"
|
|
5
5
|
require "bundler/setup"
|
|
6
6
|
require "rspec"
|
|
7
|
-
require "libxml"
|
|
8
7
|
require "pry"
|
|
9
8
|
|
|
10
9
|
braintree_lib = "#{project_root}/lib"
|
|
@@ -28,10 +27,6 @@ unless defined?(SPEC_HELPER_LOADED)
|
|
|
28
27
|
end
|
|
29
28
|
end
|
|
30
29
|
|
|
31
|
-
def now_in_eastern
|
|
32
|
-
(Time.now.utc - 5*60*60).strftime("%Y-%m-%d")
|
|
33
|
-
end
|
|
34
|
-
|
|
35
30
|
module SpecHelper
|
|
36
31
|
|
|
37
32
|
DefaultMerchantAccountId = "sandbox_credit_card"
|
|
@@ -44,6 +39,7 @@ unless defined?(SPEC_HELPER_LOADED)
|
|
|
44
39
|
AnotherUsBankMerchantAccountId = "another_us_bank_merchant_account"
|
|
45
40
|
AdyenMerchantAccountId = "adyen_ma"
|
|
46
41
|
HiperBRLMerchantAccountId = "hiper_brl"
|
|
42
|
+
CardProcessorBRLMerchantAccountId = "card_processor_brl"
|
|
47
43
|
|
|
48
44
|
TrialPlan = {
|
|
49
45
|
:description => "Plan for integration tests -- with trial",
|
|
@@ -188,16 +184,11 @@ unless defined?(SPEC_HELPER_LOADED)
|
|
|
188
184
|
end
|
|
189
185
|
|
|
190
186
|
def matches?(xml_string)
|
|
191
|
-
@libxml_parse = Braintree::Xml::Parser.hash_from_xml(xml_string
|
|
192
|
-
@rexml_parse = Braintree::Xml::Parser.hash_from_xml(xml_string, Braintree::Xml::Rexml)
|
|
187
|
+
@libxml_parse = Braintree::Xml::Parser.hash_from_xml(xml_string)
|
|
193
188
|
if @libxml_parse != @expected_hash
|
|
194
189
|
@results = @libxml_parse
|
|
195
190
|
@failed_parser = "libxml"
|
|
196
191
|
false
|
|
197
|
-
elsif @rexml_parse != @expected_hash
|
|
198
|
-
@results = @rexml_parse
|
|
199
|
-
@failed_parser = "rexml"
|
|
200
|
-
false
|
|
201
192
|
else
|
|
202
193
|
true
|
|
203
194
|
end
|
|
@@ -94,12 +94,4 @@ describe Braintree::Address do
|
|
|
94
94
|
end.to raise_error(NoMethodError, /protected method .new/)
|
|
95
95
|
end
|
|
96
96
|
end
|
|
97
|
-
|
|
98
|
-
describe "update" do
|
|
99
|
-
it "raises an exception if hash includes an invalid key" do
|
|
100
|
-
expect do
|
|
101
|
-
Braintree::Address._new(Braintree::Configuration.gateway, {}).update(:street_address => "456 E Main", :invalid_key2 => "foo")
|
|
102
|
-
end.to raise_error(ArgumentError, "invalid keys: invalid_key2")
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
97
|
end
|
|
@@ -15,7 +15,6 @@ describe Braintree::CreditCard do
|
|
|
15
15
|
:billing_address_id,
|
|
16
16
|
:cardholder_name,
|
|
17
17
|
:cvv,
|
|
18
|
-
:device_session_id,
|
|
19
18
|
:expiration_date,
|
|
20
19
|
:expiration_month,
|
|
21
20
|
:expiration_year,
|
|
@@ -23,10 +22,9 @@ describe Braintree::CreditCard do
|
|
|
23
22
|
:token,
|
|
24
23
|
:venmo_sdk_payment_method_code,
|
|
25
24
|
:device_data,
|
|
26
|
-
:fraud_merchant_id,
|
|
27
25
|
:payment_method_nonce,
|
|
28
26
|
{:external_vault=>[:network_transaction_id]},
|
|
29
|
-
{:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method, :verification_account_type]},
|
|
27
|
+
{:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method, :verification_account_type, :verification_currency_iso_code]},
|
|
30
28
|
{:billing_address => [
|
|
31
29
|
:company,
|
|
32
30
|
:country_code_alpha2,
|
|
@@ -63,7 +61,6 @@ describe Braintree::CreditCard do
|
|
|
63
61
|
:billing_address_id,
|
|
64
62
|
:cardholder_name,
|
|
65
63
|
:cvv,
|
|
66
|
-
:device_session_id,
|
|
67
64
|
:expiration_date,
|
|
68
65
|
:expiration_month,
|
|
69
66
|
:expiration_year,
|
|
@@ -71,10 +68,9 @@ describe Braintree::CreditCard do
|
|
|
71
68
|
:token,
|
|
72
69
|
:venmo_sdk_payment_method_code,
|
|
73
70
|
:device_data,
|
|
74
|
-
:fraud_merchant_id,
|
|
75
71
|
:payment_method_nonce,
|
|
76
72
|
{:external_vault=>[:network_transaction_id]},
|
|
77
|
-
{:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method, :verification_account_type]},
|
|
73
|
+
{:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method, :verification_account_type, :verification_currency_iso_code]},
|
|
78
74
|
{:billing_address => [
|
|
79
75
|
:company,
|
|
80
76
|
:country_code_alpha2,
|
|
@@ -105,21 +101,6 @@ describe Braintree::CreditCard do
|
|
|
105
101
|
end
|
|
106
102
|
end
|
|
107
103
|
|
|
108
|
-
describe "self.create_from_transparent_redirect" do
|
|
109
|
-
it "raises an exception if the query string is forged" do
|
|
110
|
-
expect do
|
|
111
|
-
Braintree::CreditCard.create_from_transparent_redirect("http_status=200&forged=query_string")
|
|
112
|
-
end.to raise_error(Braintree::ForgedQueryString)
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
describe "self.create_credit_card_url" do
|
|
117
|
-
it "returns the url" do
|
|
118
|
-
config = Braintree::Configuration.instantiate
|
|
119
|
-
Braintree::CreditCard.create_credit_card_url.should == "http#{config.ssl? ? 's' : ''}://#{config.server}:#{config.port}/merchants/integration_merchant_id/payment_methods/all/create_via_transparent_redirect_request"
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
|
|
123
104
|
describe "==" do
|
|
124
105
|
it "returns true if given a credit card with the same token" do
|
|
125
106
|
first = Braintree::CreditCard._new(:gateway, :token => 123)
|
|
@@ -253,7 +234,7 @@ describe Braintree::CreditCard do
|
|
|
253
234
|
describe "self.update" do
|
|
254
235
|
it "raises an exception if attributes contain an invalid key" do
|
|
255
236
|
expect do
|
|
256
|
-
Braintree::CreditCard.
|
|
237
|
+
Braintree::CreditCard.update(:gateway, :invalid_key => 'val')
|
|
257
238
|
end.to raise_error(ArgumentError, "invalid keys: invalid_key")
|
|
258
239
|
end
|
|
259
240
|
end
|
|
@@ -117,14 +117,18 @@ describe Braintree::CreditCardVerification do
|
|
|
117
117
|
verification = Braintree::CreditCardVerification._new(:risk_data => {
|
|
118
118
|
:id => "123",
|
|
119
119
|
:decision => "WOO YOU WON $1000 dollars",
|
|
120
|
+
:decision_reasons => ["reason"],
|
|
120
121
|
:device_data_captured => true,
|
|
121
|
-
:fraud_service_provider => "
|
|
122
|
+
:fraud_service_provider => "paypal_fraud_protection",
|
|
123
|
+
:transaction_risk_score => "12",
|
|
122
124
|
})
|
|
123
125
|
|
|
124
126
|
verification.risk_data.id.should == "123"
|
|
125
127
|
verification.risk_data.decision.should == "WOO YOU WON $1000 dollars"
|
|
128
|
+
verification.risk_data.decision_reasons.should == ["reason"]
|
|
126
129
|
verification.risk_data.device_data_captured.should == true
|
|
127
|
-
verification.risk_data.fraud_service_provider.should == "
|
|
130
|
+
verification.risk_data.fraud_service_provider.should == "paypal_fraud_protection"
|
|
131
|
+
verification.risk_data.transaction_risk_score.should == "12"
|
|
128
132
|
end
|
|
129
133
|
|
|
130
134
|
it "handles a nil risk_data" do
|
|
@@ -91,7 +91,6 @@ describe Braintree::Customer do
|
|
|
91
91
|
:billing_address_id,
|
|
92
92
|
:cardholder_name,
|
|
93
93
|
:cvv,
|
|
94
|
-
:device_session_id,
|
|
95
94
|
:expiration_date,
|
|
96
95
|
:expiration_month,
|
|
97
96
|
:expiration_year,
|
|
@@ -99,10 +98,9 @@ describe Braintree::Customer do
|
|
|
99
98
|
:token,
|
|
100
99
|
:venmo_sdk_payment_method_code,
|
|
101
100
|
:device_data,
|
|
102
|
-
:fraud_merchant_id,
|
|
103
101
|
:payment_method_nonce,
|
|
104
102
|
{:external_vault=>[:network_transaction_id]},
|
|
105
|
-
{:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method, :verification_account_type]},
|
|
103
|
+
{:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method, :verification_account_type, :verification_currency_iso_code]},
|
|
106
104
|
{:billing_address => [
|
|
107
105
|
:company,
|
|
108
106
|
:country_code_alpha2,
|
|
@@ -182,7 +180,6 @@ describe Braintree::Customer do
|
|
|
182
180
|
:billing_address_id,
|
|
183
181
|
:cardholder_name,
|
|
184
182
|
:cvv,
|
|
185
|
-
:device_session_id,
|
|
186
183
|
:expiration_date,
|
|
187
184
|
:expiration_month,
|
|
188
185
|
:expiration_year,
|
|
@@ -190,7 +187,6 @@ describe Braintree::Customer do
|
|
|
190
187
|
:token,
|
|
191
188
|
:venmo_sdk_payment_method_code,
|
|
192
189
|
:device_data,
|
|
193
|
-
:fraud_merchant_id,
|
|
194
190
|
:payment_method_nonce,
|
|
195
191
|
{:external_vault=>[:network_transaction_id]},
|
|
196
192
|
{:options => [
|
|
@@ -201,6 +197,7 @@ describe Braintree::Customer do
|
|
|
201
197
|
:venmo_sdk_session,
|
|
202
198
|
:fail_on_duplicate_payment_method,
|
|
203
199
|
:verification_account_type,
|
|
200
|
+
:verification_currency_iso_code,
|
|
204
201
|
:update_existing_token
|
|
205
202
|
]},
|
|
206
203
|
{:billing_address => [
|
|
@@ -259,14 +256,6 @@ describe Braintree::Customer do
|
|
|
259
256
|
end
|
|
260
257
|
end
|
|
261
258
|
|
|
262
|
-
describe "self.create_from_transparent_redirect" do
|
|
263
|
-
it "raises an exception if the query string is forged" do
|
|
264
|
-
expect do
|
|
265
|
-
Braintree::Customer.create_from_transparent_redirect("http_status=200&forged=query_string")
|
|
266
|
-
end.to raise_error(Braintree::ForgedQueryString)
|
|
267
|
-
end
|
|
268
|
-
end
|
|
269
|
-
|
|
270
259
|
describe "==" do
|
|
271
260
|
it "returns true when given a customer with the same id" do
|
|
272
261
|
first = Braintree::Customer._new(:gateway, :id => 123)
|
|
@@ -198,13 +198,6 @@ describe Braintree::Dispute do
|
|
|
198
198
|
|
|
199
199
|
describe "with optional params" do
|
|
200
200
|
it "does not raise an exception if the optional parameters are valid" do
|
|
201
|
-
Braintree::Http.stub(:new).and_return double.as_null_object
|
|
202
|
-
expect do
|
|
203
|
-
Braintree::Dispute.add_text_evidence("dispute_id", { content: "a", tag: "", sequence_number: 3 })
|
|
204
|
-
end.to_not raise_error
|
|
205
|
-
end
|
|
206
|
-
|
|
207
|
-
it "does not raise an exception if the category parameter is provided" do
|
|
208
201
|
Braintree::Http.stub(:new).and_return double.as_null_object
|
|
209
202
|
expect do
|
|
210
203
|
Braintree::Dispute.add_text_evidence("dispute_id", { content: "a", category: "", sequence_number: 3 })
|
|
@@ -327,7 +320,7 @@ describe Braintree::Dispute do
|
|
|
327
320
|
dispute.transaction.payment_instrument_subtype.should == "Visa"
|
|
328
321
|
end
|
|
329
322
|
|
|
330
|
-
it "converts status_history hash into an array of Dispute::
|
|
323
|
+
it "converts status_history hash into an array of Dispute::StatusHistory objects" do
|
|
331
324
|
dispute = Braintree::Dispute._new(attributes)
|
|
332
325
|
|
|
333
326
|
dispute.status_history.length.should == 1
|
|
@@ -398,10 +391,6 @@ describe Braintree::Dispute do
|
|
|
398
391
|
describe "comments" do
|
|
399
392
|
let(:dispute) { Braintree::Dispute._new(attributes) }
|
|
400
393
|
|
|
401
|
-
it "#forwarded_comments returns `processor_comments`" do
|
|
402
|
-
expect(dispute.forwarded_comments).to eq(dispute.processor_comments)
|
|
403
|
-
end
|
|
404
|
-
|
|
405
394
|
it "#processor_comments" do
|
|
406
395
|
expect(dispute.processor_comments).to eq(attributes[:processor_comments])
|
|
407
396
|
end
|
|
@@ -130,7 +130,7 @@ END
|
|
|
130
130
|
expect(default_headers["Accept-Encoding"]).to eq("gzip")
|
|
131
131
|
expect(default_headers["Content-Type"]).to eq("application/xml")
|
|
132
132
|
expect(default_headers["User-Agent"]).to match(/Braintree Ruby Gem .*/)
|
|
133
|
-
expect(default_headers["X-ApiVersion"]).to eq("
|
|
133
|
+
expect(default_headers["X-ApiVersion"]).to eq("6")
|
|
134
134
|
end
|
|
135
135
|
|
|
136
136
|
it "overwrites defaults with override headers" do
|
|
@@ -144,7 +144,7 @@ END
|
|
|
144
144
|
expect(headers["Authorization"]).to eq("token")
|
|
145
145
|
expect(headers["Content-Type"]).to eq("application/xml")
|
|
146
146
|
expect(headers["User-Agent"]).to match(/Braintree Ruby Gem .*/)
|
|
147
|
-
expect(headers["X-ApiVersion"]).to eq("
|
|
147
|
+
expect(headers["X-ApiVersion"]).to eq("6")
|
|
148
148
|
end
|
|
149
149
|
|
|
150
150
|
it "extends default headers when new headers are specified" do
|
|
@@ -156,7 +156,7 @@ END
|
|
|
156
156
|
expect(headers["Accept-Encoding"]).to eq("gzip")
|
|
157
157
|
expect(headers["Content-Type"]).to eq("application/xml")
|
|
158
158
|
expect(headers["User-Agent"]).to match(/Braintree Ruby Gem .*/)
|
|
159
|
-
expect(headers["X-ApiVersion"]).to eq("
|
|
159
|
+
expect(headers["X-ApiVersion"]).to eq("6")
|
|
160
160
|
expect(headers["New-Header"]).to eq("New Value")
|
|
161
161
|
end
|
|
162
162
|
end
|
|
@@ -32,5 +32,19 @@ describe Braintree::LocalPaymentCompleted do
|
|
|
32
32
|
local_payment_completed.transaction.order_id.should eq("an-order-id")
|
|
33
33
|
local_payment_completed.transaction.status.should eq(Braintree::Transaction::Status::Authorized)
|
|
34
34
|
end
|
|
35
|
+
|
|
36
|
+
it "initializes the object with the appropriate attributes set if no transaction is provided" do
|
|
37
|
+
params = {
|
|
38
|
+
payment_id: "a-payment-id",
|
|
39
|
+
payer_id: "a-payer-id",
|
|
40
|
+
payment_method_nonce: "a-nonce",
|
|
41
|
+
}
|
|
42
|
+
local_payment_completed = Braintree::LocalPaymentCompleted._new(params)
|
|
43
|
+
|
|
44
|
+
local_payment_completed.payment_id.should eq("a-payment-id")
|
|
45
|
+
local_payment_completed.payer_id.should eq("a-payer-id")
|
|
46
|
+
local_payment_completed.payment_method_nonce.should eq("a-nonce")
|
|
47
|
+
local_payment_completed.transaction.should be_nil
|
|
48
|
+
end
|
|
35
49
|
end
|
|
36
50
|
end
|
|
@@ -18,6 +18,35 @@ describe "Braintree::ResourceCollection" do
|
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
+
describe "#first" do
|
|
22
|
+
it 'returns nil with no results' do
|
|
23
|
+
values = %w(a b c d e)
|
|
24
|
+
collection = Braintree::ResourceCollection.new(:search_results => {:ids => [], :page_size => 2}) do |ids|
|
|
25
|
+
ids.map {|id| values[id] }
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
collection.first.should == nil
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
context 'with results' do
|
|
32
|
+
let(:collection) do
|
|
33
|
+
values = %w(a b c d e)
|
|
34
|
+
|
|
35
|
+
Braintree::ResourceCollection.new(:search_results => {:ids => [0,1,2,3,4], :page_size => 2}) do |ids|
|
|
36
|
+
ids.map {|id| values[id] }
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it 'returns the first occourence' do
|
|
41
|
+
collection.first.should == 'a'
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it 'returns the first N occourences' do
|
|
45
|
+
collection.first(4).should == ['a','b','c','d']
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
21
50
|
describe "#ids" do
|
|
22
51
|
it "returns a list of the resource collection ids" do
|
|
23
52
|
collection = Braintree::ResourceCollection.new(:search_results => {:ids => [0,1,2,3,4], :page_size => 2})
|
|
@@ -2,12 +2,14 @@ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
|
|
2
2
|
|
|
3
3
|
describe Braintree::RiskData do
|
|
4
4
|
describe "#initialize" do
|
|
5
|
-
it "sets id, decision and
|
|
6
|
-
risk_data = Braintree::RiskData.new(:id => "123", :decision => "YOU WON $1000 DOLLARS", :device_data_captured => true, :fraud_service_provider => "
|
|
5
|
+
it "sets id, decision, device_data_captured, decision_reasons and transaction_risk_score" do
|
|
6
|
+
risk_data = Braintree::RiskData.new(:id => "123", :decision => "YOU WON $1000 DOLLARS", :device_data_captured => true, :fraud_service_provider => "fraud_protection", :decision_reasons => ["reason"], :transaction_risk_score => "12")
|
|
7
7
|
risk_data.id.should == "123"
|
|
8
8
|
risk_data.decision.should == "YOU WON $1000 DOLLARS"
|
|
9
9
|
risk_data.device_data_captured.should be_truthy
|
|
10
|
-
risk_data.fraud_service_provider.should == "
|
|
10
|
+
risk_data.fraud_service_provider.should == "fraud_protection"
|
|
11
|
+
risk_data.decision_reasons.should == ["reason"]
|
|
12
|
+
risk_data.transaction_risk_score.should == "12"
|
|
11
13
|
end
|
|
12
14
|
end
|
|
13
15
|
|
|
@@ -16,10 +18,12 @@ describe Braintree::RiskData do
|
|
|
16
18
|
details = Braintree::RiskData.new(
|
|
17
19
|
:id => "123",
|
|
18
20
|
:decision => "YOU WON $1000 DOLLARS",
|
|
21
|
+
:decision_reasons => ["reason"],
|
|
19
22
|
:device_data_captured => true,
|
|
20
|
-
:fraud_service_provider => "
|
|
23
|
+
:fraud_service_provider => "fraud_protection",
|
|
24
|
+
:transaction_risk_score => "12",
|
|
21
25
|
)
|
|
22
|
-
details.inspect.should == %(#<RiskData id: "123", decision: "YOU WON $1000 DOLLARS", device_data_captured: true, fraud_service_provider: "
|
|
26
|
+
details.inspect.should == %(#<RiskData id: "123", decision: "YOU WON $1000 DOLLARS", decision_reasons: ["reason"], device_data_captured: true, fraud_service_provider: "fraud_protection", transaction_risk_score: "12">)
|
|
23
27
|
end
|
|
24
28
|
end
|
|
25
29
|
end
|