mpayer_ruby 0.0.07 → 0.0.08

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: 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