pesapal 1.5.5 → 1.5.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c3b26553cb2a95d21e6fd641daaec3809cf30cde
4
- data.tar.gz: 9a408042e8bcdda57fea54e511361e93506d30c5
3
+ metadata.gz: 066f9356c08b057b12dee36ca4c18ac4ce6e4b2e
4
+ data.tar.gz: dd01f73ffa683da11339838be6d73ee1244d6619
5
5
  SHA512:
6
- metadata.gz: 6e2cba8e4386972f74739ff5f65b546e381aeebadf2de31bcbb50170f1fcecbd1a36c92f20472d4ec97afe3182e18fc2667f6c9af03a22e82b67100b74e292f8
7
- data.tar.gz: ad4568489f4e04edff4ce2e233f773683efdafb199b38cb6a1bcc8d261c191a004243047159f9a98a7dc57543a76b214e53731d4ad3970e101f1fae5139b4cd6
6
+ metadata.gz: d86aba866c7fe7ee64ca72c6f2a5f865d0d3da2b5f79cad59e71e9da575a09d5e98f7b8f25c3eefc652b71665da1366c66f12ad2f309c49c7992c140f3599324
7
+ data.tar.gz: 5a921459134fa6dd99ab76c3d58045e43ad6a20bc8b6d390e6dd17773e422a065701e95e49f5b307afbaf442611d8680a6eb8cc87ef9916db1977495ec48f01b
@@ -1,6 +1,13 @@
1
1
  Changelog
2
2
  =========
3
3
 
4
+ v1.5.6
5
+ ------
6
+
7
+ * Stop using deprecated OpenSSL::Digest::Digest
8
+ * Enforce minimum required Ruby version, gem is test for Ruby '>= 1.9.2' afterall
9
+ * Refactor tests
10
+
4
11
  v1.5.5
5
12
  ------
6
13
 
data/README.md CHANGED
@@ -66,6 +66,6 @@ they want as long as they provide attribution and waive liability.
66
66
  [6]: https://github.com/itsmrwave/pesapal-gem/releases/
67
67
  [7]: http://kingori.co/
68
68
  [8]: https://raw.githubusercontent.com/itsmrwave/pesapal-gem/master/LICENSE.md
69
- [9]: http://rubydoc.info/gems/pesapal/
69
+ [9]: http://rubydoc.info/gems/pesapal/frames/file/README.md
70
70
  [10]: http://mogetutu.com/
71
71
  [11]: https://github.com/mogetutu
@@ -74,7 +74,7 @@ module Pesapal
74
74
  #
75
75
  # @return [String] valid oAuth signature.
76
76
  def self.generate_oauth_signature(http_method, absolute_url, params, consumer_secret, token_secret = nil)
77
- digest = OpenSSL::Digest::Digest.new('sha1')
77
+ digest = OpenSSL::Digest.new('sha1')
78
78
  signature_base_string = generate_signature_base_string(http_method, absolute_url, params)
79
79
  signing_key = generate_signing_key(consumer_secret, token_secret)
80
80
  hmac = OpenSSL::HMAC.digest(digest, signing_key, signature_base_string)
@@ -4,5 +4,5 @@ module Pesapal
4
4
  # This gem's version (learn about [Semantic Versioning][1]).
5
5
  #
6
6
  # [1]: http://semver.org/
7
- VERSION = '1.5.5'
7
+ VERSION = '1.5.6'
8
8
  end
@@ -18,11 +18,13 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ['lib']
20
20
 
21
+ spec.required_ruby_version = '>= 1.9.2'
22
+
21
23
  spec.add_development_dependency 'bundler'
22
24
  spec.add_development_dependency 'coveralls'
23
25
  spec.add_development_dependency 'rake'
24
26
  spec.add_development_dependency 'rspec'
25
27
  spec.add_development_dependency 'webmock'
26
28
 
27
- spec.add_dependency 'htmlentities'
29
+ spec.add_runtime_dependency 'htmlentities'
28
30
  end
@@ -19,10 +19,7 @@ describe Pesapal::Merchant do
19
19
  end
20
20
 
21
21
  it 'sets default credentials' do
22
- expect(@pesapal.config).to eq({ :callback_url => 'http://0.0.0.0:3000/pesapal/callback',
23
- :consumer_key => '<YOUR_CONSUMER_KEY>',
24
- :consumer_secret => '<YOUR_CONSUMER_SECRET>'
25
- })
22
+ expect(@pesapal.config).to eq(default_credentials)
26
23
  end
27
24
 
28
25
  it 'sets default order details' do
@@ -38,10 +35,7 @@ describe Pesapal::Merchant do
38
35
  end
39
36
 
40
37
  it 'sets endpoints for default environment' do
41
- expect(@pesapal.set_env).to eq({:postpesapaldirectorderv4 => 'http://demo.pesapal.com/API/PostPesapalDirectOrderV4',
42
- :querypaymentstatus=>'http://demo.pesapal.com/API/QueryPaymentStatus',
43
- :querypaymentdetails=>'http://demo.pesapal.com/API/QueryPaymentDetails'
44
- })
38
+ expect(@pesapal.set_env).to eq(demo_endpoints)
45
39
  end
46
40
  end
47
41
 
@@ -64,36 +58,39 @@ describe Pesapal::Merchant do
64
58
 
65
59
  describe '#query_payment_status' do
66
60
 
61
+ before :each do
62
+ @request = stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/)
63
+ end
64
+
67
65
  it 'gets pending payment status' do
68
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
69
- to_return(:status => 200, :body => 'pesapal_response_data=PENDING')
66
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=PENDING')
70
67
  expect(@pesapal.query_payment_status('merchant_reference', 'transaction_tracking_id')).to eq('PENDING')
71
68
  end
72
69
 
73
70
  it 'gets completed payment status' do
74
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
75
- to_return(:status => 200, :body => 'pesapal_response_data=COMPLETED')
71
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=COMPLETED')
76
72
  expect(@pesapal.query_payment_status('merchant_reference', 'transaction_tracking_id')).to eq('COMPLETED')
77
73
  end
78
74
 
79
75
  it 'gets failed payment status' do
80
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
81
- to_return(:status => 200, :body => 'pesapal_response_data=FAILED')
76
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=FAILED')
82
77
  expect(@pesapal.query_payment_status('merchant_reference', 'transaction_tracking_id')).to eq('FAILED')
83
78
  end
84
79
 
85
80
  it 'gets invalid payment status' do
86
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
87
- to_return(:status => 200, :body => 'pesapal_response_data=INVALID')
81
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=INVALID')
88
82
  expect(@pesapal.query_payment_status('merchant_reference', 'transaction_tracking_id')).to eq('INVALID')
89
83
  end
90
84
  end
91
85
 
92
86
  describe '#query_payment_details' do
93
87
 
88
+ before :each do
89
+ @request = stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentDetails\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/)
90
+ end
91
+
94
92
  it 'gets pending payment details' do
95
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentDetails\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
96
- to_return(:status => 200, :body => 'pesapal_response_data=transaction_tracking_id,payment_method,payment_status,merchant_reference')
93
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=transaction_tracking_id,payment_method,payment_status,merchant_reference')
97
94
  expect(@pesapal.query_payment_details('merchant_reference', 'transaction_tracking_id')).to eq({ :method => 'payment_method',
98
95
  :status => 'payment_status',
99
96
  :merchant_reference => 'merchant_reference',
@@ -104,27 +101,27 @@ describe Pesapal::Merchant do
104
101
 
105
102
  describe '#ipn_listener' do
106
103
 
104
+ before :each do
105
+ @request = stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/)
106
+ end
107
+
107
108
  it 'gets ipn response for pending status' do
108
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
109
- to_return(:status => 200, :body => 'pesapal_response_data=PENDING')
109
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=PENDING')
110
110
  expect(@pesapal.ipn_listener('CHANGE', 'merchant_reference', 'transaction_tracking_id')).to eq({:status => 'PENDING', :response => nil})
111
111
  end
112
112
 
113
113
  it 'gets ipn response for completed status' do
114
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
115
- to_return(:status => 200, :body => 'pesapal_response_data=COMPLETED')
114
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=COMPLETED')
116
115
  expect(@pesapal.ipn_listener('CHANGE', 'merchant_reference', 'transaction_tracking_id')).to eq({:status => 'COMPLETED', :response => 'pesapal_notification_type=CHANGE&pesapal_transaction_tracking_id=transaction_tracking_id&pesapal_merchant_reference=merchant_reference'})
117
116
  end
118
117
 
119
118
  it 'gets ipn response for failed status' do
120
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
121
- to_return(:status => 200, :body => 'pesapal_response_data=FAILED')
119
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=FAILED')
122
120
  expect(@pesapal.ipn_listener('CHANGE', 'merchant_reference', 'transaction_tracking_id')).to eq({:status => 'FAILED', :response => 'pesapal_notification_type=CHANGE&pesapal_transaction_tracking_id=transaction_tracking_id&pesapal_merchant_reference=merchant_reference'})
123
121
  end
124
122
 
125
123
  it 'gets ipn response for invalid status' do
126
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
127
- to_return(:status => 200, :body => 'pesapal_response_data=INVALID')
124
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=INVALID')
128
125
  expect(@pesapal.ipn_listener('CHANGE', 'merchant_reference', 'transaction_tracking_id')).to eq({:status => 'INVALID', :response => nil})
129
126
  end
130
127
  end
@@ -147,10 +144,7 @@ describe Pesapal::Merchant do
147
144
  end
148
145
 
149
146
  it 'sets credentials' do
150
- expect(@pesapal.config).to eq({ :callback_url => 'http://0.0.0.0:3000/pesapal/callback',
151
- :consumer_key => '<YOUR_CONSUMER_KEY>',
152
- :consumer_secret => '<YOUR_CONSUMER_SECRET>'
153
- })
147
+ expect(@pesapal.config).to eq(default_credentials)
154
148
  end
155
149
 
156
150
  it 'sets order details' do
@@ -166,10 +160,7 @@ describe Pesapal::Merchant do
166
160
  end
167
161
 
168
162
  it 'sets endpoints for environment' do
169
- expect(@pesapal.set_env :development).to eq({:postpesapaldirectorderv4 => 'http://demo.pesapal.com/API/PostPesapalDirectOrderV4',
170
- :querypaymentstatus=>'http://demo.pesapal.com/API/QueryPaymentStatus',
171
- :querypaymentdetails=>'http://demo.pesapal.com/API/QueryPaymentDetails'
172
- })
163
+ expect(@pesapal.set_env :development).to eq(demo_endpoints)
173
164
  end
174
165
  end
175
166
 
@@ -192,36 +183,39 @@ describe Pesapal::Merchant do
192
183
 
193
184
  describe '#query_payment_status' do
194
185
 
186
+ before :each do
187
+ @request = stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/)
188
+ end
189
+
195
190
  it 'gets pending payment status' do
196
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
197
- to_return(:status => 200, :body => 'pesapal_response_data=PENDING')
191
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=PENDING')
198
192
  expect(@pesapal.query_payment_status('merchant_reference', 'transaction_tracking_id')).to eq('PENDING')
199
193
  end
200
194
 
201
195
  it 'gets completed payment status' do
202
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
203
- to_return(:status => 200, :body => 'pesapal_response_data=COMPLETED')
196
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=COMPLETED')
204
197
  expect(@pesapal.query_payment_status('merchant_reference', 'transaction_tracking_id')).to eq('COMPLETED')
205
198
  end
206
199
 
207
200
  it 'gets failed payment status' do
208
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
209
- to_return(:status => 200, :body => 'pesapal_response_data=FAILED')
201
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=FAILED')
210
202
  expect(@pesapal.query_payment_status('merchant_reference', 'transaction_tracking_id')).to eq('FAILED')
211
203
  end
212
204
 
213
205
  it 'gets invalid payment status' do
214
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
215
- to_return(:status => 200, :body => 'pesapal_response_data=INVALID')
206
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=INVALID')
216
207
  expect(@pesapal.query_payment_status('merchant_reference', 'transaction_tracking_id')).to eq('INVALID')
217
208
  end
218
209
  end
219
210
 
220
211
  describe '#query_payment_details' do
221
212
 
213
+ before :each do
214
+ @request = stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentDetails\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/)
215
+ end
216
+
222
217
  it 'gets pending payment details' do
223
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentDetails\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
224
- to_return(:status => 200, :body => 'pesapal_response_data=transaction_tracking_id,payment_method,payment_status,merchant_reference')
218
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=transaction_tracking_id,payment_method,payment_status,merchant_reference')
225
219
  expect(@pesapal.query_payment_details('merchant_reference', 'transaction_tracking_id')).to eq({ :method => 'payment_method',
226
220
  :status => 'payment_status',
227
221
  :merchant_reference => 'merchant_reference',
@@ -232,27 +226,27 @@ describe Pesapal::Merchant do
232
226
 
233
227
  describe '#ipn_listener' do
234
228
 
229
+ before :each do
230
+ @request = stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/)
231
+ end
232
+
235
233
  it 'gets ipn response for pending status' do
236
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
237
- to_return(:status => 200, :body => 'pesapal_response_data=PENDING')
234
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=PENDING')
238
235
  expect(@pesapal.ipn_listener('CHANGE', 'merchant_reference', 'transaction_tracking_id')).to eq({:status => 'PENDING', :response => nil})
239
236
  end
240
237
 
241
238
  it 'gets ipn response for completed status' do
242
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
243
- to_return(:status => 200, :body => 'pesapal_response_data=COMPLETED')
239
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=COMPLETED')
244
240
  expect(@pesapal.ipn_listener('CHANGE', 'merchant_reference', 'transaction_tracking_id')).to eq({:status => 'COMPLETED', :response => 'pesapal_notification_type=CHANGE&pesapal_transaction_tracking_id=transaction_tracking_id&pesapal_merchant_reference=merchant_reference'})
245
241
  end
246
242
 
247
243
  it 'gets ipn response for failed status' do
248
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
249
- to_return(:status => 200, :body => 'pesapal_response_data=FAILED')
244
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=FAILED')
250
245
  expect(@pesapal.ipn_listener('CHANGE', 'merchant_reference', 'transaction_tracking_id')).to eq({:status => 'FAILED', :response => 'pesapal_notification_type=CHANGE&pesapal_transaction_tracking_id=transaction_tracking_id&pesapal_merchant_reference=merchant_reference'})
251
246
  end
252
247
 
253
248
  it 'gets ipn response for invalid status' do
254
- stub_request(:get, /http:\/\/demo.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
255
- to_return(:status => 200, :body => 'pesapal_response_data=INVALID')
249
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=INVALID')
256
250
  expect(@pesapal.ipn_listener('CHANGE', 'merchant_reference', 'transaction_tracking_id')).to eq({:status => 'INVALID', :response => nil})
257
251
  end
258
252
  end
@@ -275,10 +269,7 @@ describe Pesapal::Merchant do
275
269
  end
276
270
 
277
271
  it 'sets credentials' do
278
- expect(@pesapal.config).to eq({ :callback_url => 'http://0.0.0.0:3000/pesapal/callback',
279
- :consumer_key => '<YOUR_CONSUMER_KEY>',
280
- :consumer_secret => '<YOUR_CONSUMER_SECRET>'
281
- })
272
+ expect(@pesapal.config).to eq(default_credentials)
282
273
  end
283
274
 
284
275
  it 'sets order details' do
@@ -294,10 +285,7 @@ describe Pesapal::Merchant do
294
285
  end
295
286
 
296
287
  it 'sets endpoints for environment' do
297
- expect(@pesapal.set_env :production).to eq({:postpesapaldirectorderv4 => 'https://www.pesapal.com/API/PostPesapalDirectOrderV4',
298
- :querypaymentstatus=>'https://www.pesapal.com/API/QueryPaymentStatus',
299
- :querypaymentdetails=>'https://www.pesapal.com/API/QueryPaymentDetails'
300
- })
288
+ expect(@pesapal.set_env :production).to eq(production_endpoints)
301
289
  end
302
290
  end
303
291
 
@@ -320,36 +308,39 @@ describe Pesapal::Merchant do
320
308
 
321
309
  describe '#query_payment_status' do
322
310
 
311
+ before :each do
312
+ @request = stub_request(:get, /https:\/\/www.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/)
313
+ end
314
+
323
315
  it 'gets pending payment status' do
324
- stub_request(:get, /https:\/\/www.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
325
- to_return(:status => 200, :body => 'pesapal_response_data=PENDING')
316
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=PENDING')
326
317
  expect(@pesapal.query_payment_status('merchant_reference', 'transaction_tracking_id')).to eq('PENDING')
327
318
  end
328
319
 
329
320
  it 'gets completed payment status' do
330
- stub_request(:get, /https:\/\/www.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
331
- to_return(:status => 200, :body => 'pesapal_response_data=COMPLETED')
321
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=COMPLETED')
332
322
  expect(@pesapal.query_payment_status('merchant_reference', 'transaction_tracking_id')).to eq('COMPLETED')
333
323
  end
334
324
 
335
325
  it 'gets failed payment status' do
336
- stub_request(:get, /https:\/\/www.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
337
- to_return(:status => 200, :body => 'pesapal_response_data=FAILED')
326
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=FAILED')
338
327
  expect(@pesapal.query_payment_status('merchant_reference', 'transaction_tracking_id')).to eq('FAILED')
339
328
  end
340
329
 
341
330
  it 'gets invalid payment status' do
342
- stub_request(:get, /https:\/\/www.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
343
- to_return(:status => 200, :body => 'pesapal_response_data=INVALID')
331
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=INVALID')
344
332
  expect(@pesapal.query_payment_status('merchant_reference', 'transaction_tracking_id')).to eq('INVALID')
345
333
  end
346
334
  end
347
335
 
348
336
  describe '#query_payment_details' do
349
337
 
338
+ before :each do
339
+ @request = stub_request(:get, /https:\/\/www.pesapal.com\/API\/QueryPaymentDetails\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/)
340
+ end
341
+
350
342
  it 'gets pending payment details' do
351
- stub_request(:get, /https:\/\/www.pesapal.com\/API\/QueryPaymentDetails\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
352
- to_return(:status => 200, :body => 'pesapal_response_data=transaction_tracking_id,payment_method,payment_status,merchant_reference')
343
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=transaction_tracking_id,payment_method,payment_status,merchant_reference')
353
344
  expect(@pesapal.query_payment_details('merchant_reference', 'transaction_tracking_id')).to eq({ :method => 'payment_method',
354
345
  :status => 'payment_status',
355
346
  :merchant_reference => 'merchant_reference',
@@ -360,29 +351,52 @@ describe Pesapal::Merchant do
360
351
 
361
352
  describe '#ipn_listener' do
362
353
 
354
+ before :each do
355
+ @request = stub_request(:get, /https:\/\/www.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/)
356
+ end
357
+
363
358
  it 'gets ipn response for pending status' do
364
- stub_request(:get, /https:\/\/www.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
365
- to_return(:status => 200, :body => 'pesapal_response_data=PENDING')
359
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=PENDING')
366
360
  expect(@pesapal.ipn_listener('CHANGE', 'merchant_reference', 'transaction_tracking_id')).to eq({:status => 'PENDING', :response => nil})
367
361
  end
368
362
 
369
363
  it 'gets ipn response for completed status' do
370
- stub_request(:get, /https:\/\/www.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
371
- to_return(:status => 200, :body => 'pesapal_response_data=COMPLETED')
364
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=COMPLETED')
372
365
  expect(@pesapal.ipn_listener('CHANGE', 'merchant_reference', 'transaction_tracking_id')).to eq({:status => 'COMPLETED', :response => 'pesapal_notification_type=CHANGE&pesapal_transaction_tracking_id=transaction_tracking_id&pesapal_merchant_reference=merchant_reference'})
373
366
  end
374
367
 
375
368
  it 'gets ipn response for failed status' do
376
- stub_request(:get, /https:\/\/www.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
377
- to_return(:status => 200, :body => 'pesapal_response_data=FAILED')
369
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=FAILED')
378
370
  expect(@pesapal.ipn_listener('CHANGE', 'merchant_reference', 'transaction_tracking_id')).to eq({:status => 'FAILED', :response => 'pesapal_notification_type=CHANGE&pesapal_transaction_tracking_id=transaction_tracking_id&pesapal_merchant_reference=merchant_reference'})
379
371
  end
380
372
 
381
373
  it 'gets ipn response for invalid status' do
382
- stub_request(:get, /https:\/\/www.pesapal.com\/API\/QueryPaymentStatus\?oauth_consumer_key=.*oauth_nonce=.*oauth_signature=.*oauth_signature_method=HMAC-SHA1&oauth_timestamp.*oauth_version=1.0&pesapal_merchant_reference=.*&pesapal_transaction_tracking_id=.*/).
383
- to_return(:status => 200, :body => 'pesapal_response_data=INVALID')
374
+ @request.to_return(:status => 200, :body => 'pesapal_response_data=INVALID')
384
375
  expect(@pesapal.ipn_listener('CHANGE', 'merchant_reference', 'transaction_tracking_id')).to eq({:status => 'INVALID', :response => nil})
385
376
  end
386
377
  end
387
378
  end
379
+
380
+ private
381
+
382
+ def default_credentials
383
+ { :callback_url => 'http://0.0.0.0:3000/pesapal/callback',
384
+ :consumer_key => '<YOUR_CONSUMER_KEY>',
385
+ :consumer_secret => '<YOUR_CONSUMER_SECRET>'
386
+ }
387
+ end
388
+
389
+ def demo_endpoints
390
+ { :postpesapaldirectorderv4 => 'http://demo.pesapal.com/API/PostPesapalDirectOrderV4',
391
+ :querypaymentstatus=>'http://demo.pesapal.com/API/QueryPaymentStatus',
392
+ :querypaymentdetails=>'http://demo.pesapal.com/API/QueryPaymentDetails'
393
+ }
394
+ end
395
+
396
+ def production_endpoints
397
+ { :postpesapaldirectorderv4 => 'https://www.pesapal.com/API/PostPesapalDirectOrderV4',
398
+ :querypaymentstatus=>'https://www.pesapal.com/API/QueryPaymentStatus',
399
+ :querypaymentdetails=>'https://www.pesapal.com/API/QueryPaymentDetails'
400
+ }
401
+ end
388
402
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pesapal
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.5
4
+ version: 1.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Job King'ori Maina
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-04-19 00:00:00.000000000 Z
11
+ date: 2014-04-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -137,7 +137,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
137
137
  requirements:
138
138
  - - '>='
139
139
  - !ruby/object:Gem::Version
140
- version: '0'
140
+ version: 1.9.2
141
141
  required_rubygems_version: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - '>='