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.
Files changed (187) hide show
  1. checksums.yaml +4 -4
  2. data/lib/http_stub.rb +32 -9
  3. data/lib/http_stub/configurer.rb +2 -10
  4. data/lib/http_stub/configurer/dsl/scenario_builder.rb +13 -11
  5. data/lib/http_stub/configurer/dsl/server.rb +32 -43
  6. data/lib/http_stub/configurer/dsl/server_endpoint_template.rb +23 -0
  7. data/lib/http_stub/configurer/dsl/session.rb +55 -0
  8. data/lib/http_stub/configurer/dsl/session_endpoint_template.rb +22 -0
  9. data/lib/http_stub/configurer/dsl/session_factory.rb +34 -0
  10. data/lib/http_stub/configurer/dsl/stub_builder.rb +18 -8
  11. data/lib/http_stub/configurer/dsl/stub_builder_template.rb +26 -0
  12. data/lib/http_stub/configurer/request/http/basic.rb +9 -3
  13. data/lib/http_stub/configurer/request/http/factory.rb +7 -16
  14. data/lib/http_stub/configurer/request/http/multipart.rb +5 -7
  15. data/lib/http_stub/configurer/request/stub.rb +3 -3
  16. data/lib/http_stub/configurer/request/triggers.rb +25 -0
  17. data/lib/http_stub/configurer/server/command_processor.rb +8 -10
  18. data/lib/http_stub/configurer/server/configuration.rb +33 -0
  19. data/lib/http_stub/configurer/server/facade.rb +21 -43
  20. data/lib/http_stub/configurer/server/request_processor.rb +2 -2
  21. data/lib/http_stub/configurer/server/session_facade.rb +64 -0
  22. data/lib/http_stub/extensions/core/uri.rb +28 -0
  23. data/lib/http_stub/extensions/rack/handler.rb +1 -0
  24. data/lib/http_stub/extensions/sinatra/namespace.rb +9 -0
  25. data/lib/http_stub/rake/server_tasks.rb +1 -4
  26. data/lib/http_stub/server/application/application.rb +17 -98
  27. data/lib/http_stub/server/application/configuration.rb +38 -0
  28. data/lib/http_stub/server/application/cross_origin_support.rb +7 -5
  29. data/lib/http_stub/server/application/request_support.rb +38 -0
  30. data/lib/http_stub/server/application/response_support.rb +19 -0
  31. data/lib/http_stub/server/application/routes/memory.rb +37 -0
  32. data/lib/http_stub/server/application/routes/resource.rb +23 -0
  33. data/lib/http_stub/server/application/routes/scenario.rb +52 -0
  34. data/lib/http_stub/server/application/routes/session.rb +65 -0
  35. data/lib/http_stub/server/application/routes/stub.rb +75 -0
  36. data/lib/http_stub/server/application/session_uri_support.rb +15 -0
  37. data/lib/http_stub/server/memory/controller.rb +25 -0
  38. data/lib/http_stub/server/memory/memory.rb +32 -0
  39. data/lib/http_stub/server/registry.rb +25 -8
  40. data/lib/http_stub/server/request/factory.rb +23 -0
  41. data/lib/http_stub/server/request/parameters.rb +2 -2
  42. data/lib/http_stub/server/request/request.rb +6 -11
  43. data/lib/http_stub/server/request/sinatra_request.rb +26 -0
  44. data/lib/http_stub/server/scenario/controller.rb +16 -11
  45. data/lib/http_stub/server/scenario/not_found_error.rb +15 -0
  46. data/lib/http_stub/server/session.rb +14 -0
  47. data/lib/http_stub/server/session/configuration.rb +32 -0
  48. data/lib/http_stub/server/session/controller.rb +40 -0
  49. data/lib/http_stub/server/session/empty.rb +15 -0
  50. data/lib/http_stub/server/session/identifier_strategy.rb +24 -0
  51. data/lib/http_stub/server/session/registry.rb +38 -0
  52. data/lib/http_stub/server/session/session.rb +80 -0
  53. data/lib/http_stub/server/stub/controller.rb +18 -12
  54. data/lib/http_stub/server/stub/empty.rb +1 -1
  55. data/lib/http_stub/server/stub/match/controller.rb +9 -5
  56. data/lib/http_stub/server/stub/payload/response_body_modifier.rb +3 -1
  57. data/lib/http_stub/server/stub/registry.rb +6 -13
  58. data/lib/http_stub/server/stub/triggers.rb +11 -9
  59. data/lib/http_stub/server/views/_home.haml +2 -0
  60. data/lib/http_stub/server/views/_post_link_function.haml +26 -0
  61. data/lib/http_stub/server/views/_session.haml +16 -0
  62. data/lib/http_stub/server/views/_stub.haml +8 -2
  63. data/lib/http_stub/server/views/_stubs.haml +4 -0
  64. data/lib/http_stub/server/views/application.sass +4 -1
  65. data/lib/http_stub/server/views/layout.haml +1 -0
  66. data/lib/http_stub/server/views/scenario.haml +4 -3
  67. data/lib/http_stub/server/views/scenarios.haml +7 -6
  68. data/lib/http_stub/server/views/session.haml +3 -0
  69. data/lib/http_stub/server/views/sessions.haml +6 -0
  70. data/lib/http_stub/server/views/stubs.haml +1 -4
  71. data/lib/http_stub/server/views/transactional_session.haml +2 -0
  72. data/lib/http_stub/version.rb +1 -1
  73. data/spec/acceptance/configurer_initialization_spec.rb +40 -51
  74. data/spec/acceptance/configurer_part_spec.rb +5 -7
  75. data/spec/acceptance/cross_origin_support_spec.rb +7 -13
  76. data/spec/acceptance/endpoint_template_spec.rb +2 -4
  77. data/spec/acceptance/request_reference_spec.rb +1 -3
  78. data/spec/acceptance/scenario_spec.rb +7 -9
  79. data/spec/acceptance/server_defaults_spec.rb +2 -4
  80. data/spec/acceptance/server_memory_spec.rb +20 -0
  81. data/spec/acceptance/session_spec.rb +125 -0
  82. data/spec/acceptance/stub_body_request_matching_spec.rb +2 -4
  83. data/spec/acceptance/stub_control_values_spec.rb +19 -18
  84. data/spec/acceptance/stub_match_last_spec.rb +0 -4
  85. data/spec/acceptance/stub_match_list_spec.rb +0 -4
  86. data/spec/acceptance/stub_miss_list_spec.rb +0 -4
  87. data/spec/acceptance/stub_spec.rb +11 -11
  88. data/spec/acceptance/stub_trigger_spec.rb +60 -13
  89. data/spec/lib/http_stub/configurer/dsl/scenario_builder_spec.rb +83 -30
  90. data/spec/lib/http_stub/configurer/dsl/server_endpoint_template_spec.rb +167 -0
  91. data/spec/lib/http_stub/configurer/dsl/server_spec.rb +306 -176
  92. data/spec/lib/http_stub/configurer/dsl/session_endpoint_template_spec.rb +150 -0
  93. data/spec/lib/http_stub/configurer/dsl/session_factory_spec.rb +97 -0
  94. data/spec/lib/http_stub/configurer/dsl/session_spec.rb +222 -0
  95. data/spec/lib/http_stub/configurer/dsl/stub_builder_spec.rb +209 -48
  96. data/spec/lib/http_stub/configurer/dsl/stub_builder_template_spec.rb +203 -0
  97. data/spec/lib/http_stub/configurer/request/http/basic_spec.rb +80 -4
  98. data/spec/lib/http_stub/configurer/request/http/factory_spec.rb +115 -56
  99. data/spec/lib/http_stub/configurer/request/http/multipart_spec.rb +39 -6
  100. data/spec/lib/http_stub/configurer/request/stub_spec.rb +50 -108
  101. data/spec/lib/http_stub/configurer/request/triggers_spec.rb +101 -0
  102. data/spec/lib/http_stub/configurer/server/command_processor_integration_spec.rb +11 -10
  103. data/spec/lib/http_stub/configurer/server/configuration_spec.rb +139 -0
  104. data/spec/lib/http_stub/configurer/server/facade_spec.rb +65 -142
  105. data/spec/lib/http_stub/configurer/server/request_processor_spec.rb +7 -6
  106. data/spec/lib/http_stub/configurer/server/session_facade_spec.rb +336 -0
  107. data/spec/lib/http_stub/configurer_spec.rb +105 -0
  108. data/spec/lib/http_stub/extensions/core/uri_spec.rb +75 -0
  109. data/spec/lib/http_stub/extensions/rack/handler_spec.rb +1 -1
  110. data/spec/lib/http_stub/extensions/sinatra/namespace_spec.rb +36 -0
  111. data/spec/lib/http_stub/rake/server_tasks_smoke_spec.rb +4 -3
  112. data/spec/lib/http_stub/rake/server_tasks_spec.rb +47 -10
  113. data/spec/lib/http_stub/server/application/application_spec.rb +44 -301
  114. data/spec/lib/http_stub/server/application/configuration_spec.rb +59 -0
  115. data/spec/lib/http_stub/server/application/cross_origin_support_spec.rb +23 -20
  116. data/spec/lib/http_stub/server/application/request_support_integration_spec.rb +93 -0
  117. data/spec/lib/http_stub/server/application/request_support_spec.rb +61 -0
  118. data/spec/lib/http_stub/server/application/response_support_spec.rb +30 -0
  119. data/spec/lib/http_stub/server/application/routes/memory_spec.rb +41 -0
  120. data/spec/lib/http_stub/server/application/routes/resource_spec.rb +16 -0
  121. data/spec/lib/http_stub/server/application/routes/scenario_spec.rb +117 -0
  122. data/spec/lib/http_stub/server/application/routes/session_integration_spec.rb +46 -0
  123. data/spec/lib/http_stub/server/application/routes/session_spec.rb +186 -0
  124. data/spec/lib/http_stub/server/application/{application_integration_spec.rb → routes/stub_integration_spec.rb} +16 -38
  125. data/spec/lib/http_stub/server/application/routes/stub_spec.rb +202 -0
  126. data/spec/lib/http_stub/server/application/session_uri_support_spec.rb +48 -0
  127. data/spec/lib/http_stub/server/application/text_formatting_support_spec.rb +3 -3
  128. data/spec/lib/http_stub/server/memory/controller_spec.rb +47 -0
  129. data/spec/lib/http_stub/server/memory/memory_spec.rb +122 -0
  130. data/spec/lib/http_stub/server/registry_spec.rb +153 -34
  131. data/spec/lib/http_stub/server/request/factory_spec.rb +74 -0
  132. data/spec/lib/http_stub/server/request/parameters_spec.rb +5 -8
  133. data/spec/lib/http_stub/server/request/request_spec.rb +52 -52
  134. data/spec/lib/http_stub/server/request/sinatra_request_spec.rb +132 -0
  135. data/spec/lib/http_stub/server/scenario/controller_spec.rb +121 -35
  136. data/spec/lib/http_stub/server/scenario/not_found_error_spec.rb +25 -0
  137. data/spec/lib/http_stub/server/session/configuration_spec.rb +94 -0
  138. data/spec/lib/http_stub/server/session/controller_spec.rb +106 -0
  139. data/spec/lib/http_stub/server/session/empty_spec.rb +13 -0
  140. data/spec/lib/http_stub/server/session/identifier_strategy_spec.rb +126 -0
  141. data/spec/lib/http_stub/server/session/registry_spec.rb +214 -0
  142. data/spec/lib/http_stub/server/session/session_spec.rb +444 -0
  143. data/spec/lib/http_stub/server/stub/controller_spec.rb +89 -37
  144. data/spec/lib/http_stub/server/stub/empty_spec.rb +2 -2
  145. data/spec/lib/http_stub/server/stub/match/controller_spec.rb +59 -16
  146. data/spec/lib/http_stub/server/stub/payload/response_body_modifier_spec.rb +7 -8
  147. data/spec/lib/http_stub/server/stub/registry_integration_spec.rb +42 -15
  148. data/spec/lib/http_stub/server/stub/registry_spec.rb +38 -59
  149. data/spec/lib/http_stub/server/stub/triggers_spec.rb +93 -34
  150. data/spec/spec_helper.rb +13 -1
  151. data/spec/support/contain_file.rb +23 -0
  152. data/spec/support/cross_origin_server/application.rb +1 -1
  153. data/spec/support/cross_origin_server/index_page.rb +2 -2
  154. data/spec/support/cross_origin_server/integration.rb +3 -2
  155. data/spec/support/cross_origin_server/public/index.html +2 -1
  156. data/spec/support/http_stub/configurer_integration.rb +12 -14
  157. data/spec/support/http_stub/server/application/http_stub_rack_application_test.rb +47 -0
  158. data/spec/support/http_stub/server/driver.rb +56 -0
  159. data/spec/support/http_stub/server/memory_fixture.rb +17 -0
  160. data/spec/support/http_stub/server/request_fixture.rb +7 -6
  161. data/spec/support/http_stub/server/scenario_fixture.rb +13 -0
  162. data/spec/support/http_stub/server/session_fixture.rb +27 -0
  163. data/spec/support/http_stub/server_integration.rb +12 -17
  164. data/spec/support/http_stub/stub_fixture.rb +19 -6
  165. data/spec/support/include_in_json.rb +4 -4
  166. data/spec/support/rack/rack_application_test.rb +9 -0
  167. data/spec/support/rack/request_fixture.rb +13 -0
  168. data/spec/support/surpressed_output.rb +10 -0
  169. metadata +149 -36
  170. data/lib/http_stub/configurer/dsl/deprecated.rb +0 -60
  171. data/lib/http_stub/configurer/dsl/endpoint_template.rb +0 -38
  172. data/lib/http_stub/configurer/dsl/scenario_activator.rb +0 -15
  173. data/lib/http_stub/configurer/dsl/stub_activator_builder.rb +0 -24
  174. data/lib/http_stub/configurer/dsl/stub_builder_producer.rb +0 -21
  175. data/lib/http_stub/server/request.rb +0 -12
  176. data/lib/http_stub/server/scenario/activator.rb +0 -25
  177. data/lib/http_stub/server/views/_activate_scenario.haml +0 -23
  178. data/lib/http_stub/server/views/index.haml +0 -8
  179. data/spec/acceptance/activator_spec.rb +0 -81
  180. data/spec/lib/http_stub/configurer/dsl/deprecated_spec.rb +0 -240
  181. data/spec/lib/http_stub/configurer/dsl/endpoint_template_spec.rb +0 -255
  182. data/spec/lib/http_stub/configurer/dsl/scenario_activator_spec.rb +0 -62
  183. data/spec/lib/http_stub/configurer/dsl/stub_activator_builder_spec.rb +0 -120
  184. data/spec/lib/http_stub/configurer/dsl/stub_builder_producer_spec.rb +0 -85
  185. data/spec/lib/http_stub/server/request_spec.rb +0 -24
  186. data/spec/lib/http_stub/server/scenario/activator_spec.rb +0 -111
  187. data/spec/support/http_stub/server/scenario/scenario_fixture.rb +0 -15
@@ -1,60 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module DSL
4
-
5
- module Deprecated
6
-
7
- def self.included(mod)
8
- mod.extend(HttpStub::Configurer::DSL::Deprecated::Methods)
9
- mod.send(:include, HttpStub::Configurer::DSL::Deprecated::Methods)
10
- end
11
-
12
- module Methods
13
-
14
- def server_has_started!
15
- stub_server.has_started!
16
- end
17
-
18
- def stub!(uri, options)
19
- stub_server.add_stub! { |stub| add_stub_options_to_builder(stub, uri, options) }
20
- end
21
-
22
- alias_method :stub_response!, :stub!
23
-
24
- def stub_activator(activation_uri, stub_uri, options)
25
- stub_server.add_activator! do |activator|
26
- activator.on(activation_uri)
27
- add_stub_options_to_builder(activator, stub_uri, options)
28
- end
29
- end
30
-
31
- def activate!(uri)
32
- stub_server.activate!(uri)
33
- end
34
-
35
- def recall_stubs!
36
- stub_server.recall_stubs!
37
- end
38
-
39
- def clear_stubs!
40
- stub_server.clear_stubs!
41
- end
42
-
43
- def clear_activators!
44
- stub_server.clear_scenarios!
45
- end
46
-
47
- private
48
-
49
- def add_stub_options_to_builder(stub, uri, options)
50
- stub.match_requests({ uri: uri }.merge(options.slice(:method, :headers, :parameters)))
51
- stub.respond_with(options[:response])
52
- end
53
-
54
- end
55
-
56
- end
57
-
58
- end
59
- end
60
- end
@@ -1,38 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module DSL
4
-
5
- class EndpointTemplate
6
-
7
- delegate :match_requests, :schema, :respond_with, :trigger, :invoke, to: :@template_stub_builder
8
-
9
- def initialize(server)
10
- @server = server
11
- @template_stub_builder = HttpStub::Configurer::DSL::StubBuilder.new
12
- end
13
-
14
- def build_stub(response_overrides={}, &block)
15
- @server.build_stub { |stub| compose_stub(stub, response_overrides, &block) }
16
- end
17
-
18
- def add_stub!(response_overrides={}, &block)
19
- @server.add_stub! { |stub| compose_stub(stub, response_overrides, &block) }
20
- end
21
-
22
- def add_scenario!(name, response_overrides={}, &block)
23
- @server.add_scenario_with_one_stub!(name) { |stub| compose_stub(stub, response_overrides, &block) }
24
- end
25
-
26
- private
27
-
28
- def compose_stub(stub_builder, response_overrides, &block)
29
- stub_builder.merge!(@template_stub_builder)
30
- stub_builder.respond_with(response_overrides)
31
- stub_builder.invoke(&block) if block_given?
32
- end
33
-
34
- end
35
-
36
- end
37
- end
38
- end
@@ -1,15 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module DSL
4
-
5
- module ScenarioActivator
6
-
7
- def activate!(*names)
8
- activate_all!(names.flatten)
9
- end
10
-
11
- end
12
-
13
- end
14
- end
15
- end
@@ -1,24 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module DSL
4
-
5
- class StubActivatorBuilder
6
-
7
- delegate :build, to: :@scenario_builder
8
- delegate :match_requests, :respond_with, :trigger, to: :@stub_builder
9
-
10
- def initialize(default_stub_builder)
11
- @default_stub_builder = default_stub_builder
12
- end
13
-
14
- def on(activation_uri)
15
- @scenario_builder = HttpStub::Configurer::DSL::ScenarioBuilder.new(@default_stub_builder, activation_uri)
16
- @stub_builder = HttpStub::Configurer::DSL::StubBuilder.new(@default_stub_builder)
17
- @scenario_builder.add_stub!(@stub_builder)
18
- end
19
-
20
- end
21
-
22
- end
23
- end
24
- end
@@ -1,21 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module DSL
4
-
5
- module StubBuilderProducer
6
-
7
- def build_stub(&block)
8
- builder = HttpStub::Configurer::DSL::StubBuilder.new(@default_stub_builder)
9
- builder.invoke(&block) if block_given?
10
- builder
11
- end
12
-
13
- def add_stubs!(builders)
14
- builders.each { |builder| add_stub!(builder) }
15
- end
16
-
17
- end
18
-
19
- end
20
- end
21
- end
@@ -1,12 +0,0 @@
1
- module HttpStub
2
- module Server
3
-
4
- module Request
5
-
6
- def self.create(rack_request)
7
- HttpStub::Server::Request::Request.new(rack_request)
8
- end
9
-
10
- end
11
- end
12
- end
@@ -1,25 +0,0 @@
1
- module HttpStub
2
- module Server
3
- module Scenario
4
-
5
- class Activator
6
-
7
- def initialize(scenario_registry, stub_registry)
8
- @scenario_registry = scenario_registry
9
- @stub_registry = stub_registry
10
- end
11
-
12
- def activate(scenario, logger)
13
- @stub_registry.concat(scenario.stubs, logger)
14
- scenario.triggered_scenarios.each do |triggered_scenario|
15
- scenario_to_activate = @scenario_registry.find(triggered_scenario.name, logger)
16
- raise "Scenario not found with name '#{triggered_scenario.name}'" unless scenario_to_activate
17
- activate(scenario_to_activate, logger)
18
- end
19
- end
20
-
21
- end
22
-
23
- end
24
- end
25
- end
@@ -1,23 +0,0 @@
1
- :javascript
2
- $(window).load(function() {
3
- $("a.activate_scenario").on("click", function(event) {
4
- event.preventDefault();
5
- var button = $(event.target)
6
- button.prop("disabled", true);
7
- $.post(
8
- "scenarios/activate", { name: button.data("name") }, null, "html"
9
- ).done(
10
- function() {
11
- button.html("Activated").css("color", "green");
12
- setTimeout(function() { button.html("Activate").css("color", "inherit"); }, 3000);
13
- }
14
- ).fail(
15
- function() {
16
- button.html("Failed").css("color", "red");
17
- setTimeout(function() { button.html("Activate").css("color", "inherit"); }, 3000);
18
- }
19
- ).always(
20
- function() { button.prop("disabled", false); }
21
- );
22
- });
23
- });
@@ -1,8 +0,0 @@
1
- %h1 http_stub diagnostics
2
- %a{ href: "/http_stub/scenarios", id: :scenarios, class: :link } List Scenarios
3
- %br
4
- %a{ href: "/http_stub/stubs", id: :stubs, class: :link } List Stubs
5
- %br
6
- %a{ href: "/http_stub/stubs/matches", id: :stub_matches, class: :link } List Stub Matches
7
- %br
8
- %a{ href: "/http_stub/stubs/misses", id: :stub_misses, class: :link } List Stub Misses
@@ -1,81 +0,0 @@
1
- describe "Stub activator acceptance" do
2
- include_context "configurer integration"
3
-
4
- context "when a configurer that contains a stub activator is initialised" do
5
-
6
- let(:configurer) { HttpStub::Examples::ConfigurerWithDeprecatedActivator.new }
7
-
8
- before(:example) { configurer.class.initialize! }
9
-
10
- context "and the stub is activated" do
11
-
12
- context "and the response contains text" do
13
-
14
- before(:example) { configurer.activate!("an_activator") }
15
-
16
- context "and the stub request is made" do
17
-
18
- let(:response) { HTTParty.get("#{server_uri}/stub_path") }
19
-
20
- it "replays the stubbed response" do
21
- expect(response.code).to eql(200)
22
- expect(response.body).to eql("Stub activator body")
23
- end
24
-
25
- end
26
-
27
- end
28
-
29
- end
30
-
31
- context "and a stub is not activated" do
32
-
33
- context "and the stub request is made" do
34
-
35
- let(:response) { HTTParty.get("#{server_uri}/stub_path") }
36
-
37
- it "responds with a 404 status code" do
38
- expect(response.code).to eql(404)
39
- end
40
-
41
- end
42
-
43
- end
44
-
45
- context "and initialization activates activators" do
46
-
47
- let(:configurer) { HttpStub::Examples::ConfigurerWithComplexInitializer.new }
48
-
49
- it "registers the activated activator" do
50
- response = HTTParty.get("#{server_uri}/activated_during_initialization_stub_path")
51
-
52
- expect(response.code).to eql(200)
53
- expect(response.body).to eql("Activated during initialization body")
54
- end
55
-
56
- context "and another stub is registered" do
57
-
58
- before(:example) do
59
- configurer.stub_response!("/another_stub", method: :get, response: { body: "Another stub body" })
60
- end
61
-
62
- context "and the servers remembered stubs are recalled" do
63
-
64
- before(:example) { configurer.recall_stubs! }
65
-
66
- it "retains the activated activator during initialization" do
67
- response = HTTParty.get("#{server_uri}/activated_during_initialization_stub_path")
68
-
69
- expect(response.code).to eql(200)
70
- expect(response.body).to eql("Activated during initialization body")
71
- end
72
-
73
- end
74
-
75
- end
76
-
77
- end
78
-
79
- end
80
-
81
- end
@@ -1,240 +0,0 @@
1
- describe HttpStub::Configurer::DSL::Deprecated do
2
-
3
- let(:stub_server) { double("StubServer") }
4
-
5
- shared_context "a method stubbing a response" do
6
-
7
- let(:stub_uri) { "/some/stub/uri" }
8
- let(:method) { :put }
9
- let(:headers) { { header_key: "header value" } }
10
- let(:parameters) { { parameter_key: "parameter value" } }
11
- let(:response) { { response_key: "response value" } }
12
- let(:options) { { method: method, headers: headers, parameters: parameters, response: response } }
13
-
14
- before(:example) do
15
- allow(builder).to receive(:match_requests)
16
- allow(builder).to receive(:respond_with)
17
- end
18
-
19
- it "causes the builder being added to match requests on the provided uri" do
20
- expect(builder).to receive(:match_requests).with(hash_including(uri: stub_uri))
21
-
22
- subject
23
- end
24
-
25
- context "when a method is provided" do
26
-
27
- it "causes the builder being added to match requests on the provided method" do
28
- expect(builder).to receive(:match_requests).with(hash_including(method: method))
29
-
30
- subject
31
- end
32
-
33
- end
34
-
35
- context "when a method is omitted" do
36
-
37
- let(:options) { {} }
38
-
39
- it "causes the builder being added to not match requests based on method" do
40
- expect(builder).to receive(:match_requests).with(hash_excluding(:method))
41
-
42
- subject
43
- end
44
-
45
- end
46
-
47
- context "when parameters are provided" do
48
-
49
- it "causes the builder being added to match requests on the provided parameters" do
50
- expect(builder).to receive(:match_requests).with(hash_including(parameters: parameters))
51
-
52
- subject
53
- end
54
-
55
- end
56
-
57
- context "when parameters are omitted" do
58
-
59
- let(:options) { {} }
60
-
61
- it "causes the builder being added to not match requests based on parameters" do
62
- expect(builder).to receive(:match_requests).with(hash_excluding(:parameters))
63
-
64
- subject
65
- end
66
-
67
- end
68
-
69
- context "when headers are provided" do
70
-
71
- it "causes the builder being added to match requests on the provided headers" do
72
- expect(builder).to receive(:match_requests).with(hash_including(headers: headers))
73
-
74
- subject
75
- end
76
-
77
- end
78
-
79
- context "when headers are omitted" do
80
-
81
- let(:options) { {} }
82
-
83
- it "causes the builder being added to not match requests based on headers" do
84
- expect(builder).to receive(:match_requests).with(hash_excluding(:headers))
85
-
86
- subject
87
- end
88
-
89
- end
90
-
91
- it "adds the provided response data to the builder" do
92
- expect(builder).to receive(:respond_with).with(response)
93
-
94
- subject
95
- end
96
-
97
- end
98
-
99
- shared_examples_for "a deprecated DSL object" do
100
-
101
- [ :recall_stubs!, :clear_stubs! ].each do |stub_server_delegate_method|
102
-
103
- describe "##{stub_server_delegate_method}" do
104
-
105
- it "delegates to the stub server available to the dsl" do
106
- expect(stub_server).to receive(stub_server_delegate_method)
107
-
108
- dsl_object.send(stub_server_delegate_method)
109
- end
110
-
111
- end
112
-
113
- end
114
-
115
- describe "#server_has_started!" do
116
-
117
- it "informs the stub server that it has started" do
118
- expect(stub_server).to receive(:has_started!)
119
-
120
- dsl_object.server_has_started!
121
- end
122
-
123
- end
124
-
125
- describe "#activate!" do
126
-
127
- let(:activation_uri) { "/some/activation/uri" }
128
-
129
- it "delegates to the stub server available to the dsl" do
130
- expect(stub_server).to receive(:activate!).with(activation_uri)
131
-
132
- dsl_object.activate!(activation_uri)
133
- end
134
-
135
- end
136
-
137
- [ :stub!, :stub_response! ].each do |method|
138
-
139
- describe "##{method}" do
140
-
141
- include_context "a method stubbing a response"
142
-
143
- let(:builder) { instance_double(HttpStub::Configurer::DSL::StubBuilder) }
144
-
145
- subject { dsl_object.send(method, stub_uri, options) }
146
-
147
- before(:example) { allow(stub_server).to receive(:add_stub!).and_yield(builder) }
148
-
149
- it "adds a stub to the stub server" do
150
- expect(stub_server).to receive(:add_stub!)
151
-
152
- subject
153
- end
154
-
155
- end
156
-
157
- end
158
-
159
- describe "#stub_activator" do
160
-
161
- let(:activation_uri) { "/some/activation/uri" }
162
-
163
- include_context "a method stubbing a response"
164
-
165
- let(:builder) { instance_double(HttpStub::Configurer::DSL::StubActivatorBuilder) }
166
-
167
- subject { dsl_object.stub_activator(activation_uri, stub_uri, options) }
168
-
169
- before(:example) do
170
- allow(stub_server).to receive(:add_activator!).and_yield(builder)
171
- allow(builder).to receive(:on)
172
- end
173
-
174
- it "adds an activator to the stub server" do
175
- expect(stub_server).to receive(:add_activator!)
176
-
177
- subject
178
- end
179
-
180
- it "causes the builder being added to activate on the provided uri" do
181
- expect(builder).to receive(:on).with(activation_uri)
182
-
183
- subject
184
- end
185
-
186
- end
187
-
188
- describe "#clear_activators!" do
189
-
190
- it "informs the stub server to clear scenarios" do
191
- expect(stub_server).to receive(:clear_scenarios!)
192
-
193
- dsl_object.clear_activators!
194
- end
195
-
196
- end
197
-
198
- end
199
-
200
- context "when included in a class" do
201
-
202
- class HttpStub::Configurer::DSL::DeprecatedTest
203
- include HttpStub::Configurer::DSL::Deprecated
204
-
205
- class << self
206
-
207
- attr_accessor :stub_server
208
-
209
- end
210
-
211
- attr_accessor :stub_server
212
-
213
- end
214
-
215
- describe "the class in which the module was included" do
216
-
217
- let(:dsl_object) do
218
- HttpStub::Configurer::DSL::DeprecatedTest.stub_server = stub_server
219
- HttpStub::Configurer::DSL::DeprecatedTest
220
- end
221
-
222
- it_behaves_like "a deprecated DSL object"
223
-
224
- end
225
-
226
- describe "an instance of the class in which the module was included" do
227
-
228
- let(:dsl_object) do
229
- dsl_object = HttpStub::Configurer::DSL::DeprecatedTest.new
230
- dsl_object.stub_server = stub_server
231
- dsl_object
232
- end
233
-
234
- it_behaves_like "a deprecated DSL object"
235
-
236
- end
237
-
238
- end
239
-
240
- end