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.
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