braintree 3.2.0 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/braintree.gemspec +3 -3
- data/lib/braintree.rb +6 -1
- data/lib/braintree/account_updater_daily_report.rb +1 -1
- data/lib/braintree/address.rb +2 -1
- data/lib/braintree/apple_pay.rb +1 -1
- data/lib/braintree/apple_pay_card.rb +1 -1
- data/lib/braintree/apple_pay_options.rb +1 -1
- data/lib/braintree/authorization_adjustment.rb +1 -1
- data/lib/braintree/client_token.rb +1 -1
- data/lib/braintree/configuration.rb +11 -11
- data/lib/braintree/connected_merchant_paypal_status_changed.rb +1 -1
- data/lib/braintree/connected_merchant_status_transitioned.rb +1 -1
- data/lib/braintree/credit_card.rb +2 -2
- data/lib/braintree/credit_card_gateway.rb +14 -4
- data/lib/braintree/credit_card_verification.rb +5 -5
- data/lib/braintree/credit_card_verification_search.rb +1 -1
- data/lib/braintree/customer.rb +6 -4
- data/lib/braintree/customer_gateway.rb +2 -0
- data/lib/braintree/customer_search.rb +1 -1
- data/lib/braintree/disbursement.rb +1 -1
- data/lib/braintree/dispute.rb +15 -1
- data/lib/braintree/dispute/paypal_message.rb +15 -0
- data/lib/braintree/dispute_gateway.rb +2 -2
- data/lib/braintree/dispute_search.rb +3 -2
- data/lib/braintree/document_upload.rb +1 -1
- data/lib/braintree/error_codes.rb +10 -6
- data/lib/braintree/google_pay_card.rb +1 -1
- data/lib/braintree/granted_payment_instrument_update.rb +1 -1
- data/lib/braintree/graphql_client.rb +7 -7
- data/lib/braintree/http.rb +3 -3
- data/lib/braintree/local_payment_completed.rb +1 -1
- data/lib/braintree/local_payment_reversed.rb +19 -0
- data/lib/braintree/merchant.rb +1 -1
- data/lib/braintree/merchant_account.rb +1 -1
- data/lib/braintree/merchant_account_gateway.rb +1 -1
- data/lib/braintree/merchant_gateway.rb +1 -1
- data/lib/braintree/modification.rb +1 -1
- data/lib/braintree/oauth_credentials.rb +1 -1
- data/lib/braintree/oauth_gateway.rb +5 -5
- data/lib/braintree/payment_instrument_type.rb +10 -10
- data/lib/braintree/payment_method_gateway.rb +10 -7
- data/lib/braintree/payment_method_nonce.rb +7 -4
- data/lib/braintree/payment_method_nonce_details.rb +37 -0
- data/lib/braintree/payment_method_nonce_details_payer_info.rb +32 -0
- data/lib/braintree/payment_method_nonce_gateway.rb +1 -1
- data/lib/braintree/plan.rb +1 -1
- data/lib/braintree/processor_response_types.rb +3 -3
- data/lib/braintree/revoked_payment_method_metadata.rb +1 -1
- data/lib/braintree/risk_data.rb +3 -1
- data/lib/braintree/samsung_pay_card.rb +1 -1
- data/lib/braintree/settlement_batch_summary.rb +2 -2
- data/lib/braintree/subscription.rb +6 -6
- data/lib/braintree/three_d_secure_info.rb +22 -12
- data/lib/braintree/transaction.rb +32 -24
- data/lib/braintree/transaction_gateway.rb +24 -5
- data/lib/braintree/transaction_line_item.rb +1 -1
- data/lib/braintree/transaction_search.rb +3 -1
- data/lib/braintree/unknown_payment_method.rb +1 -1
- data/lib/braintree/us_bank_account.rb +3 -3
- data/lib/braintree/us_bank_account_verification.rb +1 -1
- data/lib/braintree/us_bank_account_verification_gateway.rb +1 -1
- data/lib/braintree/util.rb +4 -4
- data/lib/braintree/venmo_account.rb +1 -1
- data/lib/braintree/version.rb +1 -1
- data/lib/braintree/visa_checkout_card.rb +2 -2
- data/lib/braintree/webhook_notification.rb +30 -20
- data/lib/braintree/webhook_notification_gateway.rb +5 -5
- data/lib/braintree/webhook_testing_gateway.rb +30 -0
- data/lib/braintree/xml/generator.rb +5 -4
- data/lib/braintree/xml/libxml.rb +0 -1
- data/lib/braintree/xml/parser.rb +22 -12
- data/lib/braintree/xml/rexml.rb +70 -0
- data/spec/integration/braintree/add_on_spec.rb +1 -1
- data/spec/integration/braintree/address_spec.rb +28 -24
- data/spec/integration/braintree/advanced_search_spec.rb +45 -45
- data/spec/integration/braintree/apple_pay_spec.rb +3 -3
- data/spec/integration/braintree/braintree_gateway_spec.rb +2 -1
- data/spec/integration/braintree/client_api/client_token_spec.rb +14 -14
- data/spec/integration/braintree/client_api/spec_helper.rb +5 -5
- data/spec/integration/braintree/credit_card_spec.rb +213 -122
- data/spec/integration/braintree/credit_card_verification_search_spec.rb +2 -2
- data/spec/integration/braintree/credit_card_verification_spec.rb +1 -1
- data/spec/integration/braintree/customer_search_spec.rb +8 -8
- data/spec/integration/braintree/customer_spec.rb +282 -165
- data/spec/integration/braintree/dispute_search_spec.rb +28 -3
- data/spec/integration/braintree/dispute_spec.rb +6 -6
- data/spec/integration/braintree/error_codes_spec.rb +1 -1
- data/spec/integration/braintree/http_spec.rb +2 -2
- data/spec/integration/braintree/merchant_account_spec.rb +25 -26
- data/spec/integration/braintree/merchant_spec.rb +14 -14
- data/spec/integration/braintree/oauth_spec.rb +11 -11
- data/spec/integration/braintree/payment_method_nonce_spec.rb +28 -35
- data/spec/integration/braintree/payment_method_spec.rb +269 -165
- data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +9 -9
- data/spec/integration/braintree/paypal_account_spec.rb +28 -28
- data/spec/integration/braintree/samsung_pay_card_spec.rb +9 -9
- data/spec/integration/braintree/settlement_batch_summary_spec.rb +8 -8
- data/spec/integration/braintree/subscription_spec.rb +133 -133
- data/spec/integration/braintree/test/transaction_amounts_spec.rb +2 -2
- data/spec/integration/braintree/test_transaction_spec.rb +10 -10
- data/spec/integration/braintree/transaction_search_spec.rb +93 -67
- data/spec/integration/braintree/transaction_spec.rb +574 -360
- data/spec/integration/braintree/transaction_us_bank_account_spec.rb +20 -20
- data/spec/integration/braintree/us_bank_account_spec.rb +6 -6
- data/spec/integration/braintree/us_bank_account_verification_search_spec.rb +7 -7
- data/spec/integration/braintree/us_bank_account_verification_spec.rb +8 -8
- data/spec/integration/braintree/visa_checkout_card_spec.rb +5 -5
- data/spec/integration/spec_helper.rb +9 -3
- data/spec/oauth_test_helper.rb +1 -1
- data/spec/script/httpsd.rb +6 -6
- data/spec/spec_helper.rb +6 -3
- data/spec/unit/braintree/address_spec.rb +1 -1
- data/spec/unit/braintree/apple_pay_card_spec.rb +1 -1
- data/spec/unit/braintree/client_token_spec.rb +2 -2
- data/spec/unit/braintree/configuration_spec.rb +42 -42
- data/spec/unit/braintree/credit_card_spec.rb +13 -13
- data/spec/unit/braintree/credit_card_verification_search_spec.rb +1 -1
- data/spec/unit/braintree/credit_card_verification_spec.rb +8 -4
- data/spec/unit/braintree/customer_spec.rb +20 -10
- data/spec/unit/braintree/disbursement_spec.rb +7 -7
- data/spec/unit/braintree/dispute_search_spec.rb +1 -0
- data/spec/unit/braintree/dispute_spec.rb +34 -9
- data/spec/unit/braintree/error_result_spec.rb +5 -5
- data/spec/unit/braintree/errors_spec.rb +8 -8
- data/spec/unit/braintree/http_spec.rb +5 -5
- data/spec/unit/braintree/merchant_account_spec.rb +1 -1
- data/spec/unit/braintree/payment_method_nonce_details_payer_info_spec.rb +31 -0
- data/spec/unit/braintree/payment_method_nonce_details_spec.rb +43 -0
- data/spec/unit/braintree/payment_method_nonce_spec.rb +40 -0
- data/spec/unit/braintree/payment_method_spec.rb +1 -1
- data/spec/unit/braintree/paypal_account_spec.rb +2 -2
- data/spec/unit/braintree/resource_collection_spec.rb +9 -9
- data/spec/unit/braintree/risk_data_spec.rb +9 -5
- data/spec/unit/braintree/subscription_search_spec.rb +1 -1
- data/spec/unit/braintree/successful_result_spec.rb +1 -1
- data/spec/unit/braintree/three_d_secure_info_spec.rb +32 -14
- data/spec/unit/braintree/transaction/credit_card_details_spec.rb +3 -3
- data/spec/unit/braintree/transaction/customer_details_spec.rb +1 -1
- data/spec/unit/braintree/transaction/deposit_details_spec.rb +2 -2
- data/spec/unit/braintree/transaction/paypal_details_spec.rb +1 -1
- data/spec/unit/braintree/transaction_search_spec.rb +12 -12
- data/spec/unit/braintree/transaction_spec.rb +25 -17
- data/spec/unit/braintree/util_spec.rb +18 -18
- data/spec/unit/braintree/validation_error_collection_spec.rb +36 -36
- data/spec/unit/braintree/webhook_notification_spec.rb +88 -56
- data/spec/unit/braintree/xml/rexml_spec.rb +51 -0
- data/spec/unit/braintree/xml_spec.rb +31 -31
- metadata +16 -8
- data/lib/braintree/settlement_batch.rb +0 -0
@@ -8,7 +8,7 @@ describe Braintree::PayPalAccount do
|
|
8
8
|
:invalid_key => "bad stuff",
|
9
9
|
:options => {
|
10
10
|
:invalid_option => "bad option",
|
11
|
-
}
|
11
|
+
},
|
12
12
|
)
|
13
13
|
end.to raise_error(ArgumentError, "invalid keys: invalid_key, options[invalid_option]")
|
14
14
|
end
|
@@ -17,7 +17,7 @@ describe Braintree::PayPalAccount do
|
|
17
17
|
describe "self.update" do
|
18
18
|
it "raises an exception if attributes contain an invalid key" do
|
19
19
|
expect do
|
20
|
-
Braintree::PayPalAccount.update("some_token", :invalid_key =>
|
20
|
+
Braintree::PayPalAccount.update("some_token", :invalid_key => "val")
|
21
21
|
end.to raise_error(ArgumentError, "invalid keys: invalid_key")
|
22
22
|
end
|
23
23
|
end
|
@@ -5,7 +5,7 @@ describe "Braintree::ResourceCollection" do
|
|
5
5
|
it "iterates over the elements, yielding to the block in pages" do
|
6
6
|
values = %w(a b c d e)
|
7
7
|
collection = Braintree::ResourceCollection.new(:search_results => {:ids => [0,1,2,3,4], :page_size => 2}) do |ids|
|
8
|
-
ids.map {|id| values[id] }
|
8
|
+
ids.map { |id| values[id] }
|
9
9
|
end
|
10
10
|
|
11
11
|
count = 0
|
@@ -19,30 +19,30 @@ describe "Braintree::ResourceCollection" do
|
|
19
19
|
end
|
20
20
|
|
21
21
|
describe "#first" do
|
22
|
-
it
|
22
|
+
it "returns nil with no results" do
|
23
23
|
values = %w(a b c d e)
|
24
24
|
collection = Braintree::ResourceCollection.new(:search_results => {:ids => [], :page_size => 2}) do |ids|
|
25
|
-
ids.map {|id| values[id] }
|
25
|
+
ids.map { |id| values[id] }
|
26
26
|
end
|
27
27
|
|
28
28
|
collection.first.should == nil
|
29
29
|
end
|
30
30
|
|
31
|
-
context
|
31
|
+
context "with results" do
|
32
32
|
let(:collection) do
|
33
33
|
values = %w(a b c d e)
|
34
34
|
|
35
35
|
Braintree::ResourceCollection.new(:search_results => {:ids => [0,1,2,3,4], :page_size => 2}) do |ids|
|
36
|
-
ids.map {|id| values[id] }
|
36
|
+
ids.map { |id| values[id] }
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
40
|
-
it
|
41
|
-
collection.first.should ==
|
40
|
+
it "returns the first occourence" do
|
41
|
+
collection.first.should == "a"
|
42
42
|
end
|
43
43
|
|
44
|
-
it
|
45
|
-
collection.first(4).should == [
|
44
|
+
it "returns the first N occourences" do
|
45
|
+
collection.first(4).should == ["a","b","c","d"]
|
46
46
|
end
|
47
47
|
end
|
48
48
|
end
|
@@ -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
|
@@ -5,7 +5,7 @@ describe Braintree::SuccessfulResult do
|
|
5
5
|
it "sets instance variables from the values in the hash" do
|
6
6
|
result = Braintree::SuccessfulResult.new(
|
7
7
|
:transaction => "transaction_value",
|
8
|
-
:credit_card => "credit_card_value"
|
8
|
+
:credit_card => "credit_card_value",
|
9
9
|
)
|
10
10
|
result.success?.should == true
|
11
11
|
result.transaction.should == "transaction_value"
|
@@ -3,37 +3,55 @@ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
|
|
3
3
|
describe Braintree::ThreeDSecureInfo do
|
4
4
|
let(:three_d_secure_info) {
|
5
5
|
Braintree::ThreeDSecureInfo.new(
|
6
|
+
:acs_transaction_id => "acs_id",
|
7
|
+
:cavv => "cavvvalue",
|
8
|
+
:ds_transaction_id => "dstrxid",
|
9
|
+
:eci_flag => "06",
|
6
10
|
:enrolled => "Y",
|
7
|
-
:liability_shifted => true,
|
8
11
|
:liability_shift_possible => true,
|
9
|
-
:
|
10
|
-
:
|
12
|
+
:liability_shifted => true,
|
13
|
+
:pares_status => "Y",
|
11
14
|
:status => "authenticate_successful",
|
12
|
-
:eci_flag => "06",
|
13
|
-
:three_d_secure_version => "1.0.2",
|
14
|
-
:ds_transaction_id => "dstrxid",
|
15
15
|
:three_d_secure_authentication_id => "auth_id",
|
16
|
+
:three_d_secure_transaction_id => "trans_id",
|
17
|
+
:three_d_secure_version => "1.0.2",
|
18
|
+
:xid => "xidvalue",
|
19
|
+
:authentication => {
|
20
|
+
:trans_status => "authstatus",
|
21
|
+
:trans_status_reason => "authstatusreason"
|
22
|
+
},
|
23
|
+
:lookup => {
|
24
|
+
:trans_status => "lookupstatus",
|
25
|
+
:trans_status_reason => "lookupstatusreason"
|
26
|
+
},
|
16
27
|
)
|
17
28
|
}
|
18
29
|
|
19
30
|
describe "#initialize" do
|
20
31
|
it "sets attributes" do
|
21
|
-
three_d_secure_info.
|
22
|
-
three_d_secure_info.status.should == "authenticate_successful"
|
23
|
-
three_d_secure_info.liability_shifted.should == true
|
24
|
-
three_d_secure_info.liability_shift_possible.should == true
|
32
|
+
three_d_secure_info.acs_transaction_id.should == "acs_id"
|
25
33
|
three_d_secure_info.cavv.should == "cavvvalue"
|
26
|
-
three_d_secure_info.xid.should == "xidvalue"
|
27
|
-
three_d_secure_info.eci_flag.should == "06"
|
28
|
-
three_d_secure_info.three_d_secure_version.should == "1.0.2"
|
29
34
|
three_d_secure_info.ds_transaction_id.should == "dstrxid"
|
35
|
+
three_d_secure_info.eci_flag.should == "06"
|
36
|
+
three_d_secure_info.enrolled.should == "Y"
|
37
|
+
three_d_secure_info.liability_shift_possible.should == true
|
38
|
+
three_d_secure_info.liability_shifted.should == true
|
39
|
+
three_d_secure_info.pares_status.should == "Y"
|
40
|
+
three_d_secure_info.status.should == "authenticate_successful"
|
30
41
|
three_d_secure_info.three_d_secure_authentication_id.should == "auth_id"
|
42
|
+
three_d_secure_info.three_d_secure_transaction_id.should == "trans_id"
|
43
|
+
three_d_secure_info.three_d_secure_version.should == "1.0.2"
|
44
|
+
three_d_secure_info.xid.should == "xidvalue"
|
45
|
+
three_d_secure_info.lookup[:trans_status].should == "lookupstatus"
|
46
|
+
three_d_secure_info.lookup[:trans_status_reason].should == "lookupstatusreason"
|
47
|
+
three_d_secure_info.authentication[:trans_status].should == "authstatus"
|
48
|
+
three_d_secure_info.authentication[:trans_status_reason].should == "authstatusreason"
|
31
49
|
end
|
32
50
|
end
|
33
51
|
|
34
52
|
describe "inspect" do
|
35
53
|
it "prints the attributes" do
|
36
|
-
three_d_secure_info.inspect.should == %(#<ThreeDSecureInfo enrolled: "Y",
|
54
|
+
three_d_secure_info.inspect.should == %(#<ThreeDSecureInfo acs_transaction_id: "acs_id", authentication: {:trans_status=>"authstatus", :trans_status_reason=>"authstatusreason"}, cavv: "cavvvalue", ds_transaction_id: "dstrxid", eci_flag: "06", enrolled: "Y", liability_shift_possible: true, liability_shifted: true, lookup: {:trans_status=>"lookupstatus", :trans_status_reason=>"lookupstatusreason"}, pares_status: "Y", status: "authenticate_successful", three_d_secure_authentication_id: "auth_id", three_d_secure_transaction_id: "trans_id", three_d_secure_version: "1.0.2", xid: "xidvalue">)
|
37
55
|
end
|
38
56
|
end
|
39
57
|
|
@@ -5,7 +5,7 @@ describe Braintree::Transaction::CreditCardDetails do
|
|
5
5
|
it "concats expiration_month and expiration_year" do
|
6
6
|
details = Braintree::Transaction::CreditCardDetails.new(
|
7
7
|
:expiration_month => "08",
|
8
|
-
:expiration_year => "2009"
|
8
|
+
:expiration_year => "2009",
|
9
9
|
)
|
10
10
|
details.expiration_date.should == "08/2009"
|
11
11
|
end
|
@@ -32,7 +32,7 @@ describe Braintree::Transaction::CreditCardDetails do
|
|
32
32
|
:country_of_issuance => "Lilliput",
|
33
33
|
:issuing_bank => "Gulliver Bank",
|
34
34
|
:image_url => "example.com/visa.png",
|
35
|
-
:unique_number_identifier => "abc123"
|
35
|
+
:unique_number_identifier => "abc123",
|
36
36
|
)
|
37
37
|
details.inspect.should == %(#<token: "token", bin: "123456", last_4: "6789", card_type: "Visa", expiration_date: "05/2012", cardholder_name: "The Cardholder", customer_location: "US", prepaid: "Yes", healthcare: "No", durbin_regulated: "No", debit: "Yes", commercial: "Unknown", payroll: "Unknown", product_id: "Unknown", country_of_issuance: "Lilliput", issuing_bank: "Gulliver Bank", image_url: "example.com/visa.png", unique_number_identifier: "abc123">)
|
38
38
|
end
|
@@ -41,7 +41,7 @@ describe Braintree::Transaction::CreditCardDetails do
|
|
41
41
|
describe "masked_number" do
|
42
42
|
it "concatenates the bin, some *'s, and the last_4" do
|
43
43
|
details = Braintree::Transaction::CreditCardDetails.new(
|
44
|
-
:bin => "510510", :last_4 => "5100"
|
44
|
+
:bin => "510510", :last_4 => "5100",
|
45
45
|
)
|
46
46
|
details.masked_number.should == "510510******5100"
|
47
47
|
end
|
@@ -11,7 +11,7 @@ describe Braintree::Transaction::CustomerDetails do
|
|
11
11
|
:company => "Smith Co.",
|
12
12
|
:website => "http://www.example.com",
|
13
13
|
:phone => "6145551234",
|
14
|
-
:fax => "3125551234"
|
14
|
+
:fax => "3125551234",
|
15
15
|
)
|
16
16
|
details.inspect.should == %(#<id: "id", first_name: "Amy", last_name: "Smith", email: "amy.smith@example.com", company: "Smith Co.", website: "http://www.example.com", phone: "6145551234", fax: "3125551234">)
|
17
17
|
end
|
@@ -4,13 +4,13 @@ describe Braintree::Transaction::DisbursementDetails do
|
|
4
4
|
describe "valid?" do
|
5
5
|
it "returns true if disbursement details are initialized" do
|
6
6
|
details = Braintree::Transaction::DisbursementDetails.new(
|
7
|
-
:disbursement_date => Date.new(2013, 4, 1)
|
7
|
+
:disbursement_date => Date.new(2013, 4, 1),
|
8
8
|
)
|
9
9
|
details.valid?.should == true
|
10
10
|
end
|
11
11
|
it "returns true if disbursement details are initialized" do
|
12
12
|
details = Braintree::Transaction::DisbursementDetails.new(
|
13
|
-
:disbursement_date => nil
|
13
|
+
:disbursement_date => nil,
|
14
14
|
)
|
15
15
|
details.valid?.should == false
|
16
16
|
end
|
@@ -27,7 +27,7 @@ describe Braintree::Transaction::PayPalDetails do
|
|
27
27
|
:seller_protection_status => "seller-protection-status",
|
28
28
|
:token => "token",
|
29
29
|
:transaction_fee_amount => "2.00",
|
30
|
-
:transaction_fee_currency_iso_code => "123"
|
30
|
+
:transaction_fee_currency_iso_code => "123",
|
31
31
|
)
|
32
32
|
|
33
33
|
expect(details.authorization_id).to eq("id")
|
@@ -1,19 +1,19 @@
|
|
1
1
|
require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
|
2
2
|
|
3
3
|
describe Braintree::TransactionSearch do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
it "overrides previous 'is' with new 'is' for the same field" do
|
5
|
+
search = Braintree::TransactionSearch.new
|
6
|
+
search.billing_company.is "one"
|
7
|
+
search.billing_company.is "two"
|
8
|
+
search.to_hash.should == {:billing_company => {:is => "two"}}
|
9
|
+
end
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
11
|
+
it "overrides previous 'in' with new 'in' for the same field" do
|
12
|
+
search = Braintree::TransactionSearch.new
|
13
|
+
search.status.in Braintree::Transaction::Status::Authorized
|
14
|
+
search.status.in Braintree::Transaction::Status::SubmittedForSettlement
|
15
|
+
search.to_hash.should == {:status => [Braintree::Transaction::Status::SubmittedForSettlement]}
|
16
|
+
end
|
17
17
|
|
18
18
|
it "raises if the operator 'is' is left off" do
|
19
19
|
search = Braintree::TransactionSearch.new
|
@@ -45,6 +45,14 @@ describe Braintree::Transaction do
|
|
45
45
|
end
|
46
46
|
end
|
47
47
|
|
48
|
+
describe "self.adjust_authorization" do
|
49
|
+
it "raises an ArgumentError if transaction_id is an invalid format" do
|
50
|
+
expect do
|
51
|
+
Braintree::Transaction.adjust_authorization("invalid-transaction-id", "10.00")
|
52
|
+
end.to raise_error(ArgumentError, "transaction_id is invalid")
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
48
56
|
describe "self.update_details" do
|
49
57
|
it "raises an ArgumentError if transaction_id is an invalid format" do
|
50
58
|
expect do
|
@@ -66,7 +74,7 @@ describe Braintree::Transaction do
|
|
66
74
|
:website => "lednerllc.com",
|
67
75
|
:phone => "1-999-652-4189 x56883",
|
68
76
|
:fax => "012-161-8055"
|
69
|
-
}
|
77
|
+
},
|
70
78
|
)
|
71
79
|
transaction.customer_details.id.should == "123"
|
72
80
|
transaction.customer_details.first_name.should == "Adam"
|
@@ -88,7 +96,7 @@ describe Braintree::Transaction do
|
|
88
96
|
:settlement_currency_exchange_rate => "1",
|
89
97
|
:funds_held => false,
|
90
98
|
:success => true
|
91
|
-
}
|
99
|
+
},
|
92
100
|
)
|
93
101
|
disbursement = transaction.disbursement_details
|
94
102
|
disbursement.disbursement_date.should == Date.parse("2013-04-03")
|
@@ -119,7 +127,7 @@ describe Braintree::Transaction do
|
|
119
127
|
:product_id => "Unknown",
|
120
128
|
:country_of_issuance => "Narnia",
|
121
129
|
:issuing_bank => "Mr Tumnus"
|
122
|
-
}
|
130
|
+
},
|
123
131
|
)
|
124
132
|
transaction.credit_card_details.token.should == "mzg2"
|
125
133
|
transaction.credit_card_details.bin.should == "411111"
|
@@ -147,7 +155,7 @@ describe Braintree::Transaction do
|
|
147
155
|
:liability_shifted => true,
|
148
156
|
:liability_shift_possible => true,
|
149
157
|
:status => "authenticate_successful",
|
150
|
-
}
|
158
|
+
},
|
151
159
|
)
|
152
160
|
|
153
161
|
transaction.three_d_secure_info.enrolled.should == "Y"
|
@@ -161,9 +169,9 @@ describe Braintree::Transaction do
|
|
161
169
|
transaction = Braintree::Transaction._new(
|
162
170
|
:gateway,
|
163
171
|
:status_history => [
|
164
|
-
{
|
165
|
-
:user => "larry", :status => Braintree::Transaction::Status::Authorized
|
166
|
-
{
|
172
|
+
{:timestamp => time, :amount => "12.00", :transaction_source => "API",
|
173
|
+
:user => "larry", :status => Braintree::Transaction::Status::Authorized},
|
174
|
+
{:timestamp => Time.utc(2010,1,15), :amount => "12.00", :transaction_source => "API",
|
167
175
|
:user => "curly", :status => "scheduled_for_settlement"}
|
168
176
|
])
|
169
177
|
transaction.status_history.size.should == 2
|
@@ -180,8 +188,8 @@ describe Braintree::Transaction do
|
|
180
188
|
transaction = Braintree::Transaction._new(
|
181
189
|
:gateway,
|
182
190
|
:authorization_adjustments => [
|
183
|
-
{
|
184
|
-
{
|
191
|
+
{:timestamp => timestamp, :processor_response_code => "1000", :processor_response_text => "Approved", :amount => "12.00", :success => true},
|
192
|
+
{:timestamp => timestamp, :processor_response_code => "3000", :processor_response_text => "Processor Network Unavailable - Try Again", :amount => "12.34", :success => false},
|
185
193
|
])
|
186
194
|
transaction.authorization_adjustments.size.should == 2
|
187
195
|
transaction.authorization_adjustments[0].amount.should == "12.00"
|
@@ -199,7 +207,7 @@ describe Braintree::Transaction do
|
|
199
207
|
it "handles receiving custom as an empty string" do
|
200
208
|
transaction = Braintree::Transaction._new(
|
201
209
|
:gateway,
|
202
|
-
:custom => "\n "
|
210
|
+
:custom => "\n ",
|
203
211
|
)
|
204
212
|
end
|
205
213
|
|
@@ -217,7 +225,7 @@ describe Braintree::Transaction do
|
|
217
225
|
it "handles nil risk_data" do
|
218
226
|
transaction = Braintree::Transaction._new(
|
219
227
|
:gateway,
|
220
|
-
:risk_data => nil
|
228
|
+
:risk_data => nil,
|
221
229
|
)
|
222
230
|
transaction.risk_data.should be_nil
|
223
231
|
end
|
@@ -225,7 +233,7 @@ describe Braintree::Transaction do
|
|
225
233
|
it "accepts network_transaction_id" do
|
226
234
|
transaction = Braintree::Transaction._new(
|
227
235
|
:gateway,
|
228
|
-
:network_transaction_id => "123456789012345"
|
236
|
+
:network_transaction_id => "123456789012345",
|
229
237
|
)
|
230
238
|
transaction.network_transaction_id.should == "123456789012345"
|
231
239
|
end
|
@@ -307,8 +315,8 @@ describe Braintree::Transaction do
|
|
307
315
|
end
|
308
316
|
|
309
317
|
describe "sale" do
|
310
|
-
let(:mock_response) { {:transaction => {}}}
|
311
|
-
let(:http_stub) { double(
|
318
|
+
let(:mock_response) { {:transaction => {}} }
|
319
|
+
let(:http_stub) { double("http_stub").as_null_object }
|
312
320
|
|
313
321
|
RSpec::Matchers.define :skip_advanced_fraud_check_value_is do |value|
|
314
322
|
match { |params| params[:transaction][:options][:skip_advanced_fraud_checking] == value }
|
@@ -326,7 +334,7 @@ describe Braintree::Transaction do
|
|
326
334
|
},
|
327
335
|
:options => {
|
328
336
|
:skip_advanced_fraud_checking => true
|
329
|
-
}
|
337
|
+
},
|
330
338
|
)
|
331
339
|
end
|
332
340
|
|
@@ -342,7 +350,7 @@ describe Braintree::Transaction do
|
|
342
350
|
},
|
343
351
|
:options => {
|
344
352
|
:skip_advanced_fraud_checking => false
|
345
|
-
}
|
353
|
+
},
|
346
354
|
)
|
347
355
|
end
|
348
356
|
|
@@ -358,7 +366,7 @@ describe Braintree::Transaction do
|
|
358
366
|
},
|
359
367
|
:options => {
|
360
368
|
:submit_for_settlement => false
|
361
|
-
}
|
369
|
+
},
|
362
370
|
)
|
363
371
|
end
|
364
372
|
end
|
@@ -11,12 +11,12 @@ describe Braintree::Util do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it "symbolizes nested keys" do
|
14
|
-
hash = {"a" => {"b" => {"c" => "d"
|
14
|
+
hash = {"a" => {"b" => {"c" => "d"}}}
|
15
15
|
Braintree::Util.symbolize_keys(hash).should == {:a => {:b => {:c => "d"}}}
|
16
16
|
end
|
17
17
|
|
18
18
|
it "symbolizes nested keys in arrays" do
|
19
|
-
hash = {"a" => ["b" => {"c" => "d"
|
19
|
+
hash = {"a" => ["b" => {"c" => "d"}]}
|
20
20
|
Braintree::Util.symbolize_keys(hash).should == {:a => [:b => {:c => "d"}]}
|
21
21
|
end
|
22
22
|
end
|
@@ -44,7 +44,7 @@ describe Braintree::Util do
|
|
44
44
|
:nested_allowed => "ok",
|
45
45
|
:nested_allowed2 => "also ok",
|
46
46
|
:nested_invalid => "bad"
|
47
|
-
}
|
47
|
+
},
|
48
48
|
)
|
49
49
|
end.to raise_error(ArgumentError, "invalid keys: nested[nested_invalid], top_level_invalid")
|
50
50
|
end
|
@@ -57,7 +57,7 @@ describe Braintree::Util do
|
|
57
57
|
:custom_fields => {
|
58
58
|
:custom_allowed => "ok",
|
59
59
|
:custom_allowed2 => "also ok",
|
60
|
-
}
|
60
|
+
},
|
61
61
|
)
|
62
62
|
end.to_not raise_error
|
63
63
|
end
|
@@ -70,7 +70,7 @@ describe Braintree::Util do
|
|
70
70
|
:custom_fields => {
|
71
71
|
:bad_nesting => "very bad"
|
72
72
|
}
|
73
|
-
}
|
73
|
+
},
|
74
74
|
)
|
75
75
|
end.to raise_error(ArgumentError, "invalid keys: allowed[custom_fields][bad_nesting]")
|
76
76
|
end
|
@@ -89,7 +89,7 @@ describe Braintree::Util do
|
|
89
89
|
:super_deep_allowed => "yep",
|
90
90
|
:real_deep_invalid => "nope"
|
91
91
|
}
|
92
|
-
}
|
92
|
+
},
|
93
93
|
)
|
94
94
|
end.to raise_error(ArgumentError, "invalid keys: nested[deeply_allowed][real_deep_invalid], nested[nested_invalid], top_level_invalid")
|
95
95
|
end
|
@@ -101,7 +101,7 @@ describe Braintree::Util do
|
|
101
101
|
:add_ons => {
|
102
102
|
:update => [{:amount => 10}],
|
103
103
|
:add => [{:amount => 5}]
|
104
|
-
}
|
104
|
+
},
|
105
105
|
)
|
106
106
|
end.to_not raise_error
|
107
107
|
end
|
@@ -113,7 +113,7 @@ describe Braintree::Util do
|
|
113
113
|
:add_ons => {
|
114
114
|
:update => [{:foo => 10}],
|
115
115
|
:add => [{:bar => 5}]
|
116
|
-
}
|
116
|
+
},
|
117
117
|
)
|
118
118
|
end.to raise_error(ArgumentError, /invalid keys: add_ons\[add\]\[bar\], add_ons\[update\]\[foo\]/)
|
119
119
|
end
|
@@ -127,7 +127,7 @@ describe Braintree::Util do
|
|
127
127
|
:custom_fields => {
|
128
128
|
:custom_allowed => "ok",
|
129
129
|
:custom_allowed2 => "also ok",
|
130
|
-
}
|
130
|
+
},
|
131
131
|
)
|
132
132
|
expect(response).to eq(true)
|
133
133
|
end
|
@@ -147,7 +147,7 @@ describe Braintree::Util do
|
|
147
147
|
:add_ons => {
|
148
148
|
:update => [{:foo => 10}],
|
149
149
|
:add => [{:bar => 5}]
|
150
|
-
}
|
150
|
+
},
|
151
151
|
)
|
152
152
|
expect(response).to eq(false)
|
153
153
|
end
|
@@ -165,7 +165,7 @@ describe Braintree::Util do
|
|
165
165
|
:super_deep_allowed => "yep",
|
166
166
|
:real_deep_invalid => "nope"
|
167
167
|
}
|
168
|
-
}
|
168
|
+
},
|
169
169
|
)
|
170
170
|
expect(response).to eq(false)
|
171
171
|
end
|
@@ -200,13 +200,13 @@ describe Braintree::Util do
|
|
200
200
|
describe "self._flatten_valid_keys" do
|
201
201
|
it "flattens hash keys" do
|
202
202
|
Braintree::Util._flatten_valid_keys(
|
203
|
-
[:top_level, {:nested => [:nested_allowed, :nested_allowed2]}]
|
203
|
+
[:top_level, {:nested => [:nested_allowed, :nested_allowed2]}],
|
204
204
|
).should == ["nested[nested_allowed2]", "nested[nested_allowed]", "top_level"]
|
205
205
|
end
|
206
206
|
|
207
207
|
it "allows wildcards with the :_any_key_ symbol" do
|
208
208
|
Braintree::Util._flatten_valid_keys(
|
209
|
-
[:top_level, {:nested => :_any_key_}]
|
209
|
+
[:top_level, {:nested => :_any_key_}],
|
210
210
|
).should == ["nested[_any_key_]", "top_level"]
|
211
211
|
end
|
212
212
|
end
|
@@ -236,11 +236,11 @@ describe Braintree::Util do
|
|
236
236
|
result.should == []
|
237
237
|
end
|
238
238
|
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
239
|
+
it "raises an UnexpectedError if nil data is provided" do
|
240
|
+
expect do
|
241
|
+
Braintree::Util.extract_attribute_as_array(nil, :abc)
|
242
|
+
end.to raise_error(Braintree::UnexpectedError, /Unprocessable entity due to an invalid request/)
|
243
|
+
end
|
244
244
|
end
|
245
245
|
|
246
246
|
describe "self.hash_to_query_string" do
|