http_stub 0.22.4 → 0.23.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/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
|