http_stub 0.7.2 → 0.7.3
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/http_stub.rb +1 -2
- data/lib/http_stub/configurer/request/regexpable.rb +43 -0
- data/lib/http_stub/configurer/request/stub.rb +3 -3
- data/lib/http_stub/version.rb +1 -1
- data/spec/lib/http_stub/configurer/request/regexpable_spec.rb +67 -0
- data/spec/lib/http_stub/configurer/request/stub_spec.rb +15 -26
- metadata +5 -8
- data/lib/http_stub/configurer/request/hash_with_regexpable_values.rb +0 -22
- data/lib/http_stub/configurer/request/regexpable_value.rb +0 -18
- data/spec/lib/http_stub/configurer/request/hash_with_regexpable_values_spec.rb +0 -35
- data/spec/lib/http_stub/configurer/request/regexpable_value_spec.rb +0 -55
data/lib/http_stub.rb
CHANGED
@@ -23,8 +23,7 @@ require File.expand_path('../http_stub/models/registry', __FILE__)
|
|
23
23
|
require File.expand_path('../http_stub/controllers/stub_controller', __FILE__)
|
24
24
|
require File.expand_path('../http_stub/controllers/stub_activator_controller', __FILE__)
|
25
25
|
require File.expand_path('../http_stub/server', __FILE__)
|
26
|
-
require File.expand_path('../http_stub/configurer/request/
|
27
|
-
require File.expand_path('../http_stub/configurer/request/hash_with_regexpable_values', __FILE__)
|
26
|
+
require File.expand_path('../http_stub/configurer/request/regexpable', __FILE__)
|
28
27
|
require File.expand_path('../http_stub/configurer/request/stub', __FILE__)
|
29
28
|
require File.expand_path('../http_stub/configurer/request/stub_activator', __FILE__)
|
30
29
|
require File.expand_path('../http_stub/configurer/command', __FILE__)
|
@@ -0,0 +1,43 @@
|
|
1
|
+
module HttpStub
|
2
|
+
module Configurer
|
3
|
+
module Request
|
4
|
+
|
5
|
+
class Regexpable
|
6
|
+
|
7
|
+
class << self
|
8
|
+
|
9
|
+
private
|
10
|
+
|
11
|
+
FORMATTERS = { String => :format_string, Regexp => :format_regexp, Hash => :format_hash }
|
12
|
+
|
13
|
+
public
|
14
|
+
|
15
|
+
def format(value)
|
16
|
+
formatter = FORMATTERS.find { |formatter_entry| value.is_a?(formatter_entry[0]) }
|
17
|
+
raise "No Regexp formatter found for #{value}" unless formatter
|
18
|
+
self.send(formatter[1], value)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def format_string(string)
|
24
|
+
string
|
25
|
+
end
|
26
|
+
|
27
|
+
def format_regexp(regexp)
|
28
|
+
"regexp:#{regexp.source.gsub(/\\/, "")}"
|
29
|
+
end
|
30
|
+
|
31
|
+
def format_hash(hash)
|
32
|
+
hash.reduce({}) do |result, entry|
|
33
|
+
result[entry[0]] = format(entry[1])
|
34
|
+
result
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -8,10 +8,10 @@ module HttpStub
|
|
8
8
|
super("/stubs")
|
9
9
|
self.content_type = "application/json"
|
10
10
|
self.body = {
|
11
|
-
"uri" => HttpStub::Configurer::Request::
|
11
|
+
"uri" => HttpStub::Configurer::Request::Regexpable.format(uri),
|
12
12
|
"method" => options[:method],
|
13
|
-
"headers" => HttpStub::Configurer::Request::
|
14
|
-
"parameters" => HttpStub::Configurer::Request::
|
13
|
+
"headers" => HttpStub::Configurer::Request::Regexpable.format(options[:headers] || {}),
|
14
|
+
"parameters" => HttpStub::Configurer::Request::Regexpable.format(options[:parameters] || {}),
|
15
15
|
"response" => {
|
16
16
|
"status" => options[:response][:status] || 200,
|
17
17
|
"body" => options[:response][:body]
|
data/lib/http_stub/version.rb
CHANGED
@@ -0,0 +1,67 @@
|
|
1
|
+
describe HttpStub::Configurer::Request::Regexpable do
|
2
|
+
|
3
|
+
describe "#format" do
|
4
|
+
|
5
|
+
describe "when the value is a string" do
|
6
|
+
|
7
|
+
let(:value) { "some string value" }
|
8
|
+
|
9
|
+
it "should return the value unaltered" do
|
10
|
+
HttpStub::Configurer::Request::Regexpable.format(value).should eql(value)
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
describe "when the value is a regular expression" do
|
16
|
+
|
17
|
+
let(:value) { /.+?[a-z]/ }
|
18
|
+
|
19
|
+
it "should return a string prefixed by 'regexp:'" do
|
20
|
+
HttpStub::Configurer::Request::Regexpable.format(value).should start_with("regexp:")
|
21
|
+
end
|
22
|
+
|
23
|
+
it "should contain the regular expression converted to a string" do
|
24
|
+
HttpStub::Configurer::Request::Regexpable.format(value).should end_with(".+?[a-z]")
|
25
|
+
end
|
26
|
+
|
27
|
+
describe "and the regular expression contain path separators" do
|
28
|
+
|
29
|
+
let(:value) { /\/some\/path/ }
|
30
|
+
|
31
|
+
it "should represent the path separators as a single forward-slash" do
|
32
|
+
HttpStub::Configurer::Request::Regexpable.format(value).should end_with("/some/path")
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
describe "when the value is a hash" do
|
40
|
+
|
41
|
+
describe "and the hash has multiple entries" do
|
42
|
+
|
43
|
+
let(:value) { { key1: "value1", key2: /^.*value2$/, key3: "value3" } }
|
44
|
+
|
45
|
+
it "should return a json representation of the hash whose values are their regexpable form" do
|
46
|
+
expected_formatted_hash = {key1: "value1", key2: "regexp:^.*value2$", key3: "value3"}
|
47
|
+
|
48
|
+
HttpStub::Configurer::Request::Regexpable.format(value).should eql(expected_formatted_hash)
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
describe "and the hash is empty" do
|
54
|
+
|
55
|
+
let(:value) { {} }
|
56
|
+
|
57
|
+
it "should return an empty hash" do
|
58
|
+
HttpStub::Configurer::Request::Regexpable.format(value).should eql({})
|
59
|
+
end
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
end
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
@@ -26,11 +26,7 @@ describe HttpStub::Configurer::Request::Stub do
|
|
26
26
|
let(:request) { HttpStub::Configurer::Request::Stub.new(uri, stub_options) }
|
27
27
|
let(:request_body) { JSON.parse(request.body) }
|
28
28
|
|
29
|
-
before(:each)
|
30
|
-
HttpStub::Configurer::Request::HashWithRegexpableValues.stub!(:new).and_return(
|
31
|
-
double(HttpStub::Configurer::Request::HashWithRegexpableValues).as_null_object
|
32
|
-
)
|
33
|
-
end
|
29
|
+
before(:each) { HttpStub::Configurer::Request::Regexpable.stub!(:format) }
|
34
30
|
|
35
31
|
it "should create a HTTP POST request" do
|
36
32
|
request.method.should eql("POST")
|
@@ -44,16 +40,10 @@ describe HttpStub::Configurer::Request::Stub do
|
|
44
40
|
request.content_type.should eql("application/json")
|
45
41
|
end
|
46
42
|
|
47
|
-
it "should create a regexpable representation of the uri" do
|
48
|
-
HttpStub::Configurer::Request::RegexpableValue.should_receive(:new).with(uri)
|
49
|
-
|
50
|
-
request
|
51
|
-
end
|
52
|
-
|
53
43
|
describe "when a header option is provided" do
|
54
44
|
|
55
|
-
it "should
|
56
|
-
HttpStub::Configurer::Request::
|
45
|
+
it "should format the headers with regexp support" do
|
46
|
+
HttpStub::Configurer::Request::Regexpable.should_receive(:format).with(headers)
|
57
47
|
|
58
48
|
request
|
59
49
|
end
|
@@ -64,8 +54,8 @@ describe HttpStub::Configurer::Request::Stub do
|
|
64
54
|
|
65
55
|
let(:headers) { nil }
|
66
56
|
|
67
|
-
it "should
|
68
|
-
HttpStub::Configurer::Request::
|
57
|
+
it "should format an empty header hash" do
|
58
|
+
HttpStub::Configurer::Request::Regexpable.should_receive(:format).with({})
|
69
59
|
|
70
60
|
request
|
71
61
|
end
|
@@ -74,8 +64,8 @@ describe HttpStub::Configurer::Request::Stub do
|
|
74
64
|
|
75
65
|
describe "when a parameter option is provided" do
|
76
66
|
|
77
|
-
it "should
|
78
|
-
HttpStub::Configurer::Request::
|
67
|
+
it "should format the parameters with regexp support" do
|
68
|
+
HttpStub::Configurer::Request::Regexpable.should_receive(:format).with(parameters)
|
79
69
|
|
80
70
|
request
|
81
71
|
end
|
@@ -86,8 +76,8 @@ describe HttpStub::Configurer::Request::Stub do
|
|
86
76
|
|
87
77
|
let(:parameters) { nil }
|
88
78
|
|
89
|
-
it "should
|
90
|
-
HttpStub::Configurer::Request::
|
79
|
+
it "should format an empty parameter hash" do
|
80
|
+
HttpStub::Configurer::Request::Regexpable.should_receive(:format).with({})
|
91
81
|
|
92
82
|
request
|
93
83
|
end
|
@@ -96,9 +86,8 @@ describe HttpStub::Configurer::Request::Stub do
|
|
96
86
|
|
97
87
|
describe "generates a JSON body which" do
|
98
88
|
|
99
|
-
it "should have an entry containing the
|
100
|
-
|
101
|
-
HttpStub::Configurer::Request::RegexpableValue.stub!(:new).and_return(uri_value)
|
89
|
+
it "should have an entry containing the regexpable representation of the uri" do
|
90
|
+
HttpStub::Configurer::Request::Regexpable.should_receive(:format).with(uri).and_return("uri as a string")
|
102
91
|
|
103
92
|
request_body.should include({ "uri" => "uri as a string" })
|
104
93
|
end
|
@@ -108,15 +97,15 @@ describe HttpStub::Configurer::Request::Stub do
|
|
108
97
|
end
|
109
98
|
|
110
99
|
it "should have an entry containing the string representation of the headers" do
|
111
|
-
|
112
|
-
|
100
|
+
HttpStub::Configurer::Request::Regexpable.should_receive(:format)
|
101
|
+
.with(headers).and_return("headers as string")
|
113
102
|
|
114
103
|
request_body.should include({ "headers" => "headers as string" })
|
115
104
|
end
|
116
105
|
|
117
106
|
it "should have an entry containing the string representation of the parameters" do
|
118
|
-
|
119
|
-
|
107
|
+
HttpStub::Configurer::Request::Regexpable.should_receive(:format)
|
108
|
+
.with(parameters).and_return("parameters as string")
|
120
109
|
|
121
110
|
request_body.should include({ "parameters" => "parameters as string" })
|
122
111
|
end
|
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.7.
|
4
|
+
version: 0.7.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -213,8 +213,7 @@ files:
|
|
213
213
|
- ./lib/http_stub/configurer/command.rb
|
214
214
|
- ./lib/http_stub/configurer/impatient_command_chain.rb
|
215
215
|
- ./lib/http_stub/configurer/patient_command_chain.rb
|
216
|
-
- ./lib/http_stub/configurer/request/
|
217
|
-
- ./lib/http_stub/configurer/request/regexpable_value.rb
|
216
|
+
- ./lib/http_stub/configurer/request/regexpable.rb
|
218
217
|
- ./lib/http_stub/configurer/request/stub.rb
|
219
218
|
- ./lib/http_stub/configurer/request/stub_activator.rb
|
220
219
|
- ./lib/http_stub/configurer.rb
|
@@ -246,8 +245,7 @@ files:
|
|
246
245
|
- ./spec/lib/http_stub/configurer/command_spec.rb
|
247
246
|
- ./spec/lib/http_stub/configurer/impatient_command_chain_spec.rb
|
248
247
|
- ./spec/lib/http_stub/configurer/patient_command_chain_spec.rb
|
249
|
-
- ./spec/lib/http_stub/configurer/request/
|
250
|
-
- ./spec/lib/http_stub/configurer/request/regexpable_value_spec.rb
|
248
|
+
- ./spec/lib/http_stub/configurer/request/regexpable_spec.rb
|
251
249
|
- ./spec/lib/http_stub/configurer/request/stub_activator_spec.rb
|
252
250
|
- ./spec/lib/http_stub/configurer/request/stub_spec.rb
|
253
251
|
- ./spec/lib/http_stub/configurer_integration_spec.rb
|
@@ -290,7 +288,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
290
288
|
version: '0'
|
291
289
|
segments:
|
292
290
|
- 0
|
293
|
-
hash:
|
291
|
+
hash: 2072585349946261127
|
294
292
|
requirements: []
|
295
293
|
rubyforge_project: http_stub
|
296
294
|
rubygems_version: 1.8.25
|
@@ -303,8 +301,7 @@ test_files:
|
|
303
301
|
- ./spec/lib/http_stub/configurer/command_spec.rb
|
304
302
|
- ./spec/lib/http_stub/configurer/impatient_command_chain_spec.rb
|
305
303
|
- ./spec/lib/http_stub/configurer/patient_command_chain_spec.rb
|
306
|
-
- ./spec/lib/http_stub/configurer/request/
|
307
|
-
- ./spec/lib/http_stub/configurer/request/regexpable_value_spec.rb
|
304
|
+
- ./spec/lib/http_stub/configurer/request/regexpable_spec.rb
|
308
305
|
- ./spec/lib/http_stub/configurer/request/stub_activator_spec.rb
|
309
306
|
- ./spec/lib/http_stub/configurer/request/stub_spec.rb
|
310
307
|
- ./spec/lib/http_stub/configurer_integration_spec.rb
|
@@ -1,22 +0,0 @@
|
|
1
|
-
module HttpStub
|
2
|
-
module Configurer
|
3
|
-
module Request
|
4
|
-
|
5
|
-
class HashWithRegexpableValues
|
6
|
-
|
7
|
-
def initialize(hash)
|
8
|
-
@hash = hash.reduce({}) do |result, entry|
|
9
|
-
result[entry[0]] = HttpStub::Configurer::Request::RegexpableValue.new(entry[1])
|
10
|
-
result
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def to_json(*args)
|
15
|
-
@hash.to_json(args)
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module HttpStub
|
2
|
-
module Configurer
|
3
|
-
module Request
|
4
|
-
|
5
|
-
class RegexpableValue
|
6
|
-
|
7
|
-
def initialize(value)
|
8
|
-
@value = value
|
9
|
-
end
|
10
|
-
|
11
|
-
def to_s
|
12
|
-
@value.is_a?(Regexp) ? "regexp:#{@value.source.gsub(/\\/, "")}" : @value
|
13
|
-
end
|
14
|
-
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end
|
@@ -1,35 +0,0 @@
|
|
1
|
-
describe HttpStub::Configurer::Request::HashWithRegexpableValues do
|
2
|
-
|
3
|
-
let(:hash_with_regexpable_values) { HttpStub::Configurer::Request::HashWithRegexpableValues.new(raw_hash) }
|
4
|
-
|
5
|
-
describe "#to_json" do
|
6
|
-
|
7
|
-
describe "when provided a hash with multiple entries" do
|
8
|
-
|
9
|
-
let(:raw_hash) { { key1: "value1", key2: "value2", key3: "value3" } }
|
10
|
-
|
11
|
-
it "should return a json representation of the hash whose values are their regexpable form" do
|
12
|
-
raw_hash.values.each do |value|
|
13
|
-
regexpable_value = double(HttpStub::Configurer::Request::RegexpableValue, to_s: "regexpable_#{value}")
|
14
|
-
HttpStub::Configurer::Request::RegexpableValue.stub!(:new).with(value).and_return(regexpable_value)
|
15
|
-
end
|
16
|
-
|
17
|
-
expected_json = { key1: "regexpable_value1", key2: "regexpable_value2", key3: "regexpable_value3" }.to_json
|
18
|
-
hash_with_regexpable_values.to_json.should eql(expected_json)
|
19
|
-
end
|
20
|
-
|
21
|
-
end
|
22
|
-
|
23
|
-
describe "when provided an empty hash" do
|
24
|
-
|
25
|
-
let(:raw_hash) { {} }
|
26
|
-
|
27
|
-
it "should return a json representation of an empty hash" do
|
28
|
-
hash_with_regexpable_values.to_json.should eql({}.to_json)
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
|
35
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
describe HttpStub::Configurer::Request::RegexpableValue do
|
2
|
-
|
3
|
-
let(:regexpable_value) { HttpStub::Configurer::Request::RegexpableValue.new(raw_value) }
|
4
|
-
|
5
|
-
describe "#to_s" do
|
6
|
-
|
7
|
-
describe "when the option's value is a regular expression" do
|
8
|
-
|
9
|
-
let(:raw_value) { /.+?[a-z]/ }
|
10
|
-
|
11
|
-
it "should return a string prefixed by 'regexp:'" do
|
12
|
-
regexpable_value.to_s.should start_with("regexp:")
|
13
|
-
end
|
14
|
-
|
15
|
-
it "should contain the regular expression converted to a string" do
|
16
|
-
regexpable_value.to_s.should end_with(".+?[a-z]")
|
17
|
-
end
|
18
|
-
|
19
|
-
describe "and the regular expression contain path separators" do
|
20
|
-
|
21
|
-
let(:raw_value) { /\/some\/path/ }
|
22
|
-
|
23
|
-
it "should represent the path separators as a single forward-slash" do
|
24
|
-
regexpable_value.to_s.should end_with("/some/path")
|
25
|
-
end
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
describe "when the option's value is a string" do
|
32
|
-
|
33
|
-
let(:raw_value) { "some string value" }
|
34
|
-
|
35
|
-
it "should return the value unaltered" do
|
36
|
-
regexpable_value.to_s.should eql(raw_value)
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
|
43
|
-
describe "#inspect" do
|
44
|
-
|
45
|
-
let(:raw_value) { "some raw value" }
|
46
|
-
|
47
|
-
it "should delegate to #to_s" do
|
48
|
-
regexpable_value.should_receive(:to_s).and_return("some raw value as a string")
|
49
|
-
|
50
|
-
regexpable_value.inspect.should eql("some raw value as a string")
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|