http_stub 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/http_stub/configurer/request/stub.rb +2 -2
- data/lib/http_stub/models/request_pipeline.rb +5 -2
- data/lib/http_stub/models/response.rb +15 -2
- data/lib/http_stub/version.rb +1 -1
- data/spec/lib/http_stub/configurer/request/stub_spec.rb +37 -17
- data/spec/lib/http_stub/models/request_pipeline_spec.rb +7 -14
- data/spec/lib/http_stub/models/response_spec.rb +68 -12
- data/spec/spec_helper.rb +1 -1
- metadata +3 -3
@@ -13,9 +13,9 @@ module HttpStub
|
|
13
13
|
"headers" => HttpStub::Configurer::Request::Regexpable.format(options[:headers] || {}),
|
14
14
|
"parameters" => HttpStub::Configurer::Request::Regexpable.format(options[:parameters] || {}),
|
15
15
|
"response" => {
|
16
|
-
"status" => options[:response][:status] ||
|
16
|
+
"status" => options[:response][:status] || "",
|
17
17
|
"body" => options[:response][:body],
|
18
|
-
"delay_in_seconds" => options[:response][:delay_in_seconds]
|
18
|
+
"delay_in_seconds" => options[:response][:delay_in_seconds] || ""
|
19
19
|
}
|
20
20
|
}.to_json
|
21
21
|
end
|
@@ -3,8 +3,20 @@ module HttpStub
|
|
3
3
|
|
4
4
|
class Response
|
5
5
|
|
6
|
+
private
|
7
|
+
|
8
|
+
DEFAULT_OPTIONS = { "status" => 200, "delay_in_seconds" => 0 }
|
9
|
+
|
10
|
+
def establish_defaults_in(options)
|
11
|
+
DEFAULT_OPTIONS.each { |key, value| options[key] = value if !options[key] || options[key] == "" }
|
12
|
+
end
|
13
|
+
|
14
|
+
public
|
15
|
+
|
6
16
|
def initialize(options = {})
|
7
|
-
@
|
17
|
+
@original_options = options
|
18
|
+
@response_options = options.clone
|
19
|
+
establish_defaults_in(@response_options)
|
8
20
|
end
|
9
21
|
|
10
22
|
SUCCESS = HttpStub::Models::Response.new("status" => 200, "body" => "OK")
|
@@ -24,8 +36,9 @@ module HttpStub
|
|
24
36
|
end
|
25
37
|
|
26
38
|
def empty?
|
27
|
-
@
|
39
|
+
@original_options.empty?
|
28
40
|
end
|
41
|
+
|
29
42
|
end
|
30
43
|
|
31
44
|
end
|
data/lib/http_stub/version.rb
CHANGED
@@ -2,7 +2,7 @@ describe HttpStub::Configurer::Request::Stub do
|
|
2
2
|
|
3
3
|
describe "#initialize" do
|
4
4
|
|
5
|
-
|
5
|
+
context "when provided a uri and stub options" do
|
6
6
|
|
7
7
|
let(:uri) { "/some/uri" }
|
8
8
|
let(:stub_method) { "Some Method" }
|
@@ -10,6 +10,7 @@ describe HttpStub::Configurer::Request::Stub do
|
|
10
10
|
let(:parameters) { { "parameter_name" => "value" } }
|
11
11
|
let(:response_status) { 500 }
|
12
12
|
let(:response_body) { "Some body" }
|
13
|
+
let(:response_delay_in_seconds) { 7 }
|
13
14
|
|
14
15
|
let(:stub_options) do
|
15
16
|
{
|
@@ -18,7 +19,8 @@ describe HttpStub::Configurer::Request::Stub do
|
|
18
19
|
parameters: parameters,
|
19
20
|
response: {
|
20
21
|
status: response_status,
|
21
|
-
body: response_body
|
22
|
+
body: response_body,
|
23
|
+
delay_in_seconds: response_delay_in_seconds
|
22
24
|
}
|
23
25
|
}
|
24
26
|
end
|
@@ -40,7 +42,7 @@ describe HttpStub::Configurer::Request::Stub do
|
|
40
42
|
request.content_type.should eql("application/json")
|
41
43
|
end
|
42
44
|
|
43
|
-
|
45
|
+
context "when a header option is provided" do
|
44
46
|
|
45
47
|
it "should format the headers with regexp support" do
|
46
48
|
HttpStub::Configurer::Request::Regexpable.should_receive(:format).with(headers)
|
@@ -50,7 +52,7 @@ describe HttpStub::Configurer::Request::Stub do
|
|
50
52
|
|
51
53
|
end
|
52
54
|
|
53
|
-
|
55
|
+
context "when no header is provided" do
|
54
56
|
|
55
57
|
let(:headers) { nil }
|
56
58
|
|
@@ -62,7 +64,7 @@ describe HttpStub::Configurer::Request::Stub do
|
|
62
64
|
|
63
65
|
end
|
64
66
|
|
65
|
-
|
67
|
+
context "when a parameter option is provided" do
|
66
68
|
|
67
69
|
it "should format the parameters with regexp support" do
|
68
70
|
HttpStub::Configurer::Request::Regexpable.should_receive(:format).with(parameters)
|
@@ -72,7 +74,7 @@ describe HttpStub::Configurer::Request::Stub do
|
|
72
74
|
|
73
75
|
end
|
74
76
|
|
75
|
-
|
77
|
+
context "when no parameter option is provided" do
|
76
78
|
|
77
79
|
let(:parameters) { nil }
|
78
80
|
|
@@ -84,52 +86,70 @@ describe HttpStub::Configurer::Request::Stub do
|
|
84
86
|
|
85
87
|
end
|
86
88
|
|
87
|
-
|
89
|
+
context "generates a JSON body which" do
|
88
90
|
|
89
91
|
it "should have an entry containing the regexpable representation of the uri" do
|
90
92
|
HttpStub::Configurer::Request::Regexpable.should_receive(:format).with(uri).and_return("uri as a string")
|
91
93
|
|
92
|
-
request_body.should include(
|
94
|
+
request_body.should include("uri" => "uri as a string")
|
93
95
|
end
|
94
96
|
|
95
97
|
it "should have an entry for the method option" do
|
96
|
-
request_body.should include(
|
98
|
+
request_body.should include("method" => stub_method)
|
97
99
|
end
|
98
100
|
|
99
101
|
it "should have an entry containing the string representation of the headers" do
|
100
102
|
HttpStub::Configurer::Request::Regexpable.should_receive(:format)
|
101
103
|
.with(headers).and_return("headers as string")
|
102
104
|
|
103
|
-
request_body.should include(
|
105
|
+
request_body.should include("headers" => "headers as string")
|
104
106
|
end
|
105
107
|
|
106
108
|
it "should have an entry containing the string representation of the parameters" do
|
107
109
|
HttpStub::Configurer::Request::Regexpable.should_receive(:format)
|
108
110
|
.with(parameters).and_return("parameters as string")
|
109
111
|
|
110
|
-
request_body.should include(
|
112
|
+
request_body.should include("parameters" => "parameters as string")
|
111
113
|
end
|
112
114
|
|
113
|
-
|
115
|
+
context "when a status response option is provided" do
|
114
116
|
|
115
117
|
it "should have a response entry for the option" do
|
116
|
-
request_body["response"].should include(
|
118
|
+
request_body["response"].should include("status" => response_status)
|
117
119
|
end
|
118
120
|
|
119
121
|
end
|
120
122
|
|
121
|
-
|
123
|
+
context "when no status response option is provided" do
|
122
124
|
|
123
125
|
let(:response_status) { nil }
|
124
126
|
|
125
|
-
it "should have a response entry with status code
|
126
|
-
request_body["response"].should include(
|
127
|
+
it "should have a response entry with an empty status code" do
|
128
|
+
request_body["response"].should include("status" => "")
|
127
129
|
end
|
128
130
|
|
129
131
|
end
|
130
132
|
|
131
133
|
it "should have an entry for the response body option" do
|
132
|
-
request_body["response"].should include(
|
134
|
+
request_body["response"].should include("body" => response_body)
|
135
|
+
end
|
136
|
+
|
137
|
+
context "when a delay option is provided" do
|
138
|
+
|
139
|
+
it "should have a response entry for the option" do
|
140
|
+
request_body["response"].should include("delay_in_seconds" => response_delay_in_seconds)
|
141
|
+
end
|
142
|
+
|
143
|
+
end
|
144
|
+
|
145
|
+
context "when a delay option is not provided" do
|
146
|
+
|
147
|
+
let(:response_delay_in_seconds) { nil }
|
148
|
+
|
149
|
+
it "should have a response entry with an empty delay" do
|
150
|
+
request_body["response"].should include("delay_in_seconds" => "")
|
151
|
+
end
|
152
|
+
|
133
153
|
end
|
134
154
|
|
135
155
|
end
|
@@ -1,24 +1,17 @@
|
|
1
1
|
describe HttpStub::Models::RequestPipeline do
|
2
2
|
|
3
|
-
|
3
|
+
let(:request_pipeline) { HttpStub::Models::RequestPipeline }
|
4
4
|
|
5
|
-
|
6
|
-
let(:request_pipeline) { HttpStub::Models::RequestPipeline }
|
5
|
+
describe ".before_halt" do
|
7
6
|
|
8
|
-
|
9
|
-
request_pipeline.stub(:sleep)
|
10
|
-
response.stub(:delay_in_seconds).and_return(5)
|
11
|
-
end
|
7
|
+
let(:response) { double(HttpStub::Models::Response, delay_in_seconds: 5) }
|
12
8
|
|
13
|
-
it
|
9
|
+
it "should sleep for specified duration" do
|
14
10
|
request_pipeline.should_receive(:sleep).with(5)
|
15
|
-
request_pipeline.before_halt(response)
|
16
|
-
end
|
17
11
|
|
18
|
-
it 'should skip sleep if not specified' do
|
19
|
-
request_pipeline.should_not_receive(:sleep)
|
20
|
-
response.stub(:delay_in_seconds).and_return(nil)
|
21
12
|
request_pipeline.before_halt(response)
|
22
13
|
end
|
14
|
+
|
23
15
|
end
|
24
|
-
|
16
|
+
|
17
|
+
end
|
@@ -1,6 +1,12 @@
|
|
1
1
|
describe HttpStub::Models::Response do
|
2
2
|
|
3
|
-
let(:
|
3
|
+
let(:status) { 202 }
|
4
|
+
let(:body) { "A response body" }
|
5
|
+
let(:delay_in_seconds) { 18 }
|
6
|
+
|
7
|
+
let(:response) do
|
8
|
+
HttpStub::Models::Response.new("status" => status, "body" => body, "delay_in_seconds" => delay_in_seconds)
|
9
|
+
end
|
4
10
|
|
5
11
|
describe "::SUCCESS" do
|
6
12
|
|
@@ -30,24 +36,38 @@ describe HttpStub::Models::Response do
|
|
30
36
|
|
31
37
|
end
|
32
38
|
|
33
|
-
describe "
|
39
|
+
describe "#status" do
|
34
40
|
|
35
|
-
|
41
|
+
context "when a value is provided in the options" do
|
36
42
|
|
37
|
-
|
38
|
-
|
39
|
-
|
43
|
+
context "that is an integer" do
|
44
|
+
|
45
|
+
it "should return the value provided" do
|
46
|
+
response.status.should eql(status)
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
context "that is an empty string" do
|
52
|
+
|
53
|
+
let(:status) { "" }
|
54
|
+
|
55
|
+
it "should return 200" do
|
56
|
+
response.status.should eql(200)
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
40
60
|
|
41
|
-
it "should have a nil body" do
|
42
|
-
response.body.should be_nil
|
43
61
|
end
|
44
62
|
|
45
|
-
|
63
|
+
context "when the status is not provided in the options" do
|
46
64
|
|
47
|
-
|
65
|
+
let(:response) { HttpStub::Models::Response.new("body" => body, "delay_in_seconds" => delay_in_seconds) }
|
66
|
+
|
67
|
+
it "should return 200" do
|
68
|
+
response.status.should eql(200)
|
69
|
+
end
|
48
70
|
|
49
|
-
it "should return the value provided in the options" do
|
50
|
-
response.status.should eql(202)
|
51
71
|
end
|
52
72
|
|
53
73
|
end
|
@@ -60,6 +80,42 @@ describe HttpStub::Models::Response do
|
|
60
80
|
|
61
81
|
end
|
62
82
|
|
83
|
+
describe "#delay_in_seconds" do
|
84
|
+
|
85
|
+
context "when a value is provided in the options" do
|
86
|
+
|
87
|
+
context "that is an integer" do
|
88
|
+
|
89
|
+
it "should return the value" do
|
90
|
+
response.delay_in_seconds.should eql(delay_in_seconds)
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
|
95
|
+
context "that is an empty string" do
|
96
|
+
|
97
|
+
let(:delay_in_seconds) { "" }
|
98
|
+
|
99
|
+
it "should return 0" do
|
100
|
+
response.delay_in_seconds.should eql(0)
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
context "when a value is not provided in the options" do
|
108
|
+
|
109
|
+
let(:response) { HttpStub::Models::Response.new("status" => status, "body" => body) }
|
110
|
+
|
111
|
+
it "should return 0" do
|
112
|
+
response.delay_in_seconds.should eql(0)
|
113
|
+
end
|
114
|
+
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
63
119
|
describe "#empty?" do
|
64
120
|
|
65
121
|
describe "when the response is EMPTY" do
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: http_stub
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.8.
|
4
|
+
version: 0.8.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-09-
|
13
|
+
date: 2013-09-17 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: sinatra
|
@@ -323,7 +323,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
323
323
|
version: '0'
|
324
324
|
segments:
|
325
325
|
- 0
|
326
|
-
hash: -
|
326
|
+
hash: -2719492474227436530
|
327
327
|
requirements: []
|
328
328
|
rubyforge_project: http_stub
|
329
329
|
rubygems_version: 1.8.25
|