killbill-paypal-express 5.0.0 → 5.0.1

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.
@@ -53,7 +53,7 @@ shared_examples 'hpp_spec_common' do
53
53
  end
54
54
 
55
55
  # Each loop triggers one successful purchase and one successful refund
56
- ::Killbill::PaypalExpress::PaypalExpressTransaction.count.should == 2 * n
56
+ ::Killbill::PaypalExpress::PaypalExpressTransaction.count.should == 5 * n
57
57
  ::Killbill::PaypalExpress::PaypalExpressResponse.count.should == 1 + 8 * n
58
58
  end
59
59
 
@@ -116,7 +116,7 @@ shared_examples 'hpp_spec_common' do
116
116
  end
117
117
 
118
118
  # Each loop triggers one successful purchase and one successful refund
119
- ::Killbill::PaypalExpress::PaypalExpressTransaction.count.should == 2 * n
119
+ ::Killbill::PaypalExpress::PaypalExpressTransaction.count.should == 5 * n
120
120
  ::Killbill::PaypalExpress::PaypalExpressResponse.count.should == 1 + 9 * n
121
121
  end
122
122
 
@@ -184,7 +184,7 @@ shared_examples 'hpp_spec_common' do
184
184
  end
185
185
 
186
186
  # Each loop triggers one successful auth, one successful capture and one successful refund
187
- ::Killbill::PaypalExpress::PaypalExpressTransaction.count.should == 3 * n
187
+ ::Killbill::PaypalExpress::PaypalExpressTransaction.count.should == 5 * n
188
188
  ::Killbill::PaypalExpress::PaypalExpressResponse.count.should == 1 + 15 * n / 2 + 7 * n % 2
189
189
  end
190
190
 
@@ -224,8 +224,8 @@ shared_examples 'hpp_spec_common' do
224
224
  @plugin.kb_apis.proxied_services[:payment_api].payments.size.should == i / 2
225
225
  end
226
226
 
227
- # Each loop triggers one successful authorize and one successful void
228
- ::Killbill::PaypalExpress::PaypalExpressTransaction.count.should == 2 * n
227
+ # Each loop triggers one successful details_for, authorize and void
228
+ ::Killbill::PaypalExpress::PaypalExpressTransaction.count.should == 3 * n
229
229
  ::Killbill::PaypalExpress::PaypalExpressResponse.count.should == 9 * n / 2 + 5 * n % 2
230
230
  end
231
231
 
@@ -55,15 +55,26 @@ module Killbill
55
55
 
56
56
  # Verify GET API
57
57
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, [], @call_context)
58
- payment_infos.size.should == 1
58
+ payment_infos.size.should == 2
59
+ # details_for
59
60
  payment_infos[0].kb_payment_id.should == kb_payment_id
60
61
  payment_infos[0].transaction_type.should == :PURCHASE
61
- payment_infos[0].amount.should == @amount
62
- payment_infos[0].currency.should == @currency
62
+ payment_infos[0].amount.should be_nil
63
+ payment_infos[0].currency.should be_nil
63
64
  payment_infos[0].status.should == :PROCESSED
64
65
  payment_infos[0].gateway_error.should == 'Success'
65
66
  payment_infos[0].gateway_error_code.should be_nil
66
67
  find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
68
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
69
+ # purchase
70
+ payment_infos[1].kb_payment_id.should == kb_payment_id
71
+ payment_infos[1].transaction_type.should == :PURCHASE
72
+ payment_infos[1].amount.should == @amount
73
+ payment_infos[1].currency.should == @currency
74
+ payment_infos[1].status.should == :PROCESSED
75
+ payment_infos[1].gateway_error.should == 'Success'
76
+ payment_infos[1].gateway_error_code.should be_nil
77
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
67
78
 
68
79
  # Try a full refund
69
80
  refund_response = @plugin.refund_payment(@pm.kb_account_id, kb_payment_id, SecureRandom.uuid, @pm.kb_payment_method_id, @amount, @currency, [], @call_context)
@@ -73,21 +84,33 @@ module Killbill
73
84
 
74
85
  # Verify GET API
75
86
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, [], @call_context)
76
- payment_infos.size.should == 2
87
+ payment_infos.size.should == 3
88
+ # details_for
77
89
  payment_infos[0].kb_payment_id.should == kb_payment_id
78
90
  payment_infos[0].transaction_type.should == :PURCHASE
79
- payment_infos[0].amount.should == @amount
80
- payment_infos[0].currency.should == @currency
91
+ payment_infos[0].amount.should be_nil
92
+ payment_infos[0].currency.should be_nil
81
93
  payment_infos[0].status.should == :PROCESSED
82
94
  payment_infos[0].gateway_error.should == 'Success'
83
95
  payment_infos[0].gateway_error_code.should be_nil
84
- payment_infos[1].kb_payment_id.should.should == kb_payment_id
85
- payment_infos[1].transaction_type.should == :REFUND
96
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
97
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
98
+ # purchase
99
+ payment_infos[1].kb_payment_id.should == kb_payment_id
100
+ payment_infos[1].transaction_type.should == :PURCHASE
86
101
  payment_infos[1].amount.should == @amount
87
102
  payment_infos[1].currency.should == @currency
88
103
  payment_infos[1].status.should == :PROCESSED
89
104
  payment_infos[1].gateway_error.should == 'Success'
90
105
  payment_infos[1].gateway_error_code.should be_nil
106
+ # refund
107
+ payment_infos[2].kb_payment_id.should.should == kb_payment_id
108
+ payment_infos[2].transaction_type.should == :REFUND
109
+ payment_infos[2].amount.should == @amount
110
+ payment_infos[2].currency.should == @currency
111
+ payment_infos[2].status.should == :PROCESSED
112
+ payment_infos[2].gateway_error.should == 'Success'
113
+ payment_infos[2].gateway_error_code.should be_nil
91
114
  end
92
115
 
93
116
  def authorize_capture_and_refund(kb_payment_id, payment_external_key, properties, payment_processor_account_id)
@@ -101,18 +124,29 @@ module Killbill
101
124
 
102
125
  # Verify GET AUTHORIZED PAYMENT
103
126
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
104
- payment_infos.size.should == 1
127
+ payment_infos.size.should == 2
128
+ # details_for
105
129
  payment_infos[0].kb_payment_id.should == kb_payment_id
106
130
  payment_infos[0].transaction_type.should == :AUTHORIZE
107
- payment_infos[0].amount.should == @amount
108
- payment_infos[0].currency.should == @currency
131
+ payment_infos[0].amount.should be_nil
132
+ payment_infos[0].currency.should be_nil
109
133
  payment_infos[0].status.should == :PROCESSED
110
134
  payment_infos[0].gateway_error.should == 'Success'
111
135
  payment_infos[0].gateway_error_code.should be_nil
112
136
  find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
113
- find_value_from_properties(payment_infos[0].properties, 'paymentInfoPaymentStatus').should == 'Pending'
114
- find_value_from_properties(payment_infos[0].properties, 'paymentInfoPendingReason').should == 'authorization'
115
- find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == payment_processor_account_id
137
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
138
+ # authorize
139
+ payment_infos[1].kb_payment_id.should == kb_payment_id
140
+ payment_infos[1].transaction_type.should == :AUTHORIZE
141
+ payment_infos[1].amount.should == @amount
142
+ payment_infos[1].currency.should == @currency
143
+ payment_infos[1].status.should == :PROCESSED
144
+ payment_infos[1].gateway_error.should == 'Success'
145
+ payment_infos[1].gateway_error_code.should be_nil
146
+ find_value_from_properties(payment_infos[1].properties, 'payerId').should == payer_id
147
+ find_value_from_properties(payment_infos[1].properties, 'paymentInfoPaymentStatus').should == 'Pending'
148
+ find_value_from_properties(payment_infos[1].properties, 'paymentInfoPendingReason').should == 'authorization'
149
+ find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == payment_processor_account_id
116
150
 
117
151
  # Trigger the capture
118
152
  payment_response = @plugin.capture_payment(@pm.kb_account_id, kb_payment_id, payment_external_key, @pm.kb_payment_method_id, @amount, @currency, properties, @call_context)
@@ -123,24 +157,36 @@ module Killbill
123
157
  # Verify GET CAPTURED PAYMENT
124
158
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
125
159
  # Two expected transactions: one auth and one capture
126
- payment_infos.size.should == 2
160
+ payment_infos.size.should == 3
161
+ # details_for
127
162
  payment_infos[0].kb_payment_id.should == kb_payment_id
128
163
  payment_infos[0].transaction_type.should == :AUTHORIZE
129
- payment_infos[0].amount.should == @amount
130
- payment_infos[0].currency.should == @currency
164
+ payment_infos[0].amount.should be_nil
165
+ payment_infos[0].currency.should be_nil
131
166
  payment_infos[0].status.should == :PROCESSED
132
167
  payment_infos[0].gateway_error.should == 'Success'
133
168
  payment_infos[0].gateway_error_code.should be_nil
134
- find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == payment_processor_account_id
169
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
170
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
171
+ # authorize
135
172
  payment_infos[1].kb_payment_id.should == kb_payment_id
136
- payment_infos[1].transaction_type.should == :CAPTURE
173
+ payment_infos[1].transaction_type.should == :AUTHORIZE
137
174
  payment_infos[1].amount.should == @amount
138
175
  payment_infos[1].currency.should == @currency
139
176
  payment_infos[1].status.should == :PROCESSED
140
177
  payment_infos[1].gateway_error.should == 'Success'
141
178
  payment_infos[1].gateway_error_code.should be_nil
142
- find_value_from_properties(payment_infos[1].properties, 'paymentInfoPaymentStatus').should == 'Completed'
143
179
  find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == payment_processor_account_id
180
+ #capture
181
+ payment_infos[2].kb_payment_id.should == kb_payment_id
182
+ payment_infos[2].transaction_type.should == :CAPTURE
183
+ payment_infos[2].amount.should == @amount
184
+ payment_infos[2].currency.should == @currency
185
+ payment_infos[2].status.should == :PROCESSED
186
+ payment_infos[2].gateway_error.should == 'Success'
187
+ payment_infos[2].gateway_error_code.should be_nil
188
+ find_value_from_properties(payment_infos[2].properties, 'paymentInfoPaymentStatus').should == 'Completed'
189
+ find_value_from_properties(payment_infos[2].properties, 'payment_processor_account_id').should == payment_processor_account_id
144
190
 
145
191
  # Try a full refund
146
192
  refund_response = @plugin.refund_payment(@pm.kb_account_id, kb_payment_id, SecureRandom.uuid, @pm.kb_payment_method_id, @amount, @currency, [], @call_context)
@@ -150,31 +196,44 @@ module Killbill
150
196
 
151
197
  # Verify GET API
152
198
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
153
- payment_infos.size.should == 3
199
+ payment_infos.size.should == 4
200
+ # details_for
154
201
  payment_infos[0].kb_payment_id.should == kb_payment_id
155
202
  payment_infos[0].transaction_type.should == :AUTHORIZE
156
- payment_infos[0].amount.should == @amount
157
- payment_infos[0].currency.should == @currency
203
+ payment_infos[0].amount.should be_nil
204
+ payment_infos[0].currency.should be_nil
158
205
  payment_infos[0].status.should == :PROCESSED
159
206
  payment_infos[0].gateway_error.should == 'Success'
160
207
  payment_infos[0].gateway_error_code.should be_nil
161
- find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == payment_processor_account_id
208
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
209
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
210
+ # authorize
162
211
  payment_infos[1].kb_payment_id.should == kb_payment_id
163
- payment_infos[1].transaction_type.should == :CAPTURE
212
+ payment_infos[1].transaction_type.should == :AUTHORIZE
164
213
  payment_infos[1].amount.should == @amount
165
214
  payment_infos[1].currency.should == @currency
166
215
  payment_infos[1].status.should == :PROCESSED
167
216
  payment_infos[1].gateway_error.should == 'Success'
168
217
  payment_infos[1].gateway_error_code.should be_nil
169
218
  find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == payment_processor_account_id
170
- payment_infos[2].kb_payment_id.should.should == kb_payment_id
171
- payment_infos[2].transaction_type.should == :REFUND
219
+ # capture
220
+ payment_infos[2].kb_payment_id.should == kb_payment_id
221
+ payment_infos[2].transaction_type.should == :CAPTURE
172
222
  payment_infos[2].amount.should == @amount
173
223
  payment_infos[2].currency.should == @currency
174
224
  payment_infos[2].status.should == :PROCESSED
175
225
  payment_infos[2].gateway_error.should == 'Success'
176
226
  payment_infos[2].gateway_error_code.should be_nil
177
227
  find_value_from_properties(payment_infos[2].properties, 'payment_processor_account_id').should == payment_processor_account_id
228
+ # refund
229
+ payment_infos[3].kb_payment_id.should.should == kb_payment_id
230
+ payment_infos[3].transaction_type.should == :REFUND
231
+ payment_infos[3].amount.should == @amount
232
+ payment_infos[3].currency.should == @currency
233
+ payment_infos[3].status.should == :PROCESSED
234
+ payment_infos[3].gateway_error.should == 'Success'
235
+ payment_infos[3].gateway_error_code.should be_nil
236
+ find_value_from_properties(payment_infos[3].properties, 'payment_processor_account_id').should == payment_processor_account_id
178
237
  end
179
238
 
180
239
  def authorize_and_double_capture(kb_payment_id, payment_external_key, properties)
@@ -183,16 +242,29 @@ module Killbill
183
242
  payment_response.status.should eq(:PROCESSED), payment_response.gateway_error
184
243
  payment_response.amount.should == @amount
185
244
  payment_response.transaction_type.should == :AUTHORIZE
245
+ payer_id = find_value_from_properties(payment_response.properties, 'payerId')
246
+ payer_id.should_not be_nil
186
247
 
187
248
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
188
- payment_infos.size.should == 1
249
+ payment_infos.size.should == 2
250
+ # details_for
189
251
  payment_infos[0].kb_payment_id.should == kb_payment_id
190
252
  payment_infos[0].transaction_type.should == :AUTHORIZE
191
- payment_infos[0].amount.should == @amount
192
- payment_infos[0].currency.should == @currency
253
+ payment_infos[0].amount.should be_nil
254
+ payment_infos[0].currency.should be_nil
193
255
  payment_infos[0].status.should == :PROCESSED
194
256
  payment_infos[0].gateway_error.should == 'Success'
195
257
  payment_infos[0].gateway_error_code.should be_nil
258
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
259
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
260
+ # autorize
261
+ payment_infos[1].kb_payment_id.should == kb_payment_id
262
+ payment_infos[1].transaction_type.should == :AUTHORIZE
263
+ payment_infos[1].amount.should == @amount
264
+ payment_infos[1].currency.should == @currency
265
+ payment_infos[1].status.should == :PROCESSED
266
+ payment_infos[1].gateway_error.should == 'Success'
267
+ payment_infos[1].gateway_error_code.should be_nil
196
268
 
197
269
  # Trigger the capture
198
270
  payment_response = @plugin.capture_payment(@pm.kb_account_id, kb_payment_id, payment_external_key, @pm.kb_payment_method_id, @amount, @currency, properties, @call_context)
@@ -201,21 +273,33 @@ module Killbill
201
273
  payment_response.transaction_type.should == :CAPTURE
202
274
 
203
275
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
204
- payment_infos.size.should == 2
276
+ payment_infos.size.should == 3
277
+ # details_for
205
278
  payment_infos[0].kb_payment_id.should == kb_payment_id
206
279
  payment_infos[0].transaction_type.should == :AUTHORIZE
207
- payment_infos[0].amount.should == @amount
208
- payment_infos[0].currency.should == @currency
280
+ payment_infos[0].amount.should be_nil
281
+ payment_infos[0].currency.should be_nil
209
282
  payment_infos[0].status.should == :PROCESSED
210
283
  payment_infos[0].gateway_error.should == 'Success'
211
284
  payment_infos[0].gateway_error_code.should be_nil
285
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
286
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
287
+ # autorize
212
288
  payment_infos[1].kb_payment_id.should == kb_payment_id
213
- payment_infos[1].transaction_type.should == :CAPTURE
289
+ payment_infos[1].transaction_type.should == :AUTHORIZE
214
290
  payment_infos[1].amount.should == @amount
215
291
  payment_infos[1].currency.should == @currency
216
292
  payment_infos[1].status.should == :PROCESSED
217
293
  payment_infos[1].gateway_error.should == 'Success'
218
294
  payment_infos[1].gateway_error_code.should be_nil
295
+ # capture
296
+ payment_infos[2].kb_payment_id.should == kb_payment_id
297
+ payment_infos[2].transaction_type.should == :CAPTURE
298
+ payment_infos[2].amount.should == @amount
299
+ payment_infos[2].currency.should == @currency
300
+ payment_infos[2].status.should == :PROCESSED
301
+ payment_infos[2].gateway_error.should == 'Success'
302
+ payment_infos[2].gateway_error_code.should be_nil
219
303
 
220
304
  # Trigger a capture again with full amount
221
305
  payment_response = @plugin.capture_payment(@pm.kb_account_id, kb_payment_id, payment_external_key, @pm.kb_payment_method_id, @amount, @currency, properties, @call_context)
@@ -224,28 +308,41 @@ module Killbill
224
308
  payment_response.transaction_type.should == :CAPTURE
225
309
 
226
310
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
227
- payment_infos.size.should == 3
311
+ payment_infos.size.should == 4
312
+ # details_for
228
313
  payment_infos[0].kb_payment_id.should == kb_payment_id
229
314
  payment_infos[0].transaction_type.should == :AUTHORIZE
230
- payment_infos[0].amount.should == @amount
231
- payment_infos[0].currency.should == @currency
315
+ payment_infos[0].amount.should be_nil
316
+ payment_infos[0].currency.should be_nil
232
317
  payment_infos[0].status.should == :PROCESSED
233
318
  payment_infos[0].gateway_error.should == 'Success'
234
319
  payment_infos[0].gateway_error_code.should be_nil
320
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
321
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
322
+ # authorize
235
323
  payment_infos[1].kb_payment_id.should == kb_payment_id
236
- payment_infos[1].transaction_type.should == :CAPTURE
324
+ payment_infos[1].transaction_type.should == :AUTHORIZE
237
325
  payment_infos[1].amount.should == @amount
238
326
  payment_infos[1].currency.should == @currency
239
327
  payment_infos[1].status.should == :PROCESSED
240
328
  payment_infos[1].gateway_error.should == 'Success'
241
329
  payment_infos[1].gateway_error_code.should be_nil
242
- payment_infos[2].kb_payment_id.should.should == kb_payment_id
330
+ # capture
331
+ payment_infos[2].kb_payment_id.should == kb_payment_id
243
332
  payment_infos[2].transaction_type.should == :CAPTURE
244
- payment_infos[2].amount.should be_nil
245
- payment_infos[2].currency.should be_nil
246
- payment_infos[2].status.should == :ERROR
247
- payment_infos[2].gateway_error.should == 'Authorization has already been completed.'
333
+ payment_infos[2].amount.should == @amount
334
+ payment_infos[2].currency.should == @currency
335
+ payment_infos[2].status.should == :PROCESSED
336
+ payment_infos[2].gateway_error.should == 'Success'
248
337
  payment_infos[2].gateway_error_code.should be_nil
338
+ # capture again
339
+ payment_infos[3].kb_payment_id.should.should == kb_payment_id
340
+ payment_infos[3].transaction_type.should == :CAPTURE
341
+ payment_infos[3].amount.should be_nil
342
+ payment_infos[3].currency.should be_nil
343
+ payment_infos[3].status.should == :ERROR
344
+ payment_infos[3].gateway_error.should == 'Authorization has already been completed.'
345
+ payment_infos[3].gateway_error_code.should == "10602"
249
346
  end
250
347
 
251
348
  def authorize_and_void(kb_payment_id, payment_external_key, properties, payment_processor_account_id)
@@ -254,18 +351,31 @@ module Killbill
254
351
  payment_response.status.should eq(:PROCESSED), payment_response.gateway_error
255
352
  payment_response.amount.should == @amount
256
353
  payment_response.transaction_type.should == :AUTHORIZE
354
+ payer_id = find_value_from_properties(payment_response.properties, 'payerId')
355
+ payer_id.should_not be_nil
257
356
 
258
357
  # Verify get_payment_info
259
358
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
260
- payment_infos.size.should == 1
359
+ payment_infos.size.should == 2
360
+ # details_for
261
361
  payment_infos[0].kb_payment_id.should == kb_payment_id
262
362
  payment_infos[0].transaction_type.should == :AUTHORIZE
263
- payment_infos[0].amount.should == @amount
264
- payment_infos[0].currency.should == @currency
363
+ payment_infos[0].amount.should be_nil
364
+ payment_infos[0].currency.should be_nil
265
365
  payment_infos[0].status.should == :PROCESSED
266
366
  payment_infos[0].gateway_error.should == 'Success'
267
367
  payment_infos[0].gateway_error_code.should be_nil
268
- find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == payment_processor_account_id
368
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
369
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
370
+ # authorize
371
+ payment_infos[1].kb_payment_id.should == kb_payment_id
372
+ payment_infos[1].transaction_type.should == :AUTHORIZE
373
+ payment_infos[1].amount.should == @amount
374
+ payment_infos[1].currency.should == @currency
375
+ payment_infos[1].status.should == :PROCESSED
376
+ payment_infos[1].gateway_error.should == 'Success'
377
+ payment_infos[1].gateway_error_code.should be_nil
378
+ find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == payment_processor_account_id
269
379
 
270
380
  # Trigger the void
271
381
  payment_response = @plugin.void_payment(@pm.kb_account_id, kb_payment_id, payment_external_key, @pm.kb_payment_method_id, properties, @call_context)
@@ -274,42 +384,54 @@ module Killbill
274
384
 
275
385
  # Verify get_payment_info
276
386
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, properties, @call_context)
277
- # Two expected transactions: one auth and one capture
278
- payment_infos.size.should == 2
387
+ # Two expected transactions: one auth and one capture, plus the details call
388
+ payment_infos.size.should == 3
389
+ # details_for
279
390
  payment_infos[0].kb_payment_id.should == kb_payment_id
280
391
  payment_infos[0].transaction_type.should == :AUTHORIZE
281
- payment_infos[0].amount.should == @amount
282
- payment_infos[0].currency.should == @currency
392
+ payment_infos[0].amount.should be_nil
393
+ payment_infos[0].currency.should be_nil
283
394
  payment_infos[0].status.should == :PROCESSED
284
395
  payment_infos[0].gateway_error.should == 'Success'
285
396
  payment_infos[0].gateway_error_code.should be_nil
286
- find_value_from_properties(payment_infos[0].properties, 'payment_processor_account_id').should == payment_processor_account_id
397
+ find_value_from_properties(payment_infos[0].properties, 'payerId').should == payer_id
398
+ find_value_from_properties(payment_infos[0].properties, 'payerName').should_not be_nil
399
+ # authorize
287
400
  payment_infos[1].kb_payment_id.should == kb_payment_id
288
- payment_infos[1].transaction_type.should == :VOID
401
+ payment_infos[1].transaction_type.should == :AUTHORIZE
402
+ payment_infos[1].amount.should == @amount
403
+ payment_infos[1].currency.should == @currency
289
404
  payment_infos[1].status.should == :PROCESSED
290
405
  payment_infos[1].gateway_error.should == 'Success'
291
406
  payment_infos[1].gateway_error_code.should be_nil
292
407
  find_value_from_properties(payment_infos[1].properties, 'payment_processor_account_id').should == payment_processor_account_id
408
+ # void
409
+ payment_infos[2].kb_payment_id.should == kb_payment_id
410
+ payment_infos[2].transaction_type.should == :VOID
411
+ payment_infos[2].status.should == :PROCESSED
412
+ payment_infos[2].gateway_error.should == 'Success'
413
+ payment_infos[2].gateway_error_code.should be_nil
414
+ find_value_from_properties(payment_infos[2].properties, 'payment_processor_account_id').should == payment_processor_account_id
293
415
  end
294
416
 
295
417
  def purchase_with_missing_token
296
- failed_purchase([], :CANCELED, 'Could not find the payer_id: the token is missing', 'RuntimeError')
418
+ failed_purchase([], :CANCELED, 'Could not retrieve the payer info: the token is missing', 'RuntimeError')
297
419
  end
298
420
 
299
421
  def authorize_with_missing_token
300
- failed_authorize([], :CANCELED, 'Could not find the payer_id: the token is missing', 'RuntimeError')
422
+ failed_authorize([], :CANCELED, 'Could not retrieve the payer info: the token is missing', 'RuntimeError')
301
423
  end
302
424
 
303
425
  def purchase_with_invalid_token(purchase_properties)
304
- failed_purchase(purchase_properties, :CANCELED, "Could not find the payer_id for token #{properties_to_hash(purchase_properties)[:token]}", 'RuntimeError')
426
+ failed_purchase(purchase_properties, :CANCELED, "Could not retrieve the payer info for token #{properties_to_hash(purchase_properties)[:token]}", 'RuntimeError')
305
427
  end
306
428
 
307
429
  def authorize_with_invalid_token(authorize_properties)
308
- failed_authorize(authorize_properties, :CANCELED, "Could not find the payer_id for token #{properties_to_hash(authorize_properties)[:token]}", 'RuntimeError')
430
+ failed_authorize(authorize_properties, :CANCELED, "Could not retrieve the payer info for token #{properties_to_hash(authorize_properties)[:token]}", 'RuntimeError')
309
431
  end
310
432
 
311
433
  def subsequent_purchase(purchase_properties)
312
- failed_purchase(purchase_properties, :ERROR, 'A successful transaction has already been completed for this token.')
434
+ failed_purchase(purchase_properties, :ERROR, 'A successful transaction has already been completed for this token.', '11607')
313
435
  end
314
436
 
315
437
  def failed_authorize(authorize_properties, status, msg, gateway_error_code=nil)
@@ -322,14 +444,15 @@ module Killbill
322
444
 
323
445
  # Verify GET API
324
446
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, [], @call_context)
325
- payment_infos.size.should == 1
326
- payment_infos[0].kb_payment_id.should == kb_payment_id
327
- payment_infos[0].transaction_type.should == :AUTHORIZE
328
- payment_infos[0].amount.should be_nil
329
- payment_infos[0].currency.should be_nil
330
- payment_infos[0].status.should == status
331
- payment_infos[0].gateway_error.should == msg
332
- payment_infos[0].gateway_error_code.should == gateway_error_code
447
+ # we might have an extra details_for call
448
+ payment_infos.size.should be_in([1, 2])
449
+ payment_infos[-1].kb_payment_id.should == kb_payment_id
450
+ payment_infos[-1].transaction_type.should == :AUTHORIZE
451
+ payment_infos[-1].amount.should be_nil
452
+ payment_infos[-1].currency.should be_nil
453
+ payment_infos[-1].status.should == status
454
+ payment_infos[-1].gateway_error.should == msg
455
+ payment_infos[-1].gateway_error_code.should == gateway_error_code
333
456
  end
334
457
 
335
458
  def failed_purchase(purchase_properties, status, msg, gateway_error_code=nil)
@@ -342,14 +465,16 @@ module Killbill
342
465
 
343
466
  # Verify GET API
344
467
  payment_infos = @plugin.get_payment_info(@pm.kb_account_id, kb_payment_id, [], @call_context)
345
- payment_infos.size.should == 1
346
- payment_infos[0].kb_payment_id.should == kb_payment_id
347
- payment_infos[0].transaction_type.should == :PURCHASE
348
- payment_infos[0].amount.should be_nil
349
- payment_infos[0].currency.should be_nil
350
- payment_infos[0].status.should == status
351
- payment_infos[0].gateway_error.should == msg
352
- payment_infos[0].gateway_error_code.should == gateway_error_code
468
+ token = find_value_from_properties(purchase_properties, 'token')
469
+ # we might have an extra details_for call
470
+ payment_infos.size.should be_in([1, 2])
471
+ payment_infos[-1].kb_payment_id.should == kb_payment_id
472
+ payment_infos[-1].transaction_type.should == :PURCHASE
473
+ payment_infos[-1].amount.should be_nil
474
+ payment_infos[-1].currency.should be_nil
475
+ payment_infos[-1].status.should == status
476
+ payment_infos[-1].gateway_error.should == msg
477
+ payment_infos[-1].gateway_error_code.should == gateway_error_code
353
478
  end
354
479
 
355
480
  private