braintree 2.101.0 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/braintree.gemspec +6 -3
  4. data/lib/braintree.rb +3 -17
  5. data/lib/braintree/address.rb +0 -22
  6. data/lib/braintree/address_gateway.rb +2 -2
  7. data/lib/braintree/base_module.rb +6 -0
  8. data/lib/braintree/configuration.rb +1 -1
  9. data/lib/braintree/credit_card.rb +5 -76
  10. data/lib/braintree/credit_card_gateway.rb +16 -32
  11. data/lib/braintree/credit_card_verification.rb +14 -0
  12. data/lib/braintree/customer.rb +3 -72
  13. data/lib/braintree/customer_gateway.rb +0 -23
  14. data/lib/braintree/dispute.rb +1 -7
  15. data/lib/braintree/dispute/{history_event.rb → status_history.rb} +3 -1
  16. data/lib/braintree/dispute/transaction.rb +2 -0
  17. data/lib/braintree/dispute_gateway.rb +2 -7
  18. data/lib/braintree/error_codes.rb +162 -157
  19. data/lib/braintree/exceptions.rb +5 -3
  20. data/lib/braintree/gateway.rb +0 -14
  21. data/lib/braintree/{android_pay_card.rb → google_pay_card.rb} +1 -1
  22. data/lib/braintree/local_payment_completed.rb +1 -1
  23. data/lib/braintree/merchant_account_gateway.rb +2 -0
  24. data/lib/braintree/payment_instrument_type.rb +1 -4
  25. data/lib/braintree/payment_method_gateway.rb +16 -8
  26. data/lib/braintree/payment_method_nonce.rb +2 -0
  27. data/lib/braintree/payment_method_nonce_gateway.rb +13 -2
  28. data/lib/braintree/payment_method_parser.rb +1 -7
  29. data/lib/braintree/risk_data.rb +4 -1
  30. data/lib/braintree/subscription.rb +5 -5
  31. data/lib/braintree/successful_result.rb +0 -1
  32. data/lib/braintree/test/authentication_id.rb +21 -0
  33. data/lib/braintree/test/credit_card.rb +1 -0
  34. data/lib/braintree/test/nonce.rb +19 -20
  35. data/lib/braintree/transaction.rb +8 -72
  36. data/lib/braintree/transaction/address_details.rb +11 -0
  37. data/lib/braintree/transaction/disbursement_details.rb +1 -0
  38. data/lib/braintree/transaction/{android_pay_details.rb → google_pay_details.rb} +1 -1
  39. data/lib/braintree/transaction/paypal_details.rb +2 -0
  40. data/lib/braintree/transaction/subscription_details.rb +2 -0
  41. data/lib/braintree/transaction_gateway.rb +14 -21
  42. data/lib/braintree/transaction_search.rb +0 -1
  43. data/lib/braintree/util.rb +17 -2
  44. data/lib/braintree/version.rb +3 -3
  45. data/lib/braintree/webhook_notification.rb +3 -10
  46. data/lib/braintree/webhook_testing_gateway.rb +243 -43
  47. data/lib/braintree/xml/libxml.rb +1 -0
  48. data/lib/braintree/xml/parser.rb +11 -34
  49. data/spec/integration/braintree/address_spec.rb +2 -89
  50. data/spec/integration/braintree/client_api/spec_helper.rb +100 -67
  51. data/spec/integration/braintree/credit_card_spec.rb +119 -467
  52. data/spec/integration/braintree/credit_card_verification_spec.rb +1 -0
  53. data/spec/integration/braintree/customer_spec.rb +135 -362
  54. data/spec/integration/braintree/dispute_search_spec.rb +2 -2
  55. data/spec/integration/braintree/dispute_spec.rb +1 -2
  56. data/spec/integration/braintree/document_upload_spec.rb +12 -0
  57. data/spec/integration/braintree/merchant_spec.rb +2 -2
  58. data/spec/integration/braintree/payment_method_nonce_spec.rb +77 -0
  59. data/spec/integration/braintree/payment_method_spec.rb +186 -120
  60. data/spec/integration/braintree/paypal_account_spec.rb +1 -1
  61. data/spec/integration/braintree/subscription_spec.rb +11 -16
  62. data/spec/integration/braintree/transaction_search_spec.rb +3 -3
  63. data/spec/integration/braintree/transaction_spec.rb +252 -524
  64. data/spec/integration/spec_helper.rb +1 -4
  65. data/spec/spec_helper.rb +1 -11
  66. data/spec/unit/braintree/address_spec.rb +0 -8
  67. data/spec/unit/braintree/credit_card_spec.rb +50 -23
  68. data/spec/unit/braintree/credit_card_verification_spec.rb +7 -0
  69. data/spec/unit/braintree/customer_spec.rb +26 -14
  70. data/spec/unit/braintree/dispute_spec.rb +4 -12
  71. data/spec/unit/braintree/http_spec.rb +3 -3
  72. data/spec/unit/braintree/local_payment_completed_spec.rb +14 -0
  73. data/spec/unit/braintree/transaction/paypal_details_spec.rb +57 -0
  74. data/spec/unit/braintree/transaction_spec.rb +17 -37
  75. data/spec/unit/braintree/util_spec.rb +37 -3
  76. data/spec/unit/braintree/webhook_notification_spec.rb +49 -1
  77. data/spec/unit/braintree/xml/parser_spec.rb +21 -16
  78. metadata +29 -31
  79. data/lib/braintree/amex_express_checkout_card.rb +0 -38
  80. data/lib/braintree/coinbase_account.rb +0 -34
  81. data/lib/braintree/europe_bank_account.rb +0 -36
  82. data/lib/braintree/europe_bank_account_gateway.rb +0 -17
  83. data/lib/braintree/ideal_payment.rb +0 -61
  84. data/lib/braintree/ideal_payment_gateway.rb +0 -19
  85. data/lib/braintree/masterpass_card.rb +0 -81
  86. data/lib/braintree/transaction/amex_express_checkout_details.rb +0 -21
  87. data/lib/braintree/transaction/coinbase_details.rb +0 -16
  88. data/lib/braintree/transaction/ideal_payment_details.rb +0 -19
  89. data/lib/braintree/transaction/masterpass_card_details.rb +0 -47
  90. data/lib/braintree/transparent_redirect.rb +0 -40
  91. data/lib/braintree/transparent_redirect_gateway.rb +0 -105
  92. data/lib/braintree/xml/rexml.rb +0 -71
  93. data/spec/hacks/tcp_socket.rb +0 -18
  94. data/spec/integration/braintree/coinbase_spec.rb +0 -34
  95. data/spec/integration/braintree/masterpass_card_spec.rb +0 -97
  96. data/spec/integration/braintree/transparent_redirect_spec.rb +0 -268
  97. data/spec/unit/braintree/transparent_redirect_spec.rb +0 -223
  98. data/spec/unit/braintree/xml/rexml_spec.rb +0 -51
@@ -5,7 +5,6 @@ unless defined?(INTEGRATION_SPEC_HELPER_LOADED)
5
5
  SSL_TEST_PORT = ENV['SSL_TEST_PORT'] || 8444
6
6
 
7
7
  require File.dirname(__FILE__) + "/../spec_helper"
8
- require File.dirname(__FILE__) + "/../hacks/tcp_socket"
9
8
 
10
9
  def start_ssl_server
11
10
  web_server_pid_file = File.expand_path(File.join(File.dirname(__FILE__), "..", "httpsd.pid"))
@@ -13,9 +12,7 @@ unless defined?(INTEGRATION_SPEC_HELPER_LOADED)
13
12
  FileUtils.rm(web_server_pid_file) if File.exist?(web_server_pid_file)
14
13
  command = File.expand_path(File.join(File.dirname(__FILE__), "..", "script", "httpsd.rb"))
15
14
  `#{command} #{web_server_pid_file}`
16
- TCPSocket.wait_for_service :host => "127.0.0.1", :port => SSL_TEST_PORT
17
-
18
- yield
15
+ TCPSocket.new("127.0.0.1",SSL_TEST_PORT)
19
16
 
20
17
  10.times { unless File.exists?(web_server_pid_file); sleep 1; end }
21
18
  ensure
@@ -4,7 +4,6 @@ unless defined?(SPEC_HELPER_LOADED)
4
4
  require "rubygems"
5
5
  require "bundler/setup"
6
6
  require "rspec"
7
- require "libxml"
8
7
  require "pry"
9
8
 
10
9
  braintree_lib = "#{project_root}/lib"
@@ -28,10 +27,6 @@ unless defined?(SPEC_HELPER_LOADED)
28
27
  end
29
28
  end
30
29
 
31
- def now_in_eastern
32
- (Time.now.utc - 5*60*60).strftime("%Y-%m-%d")
33
- end
34
-
35
30
  module SpecHelper
36
31
 
37
32
  DefaultMerchantAccountId = "sandbox_credit_card"
@@ -188,16 +183,11 @@ unless defined?(SPEC_HELPER_LOADED)
188
183
  end
189
184
 
190
185
  def matches?(xml_string)
191
- @libxml_parse = Braintree::Xml::Parser.hash_from_xml(xml_string, Braintree::Xml::Libxml)
192
- @rexml_parse = Braintree::Xml::Parser.hash_from_xml(xml_string, Braintree::Xml::Rexml)
186
+ @libxml_parse = Braintree::Xml::Parser.hash_from_xml(xml_string)
193
187
  if @libxml_parse != @expected_hash
194
188
  @results = @libxml_parse
195
189
  @failed_parser = "libxml"
196
190
  false
197
- elsif @rexml_parse != @expected_hash
198
- @results = @rexml_parse
199
- @failed_parser = "rexml"
200
- false
201
191
  else
202
192
  true
203
193
  end
@@ -94,12 +94,4 @@ describe Braintree::Address do
94
94
  end.to raise_error(NoMethodError, /protected method .new/)
95
95
  end
96
96
  end
97
-
98
- describe "update" do
99
- it "raises an exception if hash includes an invalid key" do
100
- expect do
101
- Braintree::Address._new(Braintree::Configuration.gateway, {}).update(:street_address => "456 E Main", :invalid_key2 => "foo")
102
- end.to raise_error(ArgumentError, "invalid keys: invalid_key2")
103
- end
104
- end
105
97
  end
@@ -15,7 +15,6 @@ describe Braintree::CreditCard do
15
15
  :billing_address_id,
16
16
  :cardholder_name,
17
17
  :cvv,
18
- :device_session_id,
19
18
  :expiration_date,
20
19
  :expiration_month,
21
20
  :expiration_year,
@@ -23,7 +22,6 @@ describe Braintree::CreditCard do
23
22
  :token,
24
23
  :venmo_sdk_payment_method_code,
25
24
  :device_data,
26
- :fraud_merchant_id,
27
25
  :payment_method_nonce,
28
26
  {:external_vault=>[:network_transaction_id]},
29
27
  {:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method, :verification_account_type]},
@@ -37,11 +35,22 @@ describe Braintree::CreditCard do
37
35
  :first_name,
38
36
  :last_name,
39
37
  :locality,
38
+ :phone_number,
40
39
  :postal_code,
41
40
  :region,
42
41
  :street_address
43
42
  ]},
44
- :customer_id
43
+ {:three_d_secure_pass_thru => [
44
+ :eci_flag,
45
+ :cavv,
46
+ :xid,
47
+ :three_d_secure_version,
48
+ :authentication_response,
49
+ :directory_response,
50
+ :cavv_algorithm,
51
+ :ds_transaction_id,
52
+ ]},
53
+ :customer_id,
45
54
  ]
46
55
  end
47
56
  end
@@ -52,7 +61,6 @@ describe Braintree::CreditCard do
52
61
  :billing_address_id,
53
62
  :cardholder_name,
54
63
  :cvv,
55
- :device_session_id,
56
64
  :expiration_date,
57
65
  :expiration_month,
58
66
  :expiration_year,
@@ -60,7 +68,6 @@ describe Braintree::CreditCard do
60
68
  :token,
61
69
  :venmo_sdk_payment_method_code,
62
70
  :device_data,
63
- :fraud_merchant_id,
64
71
  :payment_method_nonce,
65
72
  {:external_vault=>[:network_transaction_id]},
66
73
  {:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method, :verification_account_type]},
@@ -74,30 +81,26 @@ describe Braintree::CreditCard do
74
81
  :first_name,
75
82
  :last_name,
76
83
  :locality,
84
+ :phone_number,
77
85
  :postal_code,
78
86
  :region,
79
87
  :street_address,
80
88
  {:options => [:update_existing]}
81
- ]}
89
+ ]},
90
+ {:three_d_secure_pass_thru => [
91
+ :eci_flag,
92
+ :cavv,
93
+ :xid,
94
+ :three_d_secure_version,
95
+ :authentication_response,
96
+ :directory_response,
97
+ :cavv_algorithm,
98
+ :ds_transaction_id,
99
+ ]},
82
100
  ]
83
101
  end
84
102
  end
85
103
 
86
- describe "self.create_from_transparent_redirect" do
87
- it "raises an exception if the query string is forged" do
88
- expect do
89
- Braintree::CreditCard.create_from_transparent_redirect("http_status=200&forged=query_string")
90
- end.to raise_error(Braintree::ForgedQueryString)
91
- end
92
- end
93
-
94
- describe "self.create_credit_card_url" do
95
- it "returns the url" do
96
- config = Braintree::Configuration.instantiate
97
- Braintree::CreditCard.create_credit_card_url.should == "http#{config.ssl? ? 's' : ''}://#{config.server}:#{config.port}/merchants/integration_merchant_id/payment_methods/all/create_via_transparent_redirect_request"
98
- end
99
- end
100
-
101
104
  describe "==" do
102
105
  it "returns true if given a credit card with the same token" do
103
106
  first = Braintree::CreditCard._new(:gateway, :token => 123)
@@ -176,7 +179,8 @@ describe Braintree::CreditCard do
176
179
  :expiration_year => "2020",
177
180
  :last_4 => "1111",
178
181
  :token => "tok1",
179
- :updated_at => Time.now
182
+ :updated_at => Time.now,
183
+ :is_network_tokenized => false,
180
184
  )
181
185
  output = credit_card.inspect
182
186
  output.should include(%q(bin: "411111"))
@@ -190,6 +194,7 @@ describe Braintree::CreditCard do
190
194
  output.should include(%q(token: "tok1"))
191
195
  output.should include(%Q(updated_at: #{credit_card.updated_at.inspect}))
192
196
  output.should include(%Q(created_at: #{credit_card.created_at.inspect}))
197
+ output.should include(%q(is_network_tokenized?: false))
193
198
  end
194
199
  end
195
200
 
@@ -204,10 +209,32 @@ describe Braintree::CreditCard do
204
209
  end
205
210
  end
206
211
 
212
+ describe "is_network_tokenized?" do
213
+ it "returns true" do
214
+ credit_card = Braintree::CreditCard._new(
215
+ :gateway,
216
+ :bin => "510510",
217
+ :last_4 => "5100",
218
+ :is_network_tokenized => true
219
+ )
220
+ credit_card.is_network_tokenized?.should == true
221
+ end
222
+
223
+ it "returns false" do
224
+ credit_card = Braintree::CreditCard._new(
225
+ :gateway,
226
+ :bin => "510510",
227
+ :last_4 => "5100",
228
+ :is_network_tokenized => false
229
+ )
230
+ credit_card.is_network_tokenized?.should == false
231
+ end
232
+ end
233
+
207
234
  describe "self.update" do
208
235
  it "raises an exception if attributes contain an invalid key" do
209
236
  expect do
210
- Braintree::CreditCard._new(Braintree::Configuration.gateway, {}).update(:invalid_key => 'val')
237
+ Braintree::CreditCard.update(:gateway, :invalid_key => 'val')
211
238
  end.to raise_error(ArgumentError, "invalid keys: invalid_key")
212
239
  end
213
240
  end
@@ -42,6 +42,13 @@ describe Braintree::CreditCardVerification do
42
42
  Braintree::CreditCardVerification._new(:amount => BigDecimal("12.34")).amount.should == BigDecimal("12.34")
43
43
  end
44
44
 
45
+ it "accepts network_transaction_id" do
46
+ verification = Braintree::CreditCardVerification._new(
47
+ :network_transaction_id => "123456789012345"
48
+ )
49
+ expect(verification.network_transaction_id).to eq "123456789012345"
50
+ end
51
+
45
52
  describe "self.create" do
46
53
  it "rejects invalid parameters" do
47
54
  expect do
@@ -91,7 +91,6 @@ describe Braintree::Customer do
91
91
  :billing_address_id,
92
92
  :cardholder_name,
93
93
  :cvv,
94
- :device_session_id,
95
94
  :expiration_date,
96
95
  :expiration_month,
97
96
  :expiration_year,
@@ -99,7 +98,6 @@ describe Braintree::Customer do
99
98
  :token,
100
99
  :venmo_sdk_payment_method_code,
101
100
  :device_data,
102
- :fraud_merchant_id,
103
101
  :payment_method_nonce,
104
102
  {:external_vault=>[:network_transaction_id]},
105
103
  {:options => [:make_default, :verification_merchant_account_id, :verify_card, :verification_amount, :venmo_sdk_session, :fail_on_duplicate_payment_method, :verification_account_type]},
@@ -113,10 +111,21 @@ describe Braintree::Customer do
113
111
  :first_name,
114
112
  :last_name,
115
113
  :locality,
114
+ :phone_number,
116
115
  :postal_code,
117
116
  :region,
118
117
  :street_address
119
- ]}
118
+ ]},
119
+ {:three_d_secure_pass_thru => [
120
+ :eci_flag,
121
+ :cavv,
122
+ :xid,
123
+ :three_d_secure_version,
124
+ :authentication_response,
125
+ :directory_response,
126
+ :cavv_algorithm,
127
+ :ds_transaction_id,
128
+ ]},
120
129
  ]},
121
130
  {:paypal_account => [
122
131
  :email,
@@ -141,6 +150,7 @@ describe Braintree::Customer do
141
150
  :first_name,
142
151
  :last_name,
143
152
  :locality,
153
+ :phone_number,
144
154
  :postal_code,
145
155
  :region,
146
156
  :street_address,
@@ -170,7 +180,6 @@ describe Braintree::Customer do
170
180
  :billing_address_id,
171
181
  :cardholder_name,
172
182
  :cvv,
173
- :device_session_id,
174
183
  :expiration_date,
175
184
  :expiration_month,
176
185
  :expiration_year,
@@ -178,7 +187,6 @@ describe Braintree::Customer do
178
187
  :token,
179
188
  :venmo_sdk_payment_method_code,
180
189
  :device_data,
181
- :fraud_merchant_id,
182
190
  :payment_method_nonce,
183
191
  {:external_vault=>[:network_transaction_id]},
184
192
  {:options => [
@@ -201,11 +209,22 @@ describe Braintree::Customer do
201
209
  :first_name,
202
210
  :last_name,
203
211
  :locality,
212
+ :phone_number,
204
213
  :postal_code,
205
214
  :region,
206
215
  :street_address,
207
216
  {:options => [:update_existing]}
208
- ]}
217
+ ]},
218
+ {:three_d_secure_pass_thru => [
219
+ :eci_flag,
220
+ :cavv,
221
+ :xid,
222
+ :three_d_secure_version,
223
+ :authentication_response,
224
+ :directory_response,
225
+ :cavv_algorithm,
226
+ :ds_transaction_id,
227
+ ]},
209
228
  ]},
210
229
  {:options =>
211
230
  [:paypal => [
@@ -224,6 +243,7 @@ describe Braintree::Customer do
224
243
  :first_name,
225
244
  :last_name,
226
245
  :locality,
246
+ :phone_number,
227
247
  :postal_code,
228
248
  :region,
229
249
  :street_address,
@@ -235,14 +255,6 @@ describe Braintree::Customer do
235
255
  end
236
256
  end
237
257
 
238
- describe "self.create_from_transparent_redirect" do
239
- it "raises an exception if the query string is forged" do
240
- expect do
241
- Braintree::Customer.create_from_transparent_redirect("http_status=200&forged=query_string")
242
- end.to raise_error(Braintree::ForgedQueryString)
243
- end
244
- end
245
-
246
258
  describe "==" do
247
259
  it "returns true when given a customer with the same id" do
248
260
  first = Braintree::Customer._new(:gateway, :id => 123)
@@ -42,6 +42,7 @@ describe Braintree::Dispute do
42
42
  :amount => "31.00",
43
43
  :id => "open_disputed_transaction",
44
44
  :created_at => Time.utc(2009, 2, 9, 12, 59, 59),
45
+ :installment_count => nil,
45
46
  :order_id => nil,
46
47
  :purchase_order_number => "po",
47
48
  :payment_instrument_subtype => "Visa",
@@ -197,13 +198,6 @@ describe Braintree::Dispute do
197
198
 
198
199
  describe "with optional params" do
199
200
  it "does not raise an exception if the optional parameters are valid" do
200
- Braintree::Http.stub(:new).and_return double.as_null_object
201
- expect do
202
- Braintree::Dispute.add_text_evidence("dispute_id", { content: "a", tag: "", sequence_number: 3 })
203
- end.to_not raise_error
204
- end
205
-
206
- it "does not raise an exception if the category parameter is provided" do
207
201
  Braintree::Http.stub(:new).and_return double.as_null_object
208
202
  expect do
209
203
  Braintree::Dispute.add_text_evidence("dispute_id", { content: "a", category: "", sequence_number: 3 })
@@ -319,12 +313,14 @@ describe Braintree::Dispute do
319
313
 
320
314
  dispute.transaction.amount.should == 31.00
321
315
  dispute.transaction.id.should == "open_disputed_transaction"
316
+ dispute.transaction.created_at.should == Time.utc(2009, 2, 9, 12, 59, 59)
317
+ dispute.transaction.installment_count.should == nil
322
318
  dispute.transaction.order_id.should == nil
323
319
  dispute.transaction.purchase_order_number.should == "po"
324
320
  dispute.transaction.payment_instrument_subtype.should == "Visa"
325
321
  end
326
322
 
327
- it "converts status_history hash into an array of Dispute::HistoryEvent objects" do
323
+ it "converts status_history hash into an array of Dispute::StatusHistory objects" do
328
324
  dispute = Braintree::Dispute._new(attributes)
329
325
 
330
326
  dispute.status_history.length.should == 1
@@ -395,10 +391,6 @@ describe Braintree::Dispute do
395
391
  describe "comments" do
396
392
  let(:dispute) { Braintree::Dispute._new(attributes) }
397
393
 
398
- it "#forwarded_comments returns `processor_comments`" do
399
- expect(dispute.forwarded_comments).to eq(dispute.processor_comments)
400
- end
401
-
402
394
  it "#processor_comments" do
403
395
  expect(dispute.processor_comments).to eq(attributes[:processor_comments])
404
396
  end
@@ -130,7 +130,7 @@ END
130
130
  expect(default_headers["Accept-Encoding"]).to eq("gzip")
131
131
  expect(default_headers["Content-Type"]).to eq("application/xml")
132
132
  expect(default_headers["User-Agent"]).to match(/Braintree Ruby Gem .*/)
133
- expect(default_headers["X-ApiVersion"]).to eq("5")
133
+ expect(default_headers["X-ApiVersion"]).to eq("6")
134
134
  end
135
135
 
136
136
  it "overwrites defaults with override headers" do
@@ -144,7 +144,7 @@ END
144
144
  expect(headers["Authorization"]).to eq("token")
145
145
  expect(headers["Content-Type"]).to eq("application/xml")
146
146
  expect(headers["User-Agent"]).to match(/Braintree Ruby Gem .*/)
147
- expect(headers["X-ApiVersion"]).to eq("5")
147
+ expect(headers["X-ApiVersion"]).to eq("6")
148
148
  end
149
149
 
150
150
  it "extends default headers when new headers are specified" do
@@ -156,7 +156,7 @@ END
156
156
  expect(headers["Accept-Encoding"]).to eq("gzip")
157
157
  expect(headers["Content-Type"]).to eq("application/xml")
158
158
  expect(headers["User-Agent"]).to match(/Braintree Ruby Gem .*/)
159
- expect(headers["X-ApiVersion"]).to eq("5")
159
+ expect(headers["X-ApiVersion"]).to eq("6")
160
160
  expect(headers["New-Header"]).to eq("New Value")
161
161
  end
162
162
  end
@@ -32,5 +32,19 @@ describe Braintree::LocalPaymentCompleted do
32
32
  local_payment_completed.transaction.order_id.should eq("an-order-id")
33
33
  local_payment_completed.transaction.status.should eq(Braintree::Transaction::Status::Authorized)
34
34
  end
35
+
36
+ it "initializes the object with the appropriate attributes set if no transaction is provided" do
37
+ params = {
38
+ payment_id: "a-payment-id",
39
+ payer_id: "a-payer-id",
40
+ payment_method_nonce: "a-nonce",
41
+ }
42
+ local_payment_completed = Braintree::LocalPaymentCompleted._new(params)
43
+
44
+ local_payment_completed.payment_id.should eq("a-payment-id")
45
+ local_payment_completed.payer_id.should eq("a-payer-id")
46
+ local_payment_completed.payment_method_nonce.should eq("a-nonce")
47
+ local_payment_completed.transaction.should be_nil
48
+ end
35
49
  end
36
50
  end
@@ -0,0 +1,57 @@
1
+ require File.expand_path(File.dirname(__FILE__) + "/../../spec_helper")
2
+
3
+ describe Braintree::Transaction::PayPalDetails do
4
+ describe "initialize" do
5
+ it "sets all fields" do
6
+ details = Braintree::Transaction::PayPalDetails.new(
7
+ :authorization_id => "id",
8
+ :capture_id => "capture-id",
9
+ :custom_field => "custom-field",
10
+ :debug_id => "debug-id",
11
+ :description => "description",
12
+ :image_url => "www.image.com",
13
+ :implicitly_vaulted_payment_method_global_id => "global-id",
14
+ :implicitly_vaulted_payment_method_token => "payment-method-token",
15
+ :payee_email => "payee@example.com",
16
+ :payee_id => "payee-id",
17
+ :payer_email => "payer@example.com",
18
+ :payer_first_name => "Grace",
19
+ :payer_id => "payer-id",
20
+ :payer_last_name => "Hopper",
21
+ :payer_status =>"status",
22
+ :payment_id => "payment-id",
23
+ :refund_from_transaction_fee_amount => "1.00",
24
+ :refund_from_transaction_fee_currency_iso_code => "123",
25
+ :refund_id => "refund-id",
26
+ :seller_protection_status => "seller-protection-status",
27
+ :token => "token",
28
+ :transaction_fee_amount => "2.00",
29
+ :transaction_fee_currency_iso_code => "123"
30
+ )
31
+
32
+ expect(details.authorization_id).to eq("id")
33
+ expect(details.capture_id).to eq("capture-id")
34
+ expect(details.custom_field).to eq("custom-field")
35
+ expect(details.debug_id).to eq("debug-id")
36
+ expect(details.description).to eq("description")
37
+ expect(details.image_url).to eq("www.image.com")
38
+ expect(details.implicitly_vaulted_payment_method_global_id).to eq("global-id")
39
+ expect(details.implicitly_vaulted_payment_method_token).to eq("payment-method-token")
40
+ expect(details.payee_email).to eq("payee@example.com")
41
+ expect(details.payee_id).to eq("payee-id")
42
+ expect(details.payer_email).to eq("payer@example.com")
43
+ expect(details.payer_first_name).to eq("Grace")
44
+ expect(details.payer_id).to eq("payer-id")
45
+ expect(details.payer_last_name).to eq("Hopper")
46
+ expect(details.payer_status).to eq("status")
47
+ expect(details.payment_id).to eq("payment-id")
48
+ expect(details.refund_from_transaction_fee_amount).to eq("1.00")
49
+ expect(details.refund_from_transaction_fee_currency_iso_code).to eq("123")
50
+ expect(details.refund_id).to eq("refund-id")
51
+ expect(details.seller_protection_status).to eq("seller-protection-status")
52
+ expect(details.token).to eq("token")
53
+ expect(details.transaction_fee_amount).to eq("2.00")
54
+ expect(details.transaction_fee_currency_iso_code).to eq("123")
55
+ end
56
+ end
57
+ end