http_stub 0.7.2 → 0.7.3
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.
- 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
|