servme 0.0.4 → 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 +4 -4
- data/lib/servme/responder.rb +13 -0
- data/lib/servme/service_stubbing.rb +2 -2
- data/lib/servme/version.rb +1 -1
- data/spec/lib/servme/responder_spec.rb +52 -8
- data/spec/lib/servme/service_stubbing_spec.rb +17 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cd06dcf6f7971cbbe2de4f8d22767c70f9c889cb
|
4
|
+
data.tar.gz: 08db2e4caf67056ece0230f09fa6ec7925a02ad0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 01514af01b6918c3143e8e0bdcbb5a28764b02290a45f6e92606402249bc351613db6e50995ed175248aed77eb3c1799e538acb5762f17103b7e33e782c29e7a
|
7
|
+
data.tar.gz: 3a63f76ce4c0e22ebcbe0dcd80da943cc01a43d2e4754a9ae29c03a44815626cb8823a3f5087e889912c17be05efeb6e20a8931754a7fd7d77e9dc1f758676a1
|
data/lib/servme/responder.rb
CHANGED
@@ -22,6 +22,7 @@ module Servme
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def respond(request)
|
25
|
+
process_json_request(request)
|
25
26
|
relative_path_on_disk = request.path.sub(options[:static_file_vdir], '')
|
26
27
|
|
27
28
|
static_file = File.join(options[:static_file_root_path], relative_path_on_disk)
|
@@ -60,5 +61,17 @@ module Servme
|
|
60
61
|
}
|
61
62
|
}
|
62
63
|
end
|
64
|
+
|
65
|
+
private
|
66
|
+
|
67
|
+
def process_json_request(request)
|
68
|
+
if request.params && request.params.empty? && request.env && request.env['CONTENT_TYPE'] =~ /application\/json/
|
69
|
+
parsed_json = JSON.parse(request.body.read)
|
70
|
+
parsed_json.each do |k,v|
|
71
|
+
request.params[k] = v
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
63
76
|
end
|
64
77
|
end
|
@@ -4,8 +4,8 @@ module Servme
|
|
4
4
|
@request = request
|
5
5
|
end
|
6
6
|
|
7
|
-
def respond_with(response)
|
8
|
-
Stubber.instance.stub(@request.merge({ :response => response }))
|
7
|
+
def respond_with(response, status_code = nil)
|
8
|
+
Stubber.instance.stub(@request.merge({ :response => response, :status_code => status_code }))
|
9
9
|
end
|
10
10
|
|
11
11
|
def error_with(status_code)
|
data/lib/servme/version.rb
CHANGED
@@ -2,17 +2,40 @@ require 'spec_helper'
|
|
2
2
|
describe Servme::Responder do
|
3
3
|
|
4
4
|
let(:stubber) { Servme::Stubber.instance }
|
5
|
-
let(:sinatra_app) {
|
5
|
+
let(:sinatra_app) { double }
|
6
6
|
subject { Servme::Responder.new(sinatra_app, {}) }
|
7
7
|
|
8
8
|
before { stubber.clear }
|
9
9
|
|
10
|
+
context "when the responder receives a JSON request" do
|
11
|
+
let(:params) { {"foo" => "bar"} }
|
12
|
+
|
13
|
+
it "extracts and parses the json" do
|
14
|
+
stubber.stub(:url => "/foo", :method => :get, :params => params, :response => {"bar" => "foo"})
|
15
|
+
|
16
|
+
response = subject.respond(double(
|
17
|
+
:path => "/foo",
|
18
|
+
:request_method => "GET",
|
19
|
+
:params => {},
|
20
|
+
:env => {"CONTENT_TYPE"=>"application/json; charset=UTF-8"},
|
21
|
+
:body => StringIO.new(params.to_json)
|
22
|
+
))
|
23
|
+
|
24
|
+
JSON.parse(response.last).should == {"bar" => "foo"}
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
10
28
|
it "returns stubs" do
|
11
29
|
stubber.stub(:url => "/foo", :method => :get, :params => {}, :response => {"foo" => "bar"})
|
12
30
|
|
13
|
-
response = subject.respond(
|
31
|
+
response = subject.respond(double(
|
32
|
+
:path => "/foo",
|
33
|
+
:request_method => "GET",
|
34
|
+
:params => {},
|
35
|
+
:env => nil
|
36
|
+
))
|
14
37
|
|
15
|
-
#response is a Rack response, its last entry is the
|
38
|
+
#response is a Rack response, its last entry is the response body
|
16
39
|
JSON.parse(response.last).should == {"foo" => "bar"}
|
17
40
|
end
|
18
41
|
|
@@ -20,13 +43,21 @@ describe Servme::Responder do
|
|
20
43
|
File.stub(:exists? => true)
|
21
44
|
sinatra_app.should_receive(:send_file).with("dist/foo")
|
22
45
|
|
23
|
-
subject.respond(
|
46
|
+
subject.respond(double(
|
47
|
+
:path => "/foo",
|
48
|
+
:request_method => "GET",
|
49
|
+
:params => nil
|
50
|
+
))
|
24
51
|
end
|
25
52
|
|
26
53
|
it "responds with the static index.html if the request is /" do
|
27
54
|
sinatra_app.should_receive(:send_file).with("dist/index.html")
|
28
55
|
|
29
|
-
subject.respond(
|
56
|
+
subject.respond(double(
|
57
|
+
:path => "/",
|
58
|
+
:request_method => "GET",
|
59
|
+
:params => nil
|
60
|
+
))
|
30
61
|
end
|
31
62
|
|
32
63
|
it "allows you to specify an alternate static_file_root_path" do
|
@@ -34,7 +65,11 @@ describe Servme::Responder do
|
|
34
65
|
File.stub(:exists? => true)
|
35
66
|
sinatra_app.should_receive(:send_file).with("public/style.css")
|
36
67
|
|
37
|
-
responder.respond(
|
68
|
+
responder.respond(double(
|
69
|
+
:path => "/style.css",
|
70
|
+
:request_method => "GET",
|
71
|
+
:params => nil
|
72
|
+
))
|
38
73
|
end
|
39
74
|
|
40
75
|
it "returns the stub if there is both a stub and a static file" do
|
@@ -42,7 +77,12 @@ describe Servme::Responder do
|
|
42
77
|
File.stub(:exists? => true)
|
43
78
|
sinatra_app.should_not_receive(:send_file)
|
44
79
|
|
45
|
-
response = subject.respond(
|
80
|
+
response = subject.respond(double(
|
81
|
+
:path => "/foo",
|
82
|
+
:request_method => "GET",
|
83
|
+
:params => {},
|
84
|
+
:env => nil
|
85
|
+
))
|
46
86
|
|
47
87
|
JSON.parse(response.last).should == {"foo" => "bar"}
|
48
88
|
end
|
@@ -60,7 +100,11 @@ describe Servme::Responder do
|
|
60
100
|
File.stub(:exists? => true)
|
61
101
|
sinatra_app.should_receive(:send_file).with("build/foo")
|
62
102
|
|
63
|
-
subject.respond(
|
103
|
+
subject.respond(double(
|
104
|
+
:path => "/vdir/foo",
|
105
|
+
:request_method => "GET",
|
106
|
+
:params => nil
|
107
|
+
))
|
64
108
|
end
|
65
109
|
end
|
66
110
|
end
|
@@ -80,6 +80,22 @@ module Servme
|
|
80
80
|
Then { last_response.status.should == 333 }
|
81
81
|
end
|
82
82
|
|
83
|
+
describe "response PLUS status code" do
|
84
|
+
Given do
|
85
|
+
ServiceStubbing.new({
|
86
|
+
:url => "/bizness/stuff",
|
87
|
+
:method => :post,
|
88
|
+
:params => {
|
89
|
+
:bizness => "true",
|
90
|
+
:money => "12"
|
91
|
+
}
|
92
|
+
}).respond_with({ :sad => "panda" }, 430)
|
93
|
+
end
|
94
|
+
When { post('/bizness/stuff', { :bizness => true, :money => 12 }) }
|
95
|
+
Then { last_response.status.should == 430 }
|
96
|
+
Then { last_response.body.should be_json :sad => "panda" }
|
97
|
+
end
|
98
|
+
|
83
99
|
describe "non-json responses" do
|
84
100
|
Given do
|
85
101
|
ServiceStubbing.new({
|
@@ -96,4 +112,4 @@ module Servme
|
|
96
112
|
end
|
97
113
|
|
98
114
|
end
|
99
|
-
end
|
115
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: servme
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Justin Searls
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-11-
|
11
|
+
date: 2013-11-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|