http_stub 0.26.0 → 0.26.1
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 +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 } }
|