http_stub 0.26.0 → 0.26.1
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 +11 -9
- data/lib/http_stub/configurer/dsl/server.rb +3 -10
- data/lib/http_stub/configurer/dsl/session.rb +0 -4
- data/lib/http_stub/configurer/server/facade.rb +8 -4
- data/lib/http_stub/configurer/server/session_facade.rb +0 -7
- data/lib/http_stub/server/application/application.rb +2 -1
- data/lib/http_stub/server/application/routes/session.rb +0 -5
- data/lib/http_stub/server/application/routes/status.rb +37 -0
- data/lib/http_stub/server/daemon.rb +3 -3
- data/lib/http_stub/server/memory/memory.rb +11 -2
- data/lib/http_stub/server/session/controller.rb +0 -4
- data/lib/http_stub/server/status/controller.rb +25 -0
- data/lib/http_stub/version.rb +1 -1
- data/spec/acceptance/configurer_initialization_spec.rb +12 -2
- data/spec/acceptance/server_status_spec.rb +37 -0
- data/spec/acceptance/stub_miss_list_spec.rb +8 -1
- data/spec/lib/http_stub/configurer/dsl/server_spec.rb +4 -22
- data/spec/lib/http_stub/configurer/dsl/session_spec.rb +0 -12
- data/spec/lib/http_stub/configurer/server/facade_spec.rb +36 -8
- data/spec/lib/http_stub/configurer/server/session_facade_spec.rb +0 -51
- data/spec/lib/http_stub/server/application/routes/session_integration_spec.rb +2 -4
- data/spec/lib/http_stub/server/application/routes/session_spec.rb +0 -21
- data/spec/lib/http_stub/server/application/routes/status_spec.rb +56 -0
- data/spec/lib/http_stub/server/application/routes/stub_integration_spec.rb +2 -4
- data/spec/lib/http_stub/server/memory/memory_spec.rb +32 -0
- data/spec/lib/http_stub/server/session/controller_spec.rb +0 -12
- data/spec/lib/http_stub/server/status/controller_spec.rb +47 -0
- data/spec/support/http_stub/server/driver.rb +4 -5
- data/spec/support/http_stub/server_integration.rb +9 -4
- metadata +527 -519
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d74076fbfbad5830130f7c27707249d65108d40f
|
4
|
+
data.tar.gz: 749c5d0060cb935728a3dda7d520807d1b2a2d2a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 51991b22a7a48eee4c0c52eb897f16fbd5ca4dc44b7ebba32fbf4ff8774bfa32fbe2100718b3820b93a2a037beb6090549bca1c08bf638cb3623d319f7d76d34
|
7
|
+
data.tar.gz: 7015ac70615f0b0478c4042313ddb9a16a0d57e7475edbfb071bad2b7d86bd13ba0068f22bd74d4e76548d9ba3d46fb5b72baadeb9ddd539080598511b3fba2a
|
data/lib/http_stub.rb
CHANGED
@@ -30,6 +30,7 @@ require_relative 'http_stub/server/request/sinatra_request'
|
|
30
30
|
require_relative 'http_stub/server/request/request'
|
31
31
|
require_relative 'http_stub/server/request/factory'
|
32
32
|
require_relative 'http_stub/server/registry'
|
33
|
+
require_relative 'http_stub/server/status/controller'
|
33
34
|
require_relative 'http_stub/server/stub/match/omitted_value_matcher'
|
34
35
|
require_relative 'http_stub/server/stub/match/regexp_value_matcher'
|
35
36
|
require_relative 'http_stub/server/stub/match/exact_value_matcher'
|
@@ -67,13 +68,6 @@ require_relative 'http_stub/server/stub/match/controller'
|
|
67
68
|
require_relative 'http_stub/server/stub/registry'
|
68
69
|
require_relative 'http_stub/server/stub/controller'
|
69
70
|
require_relative 'http_stub/server/stub'
|
70
|
-
require_relative 'http_stub/server/scenario/links'
|
71
|
-
require_relative 'http_stub/server/scenario/trigger'
|
72
|
-
require_relative 'http_stub/server/scenario/parser'
|
73
|
-
require_relative 'http_stub/server/scenario/not_found_error'
|
74
|
-
require_relative 'http_stub/server/scenario/scenario'
|
75
|
-
require_relative 'http_stub/server/scenario/controller'
|
76
|
-
require_relative 'http_stub/server/scenario'
|
77
71
|
require_relative 'http_stub/server/session'
|
78
72
|
require_relative 'http_stub/server/session/configuration'
|
79
73
|
require_relative 'http_stub/server/session/identifier_strategy'
|
@@ -81,6 +75,13 @@ require_relative 'http_stub/server/session/empty'
|
|
81
75
|
require_relative 'http_stub/server/session/session'
|
82
76
|
require_relative 'http_stub/server/session/registry'
|
83
77
|
require_relative 'http_stub/server/session/controller'
|
78
|
+
require_relative 'http_stub/server/scenario/links'
|
79
|
+
require_relative 'http_stub/server/scenario/trigger'
|
80
|
+
require_relative 'http_stub/server/scenario/parser'
|
81
|
+
require_relative 'http_stub/server/scenario/not_found_error'
|
82
|
+
require_relative 'http_stub/server/scenario/scenario'
|
83
|
+
require_relative 'http_stub/server/scenario/controller'
|
84
|
+
require_relative 'http_stub/server/scenario'
|
84
85
|
require_relative 'http_stub/server/memory/memory'
|
85
86
|
require_relative 'http_stub/server/memory/controller'
|
86
87
|
require_relative 'http_stub/server/application/configuration'
|
@@ -90,11 +91,12 @@ require_relative 'http_stub/server/application/cross_origin_support'
|
|
90
91
|
require_relative 'http_stub/server/application/session_uri_support'
|
91
92
|
require_relative 'http_stub/server/application/text_formatting_support'
|
92
93
|
require_relative 'http_stub/server/application/response_pipeline'
|
93
|
-
require_relative 'http_stub/server/application/routes/memory'
|
94
94
|
require_relative 'http_stub/server/application/routes/resource'
|
95
|
+
require_relative 'http_stub/server/application/routes/status'
|
96
|
+
require_relative 'http_stub/server/application/routes/stub'
|
95
97
|
require_relative 'http_stub/server/application/routes/session'
|
96
98
|
require_relative 'http_stub/server/application/routes/scenario'
|
97
|
-
require_relative 'http_stub/server/application/routes/
|
99
|
+
require_relative 'http_stub/server/application/routes/memory'
|
98
100
|
require_relative 'http_stub/server/application/application'
|
99
101
|
require_relative 'http_stub/server/daemon'
|
100
102
|
require_relative 'http_stub/configurer/request/http/basic'
|
@@ -28,13 +28,13 @@ module HttpStub
|
|
28
28
|
end
|
29
29
|
|
30
30
|
def initialize!
|
31
|
-
@server_facade.
|
32
|
-
|
31
|
+
@server_facade.initialize_server
|
32
|
+
@default_session = @session_factory.transactional
|
33
33
|
end
|
34
34
|
|
35
35
|
def has_started!
|
36
36
|
@server_facade.server_has_started
|
37
|
-
|
37
|
+
@default_session = @session_factory.transactional
|
38
38
|
end
|
39
39
|
|
40
40
|
def reset!
|
@@ -73,13 +73,6 @@ module HttpStub
|
|
73
73
|
@default_session.clear!
|
74
74
|
end
|
75
75
|
|
76
|
-
private
|
77
|
-
|
78
|
-
def switch_to_transactional_session
|
79
|
-
@session_factory.transactional.mark_as_default!
|
80
|
-
@default_session = @session_factory.transactional
|
81
|
-
end
|
82
|
-
|
83
76
|
end
|
84
77
|
|
85
78
|
end
|
@@ -15,10 +15,6 @@ module HttpStub
|
|
15
15
|
@default_stub_template = default_stub_template
|
16
16
|
end
|
17
17
|
|
18
|
-
def mark_as_default!
|
19
|
-
@session_facade.mark_as_default
|
20
|
-
end
|
21
|
-
|
22
18
|
def endpoint_template(&block)
|
23
19
|
HttpStub::Configurer::DSL::SessionEndpointTemplate.new(self, @default_stub_template, &block)
|
24
20
|
end
|
@@ -10,12 +10,16 @@ module HttpStub
|
|
10
10
|
@request_processor = HttpStub::Configurer::Server::RequestProcessor.new(configuration)
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
14
|
-
@request_processor.
|
13
|
+
def initialize_server
|
14
|
+
@request_processor.flush!
|
15
|
+
@request_processor.submit(
|
16
|
+
request: HttpStub::Configurer::Request::Http::Factory.post("status/initialized"),
|
17
|
+
description: "marking server as initialized"
|
18
|
+
)
|
15
19
|
end
|
16
20
|
|
17
|
-
def
|
18
|
-
@request_processor.
|
21
|
+
def server_has_started
|
22
|
+
@request_processor.disable_buffering!
|
19
23
|
end
|
20
24
|
|
21
25
|
def reset
|
@@ -14,13 +14,6 @@ module HttpStub
|
|
14
14
|
@session_description = "session '#{session_id}'"
|
15
15
|
end
|
16
16
|
|
17
|
-
def mark_as_default
|
18
|
-
@request_processor.submit(
|
19
|
-
request: REQUEST_FACTORY.post("sessions/default", http_stub_session_id: @session_id),
|
20
|
-
description: "marking #{@session_description} as the default"
|
21
|
-
)
|
22
|
-
end
|
23
|
-
|
24
17
|
def stub_response(stub)
|
25
18
|
@request_processor.submit(
|
26
19
|
request: REQUEST_FACTORY.multipart("stubs", stub, http_stub_session_id: @session_id),
|
@@ -30,8 +30,9 @@ module HttpStub
|
|
30
30
|
|
31
31
|
register HttpStub::Server::Application::CrossOriginSupport
|
32
32
|
|
33
|
-
include HttpStub::Server::Application::Routes::Memory
|
34
33
|
include HttpStub::Server::Application::Routes::Resource
|
34
|
+
include HttpStub::Server::Application::Routes::Status
|
35
|
+
include HttpStub::Server::Application::Routes::Memory
|
35
36
|
include HttpStub::Server::Application::Routes::Scenario
|
36
37
|
include HttpStub::Server::Application::Routes::Session
|
37
38
|
include HttpStub::Server::Application::Routes::Stub
|
@@ -34,11 +34,6 @@ module HttpStub
|
|
34
34
|
haml :sessions, {}, sessions: @session_controller.find_all
|
35
35
|
end
|
36
36
|
|
37
|
-
post "/default" do
|
38
|
-
@session_controller.mark_default(http_stub_request)
|
39
|
-
halt 200, "OK"
|
40
|
-
end
|
41
|
-
|
42
37
|
delete do
|
43
38
|
pass unless http_stub_request.session_id
|
44
39
|
@session_controller.delete(http_stub_request, logger)
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module HttpStub
|
2
|
+
module Server
|
3
|
+
module Application
|
4
|
+
module Routes
|
5
|
+
|
6
|
+
module Status
|
7
|
+
|
8
|
+
def initialize
|
9
|
+
super()
|
10
|
+
@status_controller = HttpStub::Server::Status::Controller.new(@session_configuration, @server_memory)
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.included(application)
|
14
|
+
application.instance_eval do
|
15
|
+
|
16
|
+
namespace "/http_stub/status" do
|
17
|
+
|
18
|
+
get do
|
19
|
+
halt 200, @status_controller.current
|
20
|
+
end
|
21
|
+
|
22
|
+
post "/initialized" do
|
23
|
+
@status_controller.initialized
|
24
|
+
halt 200, "OK"
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -16,9 +16,9 @@ module HttpStub
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def initialize(args)
|
19
|
-
@configurer
|
20
|
-
default_args = { host: "localhost" }
|
21
|
-
default_args
|
19
|
+
@configurer = args[:configurer]
|
20
|
+
default_args = { host: "localhost", ping_uri: "/http_stub/status" }
|
21
|
+
default_args.merge!(host: @configurer.stub_server.host, port: @configurer.stub_server.port) if @configurer
|
22
22
|
super(default_args.merge(args))
|
23
23
|
end
|
24
24
|
|
@@ -4,18 +4,26 @@ module HttpStub
|
|
4
4
|
|
5
5
|
class Memory
|
6
6
|
|
7
|
+
DEFAULT_STATUS = "Started".freeze
|
8
|
+
INITIALIZED_STATUS = "Initialized".freeze
|
9
|
+
|
7
10
|
SESSION_ID = HttpStub::Server::Session::MEMORY_SESSION_ID
|
8
11
|
|
9
|
-
private_constant :SESSION_ID
|
12
|
+
private_constant :DEFAULT_STATUS, :INITIALIZED_STATUS, :SESSION_ID
|
10
13
|
|
11
|
-
attr_reader :scenarios, :sessions
|
14
|
+
attr_reader :status, :scenarios, :sessions
|
12
15
|
|
13
16
|
def initialize(session_configuration)
|
17
|
+
@status = DEFAULT_STATUS
|
14
18
|
@scenarios = HttpStub::Server::Registry.new("scenario")
|
15
19
|
@session = HttpStub::Server::Session::Session.new(SESSION_ID, @scenarios, HttpStub::Server::Session::Empty)
|
16
20
|
@sessions = HttpStub::Server::Session::Registry.new(session_configuration, @scenarios, @session)
|
17
21
|
end
|
18
22
|
|
23
|
+
def initialized!
|
24
|
+
@status = INITIALIZED_STATUS
|
25
|
+
end
|
26
|
+
|
19
27
|
def stubs
|
20
28
|
@session.stubs
|
21
29
|
end
|
@@ -23,6 +31,7 @@ module HttpStub
|
|
23
31
|
def reset(logger)
|
24
32
|
@scenarios.clear(logger)
|
25
33
|
@sessions.clear(logger)
|
34
|
+
@status = DEFAULT_STATUS
|
26
35
|
end
|
27
36
|
|
28
37
|
end
|
@@ -21,10 +21,6 @@ module HttpStub
|
|
21
21
|
@server_memory.sessions.all
|
22
22
|
end
|
23
23
|
|
24
|
-
def mark_default(request)
|
25
|
-
@session_configuration.default_identifier = request.session_id
|
26
|
-
end
|
27
|
-
|
28
24
|
def delete(request, logger)
|
29
25
|
@server_memory.sessions.delete(request.session_id, logger)
|
30
26
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module HttpStub
|
2
|
+
module Server
|
3
|
+
module Status
|
4
|
+
|
5
|
+
class Controller
|
6
|
+
|
7
|
+
def initialize(session_configuration, server_memory)
|
8
|
+
@session_configuration = session_configuration
|
9
|
+
@server_memory = server_memory
|
10
|
+
end
|
11
|
+
|
12
|
+
def current
|
13
|
+
@server_memory.status
|
14
|
+
end
|
15
|
+
|
16
|
+
def initialized
|
17
|
+
@server_memory.initialized!
|
18
|
+
@session_configuration.default_identifier = HttpStub::Server::Session::TRANSACTIONAL_SESSION_ID
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/http_stub/version.rb
CHANGED
@@ -105,13 +105,23 @@ describe "Configurer initialization acceptance" do
|
|
105
105
|
end
|
106
106
|
end
|
107
107
|
|
108
|
-
it "registers the stub" do
|
109
|
-
response = HTTParty.get("#{server_uri}/some_stub_path")
|
108
|
+
it "registers the stub in the servers transactional session" do
|
109
|
+
response = HTTParty.get("#{server_uri}/some_stub_path", request_session_id_header("http_stub_transactional"))
|
110
110
|
|
111
111
|
expect(response.code).to eql(200)
|
112
112
|
expect(response.body).to eql("Some stub body")
|
113
113
|
end
|
114
114
|
|
115
|
+
it "does not register the stub in the servers memory session" do
|
116
|
+
response = HTTParty.get("#{server_uri}/some_stub_path", request_session_id_header("http_stub_memory"))
|
117
|
+
|
118
|
+
expect(response.code).to eql(404)
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
def request_session_id_header(session_id)
|
124
|
+
{ headers: { "http_stub_session_id" => session_id } }
|
115
125
|
end
|
116
126
|
|
117
127
|
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
describe "Server status acceptance" do
|
2
|
+
|
3
|
+
describe "GET /http_stub/status" do
|
4
|
+
|
5
|
+
let(:response) { HTTParty.get("#{server_uri}/http_stub/status") }
|
6
|
+
|
7
|
+
context "when a server is started without a configurer" do
|
8
|
+
include_context "server integration"
|
9
|
+
|
10
|
+
it "indicates the server has started" do
|
11
|
+
expect(response.body).to eql("Started")
|
12
|
+
end
|
13
|
+
|
14
|
+
context "and the server is updated to reflect it is initialized" do
|
15
|
+
|
16
|
+
before(:example) { HTTParty.post("#{server_uri}/http_stub/status/initialized") }
|
17
|
+
|
18
|
+
it "indicates the server has been initialized" do
|
19
|
+
expect(response.body).to eql("Initialized")
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
end
|
25
|
+
|
26
|
+
context "when a server with a configurer is started" do
|
27
|
+
include_context "configurer integration"
|
28
|
+
|
29
|
+
it "indicates the server has been initialized" do
|
30
|
+
expect(response.body).to eql("Initialized")
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
@@ -8,6 +8,14 @@ describe "Stub miss list acceptance" do
|
|
8
8
|
|
9
9
|
before(:example) { configure_stub_registrator }
|
10
10
|
|
11
|
+
context "when no miss has been registered" do
|
12
|
+
|
13
|
+
it "returns a response with an empty request list" do
|
14
|
+
expect(response.body).to_not include("Request")
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
|
11
19
|
context "when a request has been made that does not match a stub" do
|
12
20
|
|
13
21
|
before(:example) { stub_registrator.issue_matching_request }
|
@@ -32,7 +40,6 @@ describe "Stub miss list acceptance" do
|
|
32
40
|
|
33
41
|
before(:example) { stub_registrator.register_stub }
|
34
42
|
|
35
|
-
|
36
43
|
include_context "HTML view excluding request details"
|
37
44
|
|
38
45
|
end
|
@@ -233,19 +233,10 @@ describe HttpStub::Configurer::DSL::Server do
|
|
233
233
|
|
234
234
|
subject { server.initialize! }
|
235
235
|
|
236
|
-
before(:example)
|
237
|
-
allow(server_facade).to receive(:flush_requests)
|
238
|
-
allow(transactional_session).to receive(:mark_as_default!)
|
239
|
-
end
|
240
|
-
|
241
|
-
it "flushes requests held by the server facade" do
|
242
|
-
expect(server_facade).to receive(:flush_requests)
|
243
|
-
|
244
|
-
subject
|
245
|
-
end
|
236
|
+
before(:example) { allow(server_facade).to receive(:initialize_server) }
|
246
237
|
|
247
|
-
it "
|
248
|
-
expect(
|
238
|
+
it "initializes the server via the facade" do
|
239
|
+
expect(server_facade).to receive(:initialize_server)
|
249
240
|
|
250
241
|
subject
|
251
242
|
end
|
@@ -263,10 +254,7 @@ describe HttpStub::Configurer::DSL::Server do
|
|
263
254
|
|
264
255
|
subject { server.has_started! }
|
265
256
|
|
266
|
-
before(:example)
|
267
|
-
allow(server_facade).to receive(:server_has_started)
|
268
|
-
allow(transactional_session).to receive(:mark_as_default!)
|
269
|
-
end
|
257
|
+
before(:example) { allow(server_facade).to receive(:server_has_started) }
|
270
258
|
|
271
259
|
it "informs the facade that the server has started" do
|
272
260
|
expect(server_facade).to receive(:server_has_started)
|
@@ -274,12 +262,6 @@ describe HttpStub::Configurer::DSL::Server do
|
|
274
262
|
subject
|
275
263
|
end
|
276
264
|
|
277
|
-
it "marks the transactional session as the servers default" do
|
278
|
-
expect(transactional_session).to receive(:mark_as_default!)
|
279
|
-
|
280
|
-
subject
|
281
|
-
end
|
282
|
-
|
283
265
|
it "causes subsequent session operations to be performed against the transactional session" do
|
284
266
|
subject
|
285
267
|
expect(transactional_session).to receive(:activate!)
|
@@ -17,18 +17,6 @@ describe HttpStub::Configurer::DSL::Session do
|
|
17
17
|
session
|
18
18
|
end
|
19
19
|
|
20
|
-
describe "#mark_as_default!" do
|
21
|
-
|
22
|
-
subject { session.mark_as_default! }
|
23
|
-
|
24
|
-
it "marks the session as the servers default via the session facade" do
|
25
|
-
expect(session_facade).to receive(:mark_as_default)
|
26
|
-
|
27
|
-
subject
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|
31
|
-
|
32
20
|
describe "#endpoint_template" do
|
33
21
|
|
34
22
|
let(:block) { lambda { block_verifier.verify } }
|