poisol 0.0.17 → 0.1.0

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: dda1298ba2eb2660b9690570426f11a65b3197d7
4
- data.tar.gz: 0a1bff1f25e7f10aad3c75b8a834f6b097fc1b63
3
+ metadata.gz: c66331f663c993f5ad291f2947764e56f4b2c65a
4
+ data.tar.gz: 1156dc7a6b8d3bcfc7b03bb482c832cb9a30768c
5
5
  SHA512:
6
- metadata.gz: bdf6ddd94daf7d1f3fc6e9c02c3e8ee7d7a86bc34b3a5aacbc52f7b68329ea1039309fcb0cf4759c5f8387eabcf7860f589233148209d93a4fad5633f7b40d6d
7
- data.tar.gz: 0a52fc5f0d9e7b671122ad6f08e09c00fe03bda3a7c09e09a3760b0ca08f02a3e987d62fe5600c476e902758569dce5d3c153fe8c36d95eb1eb92a523a6c5ae4
6
+ metadata.gz: cc9bef8c9cb1c1955f71bf7eeea8c85b016df9c0e69a23b844461d4c2b60f246137b0843a5bf6c735ed7ee4362dc173c0768e7351ae7b5eca4039dddb73480b4
7
+ data.tar.gz: a1c7bec0f36c8b5e9229fc8e794f3f985baa9185fa30583eb1058544a69318c57e71cb52a669fb39ff1bd9bfe9af1902b8d840fb319dfd92d8bd0fae2a891720
data/lib/poisol/domain.rb CHANGED
@@ -3,10 +3,13 @@ class Domain
3
3
 
4
4
  def initialize domain_config_file
5
5
  @file = domain_config_file
6
- base_hash = Parse.yaml_file @file
7
- domain = base_hash["domain"]
8
- port = base_hash["port"]
9
- @full_url = "#{domain.chomp('\\')}#{ port.present? ? ":#{port}" : "" }"
6
+ path = ""
7
+ if File.exists? @file
8
+ base_hash = Parse.yaml_file @file
9
+ sub_domain = base_hash["sub_domain"]
10
+ path = "/#{sub_domain}" if sub_domain.present?
11
+ end
12
+ @full_url = "#{Server.base_url}#{ path.present? ? path: ''}"
10
13
  end
11
14
 
12
15
  end
@@ -0,0 +1,26 @@
1
+ module ResponseMapper
2
+ extend self
3
+
4
+ def map webrick_request
5
+ stub_request = get_stub_request webrick_request
6
+ stub_response = get_stub_response stub_request
7
+ end
8
+
9
+ def get_stub_request webrick_request
10
+ stub_request = Request.new
11
+ stub_request.type = webrick_request.request_method.downcase
12
+ uri = webrick_request.request_uri
13
+ stub_request.url = uri.query.blank? ? uri.to_s : uri.to_s.sub(uri.query,"").sub("?","")
14
+ stub_request.query = webrick_request.query_string
15
+ stub_request.body = webrick_request.body
16
+ stub_request
17
+ end
18
+
19
+
20
+ def get_stub_response stub_request
21
+ stub = Stubs.get_match stub_request
22
+ raise "no match found for request \n #{stub_request.type} \n #{stub_request.url} \n #{stub_request.query} \n #{stub_request.body} " if stub.blank?
23
+ return stub.response if stub.present?
24
+ end
25
+
26
+ end
@@ -0,0 +1,46 @@
1
+ module Server
2
+ extend self
3
+
4
+ def start port
5
+ require 'webrick'
6
+ @server = WEBrick::HTTPServer.new :Port => port, :Logger => log, :AccessLog => access_log
7
+ @port = port
8
+ attach_shutdown
9
+ attach_request_handling
10
+ Thread.new{@server.start}
11
+ end
12
+
13
+ def base_url
14
+ "http://localhost:#{@port}"
15
+ end
16
+
17
+ def attach_request_handling
18
+ @server.mount_proc '/' do |req, res|
19
+ stub_response = ResponseMapper.map(req)
20
+ res.status = stub_response.status
21
+ res.body = stub_response.body.to_json
22
+ res.content_type = 'application/json'
23
+ end
24
+ end
25
+
26
+ def attach_shutdown
27
+ trap 'INT' do @server.shutdown end
28
+ end
29
+
30
+ def log
31
+ log_file = File.open 'log/poisol_webrick.log', 'a+'
32
+ WEBrick::Log.new log_file
33
+ end
34
+
35
+ def access_log
36
+ log_file = File.open 'log/poisol_webrick.log', 'a+'
37
+ [
38
+ [log_file, WEBrick::AccessLog::COMBINED_LOG_FORMAT],
39
+ ]
40
+ end
41
+
42
+ def stop
43
+ @server.shutdown
44
+ end
45
+
46
+ end
@@ -8,7 +8,7 @@ module UrlBuilder
8
8
  method_name = "of_#{param_name.underscore}"
9
9
  define_method(method_name) do |*input_value|
10
10
  input_value = input_value[0]
11
- @request.url.sub!("{#{path_param}}","{#{param_name}|#{input_value}}") unless input_value.blank?
11
+ @request.path.sub!("{#{path_param}}","{#{param_name}|#{input_value}}") unless input_value.blank?
12
12
  self
13
13
  end
14
14
  end
@@ -1,9 +1,9 @@
1
- require_relative "webmock_stub_builder"
1
+ require_relative "webrick_stub_builder"
2
2
  require_relative "stub_class_builder"
3
3
  require_relative "stub_instance"
4
4
 
5
5
  class Stub
6
- include WebMockStubBuilder
6
+ include WebrickStubBuilder
7
7
  include StubInstance
8
8
  attr_accessor :request,:response
9
9
  class << self
@@ -20,11 +20,11 @@ class Stub
20
20
  end
21
21
 
22
22
  class Request
23
- attr_accessor :url,:query,:body
23
+ attr_accessor :url,:query,:body,:path,:type
24
24
  end
25
25
 
26
26
  class Response
27
- attr_accessor :body,:status
27
+ attr_accessor :body,:status,:header
28
28
  end
29
29
 
30
30
 
@@ -6,7 +6,7 @@ module StubInstance
6
6
 
7
7
  def init_request
8
8
  @request = Request.new
9
- @request.url = stub_config.request.url.deep_dup
9
+ @request.path = stub_config.request.url.deep_dup
10
10
  @request.query = stub_config.request.query_explicit ? {} : stub_config.request.query.deep_dup
11
11
  @request.body = stub_config.request.body_explicit ? {} : stub_config.request.body.deep_dup
12
12
  end
@@ -19,6 +19,7 @@ module StubInstance
19
19
  @response.body = stub_config.response.body.deep_dup
20
20
  end
21
21
  @response.status = 200
22
+ @response.header = {'Content-Type' => 'application/json'}
22
23
  end
23
24
 
24
25
  def set_dumb_response response_file
@@ -1,39 +1,39 @@
1
- module WebMockStubBuilder
1
+ module WebrickStubBuilder
2
2
  def build
3
3
  build_url
4
4
  build_query
5
5
  build_request_body
6
6
  build_response_body
7
- return @webmock_stub
7
+ Stubs.add self
8
+ self
8
9
  end
9
10
 
10
11
  private
11
12
  def build_url
12
13
  remove_path_param_name_from_url
13
- @webmock_stub = stub_request(stub_config.request.type, "http://#{stub_config.request.domain}/#{@request.url}")
14
+ @request.url = "#{stub_config.request.domain}/#{@request.path}"
14
15
  end
15
16
 
16
17
  def build_query
17
- @webmock_stub.with(:query => @request.query) unless @request.query.eql? ""
18
+ return if @request.query.blank?
19
+ @request.query = @request.query.to_query
18
20
  end
19
21
 
20
22
  def build_request_body
21
23
  return if @request.body.blank?
22
24
  @request.body = Parse.hash_to_concatenated_key_value(@request.body) if stub_config.request.is_body_key_value
23
- @webmock_stub.with(:body => @request.body)
24
25
  end
25
26
 
26
27
  def build_response_body
27
28
  @response.body = Parse.hash_array_to_column_hash(@response.body) if stub_config.response.is_column_array and !@is_response_dumped.present?
28
- @webmock_stub.to_return(:status => @response.status, :body => @response.body.to_json, :headers => {'Content-Type' => 'application/json'})
29
29
  end
30
30
 
31
31
  def remove_path_param_name_from_url
32
- @request.url.scan(/{(.+?)}/).each do |path_params|
32
+ @request.path.scan(/{(.+?)}/).each do |path_params|
33
33
  path_param = path_params[0]
34
34
  param_name = path_param.split("|")[0]
35
35
  param_value = path_param.split("|")[1]
36
- @request.url.sub!("{#{path_param}}",param_value)
36
+ @request.path.sub!("{#{path_param}}",param_value)
37
37
  end
38
38
  end
39
39
 
@@ -0,0 +1,71 @@
1
+ module Stubs
2
+ extend self
3
+
4
+ def add stub
5
+ @stubs = [] if @stubs.blank?
6
+ @stubs << stub
7
+ end
8
+
9
+ def reset
10
+ @stubs = []
11
+ end
12
+
13
+ def get_match request
14
+ return nil if @stubs.blank?
15
+ matches = @stubs.select{|stub| stub.request.url == request.url }
16
+ matches = matches.select{|stub|query_matches?(request.query,stub.request.query)} if request.query.present? && matches.present?
17
+ matches = matches.select{|stub|body_matches? request.body,stub.request.body} if request.body.present? && matches.present?
18
+ return matches.present? ? matches[0] : nil
19
+ end
20
+
21
+ def query_matches? (actual,stub)
22
+ return false if stub.blank?
23
+ return actual==stub
24
+ end
25
+
26
+ def body_matches? (actual_request_body,stub_request_body)
27
+ return true if stub_request_body.present? && actual_request_body == stub_request_body
28
+ return false if stub_request_body.blank?
29
+ actual_request_body = load_as_json actual_request_body
30
+ stub_request_body = load_as_json stub_request_body
31
+ return false unless actual_request_body.class == stub_request_body.class
32
+ return matching_hashes? actual_request_body,stub_request_body if actual_request_body.is_a?(Hash)
33
+ return matching_array? actual_request_body,stub_request_body if actual_request_body.is_a?(Array)
34
+ return false
35
+ end
36
+
37
+ def load_as_json input
38
+ require 'json'
39
+ begin
40
+ return JSON.parse input
41
+ rescue
42
+ return input
43
+ end
44
+ end
45
+
46
+
47
+ def matching_hashes?(query_parameters, pattern)
48
+ return false unless query_parameters.is_a?(Hash)
49
+ return false unless query_parameters.keys.sort == pattern.keys.sort
50
+ query_parameters.each do |key, actual|
51
+ expected = pattern[key]
52
+
53
+ if actual.is_a?(Hash) && expected.is_a?(Hash)
54
+ return false unless matching_hashes?(actual, expected)
55
+ else
56
+ return false unless expected === actual
57
+ end
58
+ end
59
+ true
60
+ end
61
+
62
+ def matching_array actuals,expected
63
+ return false unless actuals.size == expected.size
64
+ return actuals.sort == expected.sort unless actual[0].is_a(Hash)
65
+ expect = expected.clone
66
+ actuals.each do |actual|
67
+ match = expect.detect {|pattern| matching_hashes? actual,expect}
68
+ return false if match.blank?
69
+ end
70
+ end
71
+ end
@@ -6,6 +6,7 @@ module Parse
6
6
  end
7
7
 
8
8
  def yaml_file file_name
9
+ require 'yaml'
9
10
  YAML.load_file(file_name)
10
11
  end
11
12
 
data/lib/poisol.rb CHANGED
@@ -5,15 +5,27 @@ Dir["#{File.dirname(__FILE__)}/poisol/**/*.rb"].each { |f| require(f) }
5
5
  module Poisol
6
6
  extend self
7
7
 
8
+ def start (param={:at_port=>3030})
9
+ Server.start param[:at_port]
10
+ reset
11
+ end
12
+
8
13
  def load folder
9
- StubFactory.new.build folder
14
+ StubFactory.new.build folder
15
+ end
16
+
17
+ def reset
18
+ Stubs.reset
19
+ end
20
+
21
+ def stop
22
+ Server.stop
23
+ reset
10
24
  end
11
25
 
12
26
  def log_all_calls to_domain
13
- WebMock.after_request(:real_requests_only => false) do |req_signature, response|
14
- if req_signature.to_s.include? to_domain
15
- PoisolLog.info "========================\nRequest\n#{req_signature.uri}\n#{req_signature.body}\nResponse:#{response.status[0]}\n#{JSON.pretty_generate(JSON.parse(response.body)) if response.status.present?}"
16
- end
27
+ if req_signature.to_s.include? to_domain
28
+ PoisolLog.info "========================\nRequest\n#{req_signature.uri}\n#{req_signature.body}\nResponse:#{response.status[0]}\n#{JSON.pretty_generate(JSON.parse(response.body)) if response.status.present?}"
17
29
  end
18
30
  end
19
31
  end
@@ -1,2 +1 @@
1
- domain: "localhos"
2
- port: "801"
1
+ sub_domain: "first"
@@ -1,2 +1 @@
1
- domain: "localhos"
2
- port: "802"
1
+ sub_domain: "second"
@@ -1,2 +1 @@
1
- domain: "localhost"
2
- port: "80"
1
+ sub_domain: ""
@@ -2,13 +2,13 @@ describe Stub, "#key_value" do
2
2
 
3
3
  it "partial dynamic request" do
4
4
  Explicit.new.by_name("ram").build()
5
- response = RestClient.post "http://localhost:80/explicit","name=ram"
5
+ response = RestClient.post "http://localhost:3030/explicit","name=ram"
6
6
  expect(response.body).to eq({"hi"=>1}.to_json)
7
7
  end
8
8
 
9
9
  it "dynamic request" do
10
10
  Explicit.new.by_name("ram").by_age(11).build()
11
- response = RestClient.post "http://localhost:80/explicit","name=ram&age=11"
11
+ response = RestClient.post "http://localhost:3030/explicit","name=ram&age=11"
12
12
  expect(response.body).to eq({"hi"=>1}.to_json)
13
13
  end
14
14
 
@@ -2,19 +2,19 @@ describe Stub, "#key_value" do
2
2
 
3
3
  it "default request" do
4
4
  KeyValue.new.build()
5
- response = RestClient.post "http://localhost:80/keyvalue","name=sea&age=10"
5
+ response = RestClient.post "http://localhost:3030/keyvalue","name=sea&age=10"
6
6
  expect(response.body).to eq({"hi"=>1}.to_json)
7
7
  end
8
8
 
9
9
  it "partial dynamic request" do
10
10
  KeyValue.new.by_name("ram").build()
11
- response = RestClient.post "http://localhost:80/keyvalue","name=ram&age=10"
11
+ response = RestClient.post "http://localhost:3030/keyvalue","name=ram&age=10"
12
12
  expect(response.body).to eq({"hi"=>1}.to_json)
13
13
  end
14
14
 
15
15
  it "dynamic request" do
16
16
  KeyValue.new.by_name("ram").by_age(11).build()
17
- response = RestClient.post "http://localhost:80/keyvalue","name=ram&age=11"
17
+ response = RestClient.post "http://localhost:3030/keyvalue","name=ram&age=11"
18
18
  expect(response.body).to eq({"hi"=>1}.to_json)
19
19
  end
20
20
 
@@ -2,10 +2,10 @@ describe Stub, "#multi domain" do
2
2
 
3
3
  it "support multi domain" do
4
4
  First.new.build
5
- response = RestClient.get "http://localhos:801/first"
5
+ response = RestClient.get "http://localhost:3030/first/first"
6
6
  expect(response.body).to eq({"title"=>"1"}.to_json)
7
7
  Second.new.build
8
- response = RestClient.get "http://localhos:802/second"
8
+ response = RestClient.get "http://localhost:3030/second/second"
9
9
  expect(response.body).to eq({"title"=>"1"}.to_json)
10
10
  end
11
11
  end
@@ -2,7 +2,7 @@ describe Stub, "#post_user" do
2
2
 
3
3
  it "default request and response" do
4
4
  User.new.build()
5
- response = RestClient.post "http://localhost:80/users","name"=>"deepak"
5
+ response = RestClient.post "http://localhost:3030/users",{"name"=>"deepak"}.to_json, :content_type => :json, :accept => :json
6
6
  expect(response.body).to eq({"job"=>'sleeping_bag'}.to_json)
7
7
  end
8
8
 
@@ -10,7 +10,7 @@ describe Stub, "#post_user" do
10
10
  name = "ummy"
11
11
  job = "vetti"
12
12
  User.new.by_name(name).has_job(job).build()
13
- response = RestClient.post "http://localhost:80/users","name"=>name
13
+ response = RestClient.post "http://localhost:3030/users",{"name"=>name}.to_json, :content_type => :json, :accept => :json
14
14
  expect(response.body).to eq({"job"=>job}.to_json)
15
15
  end
16
16
 
@@ -2,19 +2,19 @@ describe Stub, "#query_explicit" do
2
2
 
3
3
  it "partial" do
4
4
  BookExplicit.new.for_author('bha').build()
5
- response = RestClient.get "http://localhost:80/book_explicit",{:params => {:author=>'bha'}}
5
+ response = RestClient.get "http://localhost:3030/book_explicit",{:params => {:author=>'bha'}}
6
6
  expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_json)
7
7
  end
8
8
 
9
9
  it "full dymamic" do
10
10
  Book.new.for_author('asd').for_name('don').build()
11
- response = RestClient.get "http://localhost:80/book",{:params => {:author=>'asd',:name=>'don'}}
11
+ response = RestClient.get "http://localhost:3030/book",{:params => {:author=>'asd',:name=>'don'}}
12
12
  expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_json)
13
13
  end
14
14
 
15
15
  it "full dymamic hash params" do
16
16
  Book.new.for(:author => 'asd',:name =>'don').build
17
- response = RestClient.get "http://localhost:80/book",{:params => {:author=>'asd',:name=>'don'}}
17
+ response = RestClient.get "http://localhost:3030/book",{:params => {:author=>'asd',:name=>'don'}}
18
18
  expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_json)
19
19
  end
20
20
 
@@ -2,19 +2,19 @@ describe Stub, "#implicit query params" do
2
2
 
3
3
  it "dynamic response" do
4
4
  Book.new.for_author("bha").has_category({"age_group"=>"11", "publisher"=>{"name"=>"oxford"}}).build()
5
- response = RestClient.get "http://localhost:80/book",{:params => {:author=>'bha',:name=>"doni"}}
5
+ response = RestClient.get "http://localhost:3030/book",{:params => {:author=>'bha',:name=>"doni"}}
6
6
  expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"11", "genre"=>"action", "publisher"=>{"name"=>"oxford", "place"=>"erode"}}}.to_json)
7
7
  end
8
8
 
9
9
  it "default request and response" do
10
10
  Book.new.build()
11
- response = RestClient.get "http://localhost:80/book",{:params => {:author=>'bharathi',:name=>"doni"}}
11
+ response = RestClient.get "http://localhost:3030/book",{:params => {:author=>'bharathi',:name=>"doni"}}
12
12
  expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_json)
13
13
  end
14
14
 
15
15
  it "hash params for query" do
16
16
  Book.new.for(:author=>"val").build()
17
- response = RestClient.get "http://localhost:80/book",{:params => {:author=>'val',:name=>"doni"}}
17
+ response = RestClient.get "http://localhost:3030/book",{:params => {:author=>'val',:name=>"doni"}}
18
18
  expect(response.body).to eq({"title"=>"independance", "category"=>{"age_group"=>"10", "genre"=>"action", "publisher"=>{"name"=>"summa", "place"=>"erode"}}}.to_json)
19
19
  end
20
20
 
@@ -2,49 +2,49 @@ describe Stub, "#array" do
2
2
 
3
3
  it "empty column array" do
4
4
  Columns.new.build
5
- response = RestClient.get "http://localhost:80/column"
5
+ response = RestClient.get "http://localhost:3030/column"
6
6
  expect(response.body).to eq("[]")
7
7
  end
8
8
 
9
9
  it "column array" do
10
10
  Columns.new.has_column.has_column.with_title("abc").with_category(12).build
11
- response = RestClient.get "http://localhost:80/column"
11
+ response = RestClient.get "http://localhost:3030/column"
12
12
  expect(response.body).to eq({"title"=>["independance", "abc"], "category"=>["10",12]}.to_json)
13
13
  end
14
14
 
15
15
  it "column array hash params" do
16
16
  Columns.new.has_column.has_column(:title=>"abc",:category => "12").build
17
- response = RestClient.get "http://localhost:80/column"
17
+ response = RestClient.get "http://localhost:3030/column"
18
18
  expect(response.body).to eq({"title"=>["independance", "abc"], "category"=>["10","12"]}.to_json)
19
19
  end
20
20
 
21
21
  it "column array full hash params" do
22
22
  Columns.new.has_columns([{:title=>"abc"},{:title=>"c",:category => "1"}]).build
23
- response = RestClient.get "http://localhost:80/column"
23
+ response = RestClient.get "http://localhost:3030/column"
24
24
  expect(response.body).to eq({"title"=>["abc", "c"], "category"=>["10","1"]}.to_json)
25
25
  end
26
26
 
27
27
  it "empty row array" do
28
28
  Rows.new.build
29
- response = RestClient.get "http://localhost:80/row"
29
+ response = RestClient.get "http://localhost:3030/row"
30
30
  expect(response.body).to eq("[]")
31
31
  end
32
32
 
33
33
  it "row array" do
34
34
  Rows.new.has_row.with_item(3).has_row.with_title("abc").with_category("age_group" => "12").with_items([2,3]).build
35
- response = RestClient.get "http://localhost:80/row"
35
+ response = RestClient.get "http://localhost:3030/row"
36
36
  expect(response.body).to eq([{"title"=>"independance","items"=> [1,2,3],"category"=>{"age_group"=>"10"}}, {"title"=>"abc","items"=> [2,3],"category"=>{"age_group"=>"12"}}].to_json)
37
37
  end
38
38
 
39
39
  it "row array hash_params" do
40
40
  Rows.new.has_row.has_row(:title=>"abc",:category=>{"age_group" => "12"}).build
41
- response = RestClient.get "http://localhost:80/row"
41
+ response = RestClient.get "http://localhost:3030/row"
42
42
  expect(response.body).to eq([{"title"=>"independance", "items"=> [1,2],"category"=>{"age_group"=>"10"}}, {"title"=>"abc", "items"=> [1,2],"category"=>{"age_group"=>"12"}}].to_json)
43
43
  end
44
44
 
45
45
  it "row array full hash_params" do
46
46
  Rows.new.has_rows([{},{:title=>"abc",:category=>{"age_group" => "12"}}]).build
47
- response = RestClient.get "http://localhost:80/row"
47
+ response = RestClient.get "http://localhost:3030/row"
48
48
  expect(response.body).to eq([{"title"=>"independance", "items"=> [1,2],"category"=>{"age_group"=>"10"}}, {"title"=>"abc", "items"=> [1,2],"category"=>{"age_group"=>"12"}}].to_json)
49
49
  end
50
50
 
@@ -2,7 +2,7 @@ describe Stub, "#dumb response" do
2
2
 
3
3
  it "column array" do
4
4
  Columns.new.set_dumb_response("spec/data/main/user/response.json").build
5
- response = RestClient.get "http://localhost:80/column"
5
+ response = RestClient.get "http://localhost:3030/column"
6
6
  expect(response.body).to eq({"job"=>"sleeping_bag"}.to_json)
7
7
  end
8
8
 
@@ -1,19 +1,19 @@
1
1
  describe StubInstance, "hash params" do
2
2
  it "default" do
3
3
  SimpleResponse.new.build
4
- response = RestClient.get "http://localhost:80/simple_response"
4
+ response = RestClient.get "http://localhost:3030/simple_response"
5
5
  expect(response.body).to eq({:a=>1,:b=>2}.to_json)
6
6
  end
7
7
 
8
8
  it "partial" do
9
9
  SimpleResponse.new.has(:a=>3).build
10
- response = RestClient.get "http://localhost:80/simple_response"
10
+ response = RestClient.get "http://localhost:3030/simple_response"
11
11
  expect(response.body).to eq({:a=>3,:b=>2}.to_json)
12
12
  end
13
13
 
14
14
  it "full" do
15
15
  SimpleResponse.new.has(:a=>3,:b=>5).build
16
- response = RestClient.get "http://localhost:80/simple_response"
16
+ response = RestClient.get "http://localhost:3030/simple_response"
17
17
  expect(response.body).to eq({:a=>3,:b=>5}.to_json)
18
18
  end
19
19
 
@@ -2,37 +2,37 @@ describe Stub, "#nested array" do
2
2
 
3
3
  it "empty" do
4
4
  NestedArray.new.has_no_role.build()
5
- response = RestClient.get "http://localhost:80/nested_array"
5
+ response = RestClient.get "http://localhost:3030/nested_array"
6
6
  expect(response.body).to eq({"title"=>"ind", "roles"=>[]}.to_json)
7
7
  end
8
8
 
9
9
  it "without mentioning field" do
10
10
  NestedArray.new.build()
11
- response = RestClient.get "http://localhost:80/nested_array"
11
+ response = RestClient.get "http://localhost:3030/nested_array"
12
12
  expect(response.body).to eq({"title"=>"ind", "roles"=>[{"role_id"=>"chumma", "role_name"=>"sol"}]}.to_json)
13
13
  end
14
14
 
15
15
  it "mentioning one field" do
16
16
  NestedArray.new.has_role.build()
17
- response = RestClient.get "http://localhost:80/nested_array"
17
+ response = RestClient.get "http://localhost:3030/nested_array"
18
18
  expect(response.body).to eq({"title"=>"ind", "roles"=>[{"role_id"=>"chumma", "role_name"=>"sol"}]}.to_json)
19
19
  end
20
20
 
21
21
  it "mentioning one field with altered values" do
22
22
  NestedArray.new.has_role(:role_id=>"test1").build()
23
- response = RestClient.get "http://localhost:80/nested_array"
23
+ response = RestClient.get "http://localhost:3030/nested_array"
24
24
  expect(response.body).to eq({"title"=>"ind", "roles"=>[{"role_id"=>"test1", "role_name"=>"sol"}]}.to_json)
25
25
  end
26
26
 
27
27
  it "multiple fields with altered values" do
28
28
  NestedArray.new.has_role.has_another_role(:role_id=>"test").build()
29
- response = RestClient.get "http://localhost:80/nested_array"
29
+ response = RestClient.get "http://localhost:3030/nested_array"
30
30
  expect(response.body).to eq({"title"=>"ind", "roles"=>[{"role_id"=>"chumma", "role_name"=>"sol"},{"role_id"=>"test", "role_name"=>"sol"}]}.to_json)
31
31
  end
32
32
 
33
33
  it "passing array of hashes" do
34
34
  NestedArray.new.has_roles([{:role_id=>"test"},{:role_name=>"bla"}]).build()
35
- response = RestClient.get "http://localhost:80/nested_array"
35
+ response = RestClient.get "http://localhost:3030/nested_array"
36
36
  expect(response.body).to eq({"title"=>"ind", "roles"=>[{"role_id"=>"test", "role_name"=>"sol"},{"role_id"=>"chumma", "role_name"=>"bla"}]}.to_json)
37
37
  end
38
38
 
@@ -2,19 +2,19 @@ describe Stub, "#url" do
2
2
 
3
3
  it "default" do
4
4
  Url.new.build()
5
- response = RestClient.get "http://localhost:80/cda/cd/ragavan/get"
5
+ response = RestClient.get "http://localhost:3030/cda/cd/ragavan/get"
6
6
  expect(response.body).to eq({"hi"=>1}.to_json)
7
7
  end
8
8
 
9
9
  it "dynamic" do
10
10
  Url.new.of_name("hitler").of_actor("mani").build()
11
- response = RestClient.get "http://localhost:80/cda/hitler/mani/get"
11
+ response = RestClient.get "http://localhost:3030/cda/hitler/mani/get"
12
12
  expect(response.body).to eq({"hi"=>1}.to_json)
13
13
  end
14
14
 
15
15
  it "partial" do
16
16
  Url.new.of_actor("mani").build()
17
- response = RestClient.get "http://localhost:80/cda/cd/mani/get"
17
+ response = RestClient.get "http://localhost:3030/cda/cd/mani/get"
18
18
  expect(response.body).to eq({"hi"=>1}.to_json)
19
19
  end
20
20
 
data/spec/spec_helper.rb CHANGED
@@ -1,7 +1,5 @@
1
1
  require "rspec/expectations"
2
2
  require 'rest_client'
3
- require 'webmock'
4
- include WebMock::API
5
3
 
6
4
  require_relative '../lib/poisol'
7
5
  require 'pry'
@@ -16,15 +14,18 @@ SimpleCov.start
16
14
  RSpec.configure do |config|
17
15
 
18
16
  config.before(:each) do
19
- WebMock.reset!
17
+ Poisol.reset
20
18
  end
21
19
 
22
20
  config.before(:suite) do
23
- WebMock.disable_net_connect!
24
- factory = StubFactory.new.build("spec/data/main")
25
- factory = StubFactory.new.build("spec/data/domain/first/")
26
- factory = StubFactory.new.build("spec/data/domain/second/")
21
+ Poisol.start
22
+ Poisol.load "spec/data/main/"
23
+ Poisol.load "spec/data/domain/first/"
24
+ Poisol.load "spec/data/domain/second/"
27
25
  end
28
26
 
29
- end
27
+ config.after(:suite) do
28
+ Poisol.stop
29
+ end
30
30
 
31
+ end
@@ -1,5 +1,4 @@
1
1
  describe PoisolLog, "log" do
2
2
  it "default" do
3
- WebMock::NetConnectNotAllowedError.new WebMock::RequestSignature.new :get,"http://localhost:89675/blabl",{:body => "hi"}
4
3
  end
5
4
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: poisol
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.17
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Deepak
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-12-26 00:00:00.000000000 Z
11
+ date: 2015-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: webmock
84
+ name: webrick
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -133,6 +133,8 @@ files:
133
133
  - lib/poisol/domain.rb
134
134
  - lib/poisol/extensions/hash.rb
135
135
  - lib/poisol/extensions/webmock_extensions.rb
136
+ - lib/poisol/response_mapper.rb
137
+ - lib/poisol/server.rb
136
138
  - lib/poisol/stub/request/query_builder.rb
137
139
  - lib/poisol/stub/request/request_body_builder.rb
138
140
  - lib/poisol/stub/request/url_builder.rb
@@ -141,10 +143,11 @@ files:
141
143
  - lib/poisol/stub/stub.rb
142
144
  - lib/poisol/stub/stub_class_builder.rb
143
145
  - lib/poisol/stub/stub_instance.rb
144
- - lib/poisol/stub/webmock_stub_builder.rb
146
+ - lib/poisol/stub/webrick_stub_builder.rb
145
147
  - lib/poisol/stub_config/stub_config.rb
146
148
  - lib/poisol/stub_config/stub_config_builder.rb
147
149
  - lib/poisol/stub_factory.rb
150
+ - lib/poisol/stubs.rb
148
151
  - lib/poisol/utils/file_util.rb
149
152
  - lib/poisol/utils/logger.rb
150
153
  - lib/poisol/utils/parse.rb