killbill-paypal-express 5.0.0 → 5.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,79 @@
1
+ require 'spec_helper'
2
+ require 'nokogiri'
3
+
4
+ describe Killbill::PaypalExpress::PaypalExpressResponse do
5
+
6
+ def load_paypal_response(action, suffix)
7
+ @spec_root ||= File.expand_path(File.join(File.dirname(__FILE__), ".."))
8
+ xml = IO.read(File.join(@spec_root, "fixtures", action + "-" + suffix + ".xml"))
9
+ ActiveMerchant::Billing::PaypalGateway.any_instance.stub(:build_request).and_return(nil)
10
+ ActiveMerchant::Billing::PaypalGateway.any_instance.stub(:ssl_post).and_return(xml)
11
+ api = ActiveMerchant::Billing::PaypalGateway.new(:login => "dummy", :password => "password", :signature => "dummy")
12
+ api.send(:commit, action, nil)
13
+ end
14
+
15
+ it 'should read a successful GetExpressCheckoutDetails response correctly' do
16
+ action = "GetExpressCheckoutDetails"
17
+ response = ::Killbill::PaypalExpress::PaypalExpressResponse.from_response(
18
+ action, # api_call
19
+ "account1", # kb_account_id
20
+ "payment1", # kb_payment_id
21
+ nil, # kb_payment_transaction_id
22
+ nil, # transaction_type
23
+ "account2", # payment_processor_account_id
24
+ "tenant1", # kb_tenant_id
25
+ load_paypal_response(action, "success")
26
+ )
27
+ expect(response.api_call).to eq(action)
28
+ expect(response.kb_account_id).to eq("account1")
29
+ expect(response.kb_payment_id).to eq("payment1")
30
+ expect(response.kb_payment_transaction_id).to be_nil
31
+ expect(response.transaction_type).to be_nil
32
+ expect(response.payment_processor_account_id).to eq("account2")
33
+ expect(response.kb_tenant_id).to eq("tenant1")
34
+ # data from the fixture as parsed by PaypalCommonAPI and PaypalExpressResponse
35
+ expect(response.message).to eq("Success")
36
+ expect(response.authorization).to be_nil
37
+ expect(response.fraud_review).to eq(false)
38
+ expect(response.success).to eq(true)
39
+
40
+ expect(response.token).to eq("EC-MY_TOKEN")
41
+ expect(response.payer_id).to eq("MY_PAYER_ID")
42
+ expect(response.payment_info_reasoncode).to be_nil
43
+
44
+ expect(response.gateway_error_code).to be_nil
45
+ end
46
+
47
+ it 'should read a DoExpressCheckoutPayment response with an error code correctly' do
48
+ action = "DoExpressCheckoutPayment"
49
+ response = ::Killbill::PaypalExpress::PaypalExpressResponse.from_response(
50
+ action, # api_call
51
+ "account1", # kb_account_id
52
+ "payment1", # kb_payment_id
53
+ "transaction1", # kb_payment_transaction_id
54
+ :purchase, # transaction_type
55
+ "account2", # payment_processor_account_id
56
+ "tenant1", # kb_tenant_id
57
+ load_paypal_response(action, "duplicate")
58
+ )
59
+ expect(response.api_call).to eq(action)
60
+ expect(response.kb_account_id).to eq("account1")
61
+ expect(response.kb_payment_id).to eq("payment1")
62
+ expect(response.kb_payment_transaction_id).to eq("transaction1")
63
+ expect(response.transaction_type).to eq(:purchase)
64
+ expect(response.payment_processor_account_id).to eq("account2")
65
+ expect(response.kb_tenant_id).to eq("tenant1")
66
+ # data from the fixture as parsed by PaypalCommonAPI and PaypalExpressResponse
67
+ expect(response.message).to eq("A successful transaction has already been completed for this token.")
68
+ expect(response.authorization).to eq("3K289148GS508731G")
69
+ expect(response.fraud_review).to eq(false)
70
+ expect(response.success).to eq(false)
71
+
72
+ expect(response.token).to eq("EC-MY_TOKEN")
73
+ expect(response.payer_id).to be_nil
74
+ expect(response.payment_info_reasoncode).to eq("11607")
75
+
76
+ expect(response.gateway_error_code).to eq("11607")
77
+ end
78
+
79
+ end
metadata CHANGED
@@ -1,309 +1,309 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: killbill-paypal-express
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 5.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kill Bill core team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-16 00:00:00.000000000 Z
11
+ date: 2017-01-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: killbill
15
- version_requirements: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ~>
18
- - !ruby/object:Gem::Version
19
- version: '8.0'
20
14
  requirement: !ruby/object:Gem::Requirement
21
15
  requirements:
22
- - - ~>
16
+ - - "~>"
23
17
  - !ruby/object:Gem::Version
24
18
  version: '8.0'
19
+ name: killbill
25
20
  prerelease: false
26
21
  type: :runtime
27
- - !ruby/object:Gem::Dependency
28
- name: sinatra
29
22
  version_requirements: !ruby/object:Gem::Requirement
30
23
  requirements:
31
- - - ~>
24
+ - - "~>"
32
25
  - !ruby/object:Gem::Version
33
- version: 1.3.4
26
+ version: '8.0'
27
+ - !ruby/object:Gem::Dependency
34
28
  requirement: !ruby/object:Gem::Requirement
35
29
  requirements:
36
- - - ~>
30
+ - - "~>"
37
31
  - !ruby/object:Gem::Version
38
32
  version: 1.3.4
33
+ name: sinatra
39
34
  prerelease: false
40
35
  type: :runtime
41
- - !ruby/object:Gem::Dependency
42
- name: thread_safe
43
36
  version_requirements: !ruby/object:Gem::Requirement
44
37
  requirements:
45
- - - ~>
38
+ - - "~>"
46
39
  - !ruby/object:Gem::Version
47
- version: 0.3.4
40
+ version: 1.3.4
41
+ - !ruby/object:Gem::Dependency
48
42
  requirement: !ruby/object:Gem::Requirement
49
43
  requirements:
50
- - - ~>
44
+ - - "~>"
51
45
  - !ruby/object:Gem::Version
52
46
  version: 0.3.4
47
+ name: thread_safe
53
48
  prerelease: false
54
49
  type: :runtime
55
- - !ruby/object:Gem::Dependency
56
- name: activerecord
57
50
  version_requirements: !ruby/object:Gem::Requirement
58
51
  requirements:
59
- - - ~>
52
+ - - "~>"
60
53
  - !ruby/object:Gem::Version
61
- version: 4.1.0
54
+ version: 0.3.4
55
+ - !ruby/object:Gem::Dependency
62
56
  requirement: !ruby/object:Gem::Requirement
63
57
  requirements:
64
- - - ~>
58
+ - - "~>"
65
59
  - !ruby/object:Gem::Version
66
60
  version: 4.1.0
61
+ name: activerecord
67
62
  prerelease: false
68
63
  type: :runtime
69
- - !ruby/object:Gem::Dependency
70
- name: activerecord-bogacs
71
64
  version_requirements: !ruby/object:Gem::Requirement
72
65
  requirements:
73
- - - ~>
66
+ - - "~>"
74
67
  - !ruby/object:Gem::Version
75
- version: '0.3'
68
+ version: 4.1.0
69
+ - !ruby/object:Gem::Dependency
76
70
  requirement: !ruby/object:Gem::Requirement
77
71
  requirements:
78
- - - ~>
72
+ - - "~>"
79
73
  - !ruby/object:Gem::Version
80
74
  version: '0.3'
75
+ name: activerecord-bogacs
81
76
  prerelease: false
82
77
  type: :runtime
83
- - !ruby/object:Gem::Dependency
84
- name: activerecord-jdbc-adapter
85
78
  version_requirements: !ruby/object:Gem::Requirement
86
79
  requirements:
87
- - - ~>
80
+ - - "~>"
88
81
  - !ruby/object:Gem::Version
89
- version: '1.3'
90
- - - <
91
- - !ruby/object:Gem::Version
92
- version: '1.5'
82
+ version: '0.3'
83
+ - !ruby/object:Gem::Dependency
93
84
  requirement: !ruby/object:Gem::Requirement
94
85
  requirements:
95
- - - ~>
86
+ - - "~>"
96
87
  - !ruby/object:Gem::Version
97
88
  version: '1.3'
98
- - - <
89
+ - - "<"
99
90
  - !ruby/object:Gem::Version
100
91
  version: '1.5'
92
+ name: activerecord-jdbc-adapter
101
93
  prerelease: false
102
94
  type: :runtime
103
- - !ruby/object:Gem::Dependency
104
- name: jruby-openssl
105
95
  version_requirements: !ruby/object:Gem::Requirement
106
96
  requirements:
107
- - - ~>
97
+ - - "~>"
108
98
  - !ruby/object:Gem::Version
109
- version: 0.9.11
99
+ version: '1.3'
100
+ - - "<"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.5'
103
+ - !ruby/object:Gem::Dependency
110
104
  requirement: !ruby/object:Gem::Requirement
111
105
  requirements:
112
- - - ~>
106
+ - - "~>"
113
107
  - !ruby/object:Gem::Version
114
108
  version: 0.9.11
109
+ name: jruby-openssl
115
110
  prerelease: false
116
111
  type: :runtime
117
- - !ruby/object:Gem::Dependency
118
- name: actionpack
119
112
  version_requirements: !ruby/object:Gem::Requirement
120
113
  requirements:
121
- - - ~>
114
+ - - "~>"
122
115
  - !ruby/object:Gem::Version
123
- version: 4.1.0
116
+ version: 0.9.11
117
+ - !ruby/object:Gem::Dependency
124
118
  requirement: !ruby/object:Gem::Requirement
125
119
  requirements:
126
- - - ~>
120
+ - - "~>"
127
121
  - !ruby/object:Gem::Version
128
122
  version: 4.1.0
123
+ name: actionpack
129
124
  prerelease: false
130
125
  type: :runtime
131
- - !ruby/object:Gem::Dependency
132
- name: actionview
133
126
  version_requirements: !ruby/object:Gem::Requirement
134
127
  requirements:
135
- - - ~>
128
+ - - "~>"
136
129
  - !ruby/object:Gem::Version
137
130
  version: 4.1.0
131
+ - !ruby/object:Gem::Dependency
138
132
  requirement: !ruby/object:Gem::Requirement
139
133
  requirements:
140
- - - ~>
134
+ - - "~>"
141
135
  - !ruby/object:Gem::Version
142
136
  version: 4.1.0
137
+ name: actionview
143
138
  prerelease: false
144
139
  type: :runtime
145
- - !ruby/object:Gem::Dependency
146
- name: activemerchant
147
140
  version_requirements: !ruby/object:Gem::Requirement
148
141
  requirements:
149
- - - ~>
142
+ - - "~>"
150
143
  - !ruby/object:Gem::Version
151
- version: 1.53.0
144
+ version: 4.1.0
145
+ - !ruby/object:Gem::Dependency
152
146
  requirement: !ruby/object:Gem::Requirement
153
147
  requirements:
154
- - - ~>
148
+ - - "~>"
155
149
  - !ruby/object:Gem::Version
156
150
  version: 1.53.0
151
+ name: activemerchant
157
152
  prerelease: false
158
153
  type: :runtime
159
- - !ruby/object:Gem::Dependency
160
- name: offsite_payments
161
154
  version_requirements: !ruby/object:Gem::Requirement
162
155
  requirements:
163
- - - ~>
156
+ - - "~>"
164
157
  - !ruby/object:Gem::Version
165
- version: 2.1.0
158
+ version: 1.53.0
159
+ - !ruby/object:Gem::Dependency
166
160
  requirement: !ruby/object:Gem::Requirement
167
161
  requirements:
168
- - - ~>
162
+ - - "~>"
169
163
  - !ruby/object:Gem::Version
170
164
  version: 2.1.0
165
+ name: offsite_payments
171
166
  prerelease: false
172
167
  type: :runtime
173
- - !ruby/object:Gem::Dependency
174
- name: monetize
175
168
  version_requirements: !ruby/object:Gem::Requirement
176
169
  requirements:
177
- - - ~>
170
+ - - "~>"
178
171
  - !ruby/object:Gem::Version
179
- version: 1.1.0
172
+ version: 2.1.0
173
+ - !ruby/object:Gem::Dependency
180
174
  requirement: !ruby/object:Gem::Requirement
181
175
  requirements:
182
- - - ~>
176
+ - - "~>"
183
177
  - !ruby/object:Gem::Version
184
178
  version: 1.1.0
179
+ name: monetize
185
180
  prerelease: false
186
181
  type: :runtime
187
- - !ruby/object:Gem::Dependency
188
- name: money
189
182
  version_requirements: !ruby/object:Gem::Requirement
190
183
  requirements:
191
- - - ~>
184
+ - - "~>"
192
185
  - !ruby/object:Gem::Version
193
- version: 6.5.1
186
+ version: 1.1.0
187
+ - !ruby/object:Gem::Dependency
194
188
  requirement: !ruby/object:Gem::Requirement
195
189
  requirements:
196
- - - ~>
190
+ - - "~>"
197
191
  - !ruby/object:Gem::Version
198
192
  version: 6.5.1
193
+ name: money
199
194
  prerelease: false
200
195
  type: :runtime
201
- - !ruby/object:Gem::Dependency
202
- name: jbundler
203
196
  version_requirements: !ruby/object:Gem::Requirement
204
197
  requirements:
205
- - - ~>
198
+ - - "~>"
206
199
  - !ruby/object:Gem::Version
207
- version: 0.9.2
200
+ version: 6.5.1
201
+ - !ruby/object:Gem::Dependency
208
202
  requirement: !ruby/object:Gem::Requirement
209
203
  requirements:
210
- - - ~>
204
+ - - "~>"
211
205
  - !ruby/object:Gem::Version
212
206
  version: 0.9.2
207
+ name: jbundler
213
208
  prerelease: false
214
209
  type: :development
215
- - !ruby/object:Gem::Dependency
216
- name: rake
217
210
  version_requirements: !ruby/object:Gem::Requirement
218
211
  requirements:
219
- - - '>='
212
+ - - "~>"
220
213
  - !ruby/object:Gem::Version
221
- version: 10.0.0
214
+ version: 0.9.2
215
+ - !ruby/object:Gem::Dependency
222
216
  requirement: !ruby/object:Gem::Requirement
223
217
  requirements:
224
- - - '>='
218
+ - - ">="
225
219
  - !ruby/object:Gem::Version
226
220
  version: 10.0.0
221
+ name: rake
227
222
  prerelease: false
228
223
  type: :development
229
- - !ruby/object:Gem::Dependency
230
- name: rspec
231
224
  version_requirements: !ruby/object:Gem::Requirement
232
225
  requirements:
233
- - - ~>
226
+ - - ">="
234
227
  - !ruby/object:Gem::Version
235
- version: 2.12.0
228
+ version: 10.0.0
229
+ - !ruby/object:Gem::Dependency
236
230
  requirement: !ruby/object:Gem::Requirement
237
231
  requirements:
238
- - - ~>
232
+ - - "~>"
239
233
  - !ruby/object:Gem::Version
240
234
  version: 2.12.0
235
+ name: rspec
241
236
  prerelease: false
242
237
  type: :development
243
- - !ruby/object:Gem::Dependency
244
- name: selenium-webdriver
245
238
  version_requirements: !ruby/object:Gem::Requirement
246
239
  requirements:
247
- - - ~>
240
+ - - "~>"
248
241
  - !ruby/object:Gem::Version
249
- version: 2.53.0
242
+ version: 2.12.0
243
+ - !ruby/object:Gem::Dependency
250
244
  requirement: !ruby/object:Gem::Requirement
251
245
  requirements:
252
- - - ~>
246
+ - - "~>"
253
247
  - !ruby/object:Gem::Version
254
248
  version: 2.53.0
249
+ name: selenium-webdriver
255
250
  prerelease: false
256
251
  type: :development
257
- - !ruby/object:Gem::Dependency
258
- name: jdbc-sqlite3
259
252
  version_requirements: !ruby/object:Gem::Requirement
260
253
  requirements:
261
- - - ~>
254
+ - - "~>"
262
255
  - !ruby/object:Gem::Version
263
- version: '3.7'
256
+ version: 2.53.0
257
+ - !ruby/object:Gem::Dependency
264
258
  requirement: !ruby/object:Gem::Requirement
265
259
  requirements:
266
- - - ~>
260
+ - - "~>"
267
261
  - !ruby/object:Gem::Version
268
262
  version: '3.7'
263
+ name: jdbc-sqlite3
269
264
  prerelease: false
270
265
  type: :development
271
- - !ruby/object:Gem::Dependency
272
- name: jdbc-mariadb
273
266
  version_requirements: !ruby/object:Gem::Requirement
274
267
  requirements:
275
- - - ~>
268
+ - - "~>"
276
269
  - !ruby/object:Gem::Version
277
- version: '1.1'
270
+ version: '3.7'
271
+ - !ruby/object:Gem::Dependency
278
272
  requirement: !ruby/object:Gem::Requirement
279
273
  requirements:
280
- - - ~>
274
+ - - "~>"
281
275
  - !ruby/object:Gem::Version
282
276
  version: '1.1'
277
+ name: jdbc-mariadb
283
278
  prerelease: false
284
279
  type: :development
285
- - !ruby/object:Gem::Dependency
286
- name: jdbc-postgres
287
280
  version_requirements: !ruby/object:Gem::Requirement
288
281
  requirements:
289
- - - ~>
282
+ - - "~>"
290
283
  - !ruby/object:Gem::Version
291
- version: '9.4'
284
+ version: '1.1'
285
+ - !ruby/object:Gem::Dependency
292
286
  requirement: !ruby/object:Gem::Requirement
293
287
  requirements:
294
- - - ~>
288
+ - - "~>"
295
289
  - !ruby/object:Gem::Version
296
290
  version: '9.4'
291
+ name: jdbc-postgres
297
292
  prerelease: false
298
293
  type: :development
294
+ version_requirements: !ruby/object:Gem::Requirement
295
+ requirements:
296
+ - - "~>"
297
+ - !ruby/object:Gem::Version
298
+ version: '9.4'
299
299
  description: Kill Bill payment plugin for Paypal Express Checkout.
300
300
  email: killbilling-users@googlegroups.com
301
301
  executables: []
302
302
  extensions: []
303
303
  extra_rdoc_files: []
304
304
  files:
305
- - .gitignore
306
- - .travis.yml
305
+ - ".gitignore"
306
+ - ".travis.yml"
307
307
  - Gemfile
308
308
  - Gemfile.head
309
309
  - Gemfile.lock
@@ -318,6 +318,7 @@ files:
318
318
  - db/ddl.sql
319
319
  - db/migrate/20160326090325_add_indexes.rb
320
320
  - db/migrate/20160828090851_enlarge_message.rb
321
+ - db/migrate/20161209090000_add_indexes.rb
321
322
  - db/schema.rb
322
323
  - killbill-paypal-express.gemspec
323
324
  - killbill.properties
@@ -333,6 +334,8 @@ files:
333
334
  - paypal_express.yml
334
335
  - pom.xml
335
336
  - release.sh
337
+ - spec/fixtures/DoExpressCheckoutPayment-duplicate.xml
338
+ - spec/fixtures/GetExpressCheckoutDetails-success.xml
336
339
  - spec/paypal_express/base_plugin_spec.rb
337
340
  - spec/paypal_express/remote/baid_spec.rb
338
341
  - spec/paypal_express/remote/baid_spec_helpers.rb
@@ -340,6 +343,7 @@ files:
340
343
  - spec/paypal_express/remote/build_plugin_helpers.rb
341
344
  - spec/paypal_express/remote/hpp_spec.rb
342
345
  - spec/paypal_express/remote/hpp_spec_helpers.rb
346
+ - spec/paypal_express/response_spec.rb
343
347
  - spec/spec_helper.rb
344
348
  homepage: http://killbill.io
345
349
  licenses:
@@ -347,23 +351,23 @@ licenses:
347
351
  metadata: {}
348
352
  post_install_message:
349
353
  rdoc_options:
350
- - --exclude
351
- - .
354
+ - "--exclude"
355
+ - "."
352
356
  require_paths:
353
357
  - lib
354
358
  required_ruby_version: !ruby/object:Gem::Requirement
355
359
  requirements:
356
- - - '>='
360
+ - - ">="
357
361
  - !ruby/object:Gem::Version
358
362
  version: 1.9.3
359
363
  required_rubygems_version: !ruby/object:Gem::Requirement
360
364
  requirements:
361
- - - '>='
365
+ - - ">="
362
366
  - !ruby/object:Gem::Version
363
367
  version: '0'
364
368
  requirements: []
365
369
  rubyforge_project:
366
- rubygems_version: 2.4.6
370
+ rubygems_version: 2.4.8
367
371
  signing_key:
368
372
  specification_version: 4
369
373
  summary: Plugin to use Paypal Express Checkout as a gateway.