http_stub 0.25.1 → 0.26.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/http_stub.rb +32 -9
- data/lib/http_stub/configurer.rb +2 -10
- data/lib/http_stub/configurer/dsl/scenario_builder.rb +13 -11
- data/lib/http_stub/configurer/dsl/server.rb +32 -43
- data/lib/http_stub/configurer/dsl/server_endpoint_template.rb +23 -0
- data/lib/http_stub/configurer/dsl/session.rb +55 -0
- data/lib/http_stub/configurer/dsl/session_endpoint_template.rb +22 -0
- data/lib/http_stub/configurer/dsl/session_factory.rb +34 -0
- data/lib/http_stub/configurer/dsl/stub_builder.rb +18 -8
- data/lib/http_stub/configurer/dsl/stub_builder_template.rb +26 -0
- data/lib/http_stub/configurer/request/http/basic.rb +9 -3
- data/lib/http_stub/configurer/request/http/factory.rb +7 -16
- data/lib/http_stub/configurer/request/http/multipart.rb +5 -7
- data/lib/http_stub/configurer/request/stub.rb +3 -3
- data/lib/http_stub/configurer/request/triggers.rb +25 -0
- data/lib/http_stub/configurer/server/command_processor.rb +8 -10
- data/lib/http_stub/configurer/server/configuration.rb +33 -0
- data/lib/http_stub/configurer/server/facade.rb +21 -43
- data/lib/http_stub/configurer/server/request_processor.rb +2 -2
- data/lib/http_stub/configurer/server/session_facade.rb +64 -0
- data/lib/http_stub/extensions/core/uri.rb +28 -0
- data/lib/http_stub/extensions/rack/handler.rb +1 -0
- data/lib/http_stub/extensions/sinatra/namespace.rb +9 -0
- data/lib/http_stub/rake/server_tasks.rb +1 -4
- data/lib/http_stub/server/application/application.rb +17 -98
- data/lib/http_stub/server/application/configuration.rb +38 -0
- data/lib/http_stub/server/application/cross_origin_support.rb +7 -5
- data/lib/http_stub/server/application/request_support.rb +38 -0
- data/lib/http_stub/server/application/response_support.rb +19 -0
- data/lib/http_stub/server/application/routes/memory.rb +37 -0
- data/lib/http_stub/server/application/routes/resource.rb +23 -0
- data/lib/http_stub/server/application/routes/scenario.rb +52 -0
- data/lib/http_stub/server/application/routes/session.rb +65 -0
- data/lib/http_stub/server/application/routes/stub.rb +75 -0
- data/lib/http_stub/server/application/session_uri_support.rb +15 -0
- data/lib/http_stub/server/memory/controller.rb +25 -0
- data/lib/http_stub/server/memory/memory.rb +32 -0
- data/lib/http_stub/server/registry.rb +25 -8
- data/lib/http_stub/server/request/factory.rb +23 -0
- data/lib/http_stub/server/request/parameters.rb +2 -2
- data/lib/http_stub/server/request/request.rb +6 -11
- data/lib/http_stub/server/request/sinatra_request.rb +26 -0
- data/lib/http_stub/server/scenario/controller.rb +16 -11
- data/lib/http_stub/server/scenario/not_found_error.rb +15 -0
- data/lib/http_stub/server/session.rb +14 -0
- data/lib/http_stub/server/session/configuration.rb +32 -0
- data/lib/http_stub/server/session/controller.rb +40 -0
- data/lib/http_stub/server/session/empty.rb +15 -0
- data/lib/http_stub/server/session/identifier_strategy.rb +24 -0
- data/lib/http_stub/server/session/registry.rb +38 -0
- data/lib/http_stub/server/session/session.rb +80 -0
- data/lib/http_stub/server/stub/controller.rb +18 -12
- data/lib/http_stub/server/stub/empty.rb +1 -1
- data/lib/http_stub/server/stub/match/controller.rb +9 -5
- data/lib/http_stub/server/stub/payload/response_body_modifier.rb +3 -1
- data/lib/http_stub/server/stub/registry.rb +6 -13
- data/lib/http_stub/server/stub/triggers.rb +11 -9
- data/lib/http_stub/server/views/_home.haml +2 -0
- data/lib/http_stub/server/views/_post_link_function.haml +26 -0
- data/lib/http_stub/server/views/_session.haml +16 -0
- data/lib/http_stub/server/views/_stub.haml +8 -2
- data/lib/http_stub/server/views/_stubs.haml +4 -0
- data/lib/http_stub/server/views/application.sass +4 -1
- data/lib/http_stub/server/views/layout.haml +1 -0
- data/lib/http_stub/server/views/scenario.haml +4 -3
- data/lib/http_stub/server/views/scenarios.haml +7 -6
- data/lib/http_stub/server/views/session.haml +3 -0
- data/lib/http_stub/server/views/sessions.haml +6 -0
- data/lib/http_stub/server/views/stubs.haml +1 -4
- data/lib/http_stub/server/views/transactional_session.haml +2 -0
- data/lib/http_stub/version.rb +1 -1
- data/spec/acceptance/configurer_initialization_spec.rb +40 -51
- data/spec/acceptance/configurer_part_spec.rb +5 -7
- data/spec/acceptance/cross_origin_support_spec.rb +7 -13
- data/spec/acceptance/endpoint_template_spec.rb +2 -4
- data/spec/acceptance/request_reference_spec.rb +1 -3
- data/spec/acceptance/scenario_spec.rb +7 -9
- data/spec/acceptance/server_defaults_spec.rb +2 -4
- data/spec/acceptance/server_memory_spec.rb +20 -0
- data/spec/acceptance/session_spec.rb +125 -0
- data/spec/acceptance/stub_body_request_matching_spec.rb +2 -4
- data/spec/acceptance/stub_control_values_spec.rb +19 -18
- data/spec/acceptance/stub_match_last_spec.rb +0 -4
- data/spec/acceptance/stub_match_list_spec.rb +0 -4
- data/spec/acceptance/stub_miss_list_spec.rb +0 -4
- data/spec/acceptance/stub_spec.rb +11 -11
- data/spec/acceptance/stub_trigger_spec.rb +60 -13
- data/spec/lib/http_stub/configurer/dsl/scenario_builder_spec.rb +83 -30
- data/spec/lib/http_stub/configurer/dsl/server_endpoint_template_spec.rb +167 -0
- data/spec/lib/http_stub/configurer/dsl/server_spec.rb +306 -176
- data/spec/lib/http_stub/configurer/dsl/session_endpoint_template_spec.rb +150 -0
- data/spec/lib/http_stub/configurer/dsl/session_factory_spec.rb +97 -0
- data/spec/lib/http_stub/configurer/dsl/session_spec.rb +222 -0
- data/spec/lib/http_stub/configurer/dsl/stub_builder_spec.rb +209 -48
- data/spec/lib/http_stub/configurer/dsl/stub_builder_template_spec.rb +203 -0
- data/spec/lib/http_stub/configurer/request/http/basic_spec.rb +80 -4
- data/spec/lib/http_stub/configurer/request/http/factory_spec.rb +115 -56
- data/spec/lib/http_stub/configurer/request/http/multipart_spec.rb +39 -6
- data/spec/lib/http_stub/configurer/request/stub_spec.rb +50 -108
- data/spec/lib/http_stub/configurer/request/triggers_spec.rb +101 -0
- data/spec/lib/http_stub/configurer/server/command_processor_integration_spec.rb +11 -10
- data/spec/lib/http_stub/configurer/server/configuration_spec.rb +139 -0
- data/spec/lib/http_stub/configurer/server/facade_spec.rb +65 -142
- data/spec/lib/http_stub/configurer/server/request_processor_spec.rb +7 -6
- data/spec/lib/http_stub/configurer/server/session_facade_spec.rb +336 -0
- data/spec/lib/http_stub/configurer_spec.rb +105 -0
- data/spec/lib/http_stub/extensions/core/uri_spec.rb +75 -0
- data/spec/lib/http_stub/extensions/rack/handler_spec.rb +1 -1
- data/spec/lib/http_stub/extensions/sinatra/namespace_spec.rb +36 -0
- data/spec/lib/http_stub/rake/server_tasks_smoke_spec.rb +4 -3
- data/spec/lib/http_stub/rake/server_tasks_spec.rb +47 -10
- data/spec/lib/http_stub/server/application/application_spec.rb +44 -301
- data/spec/lib/http_stub/server/application/configuration_spec.rb +59 -0
- data/spec/lib/http_stub/server/application/cross_origin_support_spec.rb +23 -20
- data/spec/lib/http_stub/server/application/request_support_integration_spec.rb +93 -0
- data/spec/lib/http_stub/server/application/request_support_spec.rb +61 -0
- data/spec/lib/http_stub/server/application/response_support_spec.rb +30 -0
- data/spec/lib/http_stub/server/application/routes/memory_spec.rb +41 -0
- data/spec/lib/http_stub/server/application/routes/resource_spec.rb +16 -0
- data/spec/lib/http_stub/server/application/routes/scenario_spec.rb +117 -0
- data/spec/lib/http_stub/server/application/routes/session_integration_spec.rb +46 -0
- data/spec/lib/http_stub/server/application/routes/session_spec.rb +186 -0
- data/spec/lib/http_stub/server/application/{application_integration_spec.rb → routes/stub_integration_spec.rb} +16 -38
- data/spec/lib/http_stub/server/application/routes/stub_spec.rb +202 -0
- data/spec/lib/http_stub/server/application/session_uri_support_spec.rb +48 -0
- data/spec/lib/http_stub/server/application/text_formatting_support_spec.rb +3 -3
- data/spec/lib/http_stub/server/memory/controller_spec.rb +47 -0
- data/spec/lib/http_stub/server/memory/memory_spec.rb +122 -0
- data/spec/lib/http_stub/server/registry_spec.rb +153 -34
- data/spec/lib/http_stub/server/request/factory_spec.rb +74 -0
- data/spec/lib/http_stub/server/request/parameters_spec.rb +5 -8
- data/spec/lib/http_stub/server/request/request_spec.rb +52 -52
- data/spec/lib/http_stub/server/request/sinatra_request_spec.rb +132 -0
- data/spec/lib/http_stub/server/scenario/controller_spec.rb +121 -35
- data/spec/lib/http_stub/server/scenario/not_found_error_spec.rb +25 -0
- data/spec/lib/http_stub/server/session/configuration_spec.rb +94 -0
- data/spec/lib/http_stub/server/session/controller_spec.rb +106 -0
- data/spec/lib/http_stub/server/session/empty_spec.rb +13 -0
- data/spec/lib/http_stub/server/session/identifier_strategy_spec.rb +126 -0
- data/spec/lib/http_stub/server/session/registry_spec.rb +214 -0
- data/spec/lib/http_stub/server/session/session_spec.rb +444 -0
- data/spec/lib/http_stub/server/stub/controller_spec.rb +89 -37
- data/spec/lib/http_stub/server/stub/empty_spec.rb +2 -2
- data/spec/lib/http_stub/server/stub/match/controller_spec.rb +59 -16
- data/spec/lib/http_stub/server/stub/payload/response_body_modifier_spec.rb +7 -8
- data/spec/lib/http_stub/server/stub/registry_integration_spec.rb +42 -15
- data/spec/lib/http_stub/server/stub/registry_spec.rb +38 -59
- data/spec/lib/http_stub/server/stub/triggers_spec.rb +93 -34
- data/spec/spec_helper.rb +13 -1
- data/spec/support/contain_file.rb +23 -0
- data/spec/support/cross_origin_server/application.rb +1 -1
- data/spec/support/cross_origin_server/index_page.rb +2 -2
- data/spec/support/cross_origin_server/integration.rb +3 -2
- data/spec/support/cross_origin_server/public/index.html +2 -1
- data/spec/support/http_stub/configurer_integration.rb +12 -14
- data/spec/support/http_stub/server/application/http_stub_rack_application_test.rb +47 -0
- data/spec/support/http_stub/server/driver.rb +56 -0
- data/spec/support/http_stub/server/memory_fixture.rb +17 -0
- data/spec/support/http_stub/server/request_fixture.rb +7 -6
- data/spec/support/http_stub/server/scenario_fixture.rb +13 -0
- data/spec/support/http_stub/server/session_fixture.rb +27 -0
- data/spec/support/http_stub/server_integration.rb +12 -17
- data/spec/support/http_stub/stub_fixture.rb +19 -6
- data/spec/support/include_in_json.rb +4 -4
- data/spec/support/rack/rack_application_test.rb +9 -0
- data/spec/support/rack/request_fixture.rb +13 -0
- data/spec/support/surpressed_output.rb +10 -0
- metadata +149 -36
- data/lib/http_stub/configurer/dsl/deprecated.rb +0 -60
- data/lib/http_stub/configurer/dsl/endpoint_template.rb +0 -38
- data/lib/http_stub/configurer/dsl/scenario_activator.rb +0 -15
- data/lib/http_stub/configurer/dsl/stub_activator_builder.rb +0 -24
- data/lib/http_stub/configurer/dsl/stub_builder_producer.rb +0 -21
- data/lib/http_stub/server/request.rb +0 -12
- data/lib/http_stub/server/scenario/activator.rb +0 -25
- data/lib/http_stub/server/views/_activate_scenario.haml +0 -23
- data/lib/http_stub/server/views/index.haml +0 -8
- data/spec/acceptance/activator_spec.rb +0 -81
- data/spec/lib/http_stub/configurer/dsl/deprecated_spec.rb +0 -240
- data/spec/lib/http_stub/configurer/dsl/endpoint_template_spec.rb +0 -255
- data/spec/lib/http_stub/configurer/dsl/scenario_activator_spec.rb +0 -62
- data/spec/lib/http_stub/configurer/dsl/stub_activator_builder_spec.rb +0 -120
- data/spec/lib/http_stub/configurer/dsl/stub_builder_producer_spec.rb +0 -85
- data/spec/lib/http_stub/server/request_spec.rb +0 -24
- data/spec/lib/http_stub/server/scenario/activator_spec.rb +0 -111
- data/spec/support/http_stub/server/scenario/scenario_fixture.rb +0 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 347738836829271815cece8a214373ba88eca832
|
4
|
+
data.tar.gz: de16a1c9ac5fc32864414c97b320a9564c681df2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7bb9b5a27d2528112e775a175bc4827365a81d268acafc283ae6b20b19ae4d9ee677e88e194565519e062dbcc39511a4bdac316be86e734587c205b8d8467829
|
7
|
+
data.tar.gz: 0554a3a709aa560bb30690d4b9fdc1235cc5e78409068ad97e9a0aa6255bd966bf793401c4f048bce4d76072e735ec78b6b7ba3bbe88a40ce0ab49825500640b
|
data/lib/http_stub.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'sinatra'
|
2
|
+
require_relative 'http_stub/extensions/sinatra/namespace'
|
2
3
|
require 'sinatra/partial'
|
3
4
|
require 'json'
|
4
5
|
require 'net/http'
|
@@ -21,11 +22,13 @@ require_relative 'http_stub/extensions/core/hash/formatted'
|
|
21
22
|
require_relative 'http_stub/extensions/core/hash/indifferent_and_insensitive_access'
|
22
23
|
require_relative 'http_stub/extensions/core/hash/with_indifferent_and_insensitive_access'
|
23
24
|
require_relative 'http_stub/extensions/core/hash'
|
25
|
+
require_relative 'http_stub/extensions/core/uri'
|
24
26
|
require_relative 'http_stub/extensions/rack/handler'
|
25
27
|
require_relative 'http_stub/server/request/parameters'
|
26
28
|
require_relative 'http_stub/server/request/headers'
|
29
|
+
require_relative 'http_stub/server/request/sinatra_request'
|
27
30
|
require_relative 'http_stub/server/request/request'
|
28
|
-
require_relative 'http_stub/server/request'
|
31
|
+
require_relative 'http_stub/server/request/factory'
|
29
32
|
require_relative 'http_stub/server/registry'
|
30
33
|
require_relative 'http_stub/server/stub/match/omitted_value_matcher'
|
31
34
|
require_relative 'http_stub/server/stub/match/regexp_value_matcher'
|
@@ -67,13 +70,31 @@ require_relative 'http_stub/server/stub'
|
|
67
70
|
require_relative 'http_stub/server/scenario/links'
|
68
71
|
require_relative 'http_stub/server/scenario/trigger'
|
69
72
|
require_relative 'http_stub/server/scenario/parser'
|
73
|
+
require_relative 'http_stub/server/scenario/not_found_error'
|
70
74
|
require_relative 'http_stub/server/scenario/scenario'
|
71
|
-
require_relative 'http_stub/server/scenario/activator'
|
72
75
|
require_relative 'http_stub/server/scenario/controller'
|
73
76
|
require_relative 'http_stub/server/scenario'
|
74
|
-
require_relative 'http_stub/server/
|
77
|
+
require_relative 'http_stub/server/session'
|
78
|
+
require_relative 'http_stub/server/session/configuration'
|
79
|
+
require_relative 'http_stub/server/session/identifier_strategy'
|
80
|
+
require_relative 'http_stub/server/session/empty'
|
81
|
+
require_relative 'http_stub/server/session/session'
|
82
|
+
require_relative 'http_stub/server/session/registry'
|
83
|
+
require_relative 'http_stub/server/session/controller'
|
84
|
+
require_relative 'http_stub/server/memory/memory'
|
85
|
+
require_relative 'http_stub/server/memory/controller'
|
86
|
+
require_relative 'http_stub/server/application/configuration'
|
87
|
+
require_relative 'http_stub/server/application/request_support'
|
88
|
+
require_relative 'http_stub/server/application/response_support'
|
75
89
|
require_relative 'http_stub/server/application/cross_origin_support'
|
90
|
+
require_relative 'http_stub/server/application/session_uri_support'
|
91
|
+
require_relative 'http_stub/server/application/text_formatting_support'
|
76
92
|
require_relative 'http_stub/server/application/response_pipeline'
|
93
|
+
require_relative 'http_stub/server/application/routes/memory'
|
94
|
+
require_relative 'http_stub/server/application/routes/resource'
|
95
|
+
require_relative 'http_stub/server/application/routes/session'
|
96
|
+
require_relative 'http_stub/server/application/routes/scenario'
|
97
|
+
require_relative 'http_stub/server/application/routes/stub'
|
77
98
|
require_relative 'http_stub/server/application/application'
|
78
99
|
require_relative 'http_stub/server/daemon'
|
79
100
|
require_relative 'http_stub/configurer/request/http/basic'
|
@@ -84,23 +105,25 @@ require_relative 'http_stub/configurer/request/regexpable'
|
|
84
105
|
require_relative 'http_stub/configurer/request/controllable_value'
|
85
106
|
require_relative 'http_stub/configurer/request/stub_response_file'
|
86
107
|
require_relative 'http_stub/configurer/request/stub_response'
|
108
|
+
require_relative 'http_stub/configurer/request/triggers'
|
87
109
|
require_relative 'http_stub/configurer/request/stub'
|
88
110
|
require_relative 'http_stub/configurer/request/scenario'
|
111
|
+
require_relative 'http_stub/configurer/server/configuration'
|
89
112
|
require_relative 'http_stub/configurer/server/command'
|
90
113
|
require_relative 'http_stub/configurer/server/command_processor'
|
91
114
|
require_relative 'http_stub/configurer/server/buffered_command_processor'
|
92
115
|
require_relative 'http_stub/configurer/server/request_processor'
|
116
|
+
require_relative 'http_stub/configurer/server/session_facade'
|
93
117
|
require_relative 'http_stub/configurer/server/facade'
|
94
118
|
require_relative 'http_stub/configurer/dsl/request_attribute_referencer'
|
95
119
|
require_relative 'http_stub/configurer/dsl/request_referencer'
|
96
120
|
require_relative 'http_stub/configurer/dsl/stub_builder'
|
97
|
-
require_relative 'http_stub/configurer/dsl/
|
98
|
-
require_relative 'http_stub/configurer/dsl/
|
121
|
+
require_relative 'http_stub/configurer/dsl/stub_builder_template'
|
122
|
+
require_relative 'http_stub/configurer/dsl/session_endpoint_template'
|
123
|
+
require_relative 'http_stub/configurer/dsl/session'
|
124
|
+
require_relative 'http_stub/configurer/dsl/session_factory'
|
99
125
|
require_relative 'http_stub/configurer/dsl/scenario_builder'
|
100
|
-
require_relative 'http_stub/configurer/dsl/
|
101
|
-
require_relative 'http_stub/configurer/dsl/stub_activator_builder'
|
126
|
+
require_relative 'http_stub/configurer/dsl/server_endpoint_template'
|
102
127
|
require_relative 'http_stub/configurer/dsl/server'
|
103
|
-
require_relative 'http_stub/configurer/dsl/deprecated'
|
104
|
-
require_relative 'http_stub/configurer/dsl/deprecated'
|
105
128
|
require_relative 'http_stub/configurer/part'
|
106
129
|
require_relative 'http_stub/configurer'
|
data/lib/http_stub/configurer.rb
CHANGED
@@ -5,19 +5,17 @@ module HttpStub
|
|
5
5
|
def self.included(mod)
|
6
6
|
mod.extend(HttpStub::Configurer::ClassMethods)
|
7
7
|
mod.send(:include, HttpStub::Configurer::InstanceMethods)
|
8
|
-
mod.send(:include, HttpStub::Configurer::DSL::Deprecated)
|
9
8
|
end
|
10
9
|
|
11
10
|
module ClassMethods
|
12
11
|
|
13
12
|
def stub_server
|
14
|
-
@stub_server ||= HttpStub::Configurer::DSL::Server.new
|
13
|
+
@stub_server ||= HttpStub::Configurer::DSL::Server.new
|
15
14
|
end
|
16
15
|
|
17
16
|
def initialize!
|
18
17
|
on_initialize if self.respond_to?(:on_initialize) && !@initialized
|
19
|
-
|
20
|
-
server_facade.remember_stubs
|
18
|
+
stub_server.initialize!
|
21
19
|
@initialized = true
|
22
20
|
end
|
23
21
|
|
@@ -29,12 +27,6 @@ module HttpStub
|
|
29
27
|
end
|
30
28
|
end
|
31
29
|
|
32
|
-
private
|
33
|
-
|
34
|
-
def server_facade
|
35
|
-
@server_facade ||= HttpStub::Configurer::Server::Facade.new(self)
|
36
|
-
end
|
37
|
-
|
38
30
|
end
|
39
31
|
|
40
32
|
module InstanceMethods
|
@@ -3,14 +3,14 @@ module HttpStub
|
|
3
3
|
module DSL
|
4
4
|
|
5
5
|
class ScenarioBuilder
|
6
|
-
include HttpStub::Configurer::DSL::StubBuilderProducer
|
7
|
-
include HttpStub::Configurer::DSL::ScenarioActivator
|
8
6
|
|
9
|
-
|
10
|
-
|
7
|
+
delegate :build_stub, to: :@default_stub_template
|
8
|
+
|
9
|
+
def initialize(name, default_stub_template)
|
11
10
|
@name = name
|
12
|
-
@
|
11
|
+
@default_stub_template = default_stub_template
|
13
12
|
@triggered_scenario_names = []
|
13
|
+
@stub_builders = []
|
14
14
|
end
|
15
15
|
|
16
16
|
def add_stub!(builder=nil, &block)
|
@@ -18,18 +18,20 @@ module HttpStub
|
|
18
18
|
@stub_builders << resolved_builder
|
19
19
|
end
|
20
20
|
|
21
|
+
def add_stubs!(builders)
|
22
|
+
builders.each { |builder| add_stub!(builder) }
|
23
|
+
end
|
24
|
+
|
25
|
+
def activate!(*names)
|
26
|
+
@triggered_scenario_names.concat(names.flatten)
|
27
|
+
end
|
28
|
+
|
21
29
|
def build
|
22
30
|
HttpStub::Configurer::Request::Scenario.new(
|
23
31
|
name: @name, stubs: @stub_builders.map(&:build), triggered_scenario_names: @triggered_scenario_names
|
24
32
|
)
|
25
33
|
end
|
26
34
|
|
27
|
-
private
|
28
|
-
|
29
|
-
def activate_all!(names)
|
30
|
-
@triggered_scenario_names.concat(names)
|
31
|
-
end
|
32
|
-
|
33
35
|
end
|
34
36
|
|
35
37
|
end
|
@@ -3,52 +3,46 @@ module HttpStub
|
|
3
3
|
module DSL
|
4
4
|
|
5
5
|
class Server
|
6
|
-
include HttpStub::Configurer::DSL::StubBuilderProducer
|
7
|
-
include HttpStub::Configurer::DSL::ScenarioActivator
|
8
6
|
|
9
|
-
|
7
|
+
delegate :host, :host=, :port, :port=, :base_uri, :external_base_uri, to: :@configuration
|
8
|
+
delegate :session_identifier, :session_identifier=, to: :@configuration
|
9
|
+
delegate :enable, :enabled?, to: :@configuration
|
10
10
|
|
11
|
-
|
12
|
-
@server_facade = server_facade
|
13
|
-
@default_stub_builder = HttpStub::Configurer::DSL::StubBuilder.new
|
14
|
-
@enabled_features = []
|
15
|
-
end
|
16
|
-
|
17
|
-
def base_uri
|
18
|
-
"http://#{host}:#{port}"
|
19
|
-
end
|
20
|
-
|
21
|
-
def external_base_uri
|
22
|
-
ENV["STUB_EXTERNAL_BASE_URI"] || base_uri
|
23
|
-
end
|
24
|
-
|
25
|
-
def enable(*features)
|
26
|
-
@enabled_features = features
|
27
|
-
end
|
11
|
+
delegate :activate!, :build_stub, :add_stub!, :add_stubs!, to: :@default_session
|
28
12
|
|
29
|
-
def
|
30
|
-
@
|
13
|
+
def initialize
|
14
|
+
@configuration = HttpStub::Configurer::Server::Configuration.new
|
15
|
+
@server_facade = HttpStub::Configurer::Server::Facade.new(@configuration)
|
16
|
+
@default_stub_template = HttpStub::Configurer::DSL::StubBuilderTemplate.new
|
17
|
+
@session_factory = HttpStub::Configurer::DSL::SessionFactory.new(@server_facade, @default_stub_template)
|
18
|
+
@default_session = @session_factory.memory
|
19
|
+
@enabled_features = []
|
31
20
|
end
|
32
21
|
|
33
22
|
def request_defaults=(args)
|
34
|
-
@
|
23
|
+
@default_stub_template.match_requests(args)
|
35
24
|
end
|
36
25
|
|
37
26
|
def response_defaults=(args)
|
38
|
-
@
|
27
|
+
@default_stub_template.respond_with(args)
|
28
|
+
end
|
29
|
+
|
30
|
+
def initialize!
|
31
|
+
@server_facade.flush_requests
|
32
|
+
switch_to_transactional_session
|
39
33
|
end
|
40
34
|
|
41
35
|
def has_started!
|
42
36
|
@server_facade.server_has_started
|
37
|
+
switch_to_transactional_session
|
43
38
|
end
|
44
39
|
|
45
|
-
def
|
46
|
-
|
47
|
-
@server_facade.stub_response(resolved_builder.build)
|
40
|
+
def reset!
|
41
|
+
@server_facade.reset
|
48
42
|
end
|
49
43
|
|
50
44
|
def add_scenario!(name, &_block)
|
51
|
-
builder = HttpStub::Configurer::DSL::ScenarioBuilder.new(
|
45
|
+
builder = HttpStub::Configurer::DSL::ScenarioBuilder.new(name, @default_stub_template)
|
52
46
|
yield builder
|
53
47
|
@server_facade.define_scenario(builder.build)
|
54
48
|
end
|
@@ -60,35 +54,30 @@ module HttpStub
|
|
60
54
|
end
|
61
55
|
|
62
56
|
def endpoint_template(&block)
|
63
|
-
HttpStub::Configurer::DSL::
|
57
|
+
HttpStub::Configurer::DSL::ServerEndpointTemplate.new(self, @default_session, &block)
|
64
58
|
end
|
65
59
|
|
66
|
-
def
|
67
|
-
|
68
|
-
yield builder
|
69
|
-
@server_facade.define_scenario(builder.build)
|
60
|
+
def session(id)
|
61
|
+
@session_factory.create(id)
|
70
62
|
end
|
71
63
|
|
72
|
-
def
|
73
|
-
@server_facade.
|
64
|
+
def clear_sessions!
|
65
|
+
@server_facade.clear_sessions
|
74
66
|
end
|
75
67
|
|
76
68
|
def recall_stubs!
|
77
|
-
@
|
69
|
+
@default_session.reset!
|
78
70
|
end
|
79
71
|
|
80
72
|
def clear_stubs!
|
81
|
-
@
|
82
|
-
end
|
83
|
-
|
84
|
-
def clear_scenarios!
|
85
|
-
@server_facade.clear_scenarios
|
73
|
+
@default_session.clear!
|
86
74
|
end
|
87
75
|
|
88
76
|
private
|
89
77
|
|
90
|
-
def
|
91
|
-
|
78
|
+
def switch_to_transactional_session
|
79
|
+
@session_factory.transactional.mark_as_default!
|
80
|
+
@default_session = @session_factory.transactional
|
92
81
|
end
|
93
82
|
|
94
83
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
module HttpStub
|
2
|
+
module Configurer
|
3
|
+
module DSL
|
4
|
+
|
5
|
+
class ServerEndpointTemplate
|
6
|
+
|
7
|
+
delegate :match_requests, :schema, :respond_with, :trigger, :invoke, to: :@session_endpoint_template
|
8
|
+
delegate :build_stub, :add_stub!, to: :@session_endpoint_template
|
9
|
+
|
10
|
+
def initialize(server, default_session, &block)
|
11
|
+
@server = server
|
12
|
+
@session_endpoint_template = default_session.endpoint_template(&block)
|
13
|
+
end
|
14
|
+
|
15
|
+
def add_scenario!(name, response_overrides={}, &block)
|
16
|
+
@server.add_scenario_with_one_stub!(name, self.build_stub(response_overrides, &block))
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module HttpStub
|
2
|
+
module Configurer
|
3
|
+
module DSL
|
4
|
+
|
5
|
+
class Session
|
6
|
+
|
7
|
+
MEMORY_SESSION_ID = "http_stub_memory".freeze
|
8
|
+
TRANSACTIONAL_SESSION_ID = "http_stub_transactional".freeze
|
9
|
+
|
10
|
+
delegate :build_stub, to: :@default_stub_template
|
11
|
+
|
12
|
+
def initialize(id, server_facade, default_stub_template)
|
13
|
+
@id = id
|
14
|
+
@session_facade = server_facade.create_session_facade(id)
|
15
|
+
@default_stub_template = default_stub_template
|
16
|
+
end
|
17
|
+
|
18
|
+
def mark_as_default!
|
19
|
+
@session_facade.mark_as_default
|
20
|
+
end
|
21
|
+
|
22
|
+
def endpoint_template(&block)
|
23
|
+
HttpStub::Configurer::DSL::SessionEndpointTemplate.new(self, @default_stub_template, &block)
|
24
|
+
end
|
25
|
+
|
26
|
+
def activate!(*names)
|
27
|
+
@session_facade.activate(names)
|
28
|
+
end
|
29
|
+
|
30
|
+
def add_stub!(builder=nil, &block)
|
31
|
+
resolved_builder = builder || self.build_stub(&block)
|
32
|
+
@session_facade.stub_response(resolved_builder.build)
|
33
|
+
end
|
34
|
+
|
35
|
+
def add_stubs!(builders)
|
36
|
+
builders.each { |builder| add_stub!(builder) }
|
37
|
+
end
|
38
|
+
|
39
|
+
def reset!
|
40
|
+
@session_facade.reset_stubs
|
41
|
+
end
|
42
|
+
|
43
|
+
def clear!
|
44
|
+
@session_facade.clear_stubs
|
45
|
+
end
|
46
|
+
|
47
|
+
def delete!
|
48
|
+
@session_facade.delete
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
module HttpStub
|
2
|
+
module Configurer
|
3
|
+
module DSL
|
4
|
+
|
5
|
+
class SessionEndpointTemplate
|
6
|
+
|
7
|
+
delegate :match_requests, :schema, :respond_with, :trigger, :invoke, :build_stub, to: :@stub_builder_template
|
8
|
+
|
9
|
+
def initialize(session, default_stub_template, &block)
|
10
|
+
@session = session
|
11
|
+
@stub_builder_template = HttpStub::Configurer::DSL::StubBuilderTemplate.new(default_stub_template, &block)
|
12
|
+
end
|
13
|
+
|
14
|
+
def add_stub!(response_overrides={}, &block)
|
15
|
+
@session.add_stub!(self.build_stub(response_overrides, &block))
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
module HttpStub
|
2
|
+
module Configurer
|
3
|
+
module DSL
|
4
|
+
|
5
|
+
class SessionFactory
|
6
|
+
|
7
|
+
MEMORY_SESSION_ID = "http_stub_memory".freeze
|
8
|
+
TRANSACTIONAL_SESSION_ID = "http_stub_transactional".freeze
|
9
|
+
|
10
|
+
private_constant :MEMORY_SESSION_ID, :TRANSACTIONAL_SESSION_ID
|
11
|
+
|
12
|
+
def initialize(server_facade, default_stub_template)
|
13
|
+
@server_facade = server_facade
|
14
|
+
@default_stub_template = default_stub_template
|
15
|
+
@sessions = {}
|
16
|
+
end
|
17
|
+
|
18
|
+
def create(id)
|
19
|
+
@sessions[id] ||= HttpStub::Configurer::DSL::Session.new(id, @server_facade, @default_stub_template)
|
20
|
+
end
|
21
|
+
|
22
|
+
def memory
|
23
|
+
self.create(MEMORY_SESSION_ID)
|
24
|
+
end
|
25
|
+
|
26
|
+
def transactional
|
27
|
+
self.create(TRANSACTIONAL_SESSION_ID)
|
28
|
+
end
|
29
|
+
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -6,11 +6,12 @@ module HttpStub
|
|
6
6
|
|
7
7
|
attr_reader :request, :response, :triggers
|
8
8
|
|
9
|
-
def initialize(
|
9
|
+
def initialize(parent_builder=nil, &block)
|
10
10
|
@request = {}
|
11
11
|
@response = {}
|
12
|
-
@triggers = []
|
13
|
-
self.merge!(
|
12
|
+
@triggers = { scenarios: [], stubs: [] }
|
13
|
+
self.merge!(parent_builder) if parent_builder
|
14
|
+
self.invoke(&block) if block_given?
|
14
15
|
end
|
15
16
|
|
16
17
|
def match_requests(args)
|
@@ -27,10 +28,12 @@ module HttpStub
|
|
27
28
|
self.tap { @response.deep_merge!(resolved_args) }
|
28
29
|
end
|
29
30
|
|
30
|
-
def trigger(
|
31
|
-
|
32
|
-
|
33
|
-
|
31
|
+
def trigger(args)
|
32
|
+
resolved_args = args.clone
|
33
|
+
resolved_args[:scenarios] ||= resolved_args[:scenario] ? [ resolved_args[:scenario] ] : []
|
34
|
+
resolved_args[:stubs] ||= resolved_args[:stub] ? [ resolved_args[:stub] ] : []
|
35
|
+
@triggers[:scenarios].concat(resolved_args[:scenarios])
|
36
|
+
@triggers[:stubs].concat(resolved_args[:stubs])
|
34
37
|
self
|
35
38
|
end
|
36
39
|
|
@@ -45,7 +48,14 @@ module HttpStub
|
|
45
48
|
end
|
46
49
|
|
47
50
|
def build
|
48
|
-
HttpStub::Configurer::Request::Stub.new(
|
51
|
+
HttpStub::Configurer::Request::Stub.new(
|
52
|
+
request: @request,
|
53
|
+
response: @response,
|
54
|
+
triggers: {
|
55
|
+
scenario_names: @triggers[:scenarios],
|
56
|
+
stubs: @triggers[:stubs].map(&:build)
|
57
|
+
}
|
58
|
+
)
|
49
59
|
end
|
50
60
|
|
51
61
|
end
|