poisol 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/poisol/stub_config.rb +22 -13
- data/lib/poisol/template/base_template.rb +2 -13
- data/lib/poisol/template/build.rb +31 -0
- data/lib/poisol/template/request_handler.rb +10 -8
- data/lib/poisol/utils/parse.rb +9 -1
- data/spec/functional/key_value/explicit_inclusion_spec.rb +15 -0
- data/spec/functional/key_value/implicit_inclusion_spec.rb +21 -0
- metadata +6 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d0b8aceb83226c0a5ab960181449ee1c97222aad
|
4
|
+
data.tar.gz: 3e9a45c5b4a17d5495f619b5019cbadde2f228f1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5949c61a61ae33352d30dd4619bc2fa3357c69afc570dd1a761d0d446b6dd8ce3c558e9e3d9121c3f093440f50c634e23af8e06011a3ebb02ff8b9c72cbb9264
|
7
|
+
data.tar.gz: 8b034551be7568755e2f0d5f2165e20a31d60874426b9d71aae41b3add80268d2d9f0b16122320989879c6b48c6e4c1a68992d531e17c2a8cfde67ef5ddf32f1
|
data/lib/poisol/stub_config.rb
CHANGED
@@ -2,8 +2,8 @@ class StubConfig
|
|
2
2
|
attr_reader :response,:request
|
3
3
|
|
4
4
|
def with_file file_name
|
5
|
-
@
|
6
|
-
@
|
5
|
+
@config_yml_file = file_name
|
6
|
+
@config_yml = Parse.yaml_file file_name
|
7
7
|
self
|
8
8
|
end
|
9
9
|
|
@@ -26,9 +26,11 @@ class StubConfig
|
|
26
26
|
private
|
27
27
|
def build_request
|
28
28
|
@request = Request.new
|
29
|
-
@request.url = @
|
30
|
-
@request.type = @
|
31
|
-
@request.query = @
|
29
|
+
@request.url = @config_yml["request"]["url"]
|
30
|
+
@request.type = @config_yml["request"]["type"].intern
|
31
|
+
@request.query = @config_yml["request"]["query"]
|
32
|
+
include_explicit_only = @config_yml["request"]["include_explicit_only"]
|
33
|
+
@request.include_explicit_only = include_explicit_only.blank? ? false : include_explicit_only
|
32
34
|
@request.body = @is_inline? get_inline_request_body : get_exploaded_request_body
|
33
35
|
end
|
34
36
|
|
@@ -39,29 +41,36 @@ class StubConfig
|
|
39
41
|
end
|
40
42
|
|
41
43
|
def handle_resonse_array_type
|
42
|
-
return if @
|
43
|
-
array_type = @
|
44
|
+
return if @config_yml["response"].nil?
|
45
|
+
array_type = @config_yml["response"]["array_type"]
|
44
46
|
@response.array_type = array_type.nil? ? "" : array_type
|
45
47
|
end
|
46
48
|
|
47
49
|
|
48
50
|
def get_inline_response_body
|
49
|
-
body = @
|
51
|
+
body = @config_yml["response"]["body"]
|
50
52
|
return (body.nil?) ? "": (Parse.json_to_hash body)
|
51
53
|
end
|
52
54
|
|
53
55
|
def get_inline_request_body
|
54
|
-
body = @
|
55
|
-
|
56
|
+
body = @config_yml["request"]["body"]
|
57
|
+
if body.nil?
|
58
|
+
return ""
|
59
|
+
elsif body.class.name == "String"
|
60
|
+
return Parse.json_to_hash body
|
61
|
+
else
|
62
|
+
@request.is_body_key_value = true
|
63
|
+
return body
|
64
|
+
end
|
56
65
|
end
|
57
66
|
|
58
67
|
def get_exploaded_request_body
|
59
|
-
request_file = "#{File.dirname @
|
68
|
+
request_file = "#{File.dirname @config_yml_file}/request.json"
|
60
69
|
return (File.exists? request_file) ? Parse.json_file_to_hash(request_file) : ""
|
61
70
|
end
|
62
71
|
|
63
72
|
def get_exploaded_response_body
|
64
|
-
response_file = "#{File.dirname @
|
73
|
+
response_file = "#{File.dirname @config_yml_file}/response.json"
|
65
74
|
return (File.exists? response_file)? Parse.json_file_to_hash(response_file) : ""
|
66
75
|
end
|
67
76
|
|
@@ -69,7 +78,7 @@ end
|
|
69
78
|
|
70
79
|
|
71
80
|
class Request
|
72
|
-
attr_accessor :url,:type,:query,:body
|
81
|
+
attr_accessor :url,:type,:query,:body,:is_body_key_value,:include_explicit_only
|
73
82
|
end
|
74
83
|
|
75
84
|
class Response
|
@@ -19,22 +19,11 @@ module ClassTemplate
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def prepare_request_query
|
22
|
-
|
22
|
+
generate_query_methods if @config.request.query.present?
|
23
23
|
end
|
24
24
|
|
25
25
|
def prepare_request_body
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
def build
|
30
|
-
remove_path_param_name_from_url
|
31
|
-
stub = stub_request(@type, "http://#{Domain.base_url}/#{@url}")
|
32
|
-
stub.with(:query => @query) unless @query.eql? ""
|
33
|
-
stub.with(:body => @request_body) unless @request_body.eql? ""
|
34
|
-
if @config.response.array_type == "column_array"
|
35
|
-
@response_body = Parse.hash_array_to_column_hash(@response_body)
|
36
|
-
end
|
37
|
-
stub.to_return(:status => 200, :body => @response_body.to_s, :headers => {})
|
26
|
+
generate_request_methods if @config.request.body.present?
|
38
27
|
end
|
39
28
|
|
40
29
|
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module ClassTemplate
|
2
|
+
def build
|
3
|
+
build_url
|
4
|
+
build_query
|
5
|
+
build_request_body
|
6
|
+
build_response_body
|
7
|
+
end
|
8
|
+
|
9
|
+
def build_url
|
10
|
+
remove_path_param_name_from_url
|
11
|
+
@stub = stub_request(@type, "http://#{Domain.base_url}/#{@url}")
|
12
|
+
end
|
13
|
+
|
14
|
+
def build_query
|
15
|
+
@stub.with(:query => @query) unless @query.eql? ""
|
16
|
+
end
|
17
|
+
|
18
|
+
def build_request_body
|
19
|
+
return if @request_body.blank?
|
20
|
+
@request_body = Parse.hash_to_concatenated_key_value(@request_body) if @config.request.is_body_key_value
|
21
|
+
@stub.with(:body => @request_body)
|
22
|
+
end
|
23
|
+
|
24
|
+
def build_response_body
|
25
|
+
if @config.response.array_type == "column_array"
|
26
|
+
@response_body = Parse.hash_array_to_column_hash(@response_body)
|
27
|
+
end
|
28
|
+
@stub.to_return(:status => 200, :body => @response_body.to_s, :headers => {})
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
@@ -1,12 +1,14 @@
|
|
1
1
|
module ClassTemplate
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
2
|
+
def generate_request_methods
|
3
|
+
@request_body = @config.request.body.deep_dup
|
4
|
+
return if @request_body.nil?
|
5
|
+
@request_body.each do |field|
|
6
|
+
field_name = field[0]
|
7
|
+
define_singleton_method("by_#{field[0].underscore}") do |*value|
|
8
|
+
@request_body[field_name] = value[0]
|
9
|
+
self
|
10
10
|
end
|
11
11
|
end
|
12
|
+
@request_body = {} if @config.request.include_explicit_only
|
13
|
+
end
|
12
14
|
end
|
data/lib/poisol/utils/parse.rb
CHANGED
@@ -19,7 +19,15 @@ class Parse
|
|
19
19
|
hash_array.each do |hash|
|
20
20
|
column_hash.each_key {|key| column_hash[key].append hash[key]}
|
21
21
|
end
|
22
|
-
|
22
|
+
column_hash
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.hash_to_concatenated_key_value hash
|
26
|
+
concatenated_body = ""
|
27
|
+
hash.each do |key,value|
|
28
|
+
concatenated_body = concatenated_body + "#{key}=#{value}&"
|
29
|
+
end
|
30
|
+
concatenated_body.chomp('&')
|
23
31
|
end
|
24
32
|
|
25
33
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
describe ClassTemplate, "#key_value" do
|
2
|
+
|
3
|
+
it "partial dynamic request" do
|
4
|
+
Explicit.new.by_name("ram").build()
|
5
|
+
response = RestClient.post "http://localhost:80/explicit","name=ram"
|
6
|
+
expect(response.body).to eq({"hi"=>1}.to_s)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "dynamic request" do
|
10
|
+
Explicit.new.by_name("ram").by_age(11).build()
|
11
|
+
response = RestClient.post "http://localhost:80/explicit","name=ram&age=11"
|
12
|
+
expect(response.body).to eq({"hi"=>1}.to_s)
|
13
|
+
end
|
14
|
+
|
15
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
describe ClassTemplate, "#key_value" do
|
2
|
+
|
3
|
+
it "default request" do
|
4
|
+
KeyValue.new.build()
|
5
|
+
response = RestClient.post "http://localhost:80/keyvalue","name=sea&age=10"
|
6
|
+
expect(response.body).to eq({"hi"=>1}.to_s)
|
7
|
+
end
|
8
|
+
|
9
|
+
it "partial dynamic request" do
|
10
|
+
KeyValue.new.by_name("ram").build()
|
11
|
+
response = RestClient.post "http://localhost:80/keyvalue","name=ram&age=10"
|
12
|
+
expect(response.body).to eq({"hi"=>1}.to_s)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "dynamic request" do
|
16
|
+
KeyValue.new.by_name("ram").by_age(11).build()
|
17
|
+
response = RestClient.post "http://localhost:80/keyvalue","name=ram&age=11"
|
18
|
+
expect(response.body).to eq({"hi"=>1}.to_s)
|
19
|
+
end
|
20
|
+
|
21
|
+
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.0.
|
4
|
+
version: 0.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Deepak
|
@@ -135,6 +135,7 @@ files:
|
|
135
135
|
- lib/poisol/stub_config.rb
|
136
136
|
- lib/poisol/stub_factory.rb
|
137
137
|
- lib/poisol/template/base_template.rb
|
138
|
+
- lib/poisol/template/build.rb
|
138
139
|
- lib/poisol/template/query_handler.rb
|
139
140
|
- lib/poisol/template/request_handler.rb
|
140
141
|
- lib/poisol/template/response_handler.rb
|
@@ -143,6 +144,8 @@ files:
|
|
143
144
|
- lib/poisol/utils/parse.rb
|
144
145
|
- spec/functional/array_spec.rb
|
145
146
|
- spec/functional/get_spec.rb
|
147
|
+
- spec/functional/key_value/explicit_inclusion_spec.rb
|
148
|
+
- spec/functional/key_value/implicit_inclusion_spec.rb
|
146
149
|
- spec/functional/nested_array_spec.rb
|
147
150
|
- spec/functional/post_spec.rb
|
148
151
|
- spec/functional/url_spec.rb
|
@@ -175,6 +178,8 @@ test_files:
|
|
175
178
|
- spec/spec_helper.rb
|
176
179
|
- spec/functional/array_spec.rb
|
177
180
|
- spec/functional/get_spec.rb
|
181
|
+
- spec/functional/key_value/explicit_inclusion_spec.rb
|
182
|
+
- spec/functional/key_value/implicit_inclusion_spec.rb
|
178
183
|
- spec/functional/post_spec.rb
|
179
184
|
- spec/functional/url_spec.rb
|
180
185
|
- spec/functional/nested_array_spec.rb
|