braintree 2.30.0 → 2.30.2

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.
Files changed (40) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +1 -1
  3. data/lib/braintree.rb +5 -1
  4. data/lib/braintree/client_token.rb +18 -0
  5. data/lib/braintree/client_token_gateway.rb +30 -0
  6. data/lib/braintree/configuration.rb +29 -0
  7. data/lib/braintree/credit_card.rb +4 -0
  8. data/lib/braintree/credit_card_gateway.rb +9 -1
  9. data/lib/braintree/customer.rb +4 -0
  10. data/lib/braintree/gateway.rb +4 -0
  11. data/lib/braintree/http.rb +13 -1
  12. data/lib/braintree/sha256_digest.rb +13 -0
  13. data/lib/braintree/signature_service.rb +19 -0
  14. data/lib/braintree/subscription_gateway.rb +2 -0
  15. data/lib/braintree/successful_result.rb +4 -6
  16. data/lib/braintree/transaction_gateway.rb +1 -1
  17. data/lib/braintree/transparent_redirect_gateway.rb +3 -8
  18. data/lib/braintree/version.rb +1 -1
  19. data/lib/braintree/webhook_notification_gateway.rb +11 -5
  20. data/lib/braintree/webhook_testing_gateway.rb +13 -13
  21. data/spec/httpsd.pid +1 -1
  22. data/spec/integration/braintree/client_api/client_token_spec.rb +143 -0
  23. data/spec/integration/braintree/client_api/spec_helper.rb +80 -0
  24. data/spec/integration/braintree/credit_card_spec.rb +99 -0
  25. data/spec/integration/braintree/customer_spec.rb +24 -0
  26. data/spec/integration/braintree/subscription_spec.rb +40 -1
  27. data/spec/integration/braintree/transaction_search_spec.rb +2 -2
  28. data/spec/integration/braintree/transaction_spec.rb +27 -5
  29. data/spec/unit/braintree/client_token_spec.rb +37 -0
  30. data/spec/unit/braintree/configuration_spec.rb +30 -0
  31. data/spec/unit/braintree/credit_card_spec.rb +2 -0
  32. data/spec/unit/braintree/customer_spec.rb +2 -0
  33. data/spec/unit/braintree/digest_spec.rb +14 -0
  34. data/spec/unit/braintree/http_spec.rb +19 -0
  35. data/spec/unit/braintree/sha256_digest_spec.rb +11 -0
  36. data/spec/unit/braintree/signature_service_spec.rb +23 -0
  37. data/spec/unit/braintree/successful_result_spec.rb +7 -7
  38. data/spec/unit/braintree/transparent_redirect_spec.rb +8 -1
  39. data/spec/unit/braintree/webhook_notification_spec.rb +58 -4
  40. metadata +126 -121
@@ -24,6 +24,7 @@ describe Braintree::CreditCard do
24
24
  :venmo_sdk_payment_method_code,
25
25
  :device_data,
26
26
  :fraud_merchant_id,
27
+ :payment_method_nonce,
27
28
  {:options => [:make_default, :verification_merchant_account_id, :verify_card, :venmo_sdk_session, :fail_on_duplicate_payment_method]},
28
29
  {:billing_address => [
29
30
  :company,
@@ -59,6 +60,7 @@ describe Braintree::CreditCard do
59
60
  :venmo_sdk_payment_method_code,
60
61
  :device_data,
61
62
  :fraud_merchant_id,
63
+ :payment_method_nonce,
62
64
  {:options => [:make_default, :verification_merchant_account_id, :verify_card, :venmo_sdk_session]},
63
65
  {:billing_address => [
64
66
  :company,
@@ -95,6 +95,7 @@ describe Braintree::Customer do
95
95
  :venmo_sdk_payment_method_code,
96
96
  :device_data,
97
97
  :fraud_merchant_id,
98
+ :payment_method_nonce,
98
99
  {:options => [:make_default, :verification_merchant_account_id, :verify_card, :venmo_sdk_session, :fail_on_duplicate_payment_method]},
99
100
  {:billing_address => [
100
101
  :company,
@@ -141,6 +142,7 @@ describe Braintree::Customer do
141
142
  :venmo_sdk_payment_method_code,
142
143
  :device_data,
143
144
  :fraud_merchant_id,
145
+ :payment_method_nonce,
144
146
  {:options => [
145
147
  :make_default,
146
148
  :verification_merchant_account_id,
@@ -19,5 +19,19 @@ describe Braintree::Digest do
19
19
  expect { Braintree::Digest.hexdigest("key", nil) }.to_not raise_error
20
20
  end
21
21
  end
22
+
23
+ describe "self.secure_compare" do
24
+ it "returns true if two strings are equal" do
25
+ Braintree::Digest.secure_compare("A_string", "A_string").should be_true
26
+ end
27
+
28
+ it "returns false if two strings are different and the same length" do
29
+ Braintree::Digest.secure_compare("A_string", "A_strong").should be_false
30
+ end
31
+
32
+ it "returns false if one is a prefix of the other" do
33
+ Braintree::Digest.secure_compare("A_string", "A_string_that_is_longer").should be_false
34
+ end
35
+ end
22
36
  end
23
37
 
@@ -39,4 +39,23 @@ END
39
39
  Braintree::Http.new(:config)._format_and_sanitize_body_for_log(input_xml).should == expected_xml
40
40
  end
41
41
  end
42
+
43
+ describe "_build_query_string" do
44
+ it "returns an empty string for empty query params" do
45
+ Braintree::Http.new(:config)._build_query_string({}).should == ""
46
+ end
47
+
48
+ it "returns a proper query string for non-nested hashes" do
49
+ query_params = {:one => 1, :two => 2}
50
+
51
+ Braintree::Http.new(:config)._build_query_string(query_params).should =~ /^\?(one=1&two=2|two=2&one=1)$/
52
+ end
53
+
54
+ it "raises ArgumentError for nested hashes" do
55
+ query_params = {:one => 1, :two => {:a => 2.1, :b => 2.2}}
56
+ expect {
57
+ Braintree::Http.new(:config)._build_query_string(query_params)
58
+ }.to raise_error(ArgumentError, /nested hash/i)
59
+ end
60
+ end
42
61
  end
@@ -0,0 +1,11 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ describe Braintree::SHA256Digest do
4
+ describe "self.hexdigest" do
5
+ it "returns the sha256 hmac of the input string (test case 6 from RFC 2202)" do
6
+ key = "secret-key"
7
+ message = "secret-message"
8
+ Braintree::SHA256Digest.hexdigest(key, message).should == "68e7f2ecab71db67b1aca2a638f5122810315c3013f27c2196cd53e88709eecc"
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,23 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
+
3
+ class FakeDigest
4
+ def self.hexdigest(key, string)
5
+ "#{string}_signed_with_#{key}"
6
+ end
7
+ end
8
+
9
+ describe Braintree::SignatureService do
10
+ describe "sign" do
11
+ it "signs the data with its key" do
12
+ service = Braintree::SignatureService.new("my_key", FakeDigest)
13
+
14
+ service.sign(:foo => "foo bar").should == "foo=foo+bar_signed_with_my_key|foo=foo+bar"
15
+ end
16
+ end
17
+
18
+ describe "hash" do
19
+ it "hashes the string with its key" do
20
+ Braintree::SignatureService.new("my_key", FakeDigest).hash("foo").should == "foo_signed_with_my_key"
21
+ end
22
+ end
23
+ end
@@ -2,14 +2,14 @@ require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")
2
2
 
3
3
  describe Braintree::SuccessfulResult do
4
4
  describe "initialize" do
5
- it "creates attr readers the values in the hash" do
5
+ it "sets instance variables from the values in the hash" do
6
6
  result = Braintree::SuccessfulResult.new(
7
- :foo => "foo_value",
8
- :bar => "bar_value"
7
+ :transaction => "transaction_value",
8
+ :credit_card => "credit_card_value"
9
9
  )
10
10
  result.success?.should == true
11
- result.foo.should == "foo_value"
12
- result.bar.should == "bar_value"
11
+ result.transaction.should == "transaction_value"
12
+ result.credit_card.should == "credit_card_value"
13
13
  end
14
14
 
15
15
  it "can be initialized without any values" do
@@ -20,8 +20,8 @@ describe Braintree::SuccessfulResult do
20
20
 
21
21
  describe "inspect" do
22
22
  it "is pretty" do
23
- result = Braintree::SuccessfulResult.new(:foo => "foo_value")
24
- result.inspect.should == "#<Braintree::SuccessfulResult foo:\"foo_value\">"
23
+ result = Braintree::SuccessfulResult.new(:transaction => "transaction_value")
24
+ result.inspect.should == "#<Braintree::SuccessfulResult transaction:\"transaction_value\">"
25
25
  end
26
26
  end
27
27
  end
@@ -206,10 +206,17 @@ describe Braintree::TransparentRedirect do
206
206
  Braintree::TransparentRedirect.create_customer_data(:redirect_url => nil)
207
207
  end.to raise_error(ArgumentError, "expected params to contain :redirect_url")
208
208
  end
209
+
210
+ it "only encodes tr data once" do
211
+ tr_data = Braintree::TransparentRedirect.create_customer_data(:redirect_url => "example.com")
212
+
213
+ tr_data.should include("|")
214
+ tr_data.should include("&")
215
+ end
209
216
  end
210
217
 
211
218
  def add_hash_to_query_string(query_string_without_hash)
212
- hash = Braintree::Configuration.gateway.transparent_redirect._hash(query_string_without_hash)
219
+ hash = Braintree::SignatureService.new(Braintree::Configuration.private_key).hash(query_string_without_hash)
213
220
  query_string_without_hash + "&hash=" + hash
214
221
  end
215
222
  end
@@ -158,7 +158,7 @@ describe Braintree::WebhookNotification do
158
158
  end
159
159
 
160
160
  describe "parse" do
161
- it "raises InvalidSignature error the signature is completely invalid" do
161
+ it "raises InvalidSignature error when the signature is completely invalid" do
162
162
  signature, payload = Braintree::WebhookTesting.sample_notification(
163
163
  Braintree::WebhookNotification::Kind::SubscriptionWentPastDue,
164
164
  "my_id"
@@ -169,15 +169,69 @@ describe Braintree::WebhookNotification do
169
169
  end.to raise_error(Braintree::InvalidSignature)
170
170
  end
171
171
 
172
- it "raises InvalidSignature error the payload has been changed" do
172
+ it "raises InvalidSignature error with a message when the public key is not found" do
173
173
  signature, payload = Braintree::WebhookTesting.sample_notification(
174
174
  Braintree::WebhookNotification::Kind::SubscriptionWentPastDue,
175
175
  "my_id"
176
176
  )
177
177
 
178
+ config = Braintree::Configuration.new(
179
+ :merchant_id => 'merchant_id',
180
+ :public_key => 'wrong_public_key',
181
+ :private_key => 'wrong_private_key'
182
+ )
183
+ gateway = Braintree::Gateway.new(config)
184
+
178
185
  expect do
179
- notification = Braintree::WebhookNotification.parse(signature, payload + "bad stuff")
180
- end.to raise_error(Braintree::InvalidSignature)
186
+ notification = gateway.webhook_notification.parse(signature, payload)
187
+ end.to raise_error(Braintree::InvalidSignature, /no matching public key/)
188
+ end
189
+
190
+ it "raises InvalidSignature error if the payload has been changed" do
191
+ signature, payload = Braintree::WebhookTesting.sample_notification(
192
+ Braintree::WebhookNotification::Kind::SubscriptionWentPastDue,
193
+ "my_id"
194
+ )
195
+
196
+ expect do
197
+ notification = Braintree::WebhookNotification.parse(signature, "badstuff" + payload)
198
+ end.to raise_error(Braintree::InvalidSignature, /signature does not match payload - one has been modified/)
199
+ end
200
+
201
+ it "raises InvalidSignature error with a message complaining about invalid characters" do
202
+ signature, payload = Braintree::WebhookTesting.sample_notification(
203
+ Braintree::WebhookNotification::Kind::SubscriptionWentPastDue,
204
+ "my_id"
205
+ )
206
+
207
+ expect do
208
+ notification = Braintree::WebhookNotification.parse(signature, "^& bad ,* chars @!" + payload)
209
+ end.to raise_error(Braintree::InvalidSignature, /payload contains illegal characters/)
210
+ end
211
+
212
+ it "allows all valid characters" do
213
+ signature, payload = Braintree::WebhookTesting.sample_notification(
214
+ Braintree::WebhookNotification::Kind::SubscriptionWentPastDue,
215
+ "my_id"
216
+ )
217
+
218
+ payload = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+=/\n"
219
+ expect do
220
+ notification = Braintree::WebhookNotification.parse(signature, payload)
221
+ end.to_not raise_error(Braintree::InvalidSignature, /payload contains illegal characters/)
222
+ end
223
+
224
+ it "retries a payload with a newline" do
225
+ signature, payload = Braintree::WebhookTesting.sample_notification(
226
+ Braintree::WebhookNotification::Kind::SubscriptionWentPastDue,
227
+ "my_id"
228
+ )
229
+
230
+ notification = Braintree::WebhookNotification.parse(signature, payload.rstrip)
231
+
232
+ notification.kind.should == Braintree::WebhookNotification::Kind::SubscriptionWentPastDue
233
+ notification.subscription.id.should == "my_id"
234
+ notification.timestamp.should be_close(Time.now.utc, 10)
181
235
  end
182
236
  end
183
237
 
metadata CHANGED
@@ -1,30 +1,27 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: braintree
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.30.0
5
- prerelease:
4
+ version: 2.30.2
6
5
  platform: ruby
7
6
  authors:
8
7
  - Braintree
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2014-03-31 00:00:00.000000000 Z
11
+ date: 2014-05-12 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: builder
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - '>='
20
18
  - !ruby/object:Gem::Version
21
19
  version: 2.0.0
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - '>='
28
25
  - !ruby/object:Gem::Version
29
26
  version: 2.0.0
30
27
  description: Ruby library for integrating with the Braintree Gateway
@@ -33,174 +30,182 @@ executables: []
33
30
  extensions: []
34
31
  extra_rdoc_files: []
35
32
  files:
36
- - README.rdoc
37
33
  - LICENSE
34
+ - README.rdoc
35
+ - braintree.gemspec
38
36
  - lib/braintree.rb
37
+ - lib/braintree/add_on.rb
38
+ - lib/braintree/add_on_gateway.rb
39
+ - lib/braintree/address.rb
40
+ - lib/braintree/address/country_names.rb
41
+ - lib/braintree/address_gateway.rb
42
+ - lib/braintree/advanced_search.rb
43
+ - lib/braintree/base_module.rb
44
+ - lib/braintree/client_token.rb
45
+ - lib/braintree/client_token_gateway.rb
46
+ - lib/braintree/configuration.rb
47
+ - lib/braintree/credit_card.rb
48
+ - lib/braintree/credit_card_gateway.rb
49
+ - lib/braintree/credit_card_verification.rb
50
+ - lib/braintree/credit_card_verification_gateway.rb
51
+ - lib/braintree/credit_card_verification_search.rb
52
+ - lib/braintree/customer.rb
39
53
  - lib/braintree/customer_gateway.rb
54
+ - lib/braintree/customer_search.rb
55
+ - lib/braintree/descriptor.rb
40
56
  - lib/braintree/digest.rb
57
+ - lib/braintree/disbursement.rb
58
+ - lib/braintree/discount.rb
41
59
  - lib/braintree/discount_gateway.rb
42
- - lib/braintree/webhook_testing_gateway.rb
43
- - lib/braintree/customer_search.rb
44
- - lib/braintree/transaction_gateway.rb
45
- - lib/braintree/credit_card_verification.rb
46
- - lib/braintree/address.rb
47
- - lib/braintree/plan_gateway.rb
48
- - lib/braintree/customer.rb
49
- - lib/braintree/merchant_account_gateway.rb
60
+ - lib/braintree/dispute.rb
61
+ - lib/braintree/error_codes.rb
50
62
  - lib/braintree/error_result.rb
51
- - lib/braintree/base_module.rb
52
- - lib/braintree/modification.rb
53
- - lib/braintree/webhook_testing.rb
54
63
  - lib/braintree/errors.rb
55
- - lib/braintree/webhook_notification_gateway.rb
56
- - lib/braintree/validation_error.rb
57
- - lib/braintree/transaction/disbursement_details.rb
58
- - lib/braintree/transaction/customer_details.rb
59
- - lib/braintree/transaction/status_details.rb
60
- - lib/braintree/transaction/address_details.rb
61
- - lib/braintree/transaction/subscription_details.rb
62
- - lib/braintree/transaction/credit_card_details.rb
64
+ - lib/braintree/exceptions.rb
65
+ - lib/braintree/gateway.rb
66
+ - lib/braintree/http.rb
67
+ - lib/braintree/merchant_account.rb
68
+ - lib/braintree/merchant_account/address_details.rb
69
+ - lib/braintree/merchant_account/business_details.rb
70
+ - lib/braintree/merchant_account/funding_details.rb
71
+ - lib/braintree/merchant_account/individual_details.rb
72
+ - lib/braintree/merchant_account_gateway.rb
73
+ - lib/braintree/modification.rb
74
+ - lib/braintree/plan.rb
75
+ - lib/braintree/plan_gateway.rb
76
+ - lib/braintree/resource_collection.rb
77
+ - lib/braintree/settlement_batch.rb
78
+ - lib/braintree/settlement_batch_summary.rb
63
79
  - lib/braintree/settlement_batch_summary_gateway.rb
80
+ - lib/braintree/sha256_digest.rb
81
+ - lib/braintree/signature_service.rb
64
82
  - lib/braintree/subscription.rb
65
- - lib/braintree/test/transaction_amounts.rb
66
- - lib/braintree/test/merchant_account.rb
83
+ - lib/braintree/subscription_gateway.rb
84
+ - lib/braintree/subscription_search.rb
85
+ - lib/braintree/successful_result.rb
67
86
  - lib/braintree/test/credit_card.rb
87
+ - lib/braintree/test/merchant_account.rb
88
+ - lib/braintree/test/transaction_amounts.rb
68
89
  - lib/braintree/test/venmo_sdk.rb
69
- - lib/braintree/merchant_account.rb
70
- - lib/braintree/descriptor.rb
71
- - lib/braintree/settlement_batch_summary.rb
72
- - lib/braintree/configuration.rb
73
- - lib/braintree/subscription_gateway.rb
74
- - lib/braintree/credit_card_verification_gateway.rb
75
- - lib/braintree/xml/rexml.rb
76
- - lib/braintree/xml/generator.rb
77
- - lib/braintree/xml/libxml.rb
78
- - lib/braintree/xml/parser.rb
90
+ - lib/braintree/transaction.rb
91
+ - lib/braintree/transaction/address_details.rb
92
+ - lib/braintree/transaction/credit_card_details.rb
93
+ - lib/braintree/transaction/customer_details.rb
94
+ - lib/braintree/transaction/disbursement_details.rb
95
+ - lib/braintree/transaction/status_details.rb
96
+ - lib/braintree/transaction/subscription_details.rb
97
+ - lib/braintree/transaction_gateway.rb
98
+ - lib/braintree/transaction_search.rb
79
99
  - lib/braintree/transparent_redirect.rb
80
- - lib/braintree/add_on_gateway.rb
81
- - lib/braintree/settlement_batch.rb
100
+ - lib/braintree/transparent_redirect_gateway.rb
82
101
  - lib/braintree/util.rb
83
- - lib/braintree/resource_collection.rb
84
- - lib/braintree/successful_result.rb
102
+ - lib/braintree/validation_error.rb
85
103
  - lib/braintree/validation_error_collection.rb
86
- - lib/braintree/discount.rb
87
104
  - lib/braintree/version.rb
88
- - lib/braintree/credit_card.rb
89
- - lib/braintree/error_codes.rb
90
- - lib/braintree/advanced_search.rb
91
- - lib/braintree/transaction.rb
92
- - lib/braintree/dispute.rb
93
- - lib/braintree/exceptions.rb
94
- - lib/braintree/xml.rb
95
- - lib/braintree/transaction_search.rb
96
105
  - lib/braintree/webhook_notification.rb
97
- - lib/braintree/subscription_search.rb
98
- - lib/braintree/address_gateway.rb
99
- - lib/braintree/http.rb
100
- - lib/braintree/plan.rb
101
- - lib/braintree/disbursement.rb
102
- - lib/braintree/add_on.rb
103
- - lib/braintree/credit_card_verification_search.rb
104
- - lib/braintree/transparent_redirect_gateway.rb
105
- - lib/braintree/merchant_account/individual_details.rb
106
- - lib/braintree/merchant_account/funding_details.rb
107
- - lib/braintree/merchant_account/business_details.rb
108
- - lib/braintree/merchant_account/address_details.rb
109
- - lib/braintree/credit_card_gateway.rb
110
- - lib/braintree/gateway.rb
111
- - lib/braintree/address/country_names.rb
112
- - lib/ssl/securetrust_ca.crt
106
+ - lib/braintree/webhook_notification_gateway.rb
107
+ - lib/braintree/webhook_testing.rb
108
+ - lib/braintree/webhook_testing_gateway.rb
109
+ - lib/braintree/xml.rb
110
+ - lib/braintree/xml/generator.rb
111
+ - lib/braintree/xml/libxml.rb
112
+ - lib/braintree/xml/parser.rb
113
+ - lib/braintree/xml/rexml.rb
114
+ - lib/ssl/api_braintreegateway_com.ca.crt
113
115
  - lib/ssl/sandbox_braintreegateway_com.ca.crt
116
+ - lib/ssl/securetrust_ca.crt
114
117
  - lib/ssl/www_braintreegateway_com.ca.crt
115
- - lib/ssl/api_braintreegateway_com.ca.crt
116
- - spec/spec.opts
117
- - spec/integration/braintree/subscription_spec.rb
118
- - spec/integration/braintree/customer_search_spec.rb
119
- - spec/integration/braintree/disbursement_spec.rb
118
+ - spec/hacks/tcp_socket.rb
119
+ - spec/httpsd.pid
120
+ - spec/integration/braintree/add_on_spec.rb
121
+ - spec/integration/braintree/address_spec.rb
120
122
  - spec/integration/braintree/advanced_search_spec.rb
121
- - spec/integration/braintree/customer_spec.rb
122
- - spec/integration/braintree/transparent_redirect_spec.rb
123
- - spec/integration/braintree/test/transaction_amounts_spec.rb
124
- - spec/integration/braintree/error_codes_spec.rb
125
- - spec/integration/braintree/transaction_search_spec.rb
123
+ - spec/integration/braintree/client_api/client_token_spec.rb
124
+ - spec/integration/braintree/client_api/spec_helper.rb
125
+ - spec/integration/braintree/credit_card_spec.rb
126
126
  - spec/integration/braintree/credit_card_verification_search_spec.rb
127
- - spec/integration/braintree/add_on_spec.rb
128
127
  - spec/integration/braintree/credit_card_verification_spec.rb
129
- - spec/integration/braintree/plan_spec.rb
130
- - spec/integration/braintree/credit_card_spec.rb
128
+ - spec/integration/braintree/customer_search_spec.rb
129
+ - spec/integration/braintree/customer_spec.rb
130
+ - spec/integration/braintree/disbursement_spec.rb
131
131
  - spec/integration/braintree/discount_spec.rb
132
+ - spec/integration/braintree/error_codes_spec.rb
132
133
  - spec/integration/braintree/http_spec.rb
133
134
  - spec/integration/braintree/merchant_account_spec.rb
134
- - spec/integration/braintree/address_spec.rb
135
- - spec/integration/braintree/transaction_spec.rb
135
+ - spec/integration/braintree/plan_spec.rb
136
136
  - spec/integration/braintree/settlement_batch_summary_spec.rb
137
+ - spec/integration/braintree/subscription_spec.rb
138
+ - spec/integration/braintree/test/transaction_amounts_spec.rb
139
+ - spec/integration/braintree/transaction_search_spec.rb
140
+ - spec/integration/braintree/transaction_spec.rb
141
+ - spec/integration/braintree/transparent_redirect_spec.rb
137
142
  - spec/integration/spec_helper.rb
138
- - spec/ssl/privateKey.key
143
+ - spec/script/httpsd.rb
144
+ - spec/spec.opts
145
+ - spec/spec_helper.rb
139
146
  - spec/ssl/certificate.crt
140
147
  - spec/ssl/geotrust_global.crt
141
- - spec/unit/braintree/subscription_spec.rb
148
+ - spec/ssl/privateKey.key
149
+ - spec/unit/braintree/address_spec.rb
142
150
  - spec/unit/braintree/base_module_spec.rb
143
- - spec/unit/braintree/error_result_spec.rb
144
- - spec/unit/braintree/validation_error_collection_spec.rb
145
- - spec/unit/braintree/disbursement_spec.rb
146
- - spec/unit/braintree/digest_spec.rb
147
- - spec/unit/braintree/validation_error_spec.rb
148
- - spec/unit/braintree/resource_collection_spec.rb
149
- - spec/unit/braintree/customer_spec.rb
150
- - spec/unit/braintree/transaction/deposit_details_spec.rb
151
- - spec/unit/braintree/transaction/customer_details_spec.rb
152
- - spec/unit/braintree/transaction/credit_card_details_spec.rb
153
- - spec/unit/braintree/modification_spec.rb
154
- - spec/unit/braintree/transparent_redirect_spec.rb
155
- - spec/unit/braintree/transaction_search_spec.rb
151
+ - spec/unit/braintree/client_token_spec.rb
152
+ - spec/unit/braintree/configuration_spec.rb
153
+ - spec/unit/braintree/credit_card_spec.rb
156
154
  - spec/unit/braintree/credit_card_verification_search_spec.rb
157
- - spec/unit/braintree/xml/parser_spec.rb
158
- - spec/unit/braintree/xml/rexml_spec.rb
159
- - spec/unit/braintree/xml/libxml_spec.rb
160
- - spec/unit/braintree/dispute_spec.rb
161
155
  - spec/unit/braintree/credit_card_verification_spec.rb
162
- - spec/unit/braintree/util_spec.rb
163
- - spec/unit/braintree/webhook_notification_spec.rb
156
+ - spec/unit/braintree/customer_spec.rb
157
+ - spec/unit/braintree/digest_spec.rb
158
+ - spec/unit/braintree/disbursement_spec.rb
159
+ - spec/unit/braintree/dispute_spec.rb
160
+ - spec/unit/braintree/error_result_spec.rb
164
161
  - spec/unit/braintree/errors_spec.rb
165
- - spec/unit/braintree/configuration_spec.rb
166
- - spec/unit/braintree/credit_card_spec.rb
167
- - spec/unit/braintree/xml_spec.rb
168
162
  - spec/unit/braintree/http_spec.rb
169
163
  - spec/unit/braintree/merchant_account_spec.rb
164
+ - spec/unit/braintree/modification_spec.rb
165
+ - spec/unit/braintree/resource_collection_spec.rb
166
+ - spec/unit/braintree/sha256_digest_spec.rb
167
+ - spec/unit/braintree/signature_service_spec.rb
170
168
  - spec/unit/braintree/subscription_search_spec.rb
171
- - spec/unit/braintree/address_spec.rb
172
- - spec/unit/braintree/transaction_spec.rb
169
+ - spec/unit/braintree/subscription_spec.rb
173
170
  - spec/unit/braintree/successful_result_spec.rb
174
- - spec/unit/spec_helper.rb
171
+ - spec/unit/braintree/transaction/credit_card_details_spec.rb
172
+ - spec/unit/braintree/transaction/customer_details_spec.rb
173
+ - spec/unit/braintree/transaction/deposit_details_spec.rb
174
+ - spec/unit/braintree/transaction_search_spec.rb
175
+ - spec/unit/braintree/transaction_spec.rb
176
+ - spec/unit/braintree/transparent_redirect_spec.rb
177
+ - spec/unit/braintree/util_spec.rb
178
+ - spec/unit/braintree/validation_error_collection_spec.rb
179
+ - spec/unit/braintree/validation_error_spec.rb
180
+ - spec/unit/braintree/webhook_notification_spec.rb
181
+ - spec/unit/braintree/xml/libxml_spec.rb
182
+ - spec/unit/braintree/xml/parser_spec.rb
183
+ - spec/unit/braintree/xml/rexml_spec.rb
184
+ - spec/unit/braintree/xml_spec.rb
175
185
  - spec/unit/braintree_spec.rb
176
- - spec/hacks/tcp_socket.rb
177
- - spec/spec_helper.rb
178
- - spec/httpsd.pid
179
- - spec/script/httpsd.rb
180
- - braintree.gemspec
186
+ - spec/unit/spec_helper.rb
181
187
  homepage: http://www.braintreepayments.com/
182
188
  licenses:
183
189
  - MIT
190
+ metadata: {}
184
191
  post_install_message:
185
192
  rdoc_options: []
186
193
  require_paths:
187
194
  - lib
188
195
  required_ruby_version: !ruby/object:Gem::Requirement
189
- none: false
190
196
  requirements:
191
- - - ! '>='
197
+ - - '>='
192
198
  - !ruby/object:Gem::Version
193
199
  version: '0'
194
200
  required_rubygems_version: !ruby/object:Gem::Requirement
195
- none: false
196
201
  requirements:
197
- - - ! '>='
202
+ - - '>='
198
203
  - !ruby/object:Gem::Version
199
204
  version: '0'
200
205
  requirements: []
201
206
  rubyforge_project: braintree
202
- rubygems_version: 1.8.24
207
+ rubygems_version: 2.2.1
203
208
  signing_key:
204
- specification_version: 3
209
+ specification_version: 4
205
210
  summary: Braintree Gateway Ruby Client Library
206
211
  test_files: []