braintree 4.14.0 → 4.15.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/lib/braintree/credit_card.rb +13 -0
- data/lib/braintree/credit_card_gateway.rb +15 -3
- data/lib/braintree/payment_method_gateway.rb +15 -3
- data/lib/braintree/test/nonce.rb +1 -0
- data/lib/braintree/test/venmo_sdk.rb +2 -0
- data/lib/braintree/transaction/credit_card_details.rb +3 -0
- data/lib/braintree/transaction/local_payment_details.rb +2 -0
- data/lib/braintree/transaction.rb +5 -4
- data/lib/braintree/transaction_gateway.rb +15 -3
- data/lib/braintree/transaction_search.rb +6 -5
- data/lib/braintree/version.rb +1 -1
- data/lib/braintree/webhook_notification.rb +1 -0
- data/lib/braintree/webhook_testing_gateway.rb +17 -0
- data/spec/integration/braintree/add_on_spec.rb +9 -9
- data/spec/integration/braintree/address_spec.rb +69 -69
- data/spec/integration/braintree/advanced_search_spec.rb +45 -45
- data/spec/integration/braintree/apple_pay_spec.rb +8 -8
- data/spec/integration/braintree/client_api/client_token_spec.rb +15 -15
- data/spec/integration/braintree/credit_card_spec.rb +223 -223
- data/spec/integration/braintree/credit_card_verification_search_spec.rb +16 -16
- data/spec/integration/braintree/credit_card_verification_spec.rb +52 -52
- data/spec/integration/braintree/customer_search_spec.rb +20 -20
- data/spec/integration/braintree/customer_spec.rb +313 -313
- data/spec/integration/braintree/disbursement_spec.rb +2 -2
- data/spec/integration/braintree/discount_spec.rb +9 -9
- data/spec/integration/braintree/dispute_spec.rb +87 -87
- data/spec/integration/braintree/document_upload_spec.rb +17 -17
- data/spec/integration/braintree/error_codes_spec.rb +2 -2
- data/spec/integration/braintree/http_spec.rb +28 -28
- data/spec/integration/braintree/merchant_account_spec.rb +127 -127
- data/spec/integration/braintree/merchant_spec.rb +103 -103
- data/spec/integration/braintree/oauth_spec.rb +61 -61
- data/spec/integration/braintree/payment_method_nonce_spec.rb +73 -73
- data/spec/integration/braintree/payment_method_spec.rb +389 -389
- data/spec/integration/braintree/payment_method_us_bank_account_spec.rb +78 -78
- data/spec/integration/braintree/paypal_account_spec.rb +38 -38
- data/spec/integration/braintree/plan_spec.rb +15 -15
- data/spec/integration/braintree/samsung_pay_card_spec.rb +65 -65
- data/spec/integration/braintree/sepa_direct_debit_account_spec.rb +51 -51
- data/spec/integration/braintree/settlement_batch_summary_spec.rb +11 -11
- data/spec/integration/braintree/subscription_spec.rb +364 -364
- data/spec/integration/braintree/test/transaction_amounts_spec.rb +2 -2
- data/spec/integration/braintree/test_transaction_spec.rb +19 -19
- data/spec/integration/braintree/transaction_line_item_spec.rb +6 -6
- data/spec/integration/braintree/transaction_search_spec.rb +198 -165
- data/spec/integration/braintree/transaction_spec.rb +1315 -1149
- data/spec/integration/braintree/transaction_us_bank_account_spec.rb +32 -32
- data/spec/integration/braintree/us_bank_account_spec.rb +30 -30
- data/spec/integration/braintree/us_bank_account_verification_search_spec.rb +18 -18
- data/spec/integration/braintree/us_bank_account_verification_spec.rb +33 -33
- data/spec/integration/braintree/visa_checkout_card_spec.rb +57 -57
- data/spec/spec_helper.rb +9 -8
- data/spec/unit/braintree/address_spec.rb +8 -8
- data/spec/unit/braintree/base_module_spec.rb +4 -4
- data/spec/unit/braintree/client_token_spec.rb +2 -2
- data/spec/unit/braintree/configuration_spec.rb +57 -57
- data/spec/unit/braintree/credentials_parser_spec.rb +6 -6
- data/spec/unit/braintree/credit_card_spec.rb +31 -29
- data/spec/unit/braintree/credit_card_verification_gateway_spec.rb +28 -28
- data/spec/unit/braintree/credit_card_verification_search_spec.rb +9 -9
- data/spec/unit/braintree/credit_card_verification_spec.rb +17 -17
- data/spec/unit/braintree/customer_spec.rb +41 -40
- data/spec/unit/braintree/digest_spec.rb +5 -5
- data/spec/unit/braintree/disbursement_spec.rb +11 -11
- data/spec/unit/braintree/dispute_search_spec.rb +2 -2
- data/spec/unit/braintree/dispute_spec.rb +56 -56
- data/spec/unit/braintree/document_upload_spec.rb +8 -8
- data/spec/unit/braintree/enriched_customer_data_spec.rb +2 -2
- data/spec/unit/braintree/error_result_spec.rb +5 -5
- data/spec/unit/braintree/errors_spec.rb +9 -9
- data/spec/unit/braintree/http_spec.rb +8 -8
- data/spec/unit/braintree/local_payment_completed_spec.rb +11 -11
- data/spec/unit/braintree/local_payment_expired_spec.rb +2 -2
- data/spec/unit/braintree/local_payment_funded_spec.rb +6 -6
- data/spec/unit/braintree/merchant_account_spec.rb +4 -4
- data/spec/unit/braintree/modification_spec.rb +1 -1
- data/spec/unit/braintree/payment_method_customer_data_updated_metadata_spec.rb +6 -6
- data/spec/unit/braintree/payment_method_nonce_details_payer_info_spec.rb +7 -7
- data/spec/unit/braintree/payment_method_nonce_details_spec.rb +14 -14
- data/spec/unit/braintree/payment_method_spec.rb +19 -19
- data/spec/unit/braintree/paypal_account_spec.rb +4 -4
- data/spec/unit/braintree/resource_collection_spec.rb +7 -7
- data/spec/unit/braintree/sepa_debit_account_nonce_details_spec.rb +1 -1
- data/spec/unit/braintree/sha256_digest_spec.rb +1 -1
- data/spec/unit/braintree/signature_service_spec.rb +2 -2
- data/spec/unit/braintree/subscription_search_spec.rb +17 -17
- data/spec/unit/braintree/subscription_spec.rb +8 -8
- data/spec/unit/braintree/successful_result_spec.rb +5 -5
- data/spec/unit/braintree/three_d_secure_info_spec.rb +20 -20
- data/spec/unit/braintree/transaction/credit_card_details_spec.rb +5 -5
- 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/local_payment_details_spec.rb +30 -0
- data/spec/unit/braintree/transaction_gateway_spec.rb +9 -6
- data/spec/unit/braintree/transaction_search_spec.rb +2 -2
- data/spec/unit/braintree/transaction_spec.rb +101 -93
- data/spec/unit/braintree/unknown_payment_method_spec.rb +4 -4
- data/spec/unit/braintree/us_bank_account_spec.rb +2 -2
- data/spec/unit/braintree/us_bank_account_verification_search_spec.rb +7 -7
- data/spec/unit/braintree/us_bank_account_verification_spec.rb +7 -7
- data/spec/unit/braintree/util_spec.rb +27 -27
- data/spec/unit/braintree/validation_error_collection_spec.rb +34 -34
- data/spec/unit/braintree/validation_error_spec.rb +4 -4
- data/spec/unit/braintree/venmo_profile_data_spec.rb +5 -5
- data/spec/unit/braintree/webhook_notification_spec.rb +206 -191
- data/spec/unit/braintree/xml/libxml_spec.rb +5 -5
- data/spec/unit/braintree/xml/parser_spec.rb +8 -8
- data/spec/unit/braintree/xml/rexml_spec.rb +5 -5
- data/spec/unit/braintree/xml_spec.rb +17 -17
- data/spec/unit/braintree_spec.rb +2 -2
- metadata +3 -2
|
@@ -22,30 +22,30 @@ describe Braintree::PaymentMethodNonceDetails do
|
|
|
22
22
|
|
|
23
23
|
describe "#initialize" do
|
|
24
24
|
it "sets attributes" do
|
|
25
|
-
payment_method_nonce_details.bin.
|
|
26
|
-
payment_method_nonce_details.card_type.
|
|
27
|
-
payment_method_nonce_details.expiration_month.
|
|
28
|
-
payment_method_nonce_details.expiration_year.
|
|
29
|
-
payment_method_nonce_details.is_network_tokenized.
|
|
30
|
-
payment_method_nonce_details.last_two.
|
|
31
|
-
payment_method_nonce_details.payer_info.billing_agreement_id.
|
|
32
|
-
payment_method_nonce_details.payer_info.country_code.
|
|
33
|
-
payment_method_nonce_details.sepa_direct_debit_account_nonce_details.bank_reference_token.
|
|
34
|
-
payment_method_nonce_details.sepa_direct_debit_account_nonce_details.last_4.
|
|
35
|
-
payment_method_nonce_details.sepa_direct_debit_account_nonce_details.mandate_type.
|
|
36
|
-
payment_method_nonce_details.sepa_direct_debit_account_nonce_details.merchant_or_partner_customer_id.
|
|
25
|
+
expect(payment_method_nonce_details.bin).to eq("bin")
|
|
26
|
+
expect(payment_method_nonce_details.card_type).to eq("American Express")
|
|
27
|
+
expect(payment_method_nonce_details.expiration_month).to eq("12")
|
|
28
|
+
expect(payment_method_nonce_details.expiration_year).to eq("2025")
|
|
29
|
+
expect(payment_method_nonce_details.is_network_tokenized).to eq(true)
|
|
30
|
+
expect(payment_method_nonce_details.last_two).to eq("11")
|
|
31
|
+
expect(payment_method_nonce_details.payer_info.billing_agreement_id).to eq("1234")
|
|
32
|
+
expect(payment_method_nonce_details.payer_info.country_code).to eq("US")
|
|
33
|
+
expect(payment_method_nonce_details.sepa_direct_debit_account_nonce_details.bank_reference_token).to eq("a-bank-reference-token")
|
|
34
|
+
expect(payment_method_nonce_details.sepa_direct_debit_account_nonce_details.last_4).to eq("abcd")
|
|
35
|
+
expect(payment_method_nonce_details.sepa_direct_debit_account_nonce_details.mandate_type).to eq("ONE_OFF")
|
|
36
|
+
expect(payment_method_nonce_details.sepa_direct_debit_account_nonce_details.merchant_or_partner_customer_id).to eq("a-mp-customer-id")
|
|
37
37
|
end
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
describe "inspect" do
|
|
41
41
|
it "prints the attributes" do
|
|
42
|
-
payment_method_nonce_details.inspect.
|
|
42
|
+
expect(payment_method_nonce_details.inspect).to eq(%(#<PaymentMethodNonceDetails bin: "bin", card_type: "American Express", expiration_month: "12", expiration_year: "2025", is_network_tokenized: true, last_two: "11", payer_info: #<PaymentMethodNonceDetailsPayerInfo billing_agreement_id: "1234", country_code: "US", email: nil, first_name: nil, last_name: nil, payer_id: nil>, sepa_direct_debit_account_nonce_details: #<SepaDirectDebitAccountNonceDetailsbank_reference_token: "a-bank-reference-token", last_4: "abcd", mandate_type: "ONE_OFF", merchant_or_partner_customer_id: "a-mp-customer-id">>))
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
describe "is_network_tokenized" do
|
|
47
47
|
it "is aliased to is_network_tokenized?" do
|
|
48
|
-
payment_method_nonce_details.is_network_tokenized
|
|
48
|
+
expect(payment_method_nonce_details.is_network_tokenized?).to eq(true)
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
end
|
|
@@ -5,11 +5,11 @@ describe Braintree::PaymentMethod do
|
|
|
5
5
|
it "handles an unknown payment method type" do
|
|
6
6
|
unknown_response = {:unknown_payment_method => {:token => 1234, :default => true}}
|
|
7
7
|
http_instance = double(:get => unknown_response)
|
|
8
|
-
Braintree::Http.
|
|
8
|
+
allow(Braintree::Http).to receive(:new).and_return(http_instance)
|
|
9
9
|
unknown_payment_method = Braintree::PaymentMethod.find("UNKNOWN_PAYMENT_METHOD_TOKEN")
|
|
10
10
|
|
|
11
|
-
unknown_payment_method.token.
|
|
12
|
-
unknown_payment_method.default
|
|
11
|
+
expect(unknown_payment_method.token).to eq(1234)
|
|
12
|
+
expect(unknown_payment_method.default?).to be(true)
|
|
13
13
|
end
|
|
14
14
|
end
|
|
15
15
|
|
|
@@ -17,27 +17,27 @@ describe Braintree::PaymentMethod do
|
|
|
17
17
|
it "handles an unknown payment method type" do
|
|
18
18
|
unknown_response = {:unknown_payment_method => {:token => 1234, :default => true}}
|
|
19
19
|
http_instance = double(:put => unknown_response)
|
|
20
|
-
Braintree::Http.
|
|
20
|
+
allow(Braintree::Http).to receive(:new).and_return(http_instance)
|
|
21
21
|
result = Braintree::PaymentMethod.update(:unknown,
|
|
22
22
|
{:options => {:make_default => true}})
|
|
23
23
|
|
|
24
|
-
result.
|
|
25
|
-
result.payment_method.token.
|
|
26
|
-
result.payment_method.
|
|
24
|
+
expect(result).to be_success
|
|
25
|
+
expect(result.payment_method.token).to eq(1234)
|
|
26
|
+
expect(result.payment_method).to be_instance_of(Braintree::UnknownPaymentMethod)
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
describe "delete" do
|
|
31
31
|
let(:http_stub) { double("http_stub").as_null_object }
|
|
32
32
|
it "accepts revoke_all_grants option with value true" do
|
|
33
|
-
Braintree::Http.
|
|
34
|
-
http_stub.
|
|
33
|
+
allow(Braintree::Http).to receive(:new).and_return http_stub
|
|
34
|
+
expect(http_stub).to receive(:delete).with("/merchants/integration_merchant_id/payment_methods/any/some_token?revoke_all_grants=true")
|
|
35
35
|
Braintree::PaymentMethod.delete("some_token", {:revoke_all_grants => true})
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
it "accepts revoke_all_grants option with value false" do
|
|
39
|
-
Braintree::Http.
|
|
40
|
-
http_stub.
|
|
39
|
+
allow(Braintree::Http).to receive(:new).and_return http_stub
|
|
40
|
+
expect(http_stub).to receive(:delete).with("/merchants/integration_merchant_id/payment_methods/any/some_token?revoke_all_grants=false")
|
|
41
41
|
Braintree::PaymentMethod.delete("some_token", {:revoke_all_grants => false})
|
|
42
42
|
end
|
|
43
43
|
|
|
@@ -48,8 +48,8 @@ describe Braintree::PaymentMethod do
|
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
it "accepts just the token, revoke_all_grants is optional" do
|
|
51
|
-
Braintree::Http.
|
|
52
|
-
http_stub.
|
|
51
|
+
allow(Braintree::Http).to receive(:new).and_return http_stub
|
|
52
|
+
expect(http_stub).to receive(:delete).with("/merchants/integration_merchant_id/payment_methods/any/some_token")
|
|
53
53
|
Braintree::PaymentMethod.delete("some_token")
|
|
54
54
|
end
|
|
55
55
|
end
|
|
@@ -59,8 +59,8 @@ describe Braintree::PaymentMethod do
|
|
|
59
59
|
now = Time.now
|
|
60
60
|
paypal_account = Braintree::PayPalAccount._new(:gateway, :updated_at => now, :created_at => now)
|
|
61
61
|
|
|
62
|
-
paypal_account.created_at.
|
|
63
|
-
paypal_account.updated_at.
|
|
62
|
+
expect(paypal_account.created_at).to eq(now)
|
|
63
|
+
expect(paypal_account.updated_at).to eq(now)
|
|
64
64
|
end
|
|
65
65
|
end
|
|
66
66
|
|
|
@@ -84,21 +84,21 @@ describe Braintree::PaymentMethod do
|
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
it "does not raise an error if token does not respond to strip" do
|
|
87
|
-
Braintree::Http.
|
|
87
|
+
allow(Braintree::Http).to receive(:new).and_return double.as_null_object
|
|
88
88
|
expect do
|
|
89
89
|
Braintree::PaymentMethod.grant(8675309, :allow_vaulting => false)
|
|
90
90
|
end.to_not raise_error
|
|
91
91
|
end
|
|
92
92
|
|
|
93
93
|
it "accepts all options as hash map" do
|
|
94
|
-
Braintree::Http.
|
|
94
|
+
allow(Braintree::Http).to receive(:new).and_return double.as_null_object
|
|
95
95
|
expect do
|
|
96
96
|
Braintree::PaymentMethod.grant("$dummyToken", :allow_vaulting => false, :include_billing_postal_code => true)
|
|
97
97
|
end.to_not raise_error
|
|
98
98
|
end
|
|
99
99
|
|
|
100
100
|
it "accepts only token as parameter" do
|
|
101
|
-
Braintree::Http.
|
|
101
|
+
allow(Braintree::Http).to receive(:new).and_return double.as_null_object
|
|
102
102
|
expect do
|
|
103
103
|
Braintree::PaymentMethod.grant("$dummyToken")
|
|
104
104
|
end.to_not raise_error
|
|
@@ -126,7 +126,7 @@ describe Braintree::PaymentMethod do
|
|
|
126
126
|
end
|
|
127
127
|
|
|
128
128
|
it "does not raise an error if token does not respond to strip" do
|
|
129
|
-
Braintree::Http.
|
|
129
|
+
allow(Braintree::Http).to receive(:new).and_return double.as_null_object
|
|
130
130
|
expect do
|
|
131
131
|
Braintree::PaymentMethod.revoke(8675309)
|
|
132
132
|
end.to_not raise_error
|
|
@@ -24,11 +24,11 @@ describe Braintree::PayPalAccount do
|
|
|
24
24
|
|
|
25
25
|
describe "default?" do
|
|
26
26
|
it "is true if the paypal account is the default payment method for the customer" do
|
|
27
|
-
Braintree::PayPalAccount._new(:gateway, :default => true).default
|
|
27
|
+
expect(Braintree::PayPalAccount._new(:gateway, :default => true).default?).to eq(true)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
it "is false if the paypal account is not the default payment methodfor the customer" do
|
|
31
|
-
Braintree::PayPalAccount._new(:gateway, :default => false).default
|
|
31
|
+
expect(Braintree::PayPalAccount._new(:gateway, :default => false).default?).to eq(false)
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
34
|
|
|
@@ -37,8 +37,8 @@ describe Braintree::PayPalAccount do
|
|
|
37
37
|
now = Time.now
|
|
38
38
|
paypal_account = Braintree::PayPalAccount._new(:gateway, :updated_at => now, :created_at => now)
|
|
39
39
|
|
|
40
|
-
paypal_account.created_at.
|
|
41
|
-
paypal_account.updated_at.
|
|
40
|
+
expect(paypal_account.created_at).to eq(now)
|
|
41
|
+
expect(paypal_account.updated_at).to eq(now)
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
end
|
|
@@ -10,11 +10,11 @@ describe "Braintree::ResourceCollection" do
|
|
|
10
10
|
|
|
11
11
|
count = 0
|
|
12
12
|
collection.each_with_index do |item, index|
|
|
13
|
-
item.
|
|
13
|
+
expect(item).to eq(values[index])
|
|
14
14
|
count += 1
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
count.
|
|
17
|
+
expect(count).to eq(5)
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
|
|
@@ -25,7 +25,7 @@ describe "Braintree::ResourceCollection" do
|
|
|
25
25
|
ids.map { |id| values[id] }
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
collection.first.
|
|
28
|
+
expect(collection.first).to eq(nil)
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
context "with results" do
|
|
@@ -38,11 +38,11 @@ describe "Braintree::ResourceCollection" do
|
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
it "returns the first occourence" do
|
|
41
|
-
collection.first.
|
|
41
|
+
expect(collection.first).to eq("a")
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
it "returns the first N occourences" do
|
|
45
|
-
collection.first(4).
|
|
45
|
+
expect(collection.first(4)).to eq(["a","b","c","d"])
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
48
|
end
|
|
@@ -50,12 +50,12 @@ describe "Braintree::ResourceCollection" do
|
|
|
50
50
|
describe "#ids" do
|
|
51
51
|
it "returns a list of the resource collection ids" do
|
|
52
52
|
collection = Braintree::ResourceCollection.new(:search_results => {:ids => [0,1,2,3,4], :page_size => 2})
|
|
53
|
-
collection.ids.
|
|
53
|
+
expect(collection.ids).to eq([0,1,2,3,4])
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
it "returns an empty array when the collection is empty" do
|
|
58
58
|
collection = Braintree::ResourceCollection.new(:search_results => {:page_size => 2})
|
|
59
|
-
collection.ids.
|
|
59
|
+
expect(collection.ids).to eq([])
|
|
60
60
|
end
|
|
61
61
|
end
|
|
@@ -23,7 +23,7 @@ describe Braintree::SepaDirectDebitAccountNonceDetails do
|
|
|
23
23
|
|
|
24
24
|
describe "inspect" do
|
|
25
25
|
it "prints the attributes" do
|
|
26
|
-
subject.inspect.
|
|
26
|
+
expect(subject.inspect).to eq(%(#<SepaDirectDebitAccountNonceDetailsbank_reference_token: "a-bank-reference-token", last_4: "abcd", mandate_type: "ONE_OFF", merchant_or_partner_customer_id: "a-mp-customer-id">))
|
|
27
27
|
end
|
|
28
28
|
end
|
|
29
29
|
end
|
|
@@ -5,7 +5,7 @@ describe Braintree::SHA256Digest do
|
|
|
5
5
|
it "returns the sha256 hmac of the input string (test case 6 from RFC 2202)" do
|
|
6
6
|
key = "secret-key"
|
|
7
7
|
message = "secret-message"
|
|
8
|
-
Braintree::SHA256Digest.hexdigest(key, message).
|
|
8
|
+
expect(Braintree::SHA256Digest.hexdigest(key, message)).to eq("68e7f2ecab71db67b1aca2a638f5122810315c3013f27c2196cd53e88709eecc")
|
|
9
9
|
end
|
|
10
10
|
end
|
|
11
11
|
end
|
|
@@ -11,13 +11,13 @@ describe Braintree::SignatureService do
|
|
|
11
11
|
it "signs the data with its key" do
|
|
12
12
|
service = Braintree::SignatureService.new("my_key", FakeDigest)
|
|
13
13
|
|
|
14
|
-
service.sign(:foo => "foo bar").
|
|
14
|
+
expect(service.sign(:foo => "foo bar")).to eq("foo=foo+bar_signed_with_my_key|foo=foo+bar")
|
|
15
15
|
end
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
describe "hash" do
|
|
19
19
|
it "hashes the string with its key" do
|
|
20
|
-
Braintree::SignatureService.new("my_key", FakeDigest).hash("foo").
|
|
20
|
+
expect(Braintree::SignatureService.new("my_key", FakeDigest).hash("foo")).to eq("foo_signed_with_my_key")
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
end
|
|
@@ -6,14 +6,14 @@ module Braintree
|
|
|
6
6
|
it "allows Active, Canceled, Expired, and PastDue" do
|
|
7
7
|
search = SubscriptionSearch.new
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
expect do
|
|
10
10
|
search.status.in(
|
|
11
11
|
Subscription::Status::Active,
|
|
12
12
|
Subscription::Status::Canceled,
|
|
13
13
|
Subscription::Status::Expired,
|
|
14
14
|
Subscription::Status::PastDue,
|
|
15
15
|
)
|
|
16
|
-
end.
|
|
16
|
+
end.not_to raise_error
|
|
17
17
|
end
|
|
18
18
|
end
|
|
19
19
|
|
|
@@ -22,14 +22,14 @@ module Braintree
|
|
|
22
22
|
search = SubscriptionSearch.new
|
|
23
23
|
search.in_trial_period.is true
|
|
24
24
|
|
|
25
|
-
search.to_hash.
|
|
25
|
+
expect(search.to_hash).to eq({:in_trial_period => [true]})
|
|
26
26
|
end
|
|
27
27
|
|
|
28
28
|
it "allows false" do
|
|
29
29
|
search = SubscriptionSearch.new
|
|
30
30
|
search.in_trial_period.is false
|
|
31
31
|
|
|
32
|
-
search.to_hash.
|
|
32
|
+
expect(search.to_hash).to eq({:in_trial_period => [false]})
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
@@ -38,14 +38,14 @@ module Braintree
|
|
|
38
38
|
search = SubscriptionSearch.new
|
|
39
39
|
search.days_past_due.is "30"
|
|
40
40
|
|
|
41
|
-
search.to_hash.
|
|
41
|
+
expect(search.to_hash).to eq({:days_past_due => {:is => "30"}})
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
it "coverts ints to strings" do
|
|
45
45
|
search = SubscriptionSearch.new
|
|
46
46
|
search.days_past_due.is 30
|
|
47
47
|
|
|
48
|
-
search.to_hash.
|
|
48
|
+
expect(search.to_hash).to eq({:days_past_due => {:is => "30"}})
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
@@ -54,7 +54,7 @@ module Braintree
|
|
|
54
54
|
search = SubscriptionSearch.new
|
|
55
55
|
search.merchant_account_id.in "ma_id1", "ma_id2"
|
|
56
56
|
|
|
57
|
-
search.to_hash.
|
|
57
|
+
expect(search.to_hash).to eq({:merchant_account_id => ["ma_id1", "ma_id2"]})
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
|
|
@@ -63,63 +63,63 @@ module Braintree
|
|
|
63
63
|
search = SubscriptionSearch.new
|
|
64
64
|
search.plan_id.starts_with "plan_"
|
|
65
65
|
|
|
66
|
-
search.to_hash.
|
|
66
|
+
expect(search.to_hash).to eq({:plan_id => {:starts_with => "plan_"}})
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
it "ends_with" do
|
|
70
70
|
search = SubscriptionSearch.new
|
|
71
71
|
search.plan_id.ends_with "_id"
|
|
72
72
|
|
|
73
|
-
search.to_hash.
|
|
73
|
+
expect(search.to_hash).to eq({:plan_id => {:ends_with => "_id"}})
|
|
74
74
|
end
|
|
75
75
|
|
|
76
76
|
it "is" do
|
|
77
77
|
search = SubscriptionSearch.new
|
|
78
78
|
search.plan_id.is "p_id"
|
|
79
79
|
|
|
80
|
-
search.to_hash.
|
|
80
|
+
expect(search.to_hash).to eq({:plan_id => {:is => "p_id"}})
|
|
81
81
|
end
|
|
82
82
|
|
|
83
83
|
it "is_not" do
|
|
84
84
|
search = SubscriptionSearch.new
|
|
85
85
|
search.plan_id.is_not "p_id"
|
|
86
86
|
|
|
87
|
-
search.to_hash.
|
|
87
|
+
expect(search.to_hash).to eq({:plan_id => {:is_not => "p_id"}})
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
it "contains" do
|
|
91
91
|
search = SubscriptionSearch.new
|
|
92
92
|
search.plan_id.contains "p_id"
|
|
93
93
|
|
|
94
|
-
search.to_hash.
|
|
94
|
+
expect(search.to_hash).to eq({:plan_id => {:contains => "p_id"}})
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
it "in" do
|
|
98
98
|
search = SubscriptionSearch.new
|
|
99
99
|
search.plan_id.in ["plan1", "plan2"]
|
|
100
100
|
|
|
101
|
-
search.to_hash.
|
|
101
|
+
expect(search.to_hash).to eq({:plan_id => ["plan1", "plan2"]})
|
|
102
102
|
end
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
context "days_past_due" do
|
|
106
106
|
it "is a range node" do
|
|
107
107
|
search = SubscriptionSearch.new
|
|
108
|
-
search.days_past_due.
|
|
108
|
+
expect(search.days_past_due).to be_kind_of(Braintree::AdvancedSearch::RangeNode)
|
|
109
109
|
end
|
|
110
110
|
end
|
|
111
111
|
|
|
112
112
|
context "billing_cycles_remaining" do
|
|
113
113
|
it "is a range node" do
|
|
114
114
|
search = SubscriptionSearch.new
|
|
115
|
-
search.billing_cycles_remaining.
|
|
115
|
+
expect(search.billing_cycles_remaining).to be_kind_of(Braintree::AdvancedSearch::RangeNode)
|
|
116
116
|
end
|
|
117
117
|
end
|
|
118
118
|
|
|
119
119
|
context "created_at" do
|
|
120
120
|
it "is a range node" do
|
|
121
121
|
search = SubscriptionSearch.new
|
|
122
|
-
search.created_at.
|
|
122
|
+
expect(search.created_at).to be_kind_of(Braintree::AdvancedSearch::RangeNode)
|
|
123
123
|
end
|
|
124
124
|
end
|
|
125
125
|
|
|
@@ -128,7 +128,7 @@ module Braintree
|
|
|
128
128
|
search = SubscriptionSearch.new
|
|
129
129
|
search.id.is "s_id"
|
|
130
130
|
|
|
131
|
-
search.to_hash.
|
|
131
|
+
expect(search.to_hash).to eq({:id => {:is => "s_id"}})
|
|
132
132
|
end
|
|
133
133
|
end
|
|
134
134
|
end
|
|
@@ -11,8 +11,8 @@ describe Braintree::Subscription do
|
|
|
11
11
|
|
|
12
12
|
context "price" do
|
|
13
13
|
it "accepts price as either a String or a BigDecimal" do
|
|
14
|
-
Braintree::Subscription._new(:gateway, default_params.merge(:price => "12.34")).price.
|
|
15
|
-
Braintree::Subscription._new(:gateway, default_params.merge(:price => BigDecimal("12.34"))).price.
|
|
14
|
+
expect(Braintree::Subscription._new(:gateway, default_params.merge(:price => "12.34")).price).to eq(BigDecimal("12.34"))
|
|
15
|
+
expect(Braintree::Subscription._new(:gateway, default_params.merge(:price => BigDecimal("12.34"))).price).to eq(BigDecimal("12.34"))
|
|
16
16
|
end
|
|
17
17
|
|
|
18
18
|
it "blows up if price is not a string or BigDecimal" do
|
|
@@ -42,7 +42,7 @@ describe Braintree::Subscription do
|
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
it "does not raise an error if subscription id does not respond to strip" do
|
|
45
|
-
Braintree::Http.
|
|
45
|
+
allow(Braintree::Http).to receive(:new).and_return double(:get => {:subscription => default_params})
|
|
46
46
|
expect do
|
|
47
47
|
Braintree::Subscription.find(8675309)
|
|
48
48
|
end.to_not raise_error
|
|
@@ -51,11 +51,11 @@ describe Braintree::Subscription do
|
|
|
51
51
|
|
|
52
52
|
describe "self.search" do
|
|
53
53
|
it "only allows specified values for status" do
|
|
54
|
-
|
|
54
|
+
expect do
|
|
55
55
|
Braintree::Subscription.search do |search|
|
|
56
56
|
search.status.in "Hammer"
|
|
57
57
|
end
|
|
58
|
-
end.
|
|
58
|
+
end.to raise_error(ArgumentError)
|
|
59
59
|
end
|
|
60
60
|
end
|
|
61
61
|
|
|
@@ -63,18 +63,18 @@ describe Braintree::Subscription do
|
|
|
63
63
|
it "returns true for subscriptions with the same id" do
|
|
64
64
|
subscription1 = Braintree::Subscription._new(:gateway, default_params.merge(:id => "123"))
|
|
65
65
|
subscription2 = Braintree::Subscription._new(:gateway, default_params.merge(:id => "123"))
|
|
66
|
-
subscription1.
|
|
66
|
+
expect(subscription1).to eq(subscription2)
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
it "returns false for subscriptions with different ids" do
|
|
70
70
|
subscription1 = Braintree::Subscription._new(:gateway, default_params.merge(:id => "123"))
|
|
71
71
|
subscription2 = Braintree::Subscription._new(:gateway, default_params.merge(:id => "not_123"))
|
|
72
|
-
subscription1.
|
|
72
|
+
expect(subscription1).not_to eq(subscription2)
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
it "returns false if not comparing to a subscription" do
|
|
76
76
|
subscription = Braintree::Subscription._new(:gateway, default_params.merge(:id => "123"))
|
|
77
|
-
subscription.
|
|
77
|
+
expect(subscription).not_to eq("not a subscription")
|
|
78
78
|
end
|
|
79
79
|
end
|
|
80
80
|
end
|
|
@@ -7,21 +7,21 @@ describe Braintree::SuccessfulResult do
|
|
|
7
7
|
:transaction => "transaction_value",
|
|
8
8
|
:credit_card => "credit_card_value",
|
|
9
9
|
)
|
|
10
|
-
result.success
|
|
11
|
-
result.transaction.
|
|
12
|
-
result.credit_card.
|
|
10
|
+
expect(result.success?).to eq(true)
|
|
11
|
+
expect(result.transaction).to eq("transaction_value")
|
|
12
|
+
expect(result.credit_card).to eq("credit_card_value")
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
it "can be initialized without any values" do
|
|
16
16
|
result = Braintree::SuccessfulResult.new
|
|
17
|
-
result.success
|
|
17
|
+
expect(result.success?).to eq(true)
|
|
18
18
|
end
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
describe "inspect" do
|
|
22
22
|
it "is pretty" do
|
|
23
23
|
result = Braintree::SuccessfulResult.new(:transaction => "transaction_value")
|
|
24
|
-
result.inspect.
|
|
24
|
+
expect(result.inspect).to eq("#<Braintree::SuccessfulResult transaction:\"transaction_value\">")
|
|
25
25
|
end
|
|
26
26
|
end
|
|
27
27
|
end
|
|
@@ -29,41 +29,41 @@ describe Braintree::ThreeDSecureInfo do
|
|
|
29
29
|
|
|
30
30
|
describe "#initialize" do
|
|
31
31
|
it "sets attributes" do
|
|
32
|
-
three_d_secure_info.acs_transaction_id.
|
|
33
|
-
three_d_secure_info.cavv.
|
|
34
|
-
three_d_secure_info.ds_transaction_id.
|
|
35
|
-
three_d_secure_info.eci_flag.
|
|
36
|
-
three_d_secure_info.enrolled.
|
|
37
|
-
three_d_secure_info.liability_shift_possible.
|
|
38
|
-
three_d_secure_info.liability_shifted.
|
|
39
|
-
three_d_secure_info.pares_status.
|
|
40
|
-
three_d_secure_info.status.
|
|
41
|
-
three_d_secure_info.three_d_secure_authentication_id.
|
|
42
|
-
three_d_secure_info.three_d_secure_transaction_id.
|
|
43
|
-
three_d_secure_info.three_d_secure_version.
|
|
44
|
-
three_d_secure_info.xid.
|
|
45
|
-
three_d_secure_info.lookup[:trans_status].
|
|
46
|
-
three_d_secure_info.lookup[:trans_status_reason].
|
|
47
|
-
three_d_secure_info.authentication[:trans_status].
|
|
48
|
-
three_d_secure_info.authentication[:trans_status_reason].
|
|
32
|
+
expect(three_d_secure_info.acs_transaction_id).to eq("acs_id")
|
|
33
|
+
expect(three_d_secure_info.cavv).to eq("cavvvalue")
|
|
34
|
+
expect(three_d_secure_info.ds_transaction_id).to eq("dstrxid")
|
|
35
|
+
expect(three_d_secure_info.eci_flag).to eq("06")
|
|
36
|
+
expect(three_d_secure_info.enrolled).to eq("Y")
|
|
37
|
+
expect(three_d_secure_info.liability_shift_possible).to eq(true)
|
|
38
|
+
expect(three_d_secure_info.liability_shifted).to eq(true)
|
|
39
|
+
expect(three_d_secure_info.pares_status).to eq("Y")
|
|
40
|
+
expect(three_d_secure_info.status).to eq("authenticate_successful")
|
|
41
|
+
expect(three_d_secure_info.three_d_secure_authentication_id).to eq("auth_id")
|
|
42
|
+
expect(three_d_secure_info.three_d_secure_transaction_id).to eq("trans_id")
|
|
43
|
+
expect(three_d_secure_info.three_d_secure_version).to eq("1.0.2")
|
|
44
|
+
expect(three_d_secure_info.xid).to eq("xidvalue")
|
|
45
|
+
expect(three_d_secure_info.lookup[:trans_status]).to eq("lookupstatus")
|
|
46
|
+
expect(three_d_secure_info.lookup[:trans_status_reason]).to eq("lookupstatusreason")
|
|
47
|
+
expect(three_d_secure_info.authentication[:trans_status]).to eq("authstatus")
|
|
48
|
+
expect(three_d_secure_info.authentication[:trans_status_reason]).to eq("authstatusreason")
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
describe "inspect" do
|
|
53
53
|
it "prints the attributes" do
|
|
54
|
-
three_d_secure_info.inspect.
|
|
54
|
+
expect(three_d_secure_info.inspect).to eq(%(#<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">))
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
describe "liability_shifted" do
|
|
59
59
|
it "is aliased to liability_shifted?" do
|
|
60
|
-
three_d_secure_info.liability_shifted
|
|
60
|
+
expect(three_d_secure_info.liability_shifted?).to eq(true)
|
|
61
61
|
end
|
|
62
62
|
end
|
|
63
63
|
|
|
64
64
|
describe "liability_shift_possible" do
|
|
65
65
|
it "is aliased to liability_shift_possible?" do
|
|
66
|
-
three_d_secure_info.liability_shift_possible
|
|
66
|
+
expect(three_d_secure_info.liability_shift_possible?).to eq(true)
|
|
67
67
|
end
|
|
68
68
|
end
|
|
69
69
|
end
|
|
@@ -7,7 +7,7 @@ describe Braintree::Transaction::CreditCardDetails do
|
|
|
7
7
|
:expiration_month => "08",
|
|
8
8
|
:expiration_year => "2009",
|
|
9
9
|
)
|
|
10
|
-
details.expiration_date.
|
|
10
|
+
expect(details.expiration_date).to eq("08/2009")
|
|
11
11
|
end
|
|
12
12
|
end
|
|
13
13
|
|
|
@@ -34,7 +34,7 @@ describe Braintree::Transaction::CreditCardDetails do
|
|
|
34
34
|
:image_url => "example.com/visa.png",
|
|
35
35
|
:unique_number_identifier => "abc123",
|
|
36
36
|
)
|
|
37
|
-
details.inspect.
|
|
37
|
+
expect(details.inspect).to eq(%(#<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
|
|
39
39
|
end
|
|
40
40
|
|
|
@@ -43,7 +43,7 @@ describe Braintree::Transaction::CreditCardDetails do
|
|
|
43
43
|
details = Braintree::Transaction::CreditCardDetails.new(
|
|
44
44
|
:bin => "510510", :last_4 => "5100",
|
|
45
45
|
)
|
|
46
|
-
details.masked_number.
|
|
46
|
+
expect(details.masked_number).to eq("510510******5100")
|
|
47
47
|
end
|
|
48
48
|
end
|
|
49
49
|
|
|
@@ -52,14 +52,14 @@ describe Braintree::Transaction::CreditCardDetails do
|
|
|
52
52
|
details = Braintree::Transaction::CreditCardDetails.new(
|
|
53
53
|
:is_network_tokenized => true,
|
|
54
54
|
)
|
|
55
|
-
details.is_network_tokenized
|
|
55
|
+
expect(details.is_network_tokenized?).to eq(true)
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
it "returns false if is_network_tokenized is false" do
|
|
59
59
|
details = Braintree::Transaction::CreditCardDetails.new(
|
|
60
60
|
:is_network_tokenized => false,
|
|
61
61
|
)
|
|
62
|
-
details.is_network_tokenized
|
|
62
|
+
expect(details.is_network_tokenized?).to eq(false)
|
|
63
63
|
end
|
|
64
64
|
end
|
|
65
65
|
end
|
|
@@ -13,7 +13,7 @@ describe Braintree::Transaction::CustomerDetails do
|
|
|
13
13
|
:phone => "6145551234",
|
|
14
14
|
:fax => "3125551234",
|
|
15
15
|
)
|
|
16
|
-
details.inspect.
|
|
16
|
+
expect(details.inspect).to eq(%(#<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
|
|
18
18
|
end
|
|
19
19
|
end
|
|
@@ -6,13 +6,13 @@ describe Braintree::Transaction::DisbursementDetails do
|
|
|
6
6
|
details = Braintree::Transaction::DisbursementDetails.new(
|
|
7
7
|
:disbursement_date => Date.new(2013, 4, 1).to_s,
|
|
8
8
|
)
|
|
9
|
-
details.valid
|
|
9
|
+
expect(details.valid?).to eq(true)
|
|
10
10
|
end
|
|
11
11
|
it "returns true if disbursement details are initialized" do
|
|
12
12
|
details = Braintree::Transaction::DisbursementDetails.new(
|
|
13
13
|
:disbursement_date => nil,
|
|
14
14
|
)
|
|
15
|
-
details.valid
|
|
15
|
+
expect(details.valid?).to eq(false)
|
|
16
16
|
end
|
|
17
17
|
end
|
|
18
18
|
end
|