mpayer_ruby 0.0.07 → 0.0.08

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: 98643635b27278dcc63b0189140e33034806a282
4
- data.tar.gz: a32fad68dfa94e2123f87071577d0fa2ea09edce
3
+ metadata.gz: 3224e1ac885fb581df6f076111b3dbd33dac6346
4
+ data.tar.gz: bce968afeff48ff5291978d889aa66f1f75f953f
5
5
  SHA512:
6
- metadata.gz: 3457d56e3abf4da4ad32f253e9ff2f625eee51c6e00e350682afc76448118cf25e0b3ab9eee76e39c73e05a8016d542055dc1eccbb353f84d4f28e009f2f0825
7
- data.tar.gz: d0444f329ee9fd7bfe3e7bc57b2d91e91ab99981f96766aa14dcbe7eae5074c5490a7c7ade85dd581181b0af57f90c408eda2dd05843a1ce9f982c5575b3d6a6
6
+ metadata.gz: 30ff19b50765460720f657c8890d7b357fd4e0624efb495fbec7ce7a5c28f966efe08fd2073a83c2d2ddef85b9771bda567a73867cbafec2b004dbd7f910624a
7
+ data.tar.gz: eb602d266e6f6b592c467a37de120804660f70c9b60b3e308bcf836e3b56abe01303d9e565364e5d8c85a10be95faeb75df7eddb4d09c681c98c6c332a382c15
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /pkg/
8
8
  /spec/reports/
9
9
  /tmp/
10
+ /lib/mpayer_ruby/support/fake_mpayer/**/*.json
data/Guardfile CHANGED
@@ -26,6 +26,7 @@
26
26
  guard :minitest do
27
27
  # with Minitest::Unit
28
28
  watch(%r{^test/(.*)\/?(.*)_test\.rb$})
29
+ watch(%r{^test/support/(.*)\/?(.*)\.*$})
29
30
  watch(%r{^lib/(.*/)?([^/]+)\.rb$}) { |m| "test/#{m[1]}#{m[2]}_test.rb" }
30
31
  watch(%r{^test/test_helper\.rb$}) { 'test' }
31
32
 
data/README.md CHANGED
@@ -208,6 +208,22 @@ After checking out the repo, run `bin/setup` to install dependencies. Then, run
208
208
 
209
209
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release` to create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
210
210
 
211
+ ## Testing
212
+ mpayer_ruby has used `webmock` gem to stub out real request to mpayer.co.ke. In order to make tests work, first generate the json api on file using the rake task
213
+
214
+ $ rake load:mpayer
215
+
216
+ This will generate local copies of mpayer endpoints for testing. Should work well for unit testing.
217
+
218
+ WHen you want to run test against real mpayer.co.ke for real responses, run it with the environmental variable `CI_TEST=ON` as follows
219
+
220
+ $ CI_TEST=ON rake test
221
+
222
+ or
223
+
224
+ $ CI_TEST=ON bundle exec guard
225
+
226
+
211
227
  ## Todo
212
228
  1. Add Webmock for faster / localised test or sinatra app method
213
229
  2. Add versioning
data/Rakefile CHANGED
@@ -6,4 +6,15 @@ Rake::TestTask.new do |task|
6
6
  task.pattern = 'test/**/*_test.rb'
7
7
  end
8
8
 
9
+ namespace :load do
10
+ desc "Load Mpayer to local from Test run for offline testing"
11
+ task :mpayer do
12
+ # Delete current files first
13
+ File.delete(*Dir.glob('lib/mpayer_ruby/support/**/*.json'))
14
+ ENV['LOAD_MPAYER'] = 'true'
15
+ Rake::Task["test"].invoke
16
+ end
17
+ end
18
+
19
+
9
20
  task :default => :test
data/lib/mpayer_ruby.rb CHANGED
@@ -1,14 +1,14 @@
1
1
  require "wsse"
2
2
  require "httparty"
3
3
  require "hashie"
4
- require "mpayer/version"
5
- require "mpayer/configuration"
6
- require "mpayer/fetch"
7
- require "mpayer/endpoints/endpoint"
8
- require "mpayer/endpoints/client"
9
- require "mpayer/endpoints/transaction"
10
- require "mpayer/endpoints/account"
11
- require "mpayer/endpoints/payable"
4
+ require "mpayer_ruby/version"
5
+ require "mpayer_ruby/configuration"
6
+ require "mpayer_ruby/fetch"
7
+ require "mpayer_ruby/endpoints/endpoint"
8
+ require "mpayer_ruby/endpoints/client"
9
+ require "mpayer_ruby/endpoints/transaction"
10
+ require "mpayer_ruby/endpoints/account"
11
+ require "mpayer_ruby/endpoints/payable"
12
12
 
13
13
  # begin
14
14
  # require "pry"
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -0,0 +1,42 @@
1
+ module Mpayer
2
+ class Fetch
3
+ include HTTParty
4
+ # base_uri "http://beta.json-generator.com"
5
+ base_uri "https://app.mpayer.co.ke/api/"
6
+ parser proc {|data| Hashie::Mash.new(response: (JSON.parse(data) rescue {data:data}.to_json) ).response}
7
+ format :json
8
+ headers
9
+
10
+ class << self
11
+ def headers
12
+ Mpayer.configuration.header.merge!(super)
13
+ end
14
+
15
+ %w(get put post delete).each do |m|
16
+ define_method m do |path, options={}, &block|
17
+ res = perform_request Net::HTTP::Put, path, options, &block if m == 'put'
18
+ res = perform_request Net::HTTP::Get, path, options, &block if m == 'get'
19
+ res = perform_request Net::HTTP::Post, path, options, &block if m == 'post'
20
+ res = perform_request Net::HTTP::Delete, path, options, &block if m == 'delete'
21
+ save_json(res) if load_json?
22
+ res
23
+ end
24
+ end
25
+
26
+ def save_json(response)
27
+ request_method = response.request.http_method.name.split('::').last.upcase
28
+ file_path = response.request.path.to_s
29
+ slash,model,*file_name = file_path.split('/')
30
+ file_location = "lib/mpayer_ruby/support/fake_mpayer/#{model}/#{request_method}_#{file_name.join('_')}.json"
31
+ File.write(file_location, response.body)
32
+ end
33
+
34
+ def load_json?
35
+ # load JSON if WebMock is off while testing and only in local env with load mpayer turned on
36
+ defined?(WebMock).nil? and ENV['CI_TEST'].nil? and defined?(Minitest) and ENV['LOAD_MPAYER'] == "true"
37
+ end
38
+
39
+ end
40
+
41
+ end
42
+ end
@@ -0,0 +1,25 @@
1
+ require 'sinatra/base'
2
+ require 'tilt/erb'
3
+
4
+ class FakeMpayer < Sinatra::Base
5
+
6
+ [ :get, :post, :put, :delete ].each do |method|
7
+ send method, /.*/ do
8
+ if (request.env['HTTP_X_WSSE'].empty? rescue true)
9
+ [200, {}, [{base:["Authentication Failed"]}.to_json]]
10
+ else
11
+ slash,api,model,*path = request.path_info.split('/')
12
+ json_response 200, "#{model}/#{request.request_method}_#{path.join('_')}.json"
13
+ end
14
+ end
15
+ end
16
+
17
+ private
18
+
19
+ def json_response(response_code, file_name)
20
+ content_type :json
21
+ status response_code
22
+ headers "content-type"=>["application/json; charset=utf-8"]
23
+ erb File.open(File.dirname(__FILE__) + '/fake_mpayer/' + file_name, 'rb').read
24
+ end
25
+ end
File without changes
@@ -0,0 +1,3 @@
1
+ module Mpayer
2
+ VERSION = "0.0.08"
3
+ end
data/mpayer_ruby.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  # coding: utf-8
2
2
  lib = File.expand_path('../lib', __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'mpayer/version'
4
+ require 'mpayer_ruby/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
7
  spec.name = "mpayer_ruby"
@@ -38,6 +38,8 @@ Gem::Specification.new do |spec|
38
38
  spec.add_development_dependency "pry-nav", "~> 0.2"
39
39
  spec.add_development_dependency "pry-alias", "~> 0.0"
40
40
  spec.add_development_dependency "coveralls", '~> 0'
41
+ spec.add_development_dependency "webmock", '~> 1.21'
42
+ spec.add_development_dependency "sinatra", '~> 1.4'
41
43
 
42
44
  spec.add_dependency 'httparty', "~> 0.13"
43
45
  spec.add_dependency 'wsse', "~> 0.0"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mpayer_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.07
4
+ version: 0.0.08
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kariuki Gathitu
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-05-25 00:00:00.000000000 Z
11
+ date: 2015-05-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -150,6 +150,34 @@ dependencies:
150
150
  - - "~>"
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: webmock
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - "~>"
158
+ - !ruby/object:Gem::Version
159
+ version: '1.21'
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - "~>"
165
+ - !ruby/object:Gem::Version
166
+ version: '1.21'
167
+ - !ruby/object:Gem::Dependency
168
+ name: sinatra
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '1.4'
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: '1.4'
153
181
  - !ruby/object:Gem::Dependency
154
182
  name: httparty
155
183
  requirement: !ruby/object:Gem::Requirement
@@ -211,15 +239,20 @@ files:
211
239
  - bin/console
212
240
  - bin/setup
213
241
  - lib/mpayer-ruby.rb
214
- - lib/mpayer/configuration.rb
215
- - lib/mpayer/endpoints/account.rb
216
- - lib/mpayer/endpoints/client.rb
217
- - lib/mpayer/endpoints/endpoint.rb
218
- - lib/mpayer/endpoints/payable.rb
219
- - lib/mpayer/endpoints/transaction.rb
220
- - lib/mpayer/fetch.rb
221
- - lib/mpayer/version.rb
222
242
  - lib/mpayer_ruby.rb
243
+ - lib/mpayer_ruby/configuration.rb
244
+ - lib/mpayer_ruby/endpoints/account.rb
245
+ - lib/mpayer_ruby/endpoints/client.rb
246
+ - lib/mpayer_ruby/endpoints/endpoint.rb
247
+ - lib/mpayer_ruby/endpoints/payable.rb
248
+ - lib/mpayer_ruby/endpoints/transaction.rb
249
+ - lib/mpayer_ruby/fetch.rb
250
+ - lib/mpayer_ruby/support/fake_mpayer.rb
251
+ - lib/mpayer_ruby/support/fake_mpayer/accounts/.keep
252
+ - lib/mpayer_ruby/support/fake_mpayer/clients/.keep
253
+ - lib/mpayer_ruby/support/fake_mpayer/payables/.keep
254
+ - lib/mpayer_ruby/support/fake_mpayer/transactions/.keep
255
+ - lib/mpayer_ruby/version.rb
223
256
  - mpayer_ruby.gemspec
224
257
  homepage: https://github.com/kgathi2/mpayer_ruby
225
258
  licenses:
data/lib/mpayer/fetch.rb DELETED
@@ -1,17 +0,0 @@
1
- module Mpayer
2
- class Fetch
3
- include HTTParty
4
- # base_uri "http://beta.json-generator.com"
5
- base_uri "https://app.mpayer.co.ke/api/"
6
- parser proc {|data| Hashie::Mash.new(response: (JSON.parse(data) rescue {data:data}.to_json) ).response}
7
- format :json
8
- headers
9
-
10
- class << self
11
- def headers
12
- Mpayer.configuration.header.merge!(super)
13
- end
14
- end
15
-
16
- end
17
- end
@@ -1,3 +0,0 @@
1
- module Mpayer
2
- VERSION = "0.0.07"
3
- end