pesapal 1.5.5 → 1.5.6

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.
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
  - - '>='