http_stub 0.22.4 → 0.23.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/http_stub.rb +15 -5
- data/lib/http_stub/configurer/dsl/request_attribute_referencer.rb +19 -0
- data/lib/http_stub/configurer/dsl/request_referencer.rb +24 -0
- data/lib/http_stub/configurer/dsl/scenario_activator.rb +2 -2
- data/lib/http_stub/configurer/dsl/scenario_builder.rb +2 -2
- data/lib/http_stub/configurer/dsl/server.rb +4 -4
- data/lib/http_stub/configurer/dsl/stub_builder.rb +5 -3
- data/lib/http_stub/configurer/request/controllable_value.rb +1 -3
- data/lib/http_stub/configurer/request/http/factory.rb +2 -2
- data/lib/http_stub/configurer/request/omittable.rb +2 -4
- data/lib/http_stub/configurer/request/regexpable.rb +3 -8
- data/lib/http_stub/configurer/server/command_processor.rb +5 -7
- data/lib/http_stub/configurer/server/facade.rb +2 -4
- data/lib/http_stub/extensions/core/hash.rb +4 -11
- data/lib/http_stub/extensions/core/hash/formatted.rb +23 -0
- data/lib/http_stub/extensions/core/hash/indifferent_and_insensitive_access.rb +24 -0
- data/lib/http_stub/extensions/core/hash/with_indifferent_and_insensitive_access.rb +18 -0
- data/lib/http_stub/extensions/rack/handler.rb +1 -1
- data/lib/http_stub/rake/task_generators.rb +1 -1
- data/lib/http_stub/server/application.rb +10 -11
- data/lib/http_stub/server/application_helpers.rb +3 -5
- data/lib/http_stub/server/daemon.rb +5 -6
- data/lib/http_stub/server/request.rb +3 -10
- data/lib/http_stub/server/request/headers.rb +25 -0
- data/lib/http_stub/server/request/parameters.rb +21 -0
- data/lib/http_stub/server/request/request.rb +21 -0
- data/lib/http_stub/server/scenario/links.rb +1 -1
- data/lib/http_stub/server/stub/controller.rb +1 -1
- data/lib/http_stub/server/stub/empty.rb +4 -0
- data/lib/http_stub/server/stub/match/hash_matcher.rb +19 -0
- data/lib/http_stub/server/stub/match/omitted_value_matcher.rb +1 -3
- data/lib/http_stub/server/stub/match/rule/body.rb +2 -4
- data/lib/http_stub/server/stub/match/rule/headers.rb +5 -11
- data/lib/http_stub/server/stub/match/rule/json_body.rb +3 -5
- data/lib/http_stub/server/stub/match/rule/method.rb +1 -1
- data/lib/http_stub/server/stub/match/rule/parameters.rb +4 -7
- data/lib/http_stub/server/stub/match/rule/simple_body.rb +3 -3
- data/lib/http_stub/server/stub/match/rule/truthy.rb +27 -0
- data/lib/http_stub/server/stub/match/rule/uri.rb +3 -3
- data/lib/http_stub/server/stub/match/string_value_matcher.rb +4 -13
- data/lib/http_stub/server/stub/response.rb +5 -2
- data/lib/http_stub/server/stub/response/attribute/body.rb +32 -0
- data/lib/http_stub/server/stub/response/attribute/headers.rb +26 -0
- data/lib/http_stub/server/stub/response/attribute/interpolator.rb +26 -0
- data/lib/http_stub/server/stub/response/attribute/interpolator/headers.rb +27 -0
- data/lib/http_stub/server/stub/response/attribute/interpolator/parameters.rb +27 -0
- data/lib/http_stub/server/stub/response/base.rb +5 -16
- data/lib/http_stub/server/stub/response/file.rb +6 -2
- data/lib/http_stub/server/stub/response/text.rb +12 -0
- data/lib/http_stub/server/stub/stub.rb +4 -0
- data/lib/http_stub/version.rb +1 -1
- data/spec/acceptance/request_reference_spec.rb +44 -0
- data/spec/lib/http_stub/configurer/dsl/request_attribute_referencer_spec.rb +37 -0
- data/spec/lib/http_stub/configurer/dsl/request_referencer_spec.rb +37 -0
- data/spec/lib/http_stub/configurer/dsl/scenario_activator_spec.rb +14 -14
- data/spec/lib/http_stub/configurer/dsl/server_spec.rb +2 -6
- data/spec/lib/http_stub/configurer/dsl/stub_builder_spec.rb +34 -8
- data/spec/lib/http_stub/{server/formatted_hash_spec.rb → extensions/core/hash/formatted_spec.rb} +4 -6
- data/spec/lib/http_stub/{hash_with_indifferent_and_insensitive_access_spec.rb → extensions/core/hash/indifferent_and_insensitive_access_spec.rb} +8 -4
- data/spec/lib/http_stub/extensions/core/hash/with_indifferent_and_insensitive_access_spec.rb +41 -0
- data/spec/lib/http_stub/extensions/core/hash_spec.rb +11 -129
- data/spec/lib/http_stub/server/application_spec.rb +1 -1
- data/spec/lib/http_stub/server/payload_file_consolidator_spec.rb +1 -1
- data/spec/lib/http_stub/server/request/headers_spec.rb +89 -0
- data/spec/lib/http_stub/server/request/parameters_spec.rb +60 -0
- data/spec/lib/http_stub/server/request/request_spec.rb +84 -0
- data/spec/lib/http_stub/server/request_spec.rb +9 -98
- data/spec/lib/http_stub/server/response_spec.rb +2 -6
- data/spec/lib/http_stub/server/scenario/controller_spec.rb +1 -1
- data/spec/lib/http_stub/server/scenario/parser_spec.rb +3 -1
- data/spec/lib/http_stub/server/stub/controller_spec.rb +11 -4
- data/spec/lib/http_stub/server/stub/empty_spec.rb +10 -0
- data/spec/lib/http_stub/server/stub/match/hash_matcher_spec.rb +122 -0
- data/spec/lib/http_stub/server/stub/match/rule/body_spec.rb +4 -4
- data/spec/lib/http_stub/server/stub/match/rule/headers_spec.rb +54 -45
- data/spec/lib/http_stub/server/stub/match/rule/json_body_spec.rb +5 -5
- data/spec/lib/http_stub/server/stub/match/rule/method_spec.rb +19 -17
- data/spec/lib/http_stub/server/stub/match/rule/parameters_spec.rb +26 -33
- data/spec/lib/http_stub/server/stub/match/rule/simple_body_spec.rb +16 -25
- data/spec/lib/http_stub/server/stub/match/{truthy_matcher_spec.rb → rule/truthy_spec.rb} +3 -5
- data/spec/lib/http_stub/server/stub/match/rule/uri_spec.rb +16 -25
- data/spec/lib/http_stub/server/stub/match/string_value_matcher_spec.rb +2 -12
- data/spec/lib/http_stub/server/stub/parser_spec.rb +5 -3
- data/spec/lib/http_stub/server/stub/response/attribute/body_spec.rb +98 -0
- data/spec/lib/http_stub/server/stub/response/attribute/headers_spec.rb +57 -0
- data/spec/lib/http_stub/server/stub/response/attribute/interpolator/headers_spec.rb +53 -0
- data/spec/lib/http_stub/server/stub/response/attribute/interpolator/parameters_spec.rb +53 -0
- data/spec/lib/http_stub/server/stub/response/attribute/interpolator_spec.rb +41 -0
- data/spec/lib/http_stub/server/stub/response/base_spec.rb +6 -53
- data/spec/lib/http_stub/server/stub/response/file_spec.rb +48 -7
- data/spec/lib/http_stub/server/stub/response/text_spec.rb +66 -1
- data/spec/lib/http_stub/server/stub/stub_spec.rb +25 -4
- data/spec/spec_helper.rb +1 -0
- data/spec/support/http_stub/server/request_fixture.rb +1 -1
- metadata +86 -26
- data/lib/http_stub/hash_with_indifferent_and_insensitive_access.rb +0 -18
- data/lib/http_stub/server/formatted_hash.rb +0 -18
- data/lib/http_stub/server/header_parser.rb +0 -17
- data/lib/http_stub/server/stub/match/hash_with_string_value_matchers.rb +0 -26
- data/lib/http_stub/server/stub/match/truthy_matcher.rb +0 -25
- data/spec/lib/http_stub/server/header_parser_spec.rb +0 -51
- data/spec/lib/http_stub/server/stub/match/hash_with_string_value_matchers_spec.rb +0 -166
@@ -1,13 +1,13 @@
|
|
1
1
|
describe HttpStub::Server::Stub::Match::Rule::JsonBody do
|
2
2
|
|
3
|
-
let(:
|
3
|
+
let(:stub_schema_definition) { { "type" => "object", "properties" => { "some_property" => "some_type" } } }
|
4
4
|
|
5
|
-
let(:json_body) { described_class.new(
|
5
|
+
let(:json_body) { described_class.new(stub_schema_definition) }
|
6
6
|
|
7
7
|
describe "#matches?" do
|
8
8
|
|
9
9
|
let(:request_body) { { "some_json_property" => "some_json_value" }.to_json }
|
10
|
-
let(:request) { instance_double(HttpStub::Server::Request, body: request_body) }
|
10
|
+
let(:request) { instance_double(HttpStub::Server::Request::Request, body: request_body) }
|
11
11
|
let(:logger) { instance_double(Logger, info: nil) }
|
12
12
|
|
13
13
|
let(:validation_errors) { [] }
|
@@ -17,7 +17,7 @@ describe HttpStub::Server::Stub::Match::Rule::JsonBody do
|
|
17
17
|
before(:example) { allow(JSON::Validator).to receive(:fully_validate).and_return(validation_errors) }
|
18
18
|
|
19
19
|
it "validates the request body using the stubbed schema definition" do
|
20
|
-
expect(JSON::Validator).to receive(:fully_validate).with(
|
20
|
+
expect(JSON::Validator).to receive(:fully_validate).with(stub_schema_definition, request_body, anything)
|
21
21
|
|
22
22
|
subject
|
23
23
|
end
|
@@ -93,7 +93,7 @@ describe HttpStub::Server::Stub::Match::Rule::JsonBody do
|
|
93
93
|
subject { json_body.to_s }
|
94
94
|
|
95
95
|
it "returns the JSON representation of the schema definition" do
|
96
|
-
expect(subject).to eql(
|
96
|
+
expect(subject).to eql(stub_schema_definition.to_json)
|
97
97
|
end
|
98
98
|
|
99
99
|
end
|
@@ -1,20 +1,20 @@
|
|
1
1
|
describe HttpStub::Server::Stub::Match::Rule::Method do
|
2
2
|
|
3
|
-
let(:
|
3
|
+
let(:stub_method) { "put" }
|
4
4
|
|
5
|
-
let(:the_method) { described_class.new(
|
5
|
+
let(:the_method) { described_class.new(stub_method) }
|
6
6
|
|
7
7
|
describe "#matches?" do
|
8
8
|
|
9
9
|
let(:request_method) { "get" }
|
10
|
-
let(:request) { instance_double(HttpStub::Server::Request, method: request_method) }
|
10
|
+
let(:request) { instance_double(HttpStub::Server::Request::Request, method: request_method) }
|
11
11
|
let(:logger) { instance_double(Logger) }
|
12
12
|
|
13
13
|
subject { the_method.matches?(request, logger) }
|
14
14
|
|
15
15
|
context "when the request method is identical to the stub method" do
|
16
16
|
|
17
|
-
let(:request_method) {
|
17
|
+
let(:request_method) { stub_method }
|
18
18
|
|
19
19
|
it "returns true" do
|
20
20
|
expect(subject).to be(true)
|
@@ -22,9 +22,9 @@ describe HttpStub::Server::Stub::Match::Rule::Method do
|
|
22
22
|
|
23
23
|
end
|
24
24
|
|
25
|
-
context "when the
|
25
|
+
context "when the stub method and request method are the the same value but have different casing" do
|
26
26
|
|
27
|
-
let(:
|
27
|
+
let(:stub_method) { "GET" }
|
28
28
|
|
29
29
|
it "returns true" do
|
30
30
|
expect(subject).to be(true)
|
@@ -36,7 +36,7 @@ describe HttpStub::Server::Stub::Match::Rule::Method do
|
|
36
36
|
|
37
37
|
context "with a nil value" do
|
38
38
|
|
39
|
-
let(:
|
39
|
+
let(:stub_method) { nil }
|
40
40
|
|
41
41
|
it "returns true" do
|
42
42
|
expect(subject).to be(true)
|
@@ -46,7 +46,7 @@ describe HttpStub::Server::Stub::Match::Rule::Method do
|
|
46
46
|
|
47
47
|
context "with an empty string" do
|
48
48
|
|
49
|
-
let(:
|
49
|
+
let(:stub_method) { "" }
|
50
50
|
|
51
51
|
it "returns true" do
|
52
52
|
expect(subject).to be(true)
|
@@ -56,10 +56,10 @@ describe HttpStub::Server::Stub::Match::Rule::Method do
|
|
56
56
|
|
57
57
|
end
|
58
58
|
|
59
|
-
context "when the
|
59
|
+
context "when the stub method is different to the request method" do
|
60
60
|
|
61
|
+
let(:stub_method) { "delete" }
|
61
62
|
let(:request_method) { "get" }
|
62
|
-
let(:raw_stub_method) { "delete" }
|
63
63
|
|
64
64
|
it "returns false" do
|
65
65
|
expect(subject).to be(false)
|
@@ -71,22 +71,24 @@ describe HttpStub::Server::Stub::Match::Rule::Method do
|
|
71
71
|
|
72
72
|
describe "#to_s" do
|
73
73
|
|
74
|
-
|
74
|
+
subject { the_method.to_s }
|
75
75
|
|
76
|
-
|
76
|
+
context "when the stub method is not nil" do
|
77
77
|
|
78
|
-
|
79
|
-
|
78
|
+
let(:stub_method) { "present" }
|
79
|
+
|
80
|
+
it "returns the stub method" do
|
81
|
+
expect(subject).to eql(stub_method)
|
80
82
|
end
|
81
83
|
|
82
84
|
end
|
83
85
|
|
84
|
-
context "when the stub method
|
86
|
+
context "when the stub method is nil" do
|
85
87
|
|
86
|
-
let(:
|
88
|
+
let(:stub_method) { nil }
|
87
89
|
|
88
90
|
it "returns an empty string" do
|
89
|
-
expect(
|
91
|
+
expect(subject).to eql("")
|
90
92
|
end
|
91
93
|
|
92
94
|
end
|
@@ -1,64 +1,57 @@
|
|
1
1
|
describe HttpStub::Server::Stub::Match::Rule::Parameters do
|
2
2
|
|
3
|
-
let(:
|
4
|
-
let(:request) { instance_double(HttpStub::Server::Request, parameters: raw_request_parameters) }
|
3
|
+
let(:stub_parameters) { (1..3).each_with_object({}) { |i, result| result["key#{i}"] = "value#{i}" } }
|
5
4
|
|
6
|
-
let(:
|
7
|
-
let(:regexpable_stubbed_paremeters) do
|
8
|
-
double(HttpStub::Server::Stub::Match::HashWithStringValueMatchers).as_null_object
|
9
|
-
end
|
5
|
+
let(:parameters) { described_class.new(stub_parameters) }
|
10
6
|
|
11
|
-
|
7
|
+
it "is a hash with indifferent access" do
|
8
|
+
expect(parameters).to be_a(::HashWithIndifferentAccess)
|
9
|
+
end
|
12
10
|
|
13
|
-
|
11
|
+
context "when no parameters are provided" do
|
14
12
|
|
15
|
-
|
16
|
-
expect(HttpStub::Server::Stub::Match::HashWithStringValueMatchers).to receive(:new).with(stubbed_parameters)
|
13
|
+
let(:stub_parameters) { nil }
|
17
14
|
|
18
|
-
|
15
|
+
it "is empty" do
|
16
|
+
expect(parameters.empty?).to be(true)
|
19
17
|
end
|
20
18
|
|
21
19
|
end
|
22
20
|
|
23
|
-
describe "
|
21
|
+
describe "#matches?" do
|
24
22
|
|
25
|
-
let(:
|
23
|
+
let(:request_parameters) { instance_double(HttpStub::Server::Request::Parameters) }
|
24
|
+
let(:request) { instance_double(HttpStub::Server::Request::Request, parameters: request_parameters) }
|
25
|
+
let(:logger) { instance_double(Logger) }
|
26
26
|
|
27
|
-
|
28
|
-
expect(HttpStub::Server::Stub::Match::HashWithStringValueMatchers).to receive(:new).with({})
|
27
|
+
subject { parameters.matches?(request, logger) }
|
29
28
|
|
30
|
-
|
31
|
-
|
29
|
+
it "determines if the stub parameter and request parameter hashes match" do
|
30
|
+
expect(HttpStub::Server::Stub::Match::HashMatcher).to receive(:match?).with(parameters, request_parameters)
|
32
31
|
|
33
|
-
|
34
|
-
|
35
|
-
describe "#matches?" do
|
36
|
-
|
37
|
-
let(:logger) { instance_double(Logger) }
|
32
|
+
subject
|
33
|
+
end
|
38
34
|
|
39
|
-
it "
|
40
|
-
allow(HttpStub::Server::Stub::Match::
|
41
|
-
receive(:new).and_return(regexpable_stubbed_paremeters)
|
42
|
-
)
|
43
|
-
expect(regexpable_stubbed_paremeters).to receive(:matches?).with(raw_request_parameters).and_return(true)
|
35
|
+
it "returns the result of the match" do
|
36
|
+
allow(HttpStub::Server::Stub::Match::HashMatcher).to receive(:match?).and_return(true)
|
44
37
|
|
45
|
-
expect(
|
38
|
+
expect(subject).to eql(true)
|
46
39
|
end
|
47
40
|
|
48
41
|
end
|
49
42
|
|
50
43
|
describe "#to_s" do
|
51
44
|
|
52
|
-
subject {
|
45
|
+
subject { parameters.to_s }
|
53
46
|
|
54
47
|
describe "when multiple parameters are provided" do
|
55
48
|
|
56
|
-
let(:
|
49
|
+
let(:stub_parameters) { (1..3).each_with_object({}) { |i, result| result["key#{i}"] = "value#{i}" } }
|
57
50
|
|
58
51
|
it "returns a string containing each parameter formatted as a conventional request parameter" do
|
59
52
|
result = subject
|
60
53
|
|
61
|
-
|
54
|
+
stub_parameters.each { |key, value| expect(result).to match(/#{key}=#{value}/) }
|
62
55
|
end
|
63
56
|
|
64
57
|
it "separates each parameter with the conventional request parameter delimiter" do
|
@@ -69,7 +62,7 @@ describe HttpStub::Server::Stub::Match::Rule::Parameters do
|
|
69
62
|
|
70
63
|
describe "when empty parameters are provided" do
|
71
64
|
|
72
|
-
let(:
|
65
|
+
let(:stub_parameters) { {} }
|
73
66
|
|
74
67
|
it "returns an empty string" do
|
75
68
|
expect(subject).to eql("")
|
@@ -79,7 +72,7 @@ describe HttpStub::Server::Stub::Match::Rule::Parameters do
|
|
79
72
|
|
80
73
|
describe "when nil parameters are provided" do
|
81
74
|
|
82
|
-
let(:
|
75
|
+
let(:stub_parameters) { nil }
|
83
76
|
|
84
77
|
it "returns an empty string" do
|
85
78
|
expect(subject).to eql("")
|
@@ -1,44 +1,35 @@
|
|
1
1
|
describe HttpStub::Server::Stub::Match::Rule::SimpleBody do
|
2
2
|
|
3
|
-
let(:
|
4
|
-
let(:value_matcher) { instance_double(HttpStub::Server::Stub::Match::StringValueMatcher).as_null_object }
|
3
|
+
let(:stub_body) { "some body" }
|
5
4
|
|
6
|
-
let(:simple_body) { described_class.new(
|
7
|
-
|
8
|
-
before(:example) do
|
9
|
-
allow(HttpStub::Server::Stub::Match::StringValueMatcher).to receive(:new).and_return(value_matcher)
|
10
|
-
end
|
11
|
-
|
12
|
-
describe "constructor" do
|
13
|
-
|
14
|
-
it "creates a value matcher for the provided body" do
|
15
|
-
expect(HttpStub::Server::Stub::Match::StringValueMatcher).to receive(:new).with(raw_body)
|
16
|
-
|
17
|
-
simple_body
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
5
|
+
let(:simple_body) { described_class.new(stub_body) }
|
21
6
|
|
22
7
|
describe "#matches?" do
|
23
8
|
|
24
9
|
let(:request_body) { "some request body" }
|
25
|
-
let(:request) { instance_double(HttpStub::Server::Request, body: request_body) }
|
10
|
+
let(:request) { instance_double(HttpStub::Server::Request::Request, body: request_body) }
|
26
11
|
let(:logger) { instance_double(Logger) }
|
27
12
|
|
28
|
-
|
29
|
-
|
13
|
+
subject { simple_body.matches?(request, logger) }
|
14
|
+
|
15
|
+
it "determines if the stub uri and request uri strings match" do
|
16
|
+
expect(HttpStub::Server::Stub::Match::StringValueMatcher).to receive(:match?).with(stub_body, request_body)
|
17
|
+
|
18
|
+
subject
|
19
|
+
end
|
20
|
+
|
21
|
+
it "returns the result of the match" do
|
22
|
+
allow(HttpStub::Server::Stub::Match::StringValueMatcher).to receive(:match?).and_return(true)
|
30
23
|
|
31
|
-
expect(
|
24
|
+
expect(subject).to eql(true)
|
32
25
|
end
|
33
26
|
|
34
27
|
end
|
35
28
|
|
36
29
|
describe "#to_s" do
|
37
30
|
|
38
|
-
it "
|
39
|
-
expect(
|
40
|
-
|
41
|
-
expect(simple_body.to_s).to eql("some value matcher string")
|
31
|
+
it "returns the stub body" do
|
32
|
+
expect(simple_body.to_s).to eql(stub_body)
|
42
33
|
end
|
43
34
|
|
44
35
|
end
|
@@ -1,6 +1,4 @@
|
|
1
|
-
describe HttpStub::Server::Stub::Match::
|
2
|
-
|
3
|
-
let(:truthy_matcher) { described_class }
|
1
|
+
describe HttpStub::Server::Stub::Match::Rule::Truthy do
|
4
2
|
|
5
3
|
describe "::matches?" do
|
6
4
|
|
@@ -8,7 +6,7 @@ describe HttpStub::Server::Stub::Match::TruthyMatcher do
|
|
8
6
|
let(:logger) { instance_double(Logger) }
|
9
7
|
|
10
8
|
it "returns true" do
|
11
|
-
expect(
|
9
|
+
expect(described_class.matches?(request, logger)).to be(true)
|
12
10
|
end
|
13
11
|
|
14
12
|
end
|
@@ -16,7 +14,7 @@ describe HttpStub::Server::Stub::Match::TruthyMatcher do
|
|
16
14
|
describe "::to_s" do
|
17
15
|
|
18
16
|
it "returns an empty string" do
|
19
|
-
expect(
|
17
|
+
expect(described_class.to_s).to eql("")
|
20
18
|
end
|
21
19
|
|
22
20
|
end
|
@@ -1,44 +1,35 @@
|
|
1
1
|
describe HttpStub::Server::Stub::Match::Rule::Uri do
|
2
2
|
|
3
|
-
let(:
|
4
|
-
let(:value_matcher) { instance_double(HttpStub::Server::Stub::Match::StringValueMatcher).as_null_object }
|
3
|
+
let(:stub_uri) { "/some/uri" }
|
5
4
|
|
6
|
-
let(:uri) { described_class.new(
|
7
|
-
|
8
|
-
before(:example) do
|
9
|
-
allow(HttpStub::Server::Stub::Match::StringValueMatcher).to receive(:new).and_return(value_matcher)
|
10
|
-
end
|
11
|
-
|
12
|
-
describe "constructor" do
|
13
|
-
|
14
|
-
it "creates a value matcher for the provided uri" do
|
15
|
-
expect(HttpStub::Server::Stub::Match::StringValueMatcher).to receive(:new).with(raw_uri)
|
16
|
-
|
17
|
-
uri
|
18
|
-
end
|
19
|
-
|
20
|
-
end
|
5
|
+
let(:uri) { described_class.new(stub_uri) }
|
21
6
|
|
22
7
|
describe "#matches?" do
|
23
8
|
|
24
9
|
let(:request_uri) { "/some/uri" }
|
25
|
-
let(:request) { instance_double(HttpStub::Server::Request, uri: request_uri) }
|
10
|
+
let(:request) { instance_double(HttpStub::Server::Request::Request, uri: request_uri) }
|
26
11
|
let(:logger) { instance_double(Logger) }
|
27
12
|
|
28
|
-
|
29
|
-
|
13
|
+
subject { uri.matches?(request, logger) }
|
14
|
+
|
15
|
+
it "determines if the stub uri and request uri strings match" do
|
16
|
+
expect(HttpStub::Server::Stub::Match::StringValueMatcher).to receive(:match?).with(stub_uri, request_uri)
|
17
|
+
|
18
|
+
subject
|
19
|
+
end
|
20
|
+
|
21
|
+
it "returns the result of the match" do
|
22
|
+
allow(HttpStub::Server::Stub::Match::StringValueMatcher).to receive(:match?).and_return(true)
|
30
23
|
|
31
|
-
expect(
|
24
|
+
expect(subject).to eql(true)
|
32
25
|
end
|
33
26
|
|
34
27
|
end
|
35
28
|
|
36
29
|
describe "#to_s" do
|
37
30
|
|
38
|
-
it "
|
39
|
-
expect(
|
40
|
-
|
41
|
-
expect(uri.to_s).to eql("some value matcher string")
|
31
|
+
it "returns the stub uri" do
|
32
|
+
expect(uri.to_s).to eql(stub_uri)
|
42
33
|
end
|
43
34
|
|
44
35
|
end
|
@@ -2,13 +2,11 @@ describe HttpStub::Server::Stub::Match::StringValueMatcher do
|
|
2
2
|
|
3
3
|
let(:stub_value) { "some stub value" }
|
4
4
|
|
5
|
-
|
6
|
-
|
7
|
-
describe "#matches?" do
|
5
|
+
describe "::match?" do
|
8
6
|
|
9
7
|
let(:actual_value) { "some actual value" }
|
10
8
|
|
11
|
-
subject {
|
9
|
+
subject { described_class.match?(stub_value, actual_value) }
|
12
10
|
|
13
11
|
shared_examples_for "a StringValueMatcher that matches an expected stub value" do
|
14
12
|
|
@@ -126,12 +124,4 @@ describe HttpStub::Server::Stub::Match::StringValueMatcher do
|
|
126
124
|
|
127
125
|
end
|
128
126
|
|
129
|
-
describe "#to_s" do
|
130
|
-
|
131
|
-
it "returns the stub value provided" do
|
132
|
-
expect(string_value_matcher.to_s).to eql(stub_value)
|
133
|
-
end
|
134
|
-
|
135
|
-
end
|
136
|
-
|
137
127
|
end
|
@@ -6,14 +6,16 @@ describe HttpStub::Server::Stub::Parser do
|
|
6
6
|
|
7
7
|
let(:parameters) { {} }
|
8
8
|
let(:body_hash) { {} }
|
9
|
-
let(:request)
|
9
|
+
let(:request) do
|
10
|
+
instance_double(HttpStub::Server::Request::Request, parameters: parameters, body: body_hash.to_json)
|
11
|
+
end
|
10
12
|
|
11
13
|
subject { parser.parse(request) }
|
12
14
|
|
13
15
|
context "when the request contains a payload parameter" do
|
14
16
|
|
15
|
-
let(:payload)
|
16
|
-
let(:parameters)
|
17
|
+
let(:payload) { HttpStub::StubFixture.new.server_payload }
|
18
|
+
let(:parameters) { { "payload" => payload.to_json } }
|
17
19
|
|
18
20
|
it "consolidates any files into the payload" do
|
19
21
|
expect(HttpStub::Server::Stub::PayloadFileConsolidator).to receive(:consolidate!).with(payload, request)
|
@@ -0,0 +1,98 @@
|
|
1
|
+
describe HttpStub::Server::Stub::Response::Attribute::Body do
|
2
|
+
|
3
|
+
let(:body) { described_class.new(stub_body) }
|
4
|
+
|
5
|
+
describe "#with_values_from" do
|
6
|
+
|
7
|
+
let(:request) { HttpStub::Server::Request::Request }
|
8
|
+
|
9
|
+
subject { body.with_values_from(request) }
|
10
|
+
|
11
|
+
context "when a body is provided" do
|
12
|
+
|
13
|
+
let(:stub_body) { "some stub body" }
|
14
|
+
|
15
|
+
it "interpolates the stub body with values from the request" do
|
16
|
+
expect(HttpStub::Server::Stub::Response::Attribute::Interpolator).to(
|
17
|
+
receive(:interpolate).with(stub_body, request)
|
18
|
+
)
|
19
|
+
|
20
|
+
subject
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns the interpolation result" do
|
24
|
+
interpolated_body = "some interpolated body"
|
25
|
+
allow(HttpStub::Server::Stub::Response::Attribute::Interpolator).to(
|
26
|
+
receive(:interpolate).and_return(interpolated_body)
|
27
|
+
)
|
28
|
+
|
29
|
+
expect(subject).to eql(interpolated_body)
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
context "when the body is nil" do
|
35
|
+
|
36
|
+
let(:stub_body) { nil }
|
37
|
+
|
38
|
+
it "returns nil" do
|
39
|
+
expect(subject).to eql(nil)
|
40
|
+
end
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
describe "#provided?" do
|
47
|
+
|
48
|
+
subject { body.provided? }
|
49
|
+
|
50
|
+
context "when the provided body is not nil" do
|
51
|
+
|
52
|
+
let(:stub_body) { "" }
|
53
|
+
|
54
|
+
it "returns true" do
|
55
|
+
expect(subject).to eql(true)
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
context "when the provided body is nil" do
|
61
|
+
|
62
|
+
let(:stub_body) { nil }
|
63
|
+
|
64
|
+
it "returns false" do
|
65
|
+
expect(subject).to eql(false)
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "#to_s" do
|
73
|
+
|
74
|
+
subject { body.to_s }
|
75
|
+
|
76
|
+
context "when a body is provided" do
|
77
|
+
|
78
|
+
let(:stub_body) { "some stub body" }
|
79
|
+
|
80
|
+
it "returns the stub body" do
|
81
|
+
expect(subject).to eql(stub_body)
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
85
|
+
|
86
|
+
context "when the body is nil" do
|
87
|
+
|
88
|
+
let(:stub_body) { nil }
|
89
|
+
|
90
|
+
it "returns an empty string" do
|
91
|
+
expect(subject).to eql("")
|
92
|
+
end
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|