poisol 0.1.10 → 0.1.12
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/poisol.rb +3 -2
- data/lib/poisol/all.rb +9 -0
- data/lib/poisol/extensions.rb +2 -0
- data/lib/poisol/server.rb +1 -4
- data/lib/poisol/stub.rb +13 -0
- data/lib/poisol/stub/stub_builder.rb +1 -5
- data/lib/poisol/stub/stub_builder_class.rb +2 -7
- data/lib/poisol/stub_config.rb +2 -0
- data/lib/poisol/stub_factory.rb +1 -2
- data/lib/poisol/stub_mapper.rb +3 -0
- data/lib/poisol/stub_mapper/request_matcher.rb +1 -1
- data/lib/poisol/stub_mapper/stubs.rb +6 -7
- data/lib/poisol/utils.rb +3 -0
- data/lib/poisol/utils/parse.rb +1 -5
- data/lib/poisol/version.rb +3 -0
- data/spec/data/main/key_value/key_value.yml +4 -1
- data/spec/functional/key_value/implicit_inclusion_spec.rb +11 -5
- data/spec/spec_helper.rb +4 -5
- data/spec/unit/request_matcher_spec.rb +0 -1
- data/spec/unit/utils/parse_spec.rb +19 -0
- metadata +21 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ee16b286e243a86f30e87b1de0b27585331c96fa
|
4
|
+
data.tar.gz: e8212555a5a9ff5594ff96b16741ca507dee9d43
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 87e639953ef98746337f5955d66d7c5e8d2100eb88b849032e868d580aa0a37f34ee0ede6fb539f76baf7b124993892c43a9617b7084eb34febe270e689e29ed
|
7
|
+
data.tar.gz: a517c74ddf3a0eac9559c6a6fdd9becf7c2be607dc1b45f59a7bad11ff80b010d78a327f2a514b31c029e87c0c89ab4c13346d39e4b3defea05bfe0256154606
|
data/lib/poisol.rb
CHANGED
data/lib/poisol/all.rb
ADDED
@@ -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'
|
data/lib/poisol/server.rb
CHANGED
data/lib/poisol/stub.rb
ADDED
@@ -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,11 +1,6 @@
|
|
1
|
-
|
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
|
data/lib/poisol/stub_factory.rb
CHANGED
@@ -1,5 +1,4 @@
|
|
1
|
-
|
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|
|
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
|
|
data/lib/poisol/utils.rb
ADDED
data/lib/poisol/utils/parse.rb
CHANGED
@@ -25,11 +25,7 @@ module Parse
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def hash_to_concatenated_key_value hash
|
28
|
-
|
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
|
@@ -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
|
|
data/spec/spec_helper.rb
CHANGED
@@ -1,10 +1,9 @@
|
|
1
1
|
require 'pry'
|
2
|
-
require
|
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
|
]
|
@@ -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.
|
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:
|
84
|
+
name: rest-client
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
90
|
-
type: :
|
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:
|
96
|
+
version: 2.0.0
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
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: :
|
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: :
|
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
|