http_stub 0.13.1 → 0.13.2
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 +8 -8
- data/lib/http_stub.rb +2 -2
- data/lib/http_stub/configurer.rb +2 -2
- data/lib/http_stub/configurer/command.rb +5 -5
- data/lib/http_stub/configurer/request/stub.rb +8 -8
- data/lib/http_stub/models/{hash_with_value_matchers.rb → hash_with_string_value_matchers.rb} +4 -4
- data/lib/http_stub/models/response.rb +13 -13
- data/lib/http_stub/models/{value_matcher.rb → string_value_matcher.rb} +4 -4
- data/lib/http_stub/models/stub.rb +8 -8
- data/lib/http_stub/models/stub_activator.rb +5 -5
- data/lib/http_stub/models/stub_headers.rb +1 -1
- data/lib/http_stub/models/stub_parameters.rb +1 -1
- data/lib/http_stub/models/stub_uri.rb +1 -1
- data/lib/http_stub/rake/server_daemon_tasks.rb +3 -3
- data/lib/http_stub/rake/server_tasks.rb +10 -10
- data/lib/http_stub/server_daemon.rb +3 -3
- data/lib/http_stub/version.rb +1 -1
- data/spec/lib/http_stub/configurer/command_spec.rb +3 -3
- data/spec/lib/http_stub/configurer/request/stub_spec.rb +14 -14
- data/spec/lib/http_stub/configurer_integration_spec.rb +90 -0
- data/spec/lib/http_stub/models/{hash_with_value_matchers_spec.rb → hash_with_string_value_matchers_spec.rb} +5 -5
- data/spec/lib/http_stub/models/response_spec.rb +5 -5
- data/spec/lib/http_stub/models/string_value_matcher_spec.rb +121 -0
- data/spec/lib/http_stub/models/stub_activator_spec.rb +7 -7
- data/spec/lib/http_stub/models/stub_headers_spec.rb +4 -4
- data/spec/lib/http_stub/models/stub_parameters_spec.rb +4 -4
- data/spec/lib/http_stub/models/stub_spec.rb +5 -5
- data/spec/lib/http_stub/models/stub_uri_spec.rb +3 -3
- data/spec/lib/http_stub/rake/server_tasks_spec.rb +4 -4
- metadata +8 -8
- data/spec/lib/http_stub/models/value_matcher_spec.rb +0 -81
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YWIwNDc5MGFmMDA3OGU3MDBlMjM4ODdjZmY4YjliYjExOWI5NWQyYg==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
ZGQ1OGE1OWMxOGJjYTI3MTI0MWQ4M2E5ZmMxNDQzYTU1NjhkZWI4OQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
ZTFkYzhmMmQxNzYwZjQ2ZWZmYWJmMjAyMWZlNWFlYzdlMTAwMjE2NmQwY2E5
|
10
|
+
ZGQ4YzcxNWQxYmY0N2JlNmUxNWI0ZjA3YjJjYjViYzU3OGVmYTBhMjVjODFj
|
11
|
+
OWE0YjA0ZmFjYTU1ZGU4MDI1YTcxYTQwYWU4ZGIyYWQ2NzI0YWI=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YmQ2NGJiMmY1YmIxNDcyYTEyZGQ2OTY3MzA2YjBiZmEwYzJmMTc2ZTdmNmFl
|
14
|
+
MzY1YjUyZjY1MGM2YzgzYTk4ZWFiNTdiZWY3NWU1Zjg0YWQ0MzE2YzdmYWI4
|
15
|
+
MGM0YTc4NWQzMzM4OTU0Nzg2NGE1MTBlNmVmYjEwMTFkYzI1M2I=
|
data/lib/http_stub.rb
CHANGED
@@ -12,8 +12,8 @@ require_relative 'http_stub/models/response'
|
|
12
12
|
require_relative 'http_stub/models/omitted_value_matcher'
|
13
13
|
require_relative 'http_stub/models/regexp_value_matcher'
|
14
14
|
require_relative 'http_stub/models/exact_value_matcher'
|
15
|
-
require_relative 'http_stub/models/
|
16
|
-
require_relative 'http_stub/models/
|
15
|
+
require_relative 'http_stub/models/string_value_matcher'
|
16
|
+
require_relative 'http_stub/models/hash_with_string_value_matchers'
|
17
17
|
require_relative 'http_stub/models/request_header_parser'
|
18
18
|
require_relative 'http_stub/models/stub_uri'
|
19
19
|
require_relative 'http_stub/models/stub_headers'
|
data/lib/http_stub/configurer.rb
CHANGED
@@ -75,9 +75,9 @@ module HttpStub
|
|
75
75
|
|
76
76
|
private
|
77
77
|
|
78
|
-
def handle(
|
78
|
+
def handle(command_args)
|
79
79
|
effective_command_chain <<
|
80
|
-
HttpStub::Configurer::Command.new({ processor: command_processor }.merge(
|
80
|
+
HttpStub::Configurer::Command.new({ processor: command_processor }.merge(command_args))
|
81
81
|
end
|
82
82
|
|
83
83
|
def effective_command_chain
|
@@ -5,11 +5,11 @@ module HttpStub
|
|
5
5
|
|
6
6
|
attr_reader :request, :description
|
7
7
|
|
8
|
-
def initialize(
|
9
|
-
@processor =
|
10
|
-
@request =
|
11
|
-
@description =
|
12
|
-
@resetable_flag = !!
|
8
|
+
def initialize(args)
|
9
|
+
@processor = args[:processor]
|
10
|
+
@request = args[:request]
|
11
|
+
@description = args[:description]
|
12
|
+
@resetable_flag = !!args[:resetable]
|
13
13
|
end
|
14
14
|
|
15
15
|
def execute
|
@@ -4,19 +4,19 @@ module HttpStub
|
|
4
4
|
|
5
5
|
class Stub < Net::HTTP::Post
|
6
6
|
|
7
|
-
def initialize(uri,
|
7
|
+
def initialize(uri, args)
|
8
8
|
super("/stubs")
|
9
9
|
self.content_type = "application/json"
|
10
10
|
self.body = {
|
11
11
|
"uri" => HttpStub::Configurer::Request::ControllableValue.format(uri),
|
12
|
-
"method" =>
|
13
|
-
"headers" => HttpStub::Configurer::Request::ControllableValue.format(
|
14
|
-
"parameters" => HttpStub::Configurer::Request::ControllableValue.format(
|
12
|
+
"method" => args[:method],
|
13
|
+
"headers" => HttpStub::Configurer::Request::ControllableValue.format(args[:headers] || {}),
|
14
|
+
"parameters" => HttpStub::Configurer::Request::ControllableValue.format(args[:parameters] || {}),
|
15
15
|
"response" => {
|
16
|
-
"status" =>
|
17
|
-
"headers" =>
|
18
|
-
"body" =>
|
19
|
-
"delay_in_seconds" =>
|
16
|
+
"status" => args[:response][:status] || "",
|
17
|
+
"headers" => args[:response][:headers] || {},
|
18
|
+
"body" => args[:response][:body],
|
19
|
+
"delay_in_seconds" => args[:response][:delay_in_seconds] || ""
|
20
20
|
}
|
21
21
|
}.to_json
|
22
22
|
end
|
data/lib/http_stub/models/{hash_with_value_matchers.rb → hash_with_string_value_matchers.rb}
RENAMED
@@ -1,16 +1,16 @@
|
|
1
1
|
module HttpStub
|
2
2
|
module Models
|
3
3
|
|
4
|
-
class
|
4
|
+
class HashWithStringValueMatchers < Hash
|
5
5
|
|
6
6
|
def initialize(stub_hash)
|
7
|
-
stub_hash.each_pair { |key, value| self[key] = HttpStub::Models::
|
7
|
+
stub_hash.each_pair { |key, value| self[key] = HttpStub::Models::StringValueMatcher.new(value) }
|
8
8
|
end
|
9
9
|
|
10
10
|
def match?(actual_hash)
|
11
11
|
!(self.find do |key_and_value_matcher|
|
12
|
-
|
13
|
-
!
|
12
|
+
key, value_matcher = key_and_value_matcher
|
13
|
+
!value_matcher.match?(actual_hash[key])
|
14
14
|
end)
|
15
15
|
end
|
16
16
|
|
@@ -5,13 +5,13 @@ module HttpStub
|
|
5
5
|
|
6
6
|
private
|
7
7
|
|
8
|
-
|
8
|
+
DEFAULT_ARGS = { "status" => 200, "delay_in_seconds" => 0 }.freeze
|
9
9
|
DEFAULT_HEADERS = { "content-type" => "application/json" }.freeze
|
10
10
|
|
11
|
-
def
|
12
|
-
|
13
|
-
headers =
|
14
|
-
|
11
|
+
def merge_default_arguments(args)
|
12
|
+
args.clone.tap do |result|
|
13
|
+
headers = result["headers"] ||= {}
|
14
|
+
DEFAULT_ARGS.each { |key, value| result[key] = value if !result[key] || result[key] == "" }
|
15
15
|
DEFAULT_HEADERS.each { |key, value| headers[key] = value if !headers[key] || headers[key] == "" }
|
16
16
|
end
|
17
17
|
end
|
@@ -20,13 +20,13 @@ module HttpStub
|
|
20
20
|
|
21
21
|
attr_reader :status, :body, :delay_in_seconds, :headers
|
22
22
|
|
23
|
-
def initialize(
|
24
|
-
@
|
25
|
-
|
26
|
-
@status =
|
27
|
-
@body =
|
28
|
-
@delay_in_seconds =
|
29
|
-
@headers = HttpStub::Models::Headers.new(
|
23
|
+
def initialize(args={})
|
24
|
+
@original_args = args
|
25
|
+
resolved_args = merge_default_arguments(args)
|
26
|
+
@status = resolved_args["status"]
|
27
|
+
@body = resolved_args["body"]
|
28
|
+
@delay_in_seconds = resolved_args["delay_in_seconds"]
|
29
|
+
@headers = HttpStub::Models::Headers.new(resolved_args["headers"])
|
30
30
|
end
|
31
31
|
|
32
32
|
SUCCESS = HttpStub::Models::Response.new("status" => 200, "body" => "OK")
|
@@ -34,7 +34,7 @@ module HttpStub
|
|
34
34
|
EMPTY = HttpStub::Models::Response.new()
|
35
35
|
|
36
36
|
def empty?
|
37
|
-
@
|
37
|
+
@original_args.empty?
|
38
38
|
end
|
39
39
|
|
40
40
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module HttpStub
|
2
2
|
module Models
|
3
3
|
|
4
|
-
class
|
4
|
+
class StringValueMatcher
|
5
5
|
|
6
6
|
private
|
7
7
|
|
@@ -12,15 +12,15 @@ module HttpStub
|
|
12
12
|
public
|
13
13
|
|
14
14
|
def initialize(stub_value)
|
15
|
-
@
|
15
|
+
@stub_match_value = stub_value ? stub_value.to_s : stub_value
|
16
16
|
end
|
17
17
|
|
18
18
|
def match?(actual_value)
|
19
|
-
!!MATCHERS.find { |matcher| matcher.match?(@
|
19
|
+
!!MATCHERS.find { |matcher| matcher.match?(@stub_match_value, actual_value) }
|
20
20
|
end
|
21
21
|
|
22
22
|
def to_s
|
23
|
-
@
|
23
|
+
@stub_match_value
|
24
24
|
end
|
25
25
|
|
26
26
|
end
|
@@ -5,12 +5,12 @@ module HttpStub
|
|
5
5
|
|
6
6
|
attr_reader :uri, :headers, :parameters, :response
|
7
7
|
|
8
|
-
def initialize(
|
9
|
-
@
|
10
|
-
@uri = HttpStub::Models::StubUri.new(
|
11
|
-
@headers = HttpStub::Models::StubHeaders.new(
|
12
|
-
@parameters = HttpStub::Models::StubParameters.new(
|
13
|
-
@response = HttpStub::Models::Response.new(
|
8
|
+
def initialize(args)
|
9
|
+
@args = args
|
10
|
+
@uri = HttpStub::Models::StubUri.new(args["uri"])
|
11
|
+
@headers = HttpStub::Models::StubHeaders.new(args["headers"])
|
12
|
+
@parameters = HttpStub::Models::StubParameters.new(args["parameters"])
|
13
|
+
@response = HttpStub::Models::Response.new(args["response"])
|
14
14
|
end
|
15
15
|
|
16
16
|
def satisfies?(request)
|
@@ -21,11 +21,11 @@ module HttpStub
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def method
|
24
|
-
@
|
24
|
+
@args["method"]
|
25
25
|
end
|
26
26
|
|
27
27
|
def to_s
|
28
|
-
@
|
28
|
+
@args.to_s
|
29
29
|
end
|
30
30
|
|
31
31
|
end
|
@@ -3,9 +3,9 @@ module HttpStub
|
|
3
3
|
|
4
4
|
class StubActivator
|
5
5
|
|
6
|
-
def initialize(
|
7
|
-
@
|
8
|
-
@stub = HttpStub::Models::Stub.new(
|
6
|
+
def initialize(args)
|
7
|
+
@args = args
|
8
|
+
@stub = HttpStub::Models::Stub.new(args)
|
9
9
|
end
|
10
10
|
|
11
11
|
def satisfies?(request)
|
@@ -17,11 +17,11 @@ module HttpStub
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def activation_uri
|
20
|
-
@
|
20
|
+
@args["activation_uri"]
|
21
21
|
end
|
22
22
|
|
23
23
|
def to_s
|
24
|
-
@
|
24
|
+
@args.to_s
|
25
25
|
end
|
26
26
|
|
27
27
|
end
|
@@ -5,7 +5,7 @@ module HttpStub
|
|
5
5
|
|
6
6
|
def initialize(headers)
|
7
7
|
super(headers)
|
8
|
-
@headers = HttpStub::Models::
|
8
|
+
@headers = HttpStub::Models::HashWithStringValueMatchers.new((headers || {}).downcase_and_underscore_keys)
|
9
9
|
end
|
10
10
|
|
11
11
|
def match?(request)
|
@@ -3,9 +3,9 @@ module HttpStub
|
|
3
3
|
|
4
4
|
class ServerDaemonTasks < ::Rake::TaskLib
|
5
5
|
|
6
|
-
def initialize(
|
7
|
-
HttpStub::Rake::ServerTasks.new(
|
8
|
-
namespace(
|
6
|
+
def initialize(args)
|
7
|
+
HttpStub::Rake::ServerTasks.new(args)
|
8
|
+
namespace(args[:name]) { HttpServerManager::Rake::ServerTasks.new(HttpStub::ServerDaemon.new(args)) }
|
9
9
|
end
|
10
10
|
|
11
11
|
end
|
@@ -3,31 +3,31 @@ module HttpStub
|
|
3
3
|
|
4
4
|
class ServerTasks < ::Rake::TaskLib
|
5
5
|
|
6
|
-
def initialize(
|
7
|
-
namespace
|
8
|
-
define_start_task(
|
9
|
-
define_initialize_task(
|
6
|
+
def initialize(args)
|
7
|
+
namespace args[:name] do
|
8
|
+
define_start_task(args)
|
9
|
+
define_initialize_task(args) if args[:configurer]
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
13
|
private
|
14
14
|
|
15
|
-
def define_start_task(
|
15
|
+
def define_start_task(args)
|
16
16
|
namespace :start do
|
17
|
-
desc "Starts stub #{
|
17
|
+
desc "Starts stub #{args[:name]} in the foreground"
|
18
18
|
task(:foreground) do
|
19
19
|
HttpStub::Server.instance_eval do
|
20
20
|
set :environment, :test
|
21
|
-
set :port,
|
21
|
+
set :port, args[:port]
|
22
22
|
run!
|
23
23
|
end
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
def define_initialize_task(
|
29
|
-
desc "Configures stub #{
|
30
|
-
task(:configure) {
|
28
|
+
def define_initialize_task(args)
|
29
|
+
desc "Configures stub #{args[:name]}"
|
30
|
+
task(:configure) { args[:configurer].initialize! }
|
31
31
|
end
|
32
32
|
|
33
33
|
end
|
@@ -14,9 +14,9 @@ module HttpStub
|
|
14
14
|
|
15
15
|
end
|
16
16
|
|
17
|
-
def initialize(
|
18
|
-
super({ host: "localhost" }.merge(
|
19
|
-
@configurer =
|
17
|
+
def initialize(args)
|
18
|
+
super({ host: "localhost" }.merge(args))
|
19
|
+
@configurer = args[:configurer]
|
20
20
|
end
|
21
21
|
|
22
22
|
def start!
|
data/lib/http_stub/version.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
describe HttpStub::Configurer::Command do
|
2
2
|
|
3
3
|
let(:processor) { double(HttpStub::Configurer::CommandProcessor) }
|
4
|
-
let(:
|
4
|
+
let(:args) { { processor: processor, request: double("HttpRequest"), description: "Some Description" } }
|
5
5
|
|
6
|
-
let(:command) { HttpStub::Configurer::Command.new(
|
6
|
+
let(:command) { HttpStub::Configurer::Command.new(args) }
|
7
7
|
|
8
8
|
describe "#execute" do
|
9
9
|
|
@@ -19,7 +19,7 @@ describe HttpStub::Configurer::Command do
|
|
19
19
|
|
20
20
|
describe "when created with a resetable flag that is true" do
|
21
21
|
|
22
|
-
before(:each) {
|
22
|
+
before(:each) { args.merge!(resetable: true) }
|
23
23
|
|
24
24
|
it "should return true" do
|
25
25
|
command.resetable?.should be_true
|
@@ -2,7 +2,7 @@ describe HttpStub::Configurer::Request::Stub do
|
|
2
2
|
|
3
3
|
describe "#initialize" do
|
4
4
|
|
5
|
-
context "when provided a uri and stub
|
5
|
+
context "when provided a uri and stub arguments" do
|
6
6
|
|
7
7
|
let(:uri) { "/some/uri" }
|
8
8
|
let(:stub_method) { "Some Method" }
|
@@ -13,7 +13,7 @@ describe HttpStub::Configurer::Request::Stub do
|
|
13
13
|
let(:response_body) { "Some body" }
|
14
14
|
let(:response_delay_in_seconds) { 7 }
|
15
15
|
|
16
|
-
let(:
|
16
|
+
let(:stub_args) do
|
17
17
|
{
|
18
18
|
method: stub_method,
|
19
19
|
headers: request_headers,
|
@@ -27,7 +27,7 @@ describe HttpStub::Configurer::Request::Stub do
|
|
27
27
|
}
|
28
28
|
end
|
29
29
|
|
30
|
-
let(:request) { HttpStub::Configurer::Request::Stub.new(uri,
|
30
|
+
let(:request) { HttpStub::Configurer::Request::Stub.new(uri, stub_args) }
|
31
31
|
let(:request_body) { JSON.parse(request.body) }
|
32
32
|
|
33
33
|
before(:each) { HttpStub::Configurer::Request::ControllableValue.stub(:format) }
|
@@ -44,7 +44,7 @@ describe HttpStub::Configurer::Request::Stub do
|
|
44
44
|
request.content_type.should eql("application/json")
|
45
45
|
end
|
46
46
|
|
47
|
-
context "when a request header
|
47
|
+
context "when a request header argument is provided" do
|
48
48
|
|
49
49
|
it "should format the headers into control values" do
|
50
50
|
HttpStub::Configurer::Request::ControllableValue.should_receive(:format).with(request_headers)
|
@@ -66,7 +66,7 @@ describe HttpStub::Configurer::Request::Stub do
|
|
66
66
|
|
67
67
|
end
|
68
68
|
|
69
|
-
context "when a request parameter
|
69
|
+
context "when a request parameter argument is provided" do
|
70
70
|
|
71
71
|
it "should format the request parameters into control values" do
|
72
72
|
HttpStub::Configurer::Request::ControllableValue.should_receive(:format).with(request_parameters)
|
@@ -76,7 +76,7 @@ describe HttpStub::Configurer::Request::Stub do
|
|
76
76
|
|
77
77
|
end
|
78
78
|
|
79
|
-
context "when no request parameter
|
79
|
+
context "when no request parameter argument is provided" do
|
80
80
|
|
81
81
|
let(:request_parameters) { nil }
|
82
82
|
|
@@ -96,7 +96,7 @@ describe HttpStub::Configurer::Request::Stub do
|
|
96
96
|
request_body.should include("uri" => "uri as a string")
|
97
97
|
end
|
98
98
|
|
99
|
-
it "should have an entry for the method
|
99
|
+
it "should have an entry for the method argument" do
|
100
100
|
request_body.should include("method" => stub_method)
|
101
101
|
end
|
102
102
|
|
@@ -114,15 +114,15 @@ describe HttpStub::Configurer::Request::Stub do
|
|
114
114
|
request_body.should include("parameters" => "request parameters as string")
|
115
115
|
end
|
116
116
|
|
117
|
-
context "when a status response
|
117
|
+
context "when a status response argument is provided" do
|
118
118
|
|
119
|
-
it "should have a response entry for the
|
119
|
+
it "should have a response entry for the argument" do
|
120
120
|
request_body["response"].should include("status" => response_status)
|
121
121
|
end
|
122
122
|
|
123
123
|
end
|
124
124
|
|
125
|
-
context "when no status response
|
125
|
+
context "when no status response argument is provided" do
|
126
126
|
|
127
127
|
let(:response_status) { nil }
|
128
128
|
|
@@ -132,19 +132,19 @@ describe HttpStub::Configurer::Request::Stub do
|
|
132
132
|
|
133
133
|
end
|
134
134
|
|
135
|
-
it "should have an entry for the response body
|
135
|
+
it "should have an entry for the response body argument" do
|
136
136
|
request_body["response"].should include("body" => response_body)
|
137
137
|
end
|
138
138
|
|
139
|
-
context "when a delay
|
139
|
+
context "when a delay argument is provided" do
|
140
140
|
|
141
|
-
it "should have a response entry for the
|
141
|
+
it "should have a response entry for the argument" do
|
142
142
|
request_body["response"].should include("delay_in_seconds" => response_delay_in_seconds)
|
143
143
|
end
|
144
144
|
|
145
145
|
end
|
146
146
|
|
147
|
-
context "when a delay
|
147
|
+
context "when a delay argument is not provided" do
|
148
148
|
|
149
149
|
let(:response_delay_in_seconds) { nil }
|
150
150
|
|
@@ -402,6 +402,96 @@ describe HttpStub::Configurer, "when the server is running" do
|
|
402
402
|
|
403
403
|
end
|
404
404
|
|
405
|
+
context "whose values are numbers" do
|
406
|
+
|
407
|
+
before(:each) do
|
408
|
+
configurer.stub_response!("/stub_with_parameters", method: :get, parameters: { key: 88 },
|
409
|
+
response: { status: 203, body: "Body for parameter number" })
|
410
|
+
end
|
411
|
+
|
412
|
+
context "and that request is made" do
|
413
|
+
|
414
|
+
let(:response) { Net::HTTP.get_response(server_host, "/stub_with_parameters?key=88", server_port) }
|
415
|
+
|
416
|
+
it "should replay the stubbed response" do
|
417
|
+
response.code.should eql("203")
|
418
|
+
response.body.should eql("Body for parameter number")
|
419
|
+
end
|
420
|
+
|
421
|
+
end
|
422
|
+
|
423
|
+
end
|
424
|
+
|
425
|
+
context "whose values are regular expressions" do
|
426
|
+
|
427
|
+
before(:each) do
|
428
|
+
configurer.stub_response!(
|
429
|
+
"/stub_with_parameters", method: :get, parameters: { key: /^match.*/ },
|
430
|
+
response: { status: 202, body: "Another stub body" }
|
431
|
+
)
|
432
|
+
end
|
433
|
+
|
434
|
+
context "and a request that matches is made" do
|
435
|
+
|
436
|
+
let(:response) do
|
437
|
+
Net::HTTP.get_response(server_host, "/stub_with_parameters?key=matching_value", server_port)
|
438
|
+
end
|
439
|
+
|
440
|
+
it "should replay the stubbed response" do
|
441
|
+
response.code.should eql("202")
|
442
|
+
response.body.should eql("Another stub body")
|
443
|
+
end
|
444
|
+
|
445
|
+
end
|
446
|
+
|
447
|
+
context "and a request that does not match is made" do
|
448
|
+
|
449
|
+
let(:response) do
|
450
|
+
Net::HTTP.get_response(server_host, "/stub_with_parameters?key=does_not_match_value", server_port)
|
451
|
+
end
|
452
|
+
|
453
|
+
it "should respond with a 404 status code" do
|
454
|
+
response.code.should eql("404")
|
455
|
+
end
|
456
|
+
|
457
|
+
end
|
458
|
+
|
459
|
+
end
|
460
|
+
|
461
|
+
context "whose values indicate the parameters must be omitted" do
|
462
|
+
|
463
|
+
before(:each) do
|
464
|
+
configurer.stub_response!(
|
465
|
+
"/stub_with_omitted_parameters", method: :get, parameters: { key: :omitted },
|
466
|
+
response: { status: 202, body: "Omitted parameter stub body" }
|
467
|
+
)
|
468
|
+
end
|
469
|
+
|
470
|
+
context "and a request that matches is made" do
|
471
|
+
|
472
|
+
let(:response) { Net::HTTP.get_response(server_host, "/stub_with_omitted_parameters", server_port) }
|
473
|
+
|
474
|
+
it "should replay the stubbed response" do
|
475
|
+
response.code.should eql("202")
|
476
|
+
response.body.should eql("Omitted parameter stub body")
|
477
|
+
end
|
478
|
+
|
479
|
+
end
|
480
|
+
|
481
|
+
context "and a request that does not match is made" do
|
482
|
+
|
483
|
+
let(:response) do
|
484
|
+
Net::HTTP.get_response(server_host, "/stub_with_omitted_parameters?key=must_be_omitted", server_port)
|
485
|
+
end
|
486
|
+
|
487
|
+
it "should respond with a 404 status code" do
|
488
|
+
response.code.should eql("404")
|
489
|
+
end
|
490
|
+
|
491
|
+
end
|
492
|
+
|
493
|
+
end
|
494
|
+
|
405
495
|
end
|
406
496
|
|
407
497
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
describe HttpStub::Models::
|
1
|
+
describe HttpStub::Models::HashWithStringValueMatchers do
|
2
2
|
|
3
3
|
let(:stubbed_hash) do
|
4
4
|
(1..3).reduce({}) do |result, i|
|
@@ -8,13 +8,13 @@ describe HttpStub::Models::HashWithValueMatchers do
|
|
8
8
|
end
|
9
9
|
|
10
10
|
let(:value_matchers) do
|
11
|
-
stubbed_hash.values.map { |value| double(HttpStub::Models::
|
11
|
+
stubbed_hash.values.map { |value| double(HttpStub::Models::StringValueMatcher, to_s: value).as_null_object }
|
12
12
|
end
|
13
13
|
|
14
|
-
let(:value_matcher_hash) { HttpStub::Models::
|
14
|
+
let(:value_matcher_hash) { HttpStub::Models::HashWithStringValueMatchers.new(stubbed_hash) }
|
15
15
|
|
16
16
|
before(:each) do
|
17
|
-
value_matchers.each { |value| HttpStub::Models::
|
17
|
+
value_matchers.each { |value| HttpStub::Models::StringValueMatcher.stub(:new).with(value.to_s).and_return(value) }
|
18
18
|
end
|
19
19
|
|
20
20
|
it "should be hash" do
|
@@ -25,7 +25,7 @@ describe HttpStub::Models::HashWithValueMatchers do
|
|
25
25
|
|
26
26
|
it "should create a value matcher representation of each value in the hash" do
|
27
27
|
value_matchers.each do |value|
|
28
|
-
HttpStub::Models::
|
28
|
+
HttpStub::Models::StringValueMatcher.should_receive(:new).with(value.to_s).and_return(value)
|
29
29
|
end
|
30
30
|
|
31
31
|
value_matcher_hash.values.should eql(value_matchers)
|
@@ -41,7 +41,7 @@ describe HttpStub::Models::Response do
|
|
41
41
|
|
42
42
|
describe "#status" do
|
43
43
|
|
44
|
-
context "when a value is provided in the
|
44
|
+
context "when a value is provided in the arguments" do
|
45
45
|
|
46
46
|
context "that is an integer" do
|
47
47
|
|
@@ -63,7 +63,7 @@ describe HttpStub::Models::Response do
|
|
63
63
|
|
64
64
|
end
|
65
65
|
|
66
|
-
context "when the status is not provided in the
|
66
|
+
context "when the status is not provided in the arguments" do
|
67
67
|
|
68
68
|
let(:response) { HttpStub::Models::Response.new("body" => body, "delay_in_seconds" => delay_in_seconds) }
|
69
69
|
|
@@ -77,7 +77,7 @@ describe HttpStub::Models::Response do
|
|
77
77
|
|
78
78
|
describe "#body" do
|
79
79
|
|
80
|
-
it "should return the value provided in the
|
80
|
+
it "should return the value provided in the arguments" do
|
81
81
|
response.body.should eql("A response body")
|
82
82
|
end
|
83
83
|
|
@@ -85,7 +85,7 @@ describe HttpStub::Models::Response do
|
|
85
85
|
|
86
86
|
describe "#delay_in_seconds" do
|
87
87
|
|
88
|
-
context "when a value is provided in the
|
88
|
+
context "when a value is provided in the arguments" do
|
89
89
|
|
90
90
|
context "that is an integer" do
|
91
91
|
|
@@ -107,7 +107,7 @@ describe HttpStub::Models::Response do
|
|
107
107
|
|
108
108
|
end
|
109
109
|
|
110
|
-
context "when a value is not provided in the
|
110
|
+
context "when a value is not provided in the arguments" do
|
111
111
|
|
112
112
|
let(:response) { HttpStub::Models::Response.new("status" => status, "body" => body) }
|
113
113
|
|
@@ -0,0 +1,121 @@
|
|
1
|
+
describe HttpStub::Models::StringValueMatcher do
|
2
|
+
|
3
|
+
let(:stub_value) { "some stub value" }
|
4
|
+
|
5
|
+
let(:string_value_matcher) { HttpStub::Models::StringValueMatcher.new(stub_value) }
|
6
|
+
|
7
|
+
describe "#match?" do
|
8
|
+
|
9
|
+
let(:actual_value) { "some actual value" }
|
10
|
+
|
11
|
+
shared_examples_for "a StringValueMatcher that matches an expected stub value" do
|
12
|
+
|
13
|
+
it "should determine if actual value should be omitted" do
|
14
|
+
HttpStub::Models::OmittedValueMatcher.should_receive(:match?).with(expected_stub_match_value, actual_value)
|
15
|
+
|
16
|
+
perform_match
|
17
|
+
end
|
18
|
+
|
19
|
+
it "should determine if the actual value matches a regular expression" do
|
20
|
+
HttpStub::Models::RegexpValueMatcher.should_receive(:match?).with(expected_stub_match_value, actual_value)
|
21
|
+
|
22
|
+
perform_match
|
23
|
+
end
|
24
|
+
|
25
|
+
it "should determine if the actual value exactly matches the stub value" do
|
26
|
+
HttpStub::Models::ExactValueMatcher.should_receive(:match?).with(expected_stub_match_value, actual_value)
|
27
|
+
|
28
|
+
perform_match
|
29
|
+
end
|
30
|
+
|
31
|
+
it "should determine if actual value should be omitted" do
|
32
|
+
HttpStub::Models::OmittedValueMatcher.should_receive(:match?).with(expected_stub_match_value, actual_value)
|
33
|
+
|
34
|
+
perform_match
|
35
|
+
end
|
36
|
+
|
37
|
+
it "should determine if the actual value matches a regular expression" do
|
38
|
+
HttpStub::Models::RegexpValueMatcher.should_receive(:match?).with(expected_stub_match_value, actual_value)
|
39
|
+
|
40
|
+
perform_match
|
41
|
+
end
|
42
|
+
|
43
|
+
it "should determine if the actual value exactly matches the stub value" do
|
44
|
+
HttpStub::Models::ExactValueMatcher.should_receive(:match?).with(expected_stub_match_value, actual_value)
|
45
|
+
|
46
|
+
perform_match
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
context "when the provided stub value is a string" do
|
52
|
+
|
53
|
+
let(:stub_value) { "some stub value" }
|
54
|
+
let(:expected_stub_match_value) { "some stub value" }
|
55
|
+
|
56
|
+
it_should_behave_like "a StringValueMatcher that matches an expected stub value"
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
context "when the provided stub value is not a string" do
|
61
|
+
|
62
|
+
let(:stub_value) { 88 }
|
63
|
+
let(:expected_stub_match_value) { "88" }
|
64
|
+
|
65
|
+
it_should_behave_like "a StringValueMatcher that matches an expected stub value"
|
66
|
+
|
67
|
+
end
|
68
|
+
|
69
|
+
context "when an omitted match occurs" do
|
70
|
+
|
71
|
+
before(:each) { HttpStub::Models::OmittedValueMatcher.should_receive(:match?).and_return(true) }
|
72
|
+
|
73
|
+
it "should return true" do
|
74
|
+
perform_match.should be_true
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
context "when a regular expression match occurs" do
|
80
|
+
|
81
|
+
before(:each) { HttpStub::Models::RegexpValueMatcher.should_receive(:match?).and_return(true) }
|
82
|
+
|
83
|
+
it "should return true" do
|
84
|
+
perform_match.should be_true
|
85
|
+
end
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
context "when an exact match occurs" do
|
90
|
+
|
91
|
+
before(:each) { HttpStub::Models::ExactValueMatcher.should_receive(:match?).and_return(true) }
|
92
|
+
|
93
|
+
it "should return true" do
|
94
|
+
perform_match.should be_true
|
95
|
+
end
|
96
|
+
|
97
|
+
end
|
98
|
+
|
99
|
+
context "when no match occurs" do
|
100
|
+
|
101
|
+
it "should return false" do
|
102
|
+
perform_match.should be_false
|
103
|
+
end
|
104
|
+
|
105
|
+
end
|
106
|
+
|
107
|
+
def perform_match
|
108
|
+
string_value_matcher.match?(actual_value)
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
describe "#to_s" do
|
114
|
+
|
115
|
+
it "should return the stub value provided" do
|
116
|
+
string_value_matcher.to_s.should eql(stub_value)
|
117
|
+
end
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
@@ -1,10 +1,10 @@
|
|
1
1
|
describe HttpStub::Models::StubActivator do
|
2
2
|
|
3
3
|
let(:activation_uri) { "/some/activation/uri" }
|
4
|
-
let(:
|
4
|
+
let(:args) do
|
5
5
|
{ "activation_uri" => activation_uri }
|
6
6
|
end
|
7
|
-
let(:stub_activator) { HttpStub::Models::StubActivator.new(
|
7
|
+
let(:stub_activator) { HttpStub::Models::StubActivator.new(args) }
|
8
8
|
|
9
9
|
before(:each) { HttpStub::Models::Stub.stub(:new).and_return(double(HttpStub::Models::Stub)) }
|
10
10
|
|
@@ -46,9 +46,9 @@ describe HttpStub::Models::StubActivator do
|
|
46
46
|
|
47
47
|
describe "#the_stub" do
|
48
48
|
|
49
|
-
it "should return a HttpStub::Models::Stub constructed from the activator's
|
49
|
+
it "should return a HttpStub::Models::Stub constructed from the activator's arguments" do
|
50
50
|
stub = double(HttpStub::Models::Stub)
|
51
|
-
HttpStub::Models::Stub.should_receive(:new).with(
|
51
|
+
HttpStub::Models::Stub.should_receive(:new).with(args).and_return(stub)
|
52
52
|
|
53
53
|
stub_activator.the_stub.should eql(stub)
|
54
54
|
end
|
@@ -65,10 +65,10 @@ describe HttpStub::Models::StubActivator do
|
|
65
65
|
|
66
66
|
describe "#to_s" do
|
67
67
|
|
68
|
-
it "should return the string representation of the activation
|
69
|
-
|
68
|
+
it "should return the string representation of the activation arguments" do
|
69
|
+
args.should_receive(:to_s).and_return("activation args string")
|
70
70
|
|
71
|
-
stub_activator.to_s.should eql("activation
|
71
|
+
stub_activator.to_s.should eql("activation args string")
|
72
72
|
end
|
73
73
|
|
74
74
|
end
|
@@ -14,7 +14,7 @@ describe HttpStub::Models::StubHeaders do
|
|
14
14
|
it "should create a regexpable representation of the stubbed headers whose keys are downcased and underscored" do
|
15
15
|
downcased_and_underscored_hash = { "another_stub_key" => "value" }
|
16
16
|
stubbed_headers.should_receive(:downcase_and_underscore_keys).and_return(downcased_and_underscored_hash)
|
17
|
-
HttpStub::Models::
|
17
|
+
HttpStub::Models::HashWithStringValueMatchers.should_receive(:new).with(downcased_and_underscored_hash)
|
18
18
|
|
19
19
|
stub_headers
|
20
20
|
end
|
@@ -26,7 +26,7 @@ describe HttpStub::Models::StubHeaders do
|
|
26
26
|
let(:stubbed_headers) { nil }
|
27
27
|
|
28
28
|
it "should create a regexpable representation of an empty hash" do
|
29
|
-
HttpStub::Models::
|
29
|
+
HttpStub::Models::HashWithStringValueMatchers.should_receive(:new).with({})
|
30
30
|
|
31
31
|
stub_headers
|
32
32
|
end
|
@@ -36,10 +36,10 @@ describe HttpStub::Models::StubHeaders do
|
|
36
36
|
describe "#match?" do
|
37
37
|
|
38
38
|
let(:request_headers) { { "request_key" => "value" } }
|
39
|
-
let(:regexpable_stubbed_headers) { double(HttpStub::Models::
|
39
|
+
let(:regexpable_stubbed_headers) { double(HttpStub::Models::HashWithStringValueMatchers).as_null_object }
|
40
40
|
|
41
41
|
before(:each) do
|
42
|
-
HttpStub::Models::
|
42
|
+
HttpStub::Models::HashWithStringValueMatchers.stub(:new).and_return(regexpable_stubbed_headers)
|
43
43
|
HttpStub::Models::RequestHeaderParser.stub(:parse).with(request).and_return(request_headers)
|
44
44
|
end
|
45
45
|
|
@@ -4,14 +4,14 @@ describe HttpStub::Models::StubParameters do
|
|
4
4
|
let(:request) { double("HttpRequest", params: request_parameters) }
|
5
5
|
|
6
6
|
let(:stubbed_parameters) { { "key1" => "value1", "key2" => "value2", "key3" => "value3" } }
|
7
|
-
let(:regexpable_stubbed_paremeters) { double(HttpStub::Models::
|
7
|
+
let(:regexpable_stubbed_paremeters) { double(HttpStub::Models::HashWithStringValueMatchers).as_null_object }
|
8
8
|
|
9
9
|
let(:stub_parameters) { HttpStub::Models::StubParameters.new(stubbed_parameters) }
|
10
10
|
|
11
11
|
describe "when stubbed parameters are provided" do
|
12
12
|
|
13
13
|
it "should create a regexpable representation of the stubbed parameters" do
|
14
|
-
HttpStub::Models::
|
14
|
+
HttpStub::Models::HashWithStringValueMatchers.should_receive(:new).with(stubbed_parameters)
|
15
15
|
|
16
16
|
stub_parameters
|
17
17
|
end
|
@@ -23,7 +23,7 @@ describe HttpStub::Models::StubParameters do
|
|
23
23
|
let(:stubbed_parameters) { nil }
|
24
24
|
|
25
25
|
it "should create a regexpable representation of an empty hash" do
|
26
|
-
HttpStub::Models::
|
26
|
+
HttpStub::Models::HashWithStringValueMatchers.should_receive(:new).with({})
|
27
27
|
|
28
28
|
stub_parameters
|
29
29
|
end
|
@@ -33,7 +33,7 @@ describe HttpStub::Models::StubParameters do
|
|
33
33
|
describe "#match?" do
|
34
34
|
|
35
35
|
it "should delegate to the regexpable representation of the stubbed parameters to determine a match" do
|
36
|
-
HttpStub::Models::
|
36
|
+
HttpStub::Models::HashWithStringValueMatchers.stub(:new).and_return(regexpable_stubbed_paremeters)
|
37
37
|
regexpable_stubbed_paremeters.should_receive(:match?).with(request_parameters).and_return(true)
|
38
38
|
|
39
39
|
stub_parameters.match?(request).should be(true)
|
@@ -15,7 +15,7 @@ describe HttpStub::Models::Stub do
|
|
15
15
|
}
|
16
16
|
end
|
17
17
|
let(:stub_method) { "get" }
|
18
|
-
let(:
|
18
|
+
let(:stub_args) do
|
19
19
|
{
|
20
20
|
"uri" => "/a_path",
|
21
21
|
"method" => stub_method,
|
@@ -31,7 +31,7 @@ describe HttpStub::Models::Stub do
|
|
31
31
|
let(:stub_parameters) { double(HttpStub::Models::StubParameters, match?: true) }
|
32
32
|
let(:stub_headers) { double(HttpStub::Models::StubHeaders, match?: true) }
|
33
33
|
|
34
|
-
let(:the_stub) { HttpStub::Models::Stub.new(
|
34
|
+
let(:the_stub) { HttpStub::Models::Stub.new(stub_args) }
|
35
35
|
|
36
36
|
before(:each) do
|
37
37
|
HttpStub::Models::StubUri.stub(:new).and_return(stub_uri)
|
@@ -167,10 +167,10 @@ describe HttpStub::Models::Stub do
|
|
167
167
|
|
168
168
|
describe "#to_s" do
|
169
169
|
|
170
|
-
it "should return a string representation of the stub
|
171
|
-
|
170
|
+
it "should return a string representation of the stub arguments" do
|
171
|
+
stub_args.should_receive(:to_s).and_return("stub arguments string")
|
172
172
|
|
173
|
-
the_stub.to_s.should eql("stub
|
173
|
+
the_stub.to_s.should eql("stub arguments string")
|
174
174
|
end
|
175
175
|
end
|
176
176
|
|
@@ -2,15 +2,15 @@ describe HttpStub::Models::StubUri do
|
|
2
2
|
|
3
3
|
let(:stubbed_uri) { "/some/uri" }
|
4
4
|
let(:request) { double("HttpRequest", path_info: request_uri) }
|
5
|
-
let(:value_matcher) { double(HttpStub::Models::
|
5
|
+
let(:value_matcher) { double(HttpStub::Models::StringValueMatcher).as_null_object }
|
6
6
|
let(:stub_uri) { HttpStub::Models::StubUri.new(stubbed_uri) }
|
7
7
|
|
8
|
-
before(:each) { HttpStub::Models::
|
8
|
+
before(:each) { HttpStub::Models::StringValueMatcher.stub(:new).and_return(value_matcher) }
|
9
9
|
|
10
10
|
describe "constructor" do
|
11
11
|
|
12
12
|
it "should create a value matcher for the provided uri" do
|
13
|
-
HttpStub::Models::
|
13
|
+
HttpStub::Models::StringValueMatcher.should_receive(:new).with(stubbed_uri)
|
14
14
|
|
15
15
|
stub_uri
|
16
16
|
end
|
@@ -2,14 +2,14 @@ describe HttpStub::Rake::ServerTasks do
|
|
2
2
|
|
3
3
|
describe "the configure task" do
|
4
4
|
|
5
|
-
let(:
|
5
|
+
let(:default_args) { { port: 8001 } }
|
6
6
|
|
7
|
-
before(:each) { HttpStub::Rake::ServerTasks.new(
|
7
|
+
before(:each) { HttpStub::Rake::ServerTasks.new(default_args.merge(args)) }
|
8
8
|
|
9
9
|
context "when a configurer is provided" do
|
10
10
|
|
11
11
|
let(:configurer) { double(HttpStub::Configurer) }
|
12
|
-
let(:
|
12
|
+
let(:args) { { name: :tasks_configurer_provided_test, configurer: configurer } }
|
13
13
|
|
14
14
|
context "and the task is executed" do
|
15
15
|
|
@@ -25,7 +25,7 @@ describe HttpStub::Rake::ServerTasks do
|
|
25
25
|
|
26
26
|
context "when a configurer is not provided" do
|
27
27
|
|
28
|
-
let(:
|
28
|
+
let(:args) { { name: :tasks_configurer_not_provided_test } }
|
29
29
|
|
30
30
|
it "should not generate a task" do
|
31
31
|
lambda { Rake::Task["tasks_configurer_not_provided_test:configure"] }.should
|
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.13.
|
4
|
+
version: 0.13.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matthew Ueckerman
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-12-15 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: sinatra
|
@@ -255,7 +255,7 @@ files:
|
|
255
255
|
- ./lib/http_stub/controllers/stub_controller.rb
|
256
256
|
- ./lib/http_stub/hash_extensions.rb
|
257
257
|
- ./lib/http_stub/models/exact_value_matcher.rb
|
258
|
-
- ./lib/http_stub/models/
|
258
|
+
- ./lib/http_stub/models/hash_with_string_value_matchers.rb
|
259
259
|
- ./lib/http_stub/models/headers.rb
|
260
260
|
- ./lib/http_stub/models/omitted_value_matcher.rb
|
261
261
|
- ./lib/http_stub/models/regexp_value_matcher.rb
|
@@ -263,12 +263,12 @@ files:
|
|
263
263
|
- ./lib/http_stub/models/request_header_parser.rb
|
264
264
|
- ./lib/http_stub/models/request_pipeline.rb
|
265
265
|
- ./lib/http_stub/models/response.rb
|
266
|
+
- ./lib/http_stub/models/string_value_matcher.rb
|
266
267
|
- ./lib/http_stub/models/stub.rb
|
267
268
|
- ./lib/http_stub/models/stub_activator.rb
|
268
269
|
- ./lib/http_stub/models/stub_headers.rb
|
269
270
|
- ./lib/http_stub/models/stub_parameters.rb
|
270
271
|
- ./lib/http_stub/models/stub_uri.rb
|
271
|
-
- ./lib/http_stub/models/value_matcher.rb
|
272
272
|
- ./lib/http_stub/rake/server_daemon_tasks.rb
|
273
273
|
- ./lib/http_stub/rake/server_tasks.rb
|
274
274
|
- ./lib/http_stub/rake/task_generators.rb
|
@@ -297,7 +297,7 @@ files:
|
|
297
297
|
- ./spec/lib/http_stub/controllers/stub_controller_spec.rb
|
298
298
|
- ./spec/lib/http_stub/hash_extensions_spec.rb
|
299
299
|
- ./spec/lib/http_stub/models/exact_value_matcher_spec.rb
|
300
|
-
- ./spec/lib/http_stub/models/
|
300
|
+
- ./spec/lib/http_stub/models/hash_with_string_value_matchers_spec.rb
|
301
301
|
- ./spec/lib/http_stub/models/headers_spec.rb
|
302
302
|
- ./spec/lib/http_stub/models/omitted_value_matcher_spec.rb
|
303
303
|
- ./spec/lib/http_stub/models/regexp_value_matcher_spec.rb
|
@@ -305,12 +305,12 @@ files:
|
|
305
305
|
- ./spec/lib/http_stub/models/request_header_parser_spec.rb
|
306
306
|
- ./spec/lib/http_stub/models/request_pipeline_spec.rb
|
307
307
|
- ./spec/lib/http_stub/models/response_spec.rb
|
308
|
+
- ./spec/lib/http_stub/models/string_value_matcher_spec.rb
|
308
309
|
- ./spec/lib/http_stub/models/stub_activator_spec.rb
|
309
310
|
- ./spec/lib/http_stub/models/stub_headers_spec.rb
|
310
311
|
- ./spec/lib/http_stub/models/stub_parameters_spec.rb
|
311
312
|
- ./spec/lib/http_stub/models/stub_spec.rb
|
312
313
|
- ./spec/lib/http_stub/models/stub_uri_spec.rb
|
313
|
-
- ./spec/lib/http_stub/models/value_matcher_spec.rb
|
314
314
|
- ./spec/lib/http_stub/rake/server_daemon_tasks_smoke_spec.rb
|
315
315
|
- ./spec/lib/http_stub/rake/server_tasks_smoke_spec.rb
|
316
316
|
- ./spec/lib/http_stub/rake/server_tasks_spec.rb
|
@@ -361,7 +361,7 @@ test_files:
|
|
361
361
|
- ./spec/lib/http_stub/controllers/stub_controller_spec.rb
|
362
362
|
- ./spec/lib/http_stub/hash_extensions_spec.rb
|
363
363
|
- ./spec/lib/http_stub/models/exact_value_matcher_spec.rb
|
364
|
-
- ./spec/lib/http_stub/models/
|
364
|
+
- ./spec/lib/http_stub/models/hash_with_string_value_matchers_spec.rb
|
365
365
|
- ./spec/lib/http_stub/models/headers_spec.rb
|
366
366
|
- ./spec/lib/http_stub/models/omitted_value_matcher_spec.rb
|
367
367
|
- ./spec/lib/http_stub/models/regexp_value_matcher_spec.rb
|
@@ -369,12 +369,12 @@ test_files:
|
|
369
369
|
- ./spec/lib/http_stub/models/request_header_parser_spec.rb
|
370
370
|
- ./spec/lib/http_stub/models/request_pipeline_spec.rb
|
371
371
|
- ./spec/lib/http_stub/models/response_spec.rb
|
372
|
+
- ./spec/lib/http_stub/models/string_value_matcher_spec.rb
|
372
373
|
- ./spec/lib/http_stub/models/stub_activator_spec.rb
|
373
374
|
- ./spec/lib/http_stub/models/stub_headers_spec.rb
|
374
375
|
- ./spec/lib/http_stub/models/stub_parameters_spec.rb
|
375
376
|
- ./spec/lib/http_stub/models/stub_spec.rb
|
376
377
|
- ./spec/lib/http_stub/models/stub_uri_spec.rb
|
377
|
-
- ./spec/lib/http_stub/models/value_matcher_spec.rb
|
378
378
|
- ./spec/lib/http_stub/rake/server_daemon_tasks_smoke_spec.rb
|
379
379
|
- ./spec/lib/http_stub/rake/server_tasks_smoke_spec.rb
|
380
380
|
- ./spec/lib/http_stub/rake/server_tasks_spec.rb
|
@@ -1,81 +0,0 @@
|
|
1
|
-
describe HttpStub::Models::ValueMatcher do
|
2
|
-
|
3
|
-
let(:stub_value) { "some stub value" }
|
4
|
-
|
5
|
-
let(:value_matcher) { HttpStub::Models::ValueMatcher.new(stub_value) }
|
6
|
-
|
7
|
-
describe "#match?" do
|
8
|
-
|
9
|
-
let(:actual_value) { "some actual value" }
|
10
|
-
|
11
|
-
it "should determine if actual value should be omitted" do
|
12
|
-
HttpStub::Models::OmittedValueMatcher.should_receive(:match?).with(stub_value, actual_value)
|
13
|
-
|
14
|
-
perform_match
|
15
|
-
end
|
16
|
-
|
17
|
-
it "should determine if the actual value matches a regular expression" do
|
18
|
-
HttpStub::Models::RegexpValueMatcher.should_receive(:match?).with(stub_value, actual_value)
|
19
|
-
|
20
|
-
perform_match
|
21
|
-
end
|
22
|
-
|
23
|
-
it "should determine if the actual value exactly matches the stub value" do
|
24
|
-
HttpStub::Models::ExactValueMatcher.should_receive(:match?).with(stub_value, actual_value)
|
25
|
-
|
26
|
-
perform_match
|
27
|
-
end
|
28
|
-
|
29
|
-
context "when an omitted match occurs" do
|
30
|
-
|
31
|
-
before(:each) { HttpStub::Models::OmittedValueMatcher.should_receive(:match?).and_return(true) }
|
32
|
-
|
33
|
-
it "should return true" do
|
34
|
-
perform_match.should be_true
|
35
|
-
end
|
36
|
-
|
37
|
-
end
|
38
|
-
|
39
|
-
context "when a regular expression match occurs" do
|
40
|
-
|
41
|
-
before(:each) { HttpStub::Models::RegexpValueMatcher.should_receive(:match?).and_return(true) }
|
42
|
-
|
43
|
-
it "should return true" do
|
44
|
-
perform_match.should be_true
|
45
|
-
end
|
46
|
-
|
47
|
-
end
|
48
|
-
|
49
|
-
context "when an exact match occurs" do
|
50
|
-
|
51
|
-
before(:each) { HttpStub::Models::ExactValueMatcher.should_receive(:match?).and_return(true) }
|
52
|
-
|
53
|
-
it "should return true" do
|
54
|
-
perform_match.should be_true
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
context "when no match occurs" do
|
60
|
-
|
61
|
-
it "should return false" do
|
62
|
-
perform_match.should be_false
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|
66
|
-
|
67
|
-
def perform_match
|
68
|
-
value_matcher.match?(actual_value)
|
69
|
-
end
|
70
|
-
|
71
|
-
end
|
72
|
-
|
73
|
-
describe "#to_s" do
|
74
|
-
|
75
|
-
it "should return the stub value provided" do
|
76
|
-
value_matcher.to_s.should eql(stub_value)
|
77
|
-
end
|
78
|
-
|
79
|
-
end
|
80
|
-
|
81
|
-
end
|