http_stub 0.25.1 → 0.26.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/http_stub.rb +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
data/lib/http_stub/version.rb
CHANGED
@@ -1,15 +1,11 @@
|
|
1
1
|
describe "Configurer initialization acceptance" do
|
2
2
|
include_context "configurer integration"
|
3
3
|
|
4
|
-
let(:configurer) { HttpStub::Examples::ConfigurerWithComplexInitializer.new }
|
5
|
-
|
6
4
|
context "when a configurer is initialized" do
|
7
5
|
|
8
|
-
|
9
|
-
|
10
|
-
context "that contains a class stub" do
|
6
|
+
context "that contains a stub" do
|
11
7
|
|
12
|
-
let(:
|
8
|
+
let(:configurer_specification) { { class: HttpStub::Examples::ConfigurerWithTrivialStub } }
|
13
9
|
|
14
10
|
it "registers the stub" do
|
15
11
|
response = HTTParty.get("#{server_uri}/a_class_stub")
|
@@ -18,19 +14,26 @@ describe "Configurer initialization acceptance" do
|
|
18
14
|
expect(response.body).to eql("Class stub body")
|
19
15
|
end
|
20
16
|
|
21
|
-
context "and
|
17
|
+
context "and another stub is registered" do
|
22
18
|
|
23
19
|
before(:example) do
|
24
|
-
|
20
|
+
stub_server.add_stub! do |stub|
|
21
|
+
stub.match_requests(uri: "/another_stub", method: :get)
|
22
|
+
stub.respond_with(body: "Another stub body")
|
23
|
+
end
|
25
24
|
end
|
26
25
|
|
27
|
-
context "and the
|
26
|
+
context "and the servers stubs are recalled" do
|
28
27
|
|
29
|
-
before(:example)
|
30
|
-
|
28
|
+
before(:example) { stub_server.recall_stubs! }
|
29
|
+
|
30
|
+
it "removes the stub just registered" do
|
31
|
+
response = HTTParty.get("#{server_uri}/another_stub")
|
32
|
+
|
33
|
+
expect(response.code).to eql(404)
|
31
34
|
end
|
32
35
|
|
33
|
-
it "
|
36
|
+
it "retains the stub registered during initialization" do
|
34
37
|
response = HTTParty.get("#{server_uri}/a_class_stub")
|
35
38
|
|
36
39
|
expect(response.code).to eql(201)
|
@@ -41,40 +44,24 @@ describe "Configurer initialization acceptance" do
|
|
41
44
|
|
42
45
|
end
|
43
46
|
|
44
|
-
|
45
|
-
|
46
|
-
context "and the initializer contains conventional stubs" do
|
47
|
-
|
48
|
-
let(:configurer) { HttpStub::Examples::ConfigurerWithComplexInitializer.new }
|
49
|
-
|
50
|
-
it "registers the stub" do
|
51
|
-
response = HTTParty.get("#{server_uri}/stubbed_during_initialization_path")
|
52
|
-
|
53
|
-
expect(response.code).to eql(200)
|
54
|
-
expect(response.body).to eql("Stubbed during initialization body")
|
55
|
-
end
|
56
|
-
|
57
|
-
context "and another stub is registered" do
|
47
|
+
context "and the stub is overridden" do
|
58
48
|
|
59
49
|
before(:example) do
|
60
|
-
|
50
|
+
stub_server.add_stub! do |stub|
|
51
|
+
stub.match_requests(uri: "/a_class_stub", method: :get)
|
52
|
+
stub.respond_with(body: "Other class stub body")
|
53
|
+
end
|
61
54
|
end
|
62
55
|
|
63
|
-
context "and the servers
|
64
|
-
|
65
|
-
before(:example) { configurer.recall_stubs! }
|
56
|
+
context "and the servers stubs are recalled" do
|
66
57
|
|
67
|
-
|
68
|
-
response = HTTParty.get("#{server_uri}/another_stub")
|
69
|
-
|
70
|
-
expect(response.code).to eql(404)
|
71
|
-
end
|
58
|
+
before(:example) { stub_server.recall_stubs! }
|
72
59
|
|
73
|
-
it "
|
74
|
-
response = HTTParty.get("#{server_uri}/
|
60
|
+
it "re-establishes the class stub" do
|
61
|
+
response = HTTParty.get("#{server_uri}/a_class_stub")
|
75
62
|
|
76
|
-
expect(response.code).to eql(
|
77
|
-
expect(response.body).to eql("
|
63
|
+
expect(response.code).to eql(201)
|
64
|
+
expect(response.body).to eql("Class stub body")
|
78
65
|
end
|
79
66
|
|
80
67
|
end
|
@@ -83,9 +70,9 @@ describe "Configurer initialization acceptance" do
|
|
83
70
|
|
84
71
|
end
|
85
72
|
|
86
|
-
context "and the configurer contains an
|
73
|
+
context "and the configurer contains an initialize callback" do
|
87
74
|
|
88
|
-
let(:
|
75
|
+
let(:configurer_specification) { { class: HttpStub::Examples::ConfigurerWithInitializeCallback } }
|
89
76
|
|
90
77
|
it "executes the callback" do
|
91
78
|
response = HTTParty.get("#{server_uri}/stubbed_on_initialize_path")
|
@@ -100,20 +87,22 @@ describe "Configurer initialization acceptance" do
|
|
100
87
|
|
101
88
|
context "when a configurer is uninitialized" do
|
102
89
|
|
90
|
+
let(:configurer_specification) { { class: HttpStub::Examples::ConfigurerWithTrivialStub, initialize: false } }
|
91
|
+
|
103
92
|
context "and the configurer is informed that the server has started" do
|
104
93
|
|
105
|
-
before(:example) {
|
94
|
+
before(:example) { stub_server.has_started! }
|
106
95
|
|
107
96
|
it "does not initialize the configurer" do
|
108
|
-
|
109
|
-
|
110
|
-
expect(activation_lambda).to raise_error(/error occurred activating 'an_activator'/i)
|
97
|
+
expect { stub_server.activate!("an_activator") }.to raise_error(/error occurred activating 'an_activator'/i)
|
111
98
|
end
|
112
99
|
|
113
100
|
context "and an attempt is made to register a stub" do
|
114
101
|
|
115
102
|
before(:example) do
|
116
|
-
|
103
|
+
stub_server.add_stub! do
|
104
|
+
match_requests(uri: "/some_stub_path", method: :get).respond_with(body: "Some stub body")
|
105
|
+
end
|
117
106
|
end
|
118
107
|
|
119
108
|
it "registers the stub" do
|
@@ -132,18 +121,18 @@ describe "Configurer initialization acceptance" do
|
|
132
121
|
context "and an attempt is made to activate a stub" do
|
133
122
|
|
134
123
|
it "raises an exception indicating an error occurred during activation" do
|
135
|
-
|
136
|
-
|
137
|
-
expect(activation_lambda).to raise_error(/error occurred activating 'an_activator'/i)
|
124
|
+
expect { stub_server.activate!("an_activator") }.to raise_error(/error occurred activating 'an_activator'/i)
|
138
125
|
end
|
139
126
|
|
140
127
|
end
|
141
128
|
|
142
129
|
end
|
143
130
|
|
144
|
-
context "and the configurer contains an
|
131
|
+
context "and the configurer contains an initialize callback" do
|
145
132
|
|
146
|
-
let(:
|
133
|
+
let(:configurer_specification) do
|
134
|
+
{ class: HttpStub::Examples::ConfigurerWithInitializeCallback, initialize: false }
|
135
|
+
end
|
147
136
|
|
148
137
|
it "does not execute the callback" do
|
149
138
|
response = HTTParty.get("#{server_uri}/stubbed_on_initialize_path")
|
@@ -1,11 +1,9 @@
|
|
1
1
|
describe "Configurer Part acceptance" do
|
2
2
|
include_context "configurer integration"
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
let(:configurer) { HttpStub::Examples::ConfigurerWithParts.new }
|
4
|
+
let(:configurer_specification) { { class: HttpStub::Examples::ConfigurerWithParts } }
|
7
5
|
|
8
|
-
|
6
|
+
context "when a configurer contains a part" do
|
9
7
|
|
10
8
|
context "that contains a configure stub method" do
|
11
9
|
|
@@ -17,7 +15,7 @@ describe "Configurer Part acceptance" do
|
|
17
15
|
|
18
16
|
end
|
19
17
|
|
20
|
-
context "that contains a configure stubs
|
18
|
+
context "that contains a configure stubs method" do
|
21
19
|
|
22
20
|
let(:response) { issue_request("registered_in_configure_stubs_method") }
|
23
21
|
|
@@ -27,7 +25,7 @@ describe "Configurer Part acceptance" do
|
|
27
25
|
|
28
26
|
end
|
29
27
|
|
30
|
-
context "that contains a configure scenario
|
28
|
+
context "that contains a configure scenario method" do
|
31
29
|
|
32
30
|
let(:response) { issue_request("registered_in_configure_scenario_method") }
|
33
31
|
|
@@ -37,7 +35,7 @@ describe "Configurer Part acceptance" do
|
|
37
35
|
|
38
36
|
end
|
39
37
|
|
40
|
-
context "that contains a configure scenarios
|
38
|
+
context "that contains a configure scenarios method" do
|
41
39
|
|
42
40
|
let(:response) { issue_request("registered_in_configure_scenarios_method") }
|
43
41
|
|
@@ -7,18 +7,14 @@ describe "Cross origin support acceptance" do
|
|
7
7
|
context "when a stub server with cross origin support is initialized" do
|
8
8
|
include_context "configurer integration"
|
9
9
|
|
10
|
-
|
11
|
-
|
10
|
+
let(:configurer_specification) do
|
11
|
+
{ class: HttpStub::Examples::ConfigurerWithCrossOriginSupport, name: :cross_origin_stub, port: 8004 }
|
12
12
|
end
|
13
13
|
|
14
|
-
let(:configurer) { HttpStub::Examples::ConfigurerWithCrossOriginSupport.new }
|
15
|
-
|
16
|
-
before(:example) { configurer.class.initialize! }
|
17
|
-
|
18
14
|
context "and a browser page rendered by a different server requests a scenario be activated" do
|
19
15
|
|
20
16
|
before(:example) do
|
21
|
-
cross_origin_page.load_and_wait_until_available
|
17
|
+
cross_origin_page.load_and_wait_until_available(server_port)
|
22
18
|
cross_origin_page.activate_scenario("Get scenario")
|
23
19
|
end
|
24
20
|
|
@@ -54,7 +50,7 @@ describe "Cross origin support acceptance" do
|
|
54
50
|
|
55
51
|
context "and a scenario configuring OPTIONS request reponses is activated" do
|
56
52
|
|
57
|
-
before(:example) {
|
53
|
+
before(:example) { stub_server.activate!("Options scenario") }
|
58
54
|
|
59
55
|
context "and a matching pre-flight request is made" do
|
60
56
|
|
@@ -84,14 +80,12 @@ describe "Cross origin support acceptance" do
|
|
84
80
|
context "when a stub server without cross origin support is initialized" do
|
85
81
|
include_context "configurer integration"
|
86
82
|
|
87
|
-
let(:
|
88
|
-
|
89
|
-
before(:example) { configurer.class.initialize! }
|
83
|
+
let(:configurer_specification) { { class: HttpStub::Examples::ConfigurerWithTrivialScenarios } }
|
90
84
|
|
91
85
|
context "and a browser page rendered by a different server requests a scenario be activated" do
|
92
86
|
|
93
87
|
before(:example) do
|
94
|
-
cross_origin_page.load_and_wait_until_available
|
88
|
+
cross_origin_page.load_and_wait_until_available(server_port)
|
95
89
|
cross_origin_page.activate_scenario("Get scenario")
|
96
90
|
end
|
97
91
|
|
@@ -107,7 +101,7 @@ describe "Cross origin support acceptance" do
|
|
107
101
|
|
108
102
|
context "and a scenario is activated" do
|
109
103
|
|
110
|
-
before(:example) {
|
104
|
+
before(:example) { stub_server.activate!("Scenario 1") }
|
111
105
|
|
112
106
|
context "and a matching request is made" do
|
113
107
|
|
@@ -1,11 +1,9 @@
|
|
1
1
|
describe "Endpoint Template acceptance" do
|
2
|
-
include_context "configurer integration"
|
3
2
|
|
4
3
|
context "when a configurer contains an endpoint template" do
|
4
|
+
include_context "configurer integration"
|
5
5
|
|
6
|
-
let(:
|
7
|
-
|
8
|
-
before(:example) { configurer.class.initialize! }
|
6
|
+
let(:configurer_specification) { { class: HttpStub::Examples::ConfigurerWithEndpointTemplate } }
|
9
7
|
|
10
8
|
it "does not register a stub when the template is defined" do
|
11
9
|
response = issue_request("template_uri")
|
@@ -1,9 +1,7 @@
|
|
1
1
|
describe "Request references in response acceptance" do
|
2
2
|
include_context "configurer integration"
|
3
3
|
|
4
|
-
let(:
|
5
|
-
|
6
|
-
before(:example) { configurer.class.initialize! }
|
4
|
+
let(:configurer_specification) { { class: HttpStub::Examples::ConfigurerWithRequestReferences } }
|
7
5
|
|
8
6
|
context "when a request is made matching a stub that references request attributes" do
|
9
7
|
|
@@ -1,17 +1,15 @@
|
|
1
1
|
describe "Scenario acceptance" do
|
2
|
-
include_context "configurer integration"
|
3
2
|
|
4
3
|
context "when a configurer that contains scenarios is initialized" do
|
4
|
+
include_context "configurer integration"
|
5
5
|
|
6
|
-
let(:
|
7
|
-
|
8
|
-
before(:example) { configurer.class.initialize! }
|
6
|
+
let(:configurer_specification) { { class: HttpStub::Examples::ConfigurerWithTrivialScenarios } }
|
9
7
|
|
10
8
|
context "and a scenario is activated" do
|
11
9
|
|
12
10
|
context "containing stubs" do
|
13
11
|
|
14
|
-
before(:example) {
|
12
|
+
before(:example) { stub_server.activate!("Scenario 1") }
|
15
13
|
|
16
14
|
(1..3).each do |stub_number|
|
17
15
|
|
@@ -32,7 +30,7 @@ describe "Scenario acceptance" do
|
|
32
30
|
|
33
31
|
context "containing triggered scenarios" do
|
34
32
|
|
35
|
-
before(:example) {
|
33
|
+
before(:example) { stub_server.activate!("Activates another scenario") }
|
36
34
|
|
37
35
|
(1..3).each do |stub_number|
|
38
36
|
|
@@ -69,9 +67,9 @@ describe "Scenario acceptance" do
|
|
69
67
|
|
70
68
|
context "and the response contains a file" do
|
71
69
|
|
72
|
-
let(:
|
70
|
+
let(:configurer_specification) { { class: HttpStub::Examples::ConfigurerWithFileResponses } }
|
73
71
|
|
74
|
-
before(:example) {
|
72
|
+
before(:example) { stub_server.activate!("Scenario with file") }
|
75
73
|
|
76
74
|
context "and the stub request is made" do
|
77
75
|
|
@@ -79,7 +77,7 @@ describe "Scenario acceptance" do
|
|
79
77
|
|
80
78
|
it "replays the stubbed response" do
|
81
79
|
expect(response.code).to eql(200)
|
82
|
-
|
80
|
+
expect(response).to contain_file(HttpStub::Examples::ConfigurerWithFileResponses::FILE_PATH)
|
83
81
|
end
|
84
82
|
|
85
83
|
end
|
@@ -1,11 +1,9 @@
|
|
1
1
|
describe "Server defaults acceptance" do
|
2
|
-
include_context "configurer integration"
|
3
2
|
|
4
3
|
context "when a configurer defines server defaults" do
|
4
|
+
include_context "configurer integration"
|
5
5
|
|
6
|
-
let(:
|
7
|
-
|
8
|
-
before(:example) { configurer.class.initialize! }
|
6
|
+
let(:configurer_specification) { { class: HttpStub::Examples::ConfigurerWithServerDefaults } }
|
9
7
|
|
10
8
|
it "matches requests that match the request default rules" do
|
11
9
|
response = issue_matching_request("has_defaults")
|
@@ -0,0 +1,20 @@
|
|
1
|
+
describe "Server memory acceptance" do
|
2
|
+
|
3
|
+
context "when a configurer with a stub is initialized" do
|
4
|
+
include_context "configurer integration"
|
5
|
+
|
6
|
+
let(:configurer_specification) { { class: HttpStub::Examples::ConfigurerWithTrivialStub } }
|
7
|
+
|
8
|
+
describe "GET /http_stub/memory" do
|
9
|
+
|
10
|
+
let(:response) { HTTParty.get("#{server_uri}/http_stub/memory") }
|
11
|
+
|
12
|
+
it "lists the stubs registered during initialization" do
|
13
|
+
expect(response.body).to include("Class stub body")
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
19
|
+
|
20
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
describe "Session acceptance" do
|
2
|
+
|
3
|
+
context "when a configurer that has a session support enabled is initialized" do
|
4
|
+
include_context "configurer integration"
|
5
|
+
|
6
|
+
let(:configurer_specification) do
|
7
|
+
{ class: HttpStub::Examples::ConfigurerWithSessions, name: :session_based_stub, port: 8003 }
|
8
|
+
end
|
9
|
+
|
10
|
+
context "when a stub is added to a session" do
|
11
|
+
|
12
|
+
let(:stub_session_id) { "some_session" }
|
13
|
+
let(:stub_session) { stub_server.session(stub_session_id) }
|
14
|
+
|
15
|
+
let(:match_response) { HTTParty.get("#{server_uri}/matching_path", request_session_id_header) }
|
16
|
+
|
17
|
+
before(:example) { stub_session.activate!("Some Scenario") }
|
18
|
+
|
19
|
+
context "and a matching request is made "do
|
20
|
+
|
21
|
+
before(:example) { match_response }
|
22
|
+
|
23
|
+
context "that is issued from the same session" do
|
24
|
+
|
25
|
+
let(:request_session_id) { stub_session_id }
|
26
|
+
|
27
|
+
let(:match_list_response) { HTTParty.get("#{server_uri}/http_stub/stubs/matches", request_session_id_header) }
|
28
|
+
|
29
|
+
it "matches" do
|
30
|
+
expect(match_response.code).to eql(200)
|
31
|
+
end
|
32
|
+
|
33
|
+
it "registers a match" do
|
34
|
+
expect(match_list_response.body).to include("matching_path")
|
35
|
+
end
|
36
|
+
|
37
|
+
end
|
38
|
+
|
39
|
+
context "that is issued from another session" do
|
40
|
+
|
41
|
+
let(:request_session_id) { "another_session" }
|
42
|
+
|
43
|
+
let(:miss_list_response) { HTTParty.get("#{server_uri}/http_stub/stubs/misses", request_session_id_header) }
|
44
|
+
|
45
|
+
it "does not match" do
|
46
|
+
expect(match_response.code).to eql(404)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "registers a miss" do
|
50
|
+
expect(miss_list_response.body).to include("matching_path")
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
context "and the session is reset" do
|
58
|
+
|
59
|
+
let(:request_session_id) { stub_session_id }
|
60
|
+
|
61
|
+
before(:example) { stub_session.reset! }
|
62
|
+
|
63
|
+
context "and a matching request is issued from the same session" do
|
64
|
+
|
65
|
+
it "does not match" do
|
66
|
+
expect(match_response.code).to eql(404)
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
def request_session_id_header
|
74
|
+
{ headers: { "http_stub_session_id" => request_session_id } }
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
context "when many sessions have been created" do
|
80
|
+
|
81
|
+
let(:session_ids) { (1..3).map { |i| "session#{i}"} }
|
82
|
+
let(:sessions) { session_ids.map { |session_id| stub_server.session(session_id) } }
|
83
|
+
|
84
|
+
before(:example) { sessions.each { |session| session.activate!("Some Scenario") } }
|
85
|
+
|
86
|
+
describe "the administration landing page" do
|
87
|
+
|
88
|
+
let(:landing_page_response) { HTTParty.get("#{server_uri}/http_stub") }
|
89
|
+
|
90
|
+
it "lists the sessions" do
|
91
|
+
session_ids.each { |session_id| expect(landing_page_response.body).to include(session_id) }
|
92
|
+
end
|
93
|
+
|
94
|
+
it "does not link to stubs" do
|
95
|
+
expect(landing_page_response.body).to_not include("/stubs")
|
96
|
+
end
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
end
|
101
|
+
|
102
|
+
end
|
103
|
+
|
104
|
+
context "when a configurer that has a session support disabled is initialized" do
|
105
|
+
include_context "configurer integration"
|
106
|
+
|
107
|
+
let(:configurer_specification) { { class: HttpStub::EmptyConfigurer } }
|
108
|
+
|
109
|
+
describe "the administration landing page" do
|
110
|
+
|
111
|
+
let(:landing_page_response) { HTTParty.get("#{server_uri}/http_stub") }
|
112
|
+
|
113
|
+
it "links to stubs" do
|
114
|
+
expect(landing_page_response.body).to include("/stubs")
|
115
|
+
end
|
116
|
+
|
117
|
+
it "does not list sessions" do
|
118
|
+
expect(landing_page_response.body).to_not include("/sessions")
|
119
|
+
end
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
|
125
|
+
end
|