poisol 0.1.10 → 0.1.12

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: 34bc0f6127f9644eba49c984a2ef64d71e1020ed
4
- data.tar.gz: 899e509e87aa934d351895a465cb2206242decdc
3
+ metadata.gz: ee16b286e243a86f30e87b1de0b27585331c96fa
4
+ data.tar.gz: e8212555a5a9ff5594ff96b16741ca507dee9d43
5
5
  SHA512:
6
- metadata.gz: d310b68c98b9ce80f4f3869b6d4fd140b46e6eedf3d1202661a3f88d53175fa41a287a7fa0921a08885ffd4aecb2883792981e9d907a10ed0c047e5f45662fdd
7
- data.tar.gz: e4e2669aa1bd819a962aebc537b2a1518dbd1c2ad0d9d4725d90a4b2d15705fb36a08d7c72f1ffcffad4da9668344f0ea2d2a6b96acfa2ee4048b869eced1fc6
6
+ metadata.gz: 87e639953ef98746337f5955d66d7c5e8d2100eb88b849032e868d580aa0a37f34ee0ede6fb539f76baf7b124993892c43a9617b7084eb34febe270e689e29ed
7
+ data.tar.gz: a517c74ddf3a0eac9559c6a6fdd9becf7c2be607dc1b45f59a7bad11ff80b010d78a327f2a514b31c029e87c0c89ab4c13346d39e4b3defea05bfe0256154606
@@ -1,6 +1,7 @@
1
+ require 'webrick'
2
+ require 'rest-client'
1
3
  require 'active_support/all'
2
-
3
- Dir["#{File.dirname(__FILE__)}/poisol/**/*.rb"].each { |f| require(f) }
4
+ require 'poisol/all'
4
5
 
5
6
  module Poisol
6
7
  extend self
@@ -0,0 +1,9 @@
1
+ require_relative 'extensions.rb'
2
+ require_relative 'utils.rb'
3
+ require_relative 'domain.rb'
4
+ require_relative 'server.rb'
5
+ require_relative 'stub_factory.rb'
6
+ require_relative 'stub_config.rb'
7
+ require_relative 'stub.rb'
8
+ require_relative 'stub_mapper.rb'
9
+ require_relative 'version.rb'
@@ -0,0 +1,2 @@
1
+ require_relative 'extensions/hash.rb'
2
+ require_relative 'extensions/webmock_extensions.rb'
@@ -1,7 +1,4 @@
1
- require 'webrick'
2
-
3
-
4
- module Poisol
1
+ module Poisol
5
2
 
6
3
  class ExtendedServer < WEBrick::HTTPServlet::AbstractServlet
7
4
  def do_GET req,res
@@ -0,0 +1,13 @@
1
+ require_relative 'stub/request/query_builder.rb'
2
+ require_relative 'stub/request/request_body_builder.rb'
3
+ require_relative 'stub/request/url_builder.rb'
4
+
5
+ require_relative 'stub/response/array_response_body.rb'
6
+ require_relative 'stub/response/response_body_builder.rb'
7
+ require_relative 'stub/response/status_builder.rb'
8
+
9
+ require_relative 'stub/build_stub.rb'
10
+ require_relative 'stub/stub.rb'
11
+ require_relative 'stub/stub_builder_class.rb'
12
+ require_relative 'stub/stub_builder_instance.rb'
13
+ require_relative 'stub/stub_builder.rb'
@@ -1,8 +1,4 @@
1
- require_relative "build_stub"
2
- require_relative "stub_builder_class"
3
- require_relative "stub_builder_instance"
4
-
5
- module Poisol
1
+ module Poisol
6
2
  class StubBuilder
7
3
  include BuildStub
8
4
  include StubInstance
@@ -1,11 +1,6 @@
1
- require_relative "request/query_builder"
2
- require_relative "request/request_body_builder"
3
- require_relative "request/url_builder"
4
- require_relative "response/response_body_builder"
5
- require_relative "response/status_builder"
6
- module Poisol
1
+ module Poisol
7
2
  module StubClassBuilder
8
- include RequestBodyBuilder
3
+ include RequestBodyBuilder
9
4
  include ResponseBodyBuilder
10
5
  include UrlBuilder
11
6
  include QueryBuilder
@@ -0,0 +1,2 @@
1
+ require_relative 'stub_config/stub_config.rb'
2
+ require_relative 'stub_config/stub_config_builder.rb'
@@ -1,5 +1,4 @@
1
- require_relative "stub/stub_builder"
2
- module Poisol
1
+ module Poisol
3
2
  class StubFactory
4
3
  def build folder
5
4
  @folder = folder.chomp '/'
@@ -0,0 +1,3 @@
1
+ require_relative 'stub_mapper/request_matcher.rb'
2
+ require_relative 'stub_mapper/response_mapper.rb'
3
+ require_relative 'stub_mapper/stubs.rb'
@@ -1,6 +1,6 @@
1
1
  module Poisol
2
2
  module RequestMatcher
3
- extend self
3
+ extend self
4
4
 
5
5
  def matches? actual_req,stub_req
6
6
  type_matches?(actual_req,stub_req) &&
@@ -1,5 +1,4 @@
1
- require_relative './request_matcher'
2
- module Poisol
1
+ module Poisol
3
2
  module Stubs
4
3
  extend self
5
4
 
@@ -7,9 +6,9 @@ module Poisol
7
6
  @stubs
8
7
  end
9
8
 
10
- def add stub
9
+ def add stub
11
10
  @stubs = [] if @stubs.blank?
12
- @stubs << stub
11
+ @stubs << stub
13
12
  end
14
13
 
15
14
  def reset
@@ -18,14 +17,14 @@ module Poisol
18
17
 
19
18
  def get_match actual_request
20
19
  return nil if @stubs.blank?
21
- matches = @stubs.select{|stub| Poisol::RequestMatcher.matches? actual_request,stub.request}
22
- return nil unless matches.present?
20
+ matches = @stubs.select{|stub| RequestMatcher.matches? actual_request,stub.request}
21
+ return nil unless matches.present?
23
22
  match = matches.last
24
23
  match.called_count = match.called_count + 1
25
24
  return match
26
25
  end
27
26
 
28
- def unused
27
+ def unused
29
28
  @stubs.select{|stub| stub.called_count ==0}
30
29
  end
31
30
 
@@ -0,0 +1,3 @@
1
+ require_relative 'utils/file_util.rb'
2
+ require_relative 'utils/logger.rb'
3
+ require_relative 'utils/parse.rb'
@@ -25,11 +25,7 @@ module Parse
25
25
  end
26
26
 
27
27
  def hash_to_concatenated_key_value hash
28
- concatenated_body = ""
29
- hash.each do |key,value|
30
- concatenated_body = concatenated_body + "#{key}=#{value}&"
31
- end
32
- concatenated_body.chomp('&')
28
+ RestClient::Utils.encode_query_string hash
33
29
  end
34
30
 
35
31
  end
@@ -0,0 +1,3 @@
1
+ module Poisol
2
+ VERSION = '0.1.12'
3
+ end
@@ -2,7 +2,10 @@ request:
2
2
  url: keyvalue
3
3
  method: post
4
4
  body:
5
- name: "sea"
5
+ name:
6
+ first: sea
7
+ last: gull
6
8
  age: 10
9
+ extra_info: 'none'
7
10
  response:
8
11
  body: '{"hi": 1}'
@@ -2,19 +2,25 @@ describe Poisol::Stub, "#key_value" do
2
2
 
3
3
  it "default request" do
4
4
  KeyValue.new.build()
5
- response = RestClient.post "http://localhost:3030/keyvalue","name=sea&age=10"
5
+ response = RestClient.post "http://localhost:3030/keyvalue","name[first]=sea&name[last]=gull&age=10&extra_info=none"
6
6
  expect(response.body).to eq({"hi"=>1}.to_json)
7
7
  end
8
8
 
9
9
  it "partial dynamic request" do
10
- KeyValue.new.by_name("ram").build()
11
- response = RestClient.post "http://localhost:3030/keyvalue","name=ram&age=10"
10
+ KeyValue.new.by_name({:first => "ram", :last => "kumar"}).build()
11
+ response = RestClient.post "http://localhost:3030/keyvalue","name[first]=ram&name[last]=kumar&age=10&extra_info=none"
12
12
  expect(response.body).to eq({"hi"=>1}.to_json)
13
13
  end
14
14
 
15
15
  it "dynamic request" do
16
- KeyValue.new.by_name("ram").by_age(11).build()
17
- response = RestClient.post "http://localhost:3030/keyvalue","name=ram&age=11"
16
+ KeyValue.new.by_name({:first => "ram", :last => "raj"}).by_age(11).build()
17
+ response = RestClient.post "http://localhost:3030/keyvalue","name[first]=ram&name[last]=raj&age=11&extra_info=none"
18
+ expect(response.body).to eq({"hi"=>1}.to_json)
19
+ end
20
+
21
+ it "dynamic request containing url encoded json data" do
22
+ KeyValue.new.by_name({:first => "ram", :last => "raj"}).by_age(11).by_extra_info('{"father": "sridhar", "mother": "sita"}').build()
23
+ response = RestClient.post "http://localhost:3030/keyvalue","name[first]=ram&name[last]=raj&age=11&extra_info=%7B%22father%22%3A+%22sridhar%22%2C+%22mother%22%3A+%22sita%22%7D"
18
24
  expect(response.body).to eq({"hi"=>1}.to_json)
19
25
  end
20
26
 
@@ -1,10 +1,9 @@
1
1
  require 'pry'
2
- require "rspec/expectations"
3
- require 'rest_client'
4
-
5
- require_relative '../lib/poisol'
6
-
2
+ require 'rspec/expectations'
7
3
  require 'simplecov'
4
+ require 'rest-client'
5
+ require 'poisol'
6
+
8
7
  SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
9
8
  SimpleCov::Formatter::HTMLFormatter
10
9
  ]
@@ -1,4 +1,3 @@
1
- require_relative "../../lib/poisol/stub_mapper/request_matcher"
2
1
  describe Poisol::RequestMatcher, "request matching" do
3
2
  it "match hashes" do
4
3
  hash1 = {"store_group_id"=>["5008"], "date"=>["2029-12-28"], "pr_discount_percentage"=>["0.00000"]}
@@ -0,0 +1,19 @@
1
+ describe Parse, 'parses hashes, yaml and much more' do
2
+ it 'simple hash to concatenated key value' do
3
+ sample = {:id => 1,:name => 'Arun'}
4
+ concatenated_key_value = Parse.hash_to_concatenated_key_value sample
5
+ expect(concatenated_key_value).to eq('id=1&name=Arun')
6
+ end
7
+
8
+ it 'nested hash with json data to concatenated key value' do
9
+ sample = {:id => 1, :name => { :first => 'Arun', :last => 'S'}}
10
+ concatenated_key_value = Parse.hash_to_concatenated_key_value sample
11
+ expect(concatenated_key_value).to eq('id=1&name[first]=Arun&name[last]=S')
12
+ end
13
+
14
+ it 'hash with json data to concatenated key value' do
15
+ sample = {:data => '{"id": 10, "name": {"first": "Arun", "last": "S"}}'}
16
+ concatenated_key_value = Parse.hash_to_concatenated_key_value sample
17
+ expect(concatenated_key_value).to eq('data=%7B%22id%22%3A+10%2C+%22name%22%3A+%7B%22first%22%3A+%22Arun%22%2C+%22last%22%3A+%22S%22%7D%7D')
18
+ end
19
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: poisol
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.10
4
+ version: 0.1.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Deepak
@@ -81,27 +81,27 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: webrick
84
+ name: rest-client
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ">="
87
+ - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
89
+ version: 2.0.0
90
+ type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ">="
94
+ - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 2.0.0
97
97
  - !ruby/object:Gem::Dependency
98
- name: rest-client
98
+ name: webrick
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
103
  version: '0'
104
- type: :development
104
+ type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
@@ -112,14 +112,14 @@ dependencies:
112
112
  name: activesupport
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - "~>"
116
116
  - !ruby/object:Gem::Version
117
117
  version: 4.2.0
118
- type: :development
118
+ type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - "~>"
123
123
  - !ruby/object:Gem::Version
124
124
  version: 4.2.0
125
125
  description: HTTP stub as DSL
@@ -130,10 +130,13 @@ extra_rdoc_files: []
130
130
  files:
131
131
  - README.md
132
132
  - lib/poisol.rb
133
+ - lib/poisol/all.rb
133
134
  - lib/poisol/domain.rb
135
+ - lib/poisol/extensions.rb
134
136
  - lib/poisol/extensions/hash.rb
135
137
  - lib/poisol/extensions/webmock_extensions.rb
136
138
  - lib/poisol/server.rb
139
+ - lib/poisol/stub.rb
137
140
  - lib/poisol/stub/build_stub.rb
138
141
  - lib/poisol/stub/request/query_builder.rb
139
142
  - lib/poisol/stub/request/request_body_builder.rb
@@ -145,15 +148,19 @@ files:
145
148
  - lib/poisol/stub/stub_builder.rb
146
149
  - lib/poisol/stub/stub_builder_class.rb
147
150
  - lib/poisol/stub/stub_builder_instance.rb
151
+ - lib/poisol/stub_config.rb
148
152
  - lib/poisol/stub_config/stub_config.rb
149
153
  - lib/poisol/stub_config/stub_config_builder.rb
150
154
  - lib/poisol/stub_factory.rb
155
+ - lib/poisol/stub_mapper.rb
151
156
  - lib/poisol/stub_mapper/request_matcher.rb
152
157
  - lib/poisol/stub_mapper/response_mapper.rb
153
158
  - lib/poisol/stub_mapper/stubs.rb
159
+ - lib/poisol/utils.rb
154
160
  - lib/poisol/utils/file_util.rb
155
161
  - lib/poisol/utils/logger.rb
156
162
  - lib/poisol/utils/parse.rb
163
+ - lib/poisol/version.rb
157
164
  - spec/data/domain/first/domain.yml
158
165
  - spec/data/domain/first/first.yml
159
166
  - spec/data/domain/second/domain.yml
@@ -193,6 +200,7 @@ files:
193
200
  - spec/unit/request_matcher_spec.rb
194
201
  - spec/unit/stub_spec.rb
195
202
  - spec/unit/stubs_spec.rb
203
+ - spec/unit/utils/parse_spec.rb
196
204
  homepage: https://github.com/paramadeep/poisol
197
205
  licenses:
198
206
  - MIT
@@ -257,3 +265,4 @@ test_files:
257
265
  - spec/unit/request_matcher_spec.rb
258
266
  - spec/unit/stub_spec.rb
259
267
  - spec/unit/stubs_spec.rb
268
+ - spec/unit/utils/parse_spec.rb