http_stub 0.27.0 → 0.28.0.beta1

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 (299) hide show
  1. checksums.yaml +4 -4
  2. data/lib/http_stub/client.rb +18 -0
  3. data/lib/http_stub/client/client.rb +28 -0
  4. data/lib/http_stub/client/request.rb +38 -0
  5. data/lib/http_stub/client/server.rb +20 -0
  6. data/lib/http_stub/client/session.rb +43 -0
  7. data/lib/http_stub/configurator.rb +61 -0
  8. data/lib/http_stub/configurator/endpoint_template.rb +24 -0
  9. data/lib/http_stub/configurator/part.rb +23 -0
  10. data/lib/http_stub/configurator/scenario.rb +42 -0
  11. data/lib/http_stub/configurator/server.rb +53 -0
  12. data/lib/http_stub/configurator/state.rb +41 -0
  13. data/lib/http_stub/configurator/stub.rb +13 -0
  14. data/lib/http_stub/configurator/stub/stub.rb +75 -0
  15. data/lib/http_stub/{configurer/dsl/stub_builder_template.rb → configurator/stub/template.rb} +5 -5
  16. data/lib/http_stub/extensions/core/object.rb +17 -0
  17. data/lib/http_stub/rake/server_tasks.rb +2 -14
  18. data/lib/http_stub/rake/task_generators.rb +3 -3
  19. data/lib/http_stub/server.rb +110 -0
  20. data/lib/http_stub/server/application/application.rb +10 -6
  21. data/lib/http_stub/server/application/request_support.rb +2 -2
  22. data/lib/http_stub/server/application/routes/memory.rb +1 -6
  23. data/lib/http_stub/server/application/routes/scenario.rb +1 -11
  24. data/lib/http_stub/server/application/routes/session.rb +1 -1
  25. data/lib/http_stub/server/application/routes/status.rb +0 -10
  26. data/lib/http_stub/server/application/routes/stub.rb +2 -12
  27. data/lib/http_stub/server/daemon.rb +1 -10
  28. data/lib/http_stub/server/memory/controller.rb +2 -8
  29. data/lib/http_stub/server/memory/initial_state.rb +27 -0
  30. data/lib/http_stub/server/memory/memory.rb +6 -27
  31. data/lib/http_stub/server/registry.rb +3 -1
  32. data/lib/http_stub/server/request/factory.rb +3 -3
  33. data/lib/http_stub/server/response.rb +12 -6
  34. data/lib/http_stub/server/scenario.rb +2 -2
  35. data/lib/http_stub/server/scenario/controller.rb +3 -13
  36. data/lib/http_stub/server/scenario/registry.rb +25 -0
  37. data/lib/http_stub/server/scenario/scenario.rb +13 -8
  38. data/lib/http_stub/server/session.rb +0 -1
  39. data/lib/http_stub/server/session/controller.rb +7 -8
  40. data/lib/http_stub/server/session/identifier_strategy.rb +9 -2
  41. data/lib/http_stub/server/session/registry.rb +7 -13
  42. data/lib/http_stub/server/session/session.rb +4 -8
  43. data/lib/http_stub/server/stdout_logger.rb +13 -0
  44. data/lib/http_stub/server/stub.rb +3 -2
  45. data/lib/http_stub/server/stub/controller.rb +0 -10
  46. data/lib/http_stub/server/stub/empty.rb +2 -1
  47. data/lib/http_stub/server/stub/match/controller.rb +1 -1
  48. data/lib/http_stub/server/stub/match/exact_value_matcher.rb +2 -1
  49. data/lib/http_stub/server/stub/match/omitted_value_matcher.rb +1 -1
  50. data/lib/http_stub/server/stub/match/regexp_value_matcher.rb +1 -2
  51. data/lib/http_stub/server/stub/match/rule/body.rb +7 -29
  52. data/lib/http_stub/server/stub/match/rule/{json_body.rb → json_schema_body.rb} +1 -1
  53. data/lib/http_stub/server/stub/match/rule/method.rb +1 -1
  54. data/lib/http_stub/server/stub/match/rule/schema_body.rb +39 -0
  55. data/lib/http_stub/server/stub/match/rules.rb +6 -6
  56. data/lib/http_stub/server/stub/match/string_value_matcher.rb +1 -2
  57. data/lib/http_stub/server/stub/registry.rb +4 -4
  58. data/lib/http_stub/server/stub/response.rb +2 -6
  59. data/lib/http_stub/server/stub/response/blocks.rb +33 -0
  60. data/lib/http_stub/server/stub/response/body.rb +21 -0
  61. data/lib/http_stub/server/stub/response/file_body.rb +46 -0
  62. data/lib/http_stub/server/stub/response/headers.rb +24 -0
  63. data/lib/http_stub/server/stub/response/response.rb +52 -0
  64. data/lib/http_stub/server/stub/response/text_body.rb +32 -0
  65. data/lib/http_stub/server/stub/stub.rb +17 -11
  66. data/lib/http_stub/server/stub/triggers.rb +16 -5
  67. data/lib/http_stub/server/views/_file_body_response.haml +1 -0
  68. data/lib/http_stub/server/views/_response.haml +6 -1
  69. data/lib/http_stub/server/views/_text_body_response.haml +1 -0
  70. data/lib/http_stub/server/views/application.sass +31 -31
  71. data/lib/http_stub/version.rb +1 -1
  72. data/spec/acceptance/{configurer_part_spec.rb → configurator_part_spec.rb} +8 -8
  73. data/spec/acceptance/cross_origin_support_spec.rb +9 -11
  74. data/spec/acceptance/endpoint_template_spec.rb +5 -5
  75. data/spec/acceptance/scenario_spec.rb +8 -8
  76. data/spec/acceptance/server_defaults_spec.rb +3 -3
  77. data/spec/acceptance/server_memory_spec.rb +13 -5
  78. data/spec/acceptance/server_status_spec.rb +4 -21
  79. data/spec/acceptance/session_spec.rb +8 -11
  80. data/spec/acceptance/stub_body_request_matching_spec.rb +9 -9
  81. data/spec/acceptance/stub_control_values_spec.rb +74 -82
  82. data/spec/acceptance/stub_match_last_spec.rb +60 -80
  83. data/spec/acceptance/stub_match_list_spec.rb +30 -66
  84. data/spec/acceptance/stub_miss_list_spec.rb +19 -27
  85. data/spec/acceptance/stub_response_block_spec.rb +66 -0
  86. data/spec/acceptance/stub_spec.rb +109 -185
  87. data/spec/acceptance/stub_trigger_spec.rb +12 -89
  88. data/spec/helper.rb +32 -10
  89. data/spec/lib/http_stub/client/client_spec.rb +109 -0
  90. data/spec/lib/http_stub/client/request_integration_spec.rb +74 -0
  91. data/spec/lib/http_stub/client/request_spec.rb +32 -0
  92. data/spec/lib/http_stub/client/server_spec.rb +75 -0
  93. data/spec/lib/http_stub/client/session_spec.rb +117 -0
  94. data/spec/lib/http_stub/client_spec.rb +15 -0
  95. data/spec/lib/http_stub/{configurer/dsl/server_endpoint_template_spec.rb → configurator/endpoint_template_spec.rb} +49 -38
  96. data/spec/lib/http_stub/configurator/part_spec.rb +103 -0
  97. data/spec/lib/http_stub/configurator/scenario_spec.rb +162 -0
  98. data/spec/lib/http_stub/configurator/server_spec.rb +344 -0
  99. data/spec/lib/http_stub/configurator/state_spec.rb +113 -0
  100. data/spec/lib/http_stub/configurator/stub/stub_spec.rb +867 -0
  101. data/spec/lib/http_stub/{configurer/dsl/stub_builder_template_spec.rb → configurator/stub/template_spec.rb} +46 -44
  102. data/spec/lib/http_stub/configurator/stub_spec.rb +27 -0
  103. data/spec/lib/http_stub/configurator_spec.rb +113 -0
  104. data/spec/lib/http_stub/extensions/core/hash_spec.rb +3 -3
  105. data/spec/lib/http_stub/extensions/core/object_spec.rb +29 -0
  106. data/spec/lib/http_stub/rake/server_daemon_tasks_smoke_spec.rb +14 -9
  107. data/spec/lib/http_stub/rake/server_tasks_smoke_spec.rb +25 -53
  108. data/spec/lib/http_stub/rake/server_tasks_spec.rb +12 -55
  109. data/spec/lib/http_stub/server/application/application_spec.rb +4 -49
  110. data/spec/lib/http_stub/server/application/cross_origin_support_spec.rb +2 -5
  111. data/spec/lib/http_stub/server/application/request_support_integration_spec.rb +4 -4
  112. data/spec/lib/http_stub/server/application/request_support_spec.rb +16 -11
  113. data/spec/lib/http_stub/server/application/routes/memory_spec.rb +1 -21
  114. data/spec/lib/http_stub/server/application/routes/scenario_spec.rb +4 -56
  115. data/spec/lib/http_stub/server/application/routes/session_integration_spec.rb +1 -1
  116. data/spec/lib/http_stub/server/application/routes/status_spec.rb +2 -36
  117. data/spec/lib/http_stub/server/application/routes/stub_integration_spec.rb +3 -34
  118. data/spec/lib/http_stub/server/application/routes/stub_spec.rb +6 -55
  119. data/spec/lib/http_stub/server/daemon_integration_spec.rb +5 -1
  120. data/spec/lib/http_stub/server/daemon_spec.rb +8 -77
  121. data/spec/lib/http_stub/server/memory/controller_spec.rb +2 -28
  122. data/spec/lib/http_stub/server/memory/initial_state_spec.rb +57 -0
  123. data/spec/lib/http_stub/server/memory/memory_spec.rb +28 -116
  124. data/spec/lib/http_stub/server/registry_spec.rb +57 -2
  125. data/spec/lib/http_stub/server/request/factory_spec.rb +8 -6
  126. data/spec/lib/http_stub/server/response_spec.rb +32 -10
  127. data/spec/lib/http_stub/server/scenario/controller_spec.rb +14 -53
  128. data/spec/lib/http_stub/server/scenario/registry_spec.rb +147 -0
  129. data/spec/lib/http_stub/server/scenario/scenario_spec.rb +8 -10
  130. data/spec/lib/http_stub/server/scenario_spec.rb +1 -1
  131. data/spec/lib/http_stub/server/session/controller_spec.rb +4 -5
  132. data/spec/lib/http_stub/server/session/identifier_strategy_spec.rb +15 -48
  133. data/spec/lib/http_stub/server/session/registry_spec.rb +15 -28
  134. data/spec/lib/http_stub/server/session/session_spec.rb +13 -71
  135. data/spec/lib/http_stub/server/stdout_logger_spec.rb +17 -0
  136. data/spec/lib/http_stub/server/stub/controller_spec.rb +7 -65
  137. data/spec/lib/http_stub/server/stub/empty_spec.rb +8 -0
  138. data/spec/lib/http_stub/server/stub/match/controller_spec.rb +2 -2
  139. data/spec/lib/http_stub/server/stub/match/exact_value_matcher_spec.rb +49 -11
  140. data/spec/lib/http_stub/server/stub/match/hash_matcher_spec.rb +4 -4
  141. data/spec/lib/http_stub/server/stub/match/match_spec.rb +4 -4
  142. data/spec/lib/http_stub/server/stub/match/miss_spec.rb +2 -2
  143. data/spec/lib/http_stub/server/stub/match/omitted_value_matcher_spec.rb +31 -12
  144. data/spec/lib/http_stub/server/stub/match/regexp_value_matcher_spec.rb +20 -11
  145. data/spec/lib/http_stub/server/stub/match/rule/body_spec.rb +3 -3
  146. data/spec/lib/http_stub/server/stub/match/rule/{json_body_spec.rb → json_schema_body_spec.rb} +5 -5
  147. data/spec/lib/http_stub/server/stub/match/rule/method_spec.rb +42 -8
  148. data/spec/lib/http_stub/server/stub/match/rule/schema_body_spec.rb +64 -0
  149. data/spec/lib/http_stub/server/stub/match/rules_spec.rb +18 -18
  150. data/spec/lib/http_stub/server/stub/match/string_value_matcher_spec.rb +10 -63
  151. data/spec/lib/http_stub/server/stub/registry_integration_spec.rb +11 -28
  152. data/spec/lib/http_stub/server/stub/registry_spec.rb +6 -13
  153. data/spec/lib/http_stub/server/stub/response/blocks_spec.rb +64 -0
  154. data/spec/lib/http_stub/server/stub/response/body_spec.rb +52 -0
  155. data/spec/lib/http_stub/server/stub/response/file_body_spec.rb +117 -0
  156. data/spec/lib/http_stub/server/stub/response/headers_spec.rb +89 -0
  157. data/spec/lib/http_stub/server/stub/response/response_spec.rb +342 -0
  158. data/spec/lib/http_stub/server/stub/response/text_body_spec.rb +138 -0
  159. data/spec/lib/http_stub/server/stub/response_spec.rb +23 -32
  160. data/spec/lib/http_stub/server/stub/stub_spec.rb +33 -39
  161. data/spec/lib/http_stub/server/stub/triggers_spec.rb +47 -12
  162. data/spec/lib/http_stub/server/stub_spec.rb +1 -1
  163. data/spec/support/extensions/core/random.rb +23 -0
  164. data/spec/support/http_stub/configurator/scenario_builder.rb +35 -0
  165. data/spec/support/http_stub/configurator/scenario_fixture.rb +39 -0
  166. data/spec/support/http_stub/configurator/stub_builder.rb +112 -0
  167. data/spec/support/http_stub/configurator/stub_fixture.rb +58 -0
  168. data/spec/support/http_stub/configurator_fixture.rb +13 -0
  169. data/spec/support/http_stub/configurator_with_stub_builder_and_requester.rb +14 -0
  170. data/spec/support/http_stub/headers_fixture.rb +11 -0
  171. data/spec/support/http_stub/{html_view_excluding_request_details.rb → html_view_excluding_a_stub_request.rb} +2 -2
  172. data/spec/support/http_stub/{html_view_including_request_details.rb → html_view_including_a_stub_request.rb} +20 -12
  173. data/spec/support/http_stub/port.rb +12 -0
  174. data/spec/support/http_stub/server/application/http_stub_rack_application_test.rb +2 -3
  175. data/spec/support/http_stub/server/driver.rb +20 -15
  176. data/spec/support/http_stub/server/memory_fixture.rb +2 -2
  177. data/spec/support/http_stub/server/request/sinatra_request_fixture.rb +16 -0
  178. data/spec/support/http_stub/server/request_fixture.rb +11 -6
  179. data/spec/support/http_stub/server/scenario_fixture.rb +14 -2
  180. data/spec/support/http_stub/server/session_fixture.rb +2 -16
  181. data/spec/support/http_stub/server/silent_logger.rb +7 -0
  182. data/spec/support/http_stub/server/simple_request.rb +17 -0
  183. data/spec/support/http_stub/server/stub/match/match_fixture.rb +1 -1
  184. data/spec/support/http_stub/server/stub/response/blocks_fixture.rb +54 -0
  185. data/spec/support/http_stub/server/stub/response/file_body_fixture.rb +25 -0
  186. data/spec/support/http_stub/server/stub/response/text_body_fixture.rb +33 -0
  187. data/spec/support/http_stub/server/stub/response_builder.rb +24 -0
  188. data/spec/support/http_stub/server/stub/response_fixture.rb +15 -0
  189. data/spec/support/http_stub/server/stub_fixture.rb +21 -0
  190. data/spec/support/http_stub/server_integration.rb +9 -6
  191. data/spec/support/http_stub/stub_requester.rb +37 -0
  192. data/spec/support/object_convertable_to_json.rb +11 -0
  193. data/spec/support/rack/rack_application_test.rb +1 -1
  194. data/spec/support/rack/request_fixture.rb +22 -4
  195. metadata +166 -207
  196. data/lib/http_stub.rb +0 -131
  197. data/lib/http_stub/configurer.rb +0 -42
  198. data/lib/http_stub/configurer/dsl/request_attribute_referencer.rb +0 -19
  199. data/lib/http_stub/configurer/dsl/request_referencer.rb +0 -24
  200. data/lib/http_stub/configurer/dsl/scenario_builder.rb +0 -39
  201. data/lib/http_stub/configurer/dsl/server.rb +0 -80
  202. data/lib/http_stub/configurer/dsl/server_endpoint_template.rb +0 -23
  203. data/lib/http_stub/configurer/dsl/session.rb +0 -51
  204. data/lib/http_stub/configurer/dsl/session_endpoint_template.rb +0 -22
  205. data/lib/http_stub/configurer/dsl/session_factory.rb +0 -34
  206. data/lib/http_stub/configurer/dsl/stub_builder.rb +0 -65
  207. data/lib/http_stub/configurer/part.rb +0 -23
  208. data/lib/http_stub/configurer/request/controllable_value.rb +0 -19
  209. data/lib/http_stub/configurer/request/http/basic.rb +0 -27
  210. data/lib/http_stub/configurer/request/http/factory.rb +0 -33
  211. data/lib/http_stub/configurer/request/http/multipart.rb +0 -34
  212. data/lib/http_stub/configurer/request/omittable.rb +0 -26
  213. data/lib/http_stub/configurer/request/regexpable.rb +0 -33
  214. data/lib/http_stub/configurer/request/scenario.rb +0 -29
  215. data/lib/http_stub/configurer/request/stub.rb +0 -39
  216. data/lib/http_stub/configurer/request/stub_response.rb +0 -38
  217. data/lib/http_stub/configurer/request/stub_response_file.rb +0 -20
  218. data/lib/http_stub/configurer/request/triggers.rb +0 -25
  219. data/lib/http_stub/configurer/server/buffered_command_processor.rb +0 -24
  220. data/lib/http_stub/configurer/server/command.rb +0 -22
  221. data/lib/http_stub/configurer/server/command_processor.rb +0 -35
  222. data/lib/http_stub/configurer/server/configuration.rb +0 -33
  223. data/lib/http_stub/configurer/server/facade.rb +0 -61
  224. data/lib/http_stub/configurer/server/request_processor.rb +0 -30
  225. data/lib/http_stub/configurer/server/session_facade.rb +0 -57
  226. data/lib/http_stub/server/application/configuration.rb +0 -38
  227. data/lib/http_stub/server/application/response_pipeline.rb +0 -20
  228. data/lib/http_stub/server/application/response_support.rb +0 -19
  229. data/lib/http_stub/server/scenario/parser.rb +0 -17
  230. data/lib/http_stub/server/session/configuration.rb +0 -32
  231. data/lib/http_stub/server/status/controller.rb +0 -25
  232. data/lib/http_stub/server/stub/parser.rb +0 -17
  233. data/lib/http_stub/server/stub/payload.rb +0 -20
  234. data/lib/http_stub/server/stub/payload/base_uri_modifier.rb +0 -17
  235. data/lib/http_stub/server/stub/payload/response_body_modifier.rb +0 -21
  236. data/lib/http_stub/server/stub/response/attribute/body.rb +0 -32
  237. data/lib/http_stub/server/stub/response/attribute/headers.rb +0 -32
  238. data/lib/http_stub/server/stub/response/attribute/interpolator.rb +0 -26
  239. data/lib/http_stub/server/stub/response/attribute/interpolator/headers.rb +0 -27
  240. data/lib/http_stub/server/stub/response/attribute/interpolator/parameters.rb +0 -27
  241. data/lib/http_stub/server/stub/response/base.rb +0 -61
  242. data/lib/http_stub/server/stub/response/file.rb +0 -45
  243. data/lib/http_stub/server/stub/response/text.rb +0 -35
  244. data/lib/http_stub/server/views/_file_response.haml +0 -1
  245. data/lib/http_stub/server/views/_text_response.haml +0 -1
  246. data/spec/acceptance/configurer_initialization_spec.rb +0 -157
  247. data/spec/acceptance/request_reference_spec.rb +0 -42
  248. data/spec/lib/http_stub/configurer/dsl/request_attribute_referencer_spec.rb +0 -37
  249. data/spec/lib/http_stub/configurer/dsl/request_referencer_spec.rb +0 -37
  250. data/spec/lib/http_stub/configurer/dsl/scenario_builder_spec.rb +0 -201
  251. data/spec/lib/http_stub/configurer/dsl/server_spec.rb +0 -575
  252. data/spec/lib/http_stub/configurer/dsl/session_endpoint_template_spec.rb +0 -150
  253. data/spec/lib/http_stub/configurer/dsl/session_factory_spec.rb +0 -97
  254. data/spec/lib/http_stub/configurer/dsl/session_spec.rb +0 -210
  255. data/spec/lib/http_stub/configurer/dsl/stub_builder_spec.rb +0 -747
  256. data/spec/lib/http_stub/configurer/part_spec.rb +0 -103
  257. data/spec/lib/http_stub/configurer/request/controllable_value_spec.rb +0 -34
  258. data/spec/lib/http_stub/configurer/request/http/basic_spec.rb +0 -91
  259. data/spec/lib/http_stub/configurer/request/http/factory_spec.rb +0 -222
  260. data/spec/lib/http_stub/configurer/request/http/multipart_spec.rb +0 -118
  261. data/spec/lib/http_stub/configurer/request/omittable_spec.rb +0 -70
  262. data/spec/lib/http_stub/configurer/request/regexpable_spec.rb +0 -77
  263. data/spec/lib/http_stub/configurer/request/scenario_spec.rb +0 -69
  264. data/spec/lib/http_stub/configurer/request/stub_response_spec.rb +0 -195
  265. data/spec/lib/http_stub/configurer/request/stub_spec.rb +0 -231
  266. data/spec/lib/http_stub/configurer/request/triggers_spec.rb +0 -101
  267. data/spec/lib/http_stub/configurer/server/buffered_command_processor_spec.rb +0 -35
  268. data/spec/lib/http_stub/configurer/server/command_processor_integration_spec.rb +0 -75
  269. data/spec/lib/http_stub/configurer/server/command_spec.rb +0 -26
  270. data/spec/lib/http_stub/configurer/server/configuration_spec.rb +0 -139
  271. data/spec/lib/http_stub/configurer/server/facade_spec.rb +0 -235
  272. data/spec/lib/http_stub/configurer/server/request_processor_spec.rb +0 -100
  273. data/spec/lib/http_stub/configurer/server/session_facade_spec.rb +0 -285
  274. data/spec/lib/http_stub/configurer_spec.rb +0 -105
  275. data/spec/lib/http_stub/server/application/configuration_spec.rb +0 -59
  276. data/spec/lib/http_stub/server/application/response_pipeline_spec.rb +0 -29
  277. data/spec/lib/http_stub/server/application/response_support_spec.rb +0 -30
  278. data/spec/lib/http_stub/server/scenario/parser_spec.rb +0 -64
  279. data/spec/lib/http_stub/server/session/configuration_spec.rb +0 -94
  280. data/spec/lib/http_stub/server/status/controller_spec.rb +0 -47
  281. data/spec/lib/http_stub/server/stub/parser_spec.rb +0 -56
  282. data/spec/lib/http_stub/server/stub/payload/base_uri_modifier_spec.rb +0 -23
  283. data/spec/lib/http_stub/server/stub/payload/response_body_modifier_spec.rb +0 -84
  284. data/spec/lib/http_stub/server/stub/payload_spec.rb +0 -33
  285. data/spec/lib/http_stub/server/stub/response/attribute/body_spec.rb +0 -98
  286. data/spec/lib/http_stub/server/stub/response/attribute/headers_spec.rb +0 -73
  287. data/spec/lib/http_stub/server/stub/response/attribute/interpolator/headers_spec.rb +0 -53
  288. data/spec/lib/http_stub/server/stub/response/attribute/interpolator/parameters_spec.rb +0 -53
  289. data/spec/lib/http_stub/server/stub/response/attribute/interpolator_spec.rb +0 -41
  290. data/spec/lib/http_stub/server/stub/response/base_spec.rb +0 -217
  291. data/spec/lib/http_stub/server/stub/response/file_spec.rb +0 -197
  292. data/spec/lib/http_stub/server/stub/response/text_spec.rb +0 -182
  293. data/spec/resources/sample.pdf +0 -0
  294. data/spec/resources/sample.txt +0 -1
  295. data/spec/support/http_stub/configurer_integration.rb +0 -24
  296. data/spec/support/http_stub/empty_configurer.rb +0 -7
  297. data/spec/support/http_stub/scenario_fixture.rb +0 -33
  298. data/spec/support/http_stub/stub_fixture.rb +0 -125
  299. data/spec/support/http_stub/stub_registrator.rb +0 -83
@@ -1,75 +1,47 @@
1
1
  describe HttpStub::Rake::ServerTasks do
2
+ include_context "surpressed output"
2
3
  include Rake::DSL
3
4
 
4
- shared_context "verification of generated tasks" do
5
- include_context "surpressed output"
5
+ let(:server_name) { "test_server_#{SecureRandom.uuid}"}
6
+ let(:port) { HttpStub::Port.free_port }
7
+ let(:configurator) { HttpStub::ConfiguratorFixture.create(port: port) }
6
8
 
7
- before(:example) { HttpStub::Rake::ServerTasks.new(task_args) }
9
+ before(:example) { HttpStub::Rake::ServerTasks.new(name: server_name, configurator: configurator) }
8
10
 
9
- describe "start:foreground task" do
11
+ describe "start:foreground task" do
10
12
 
11
- let(:task) { Rake::Task["#{task_args[:name]}:start:foreground"] }
13
+ let(:task) { Rake::Task["#{server_name}:start:foreground"] }
12
14
 
13
- context "when invoked" do
15
+ context "when invoked" do
14
16
 
15
- before(:example) do
16
- Thread.new { task.invoke("--silent") }
17
- wait_until_server_has_started
18
- end
19
-
20
- after(:example) { wait_until_server_has_stopped }
17
+ before(:example) do
18
+ Thread.new { task.invoke("--silent") }
19
+ wait_until_server_has_started
20
+ end
21
21
 
22
- it "starts a stub server that responds to stub requests" do
23
- request = Net::HTTP::Post.new("/http_stub/stubs")
24
- request.body = { "uri" => "/", "response" => { "status" => 302, "body" => "Some Body" } }.to_json
22
+ after(:example) { wait_until_server_has_stopped }
25
23
 
26
- response = Net::HTTP.new("localhost", port).start { |http| http.request(request) }
24
+ it "starts a stub server that responds to stub requests" do
25
+ response = HTTParty.get("http://localhost:#{port}/http_stub/stubs")
27
26
 
28
- expect(response.code).to eql("200")
29
- end
27
+ expect(response.code).to eql(200)
28
+ end
30
29
 
31
- def wait_until_server_has_started
32
- ::Wait.until!(description: "http stub server #{task_args[:name]} started") do
33
- HTTParty.get("http://localhost:#{port}")
34
- end
30
+ def wait_until_server_has_started
31
+ ::Wait.until!(description: "http stub server #{server_name} started") do
32
+ HTTParty.get("http://localhost:#{port}")
35
33
  end
34
+ end
36
35
 
37
- def wait_until_server_has_stopped
38
- HttpStub::Server::Application::Application.stop!
39
- ::Wait.until_true!(description: "http stub server #{task_args[:name]} stopped") do
40
- HTTParty.get("http://localhost:#{port}", timeout: 1) && false rescue true
41
- end
36
+ def wait_until_server_has_stopped
37
+ HttpStub::Server::Application::Application.stop!
38
+ ::Wait.until_true!(description: "http stub server #{server_name} stopped") do
39
+ HTTParty.get("http://localhost:#{port}", timeout: 1) && false rescue true
42
40
  end
43
-
44
41
  end
45
42
 
46
43
  end
47
44
 
48
45
  end
49
46
 
50
- context "when a configurer is provided" do
51
-
52
- let(:port) { 8005 }
53
- let(:configurer) do
54
- Class.new.tap do |configurer|
55
- configurer.send(:include, HttpStub::Configurer)
56
- configurer.stub_server.host = "localhost"
57
- configurer.stub_server.port = port
58
- end
59
- end
60
- let(:task_args) { { name: :test_server_with_configurer, configurer: configurer } }
61
-
62
- include_context "verification of generated tasks"
63
-
64
- end
65
-
66
- context "when a port is provided" do
67
-
68
- let(:port) { 8006 }
69
- let(:task_args) { { name: :test_server_with_port, port: port } }
70
-
71
- include_context "verification of generated tasks"
72
-
73
- end
74
-
75
47
  end
@@ -1,78 +1,35 @@
1
1
  describe HttpStub::Rake::ServerTasks do
2
2
 
3
- class HttpStub::Rake::ServerTasksTestCounter
4
-
5
- def self.next
6
- @counter ||= 0
7
- @counter += 1
8
- end
9
-
10
- end
11
-
12
- let(:server_name) { "server_tasks_test_#{HttpStub::Rake::ServerTasksTestCounter.next}".to_sym }
13
- let(:default_args) { { port: 8001, name: server_name } }
3
+ let(:server_name) { "server_tasks_test_#{SecureRandom.uuid}".to_sym }
4
+ let(:default_args) { { name: server_name } }
14
5
  let(:additional_args) { {} }
15
6
  let(:args) { default_args.merge(additional_args) }
16
- let(:configurer) { double(HttpStub::Configurer).as_null_object }
17
-
18
- before(:example) { HttpStub::Rake::ServerTasks.new(args) }
19
-
20
- describe "the configure task" do
21
-
22
- let(:task) { Rake::Task["#{server_name}:configure"] }
23
-
24
- context "when executed" do
25
-
26
- subject { task.execute }
27
-
28
- context "with a configurer" do
29
-
30
- let(:additional_args) { { configurer: configurer } }
31
7
 
32
- it "initializes the provided configurer" do
33
- expect(configurer).to receive(:initialize!)
8
+ let(:server_tasks) { HttpStub::Rake::ServerTasks.new(args) }
34
9
 
35
- subject
36
- end
37
-
38
- end
39
-
40
- end
41
-
42
- context "when a configurer is not provided" do
43
-
44
- it "does not generate a task" do
45
- expect { task }.to raise_error(/Don't know how to build task/)
46
- end
10
+ context "when a configurator is not provided" do
47
11
 
12
+ it "raises an error on creation indicating a configurator is required" do
13
+ expect { server_tasks }.to raise_error(/configurator must be specified/)
48
14
  end
49
15
 
50
16
  end
51
17
 
52
18
  describe "the start foreground task" do
53
19
 
54
- let(:application) { HttpStub::Server::Application::Application }
20
+ let(:configurator) { HttpStub::ConfiguratorFixture.create }
21
+ let(:additional_args) { { configurator: configurator } }
55
22
 
56
23
  let(:task) { Rake::Task["#{server_name}:start:foreground"] }
57
24
 
25
+ before(:example) { server_tasks }
26
+
58
27
  context "when executed" do
59
28
 
60
29
  subject { task.execute }
61
30
 
62
- before(:example) do
63
- allow(HttpStub::Server::Application::Application).to receive(:configure)
64
- allow(HttpStub::Server::Application::Application).to receive(:run!)
65
- end
66
-
67
- it "configures the application using the tasks arguments" do
68
- expect(application).to receive(:configure).with(args)
69
-
70
- subject
71
- end
72
-
73
- it "runs the configured application" do
74
- expect(application).to receive(:configure).ordered
75
- expect(application).to receive(:run!).ordered
31
+ it "starts a server with the provided configurator" do
32
+ expect(HttpStub::Server).to receive(:start).with(configurator)
76
33
 
77
34
  subject
78
35
  end
@@ -3,21 +3,11 @@ describe HttpStub::Server::Application::Application do
3
3
 
4
4
  describe "::configure" do
5
5
 
6
- let(:args) { { some_argument_key: "some argument value" } }
7
6
  let(:configured_settings) { { setting_1: "value 1", setting_2: "value 2", setting_3: "value 3" } }
8
- let(:configuration) do
9
- instance_double(HttpStub::Server::Application::Configuration, settings: configured_settings)
10
- end
11
-
12
- subject { described_class.configure(args) }
13
7
 
14
- before(:example) { allow(HttpStub::Server::Application::Configuration).to receive(:new).and_return(configuration) }
8
+ before(:example) { allow(configurator.state).to receive(:application_settings).and_return(configured_settings) }
15
9
 
16
- it "creates application configuration encapsulating the arguments" do
17
- expect(HttpStub::Server::Application::Configuration).to receive(:new).with(args).and_return(configuration)
18
-
19
- subject
20
- end
10
+ subject { described_class.configure(configurator) }
21
11
 
22
12
  it "establishes the configured settings on the application" do
23
13
  subject
@@ -35,47 +25,12 @@ describe HttpStub::Server::Application::Application do
35
25
  expect(app.settings.cross_origin_support).to eql(false)
36
26
  end
37
27
 
38
- describe "the session configuration" do
39
-
40
- let(:session_configuration) { instance_double(HttpStub::Server::Session::Configuration).as_null_object }
41
-
42
- context "when a session identifier is set" do
43
-
44
- include_context "enabled session support"
45
-
46
- it "is created on startup with the session identifier" do
47
- expect(HttpStub::Server::Session::Configuration).to receive(:new).with(session_identifier)
48
-
49
- app
50
- end
51
-
52
- end
53
-
54
- context "when a session identifier is not configured" do
55
-
56
- it "is created on startup with a nil session identifier" do
57
- expect(HttpStub::Server::Session::Configuration).to receive(:new).with(nil)
58
-
59
- app
60
- end
61
-
62
- end
63
-
64
- it "is reused on all requests" do
65
- expect(HttpStub::Server::Session::Configuration).to receive(:new).once
66
-
67
- issue_a_request
68
- issue_a_request
69
- end
70
-
71
- end
72
-
73
28
  describe "the memory" do
74
29
 
75
30
  let(:server_memory) { instance_double(HttpStub::Server::Memory::Memory).as_null_object }
76
31
 
77
- it "is created on startup" do
78
- expect(HttpStub::Server::Memory::Memory).to receive(:new).and_return(server_memory)
32
+ it "is created with the configured state" do
33
+ expect(HttpStub::Server::Memory::Memory).to receive(:new).with(configurator.state).and_return(server_memory)
79
34
 
80
35
  app
81
36
  end
@@ -1,14 +1,12 @@
1
1
  describe HttpStub::Server::Application::CrossOriginSupport do
2
- include Rack::Test::Methods
3
-
4
- let(:response) { last_response }
2
+ include_context "rack application test"
5
3
 
6
4
  describe "when registered in an application" do
7
5
 
8
6
  class HttpStub::Server::Application::CrossOriginSupportTestApplication < Sinatra::Base
9
7
 
10
8
  def http_stub_request
11
- HttpStub::Server::RequestFixture.create(request)
9
+ HttpStub::Server::RequestFixture.create(rack_request: request)
12
10
  end
13
11
 
14
12
  end
@@ -28,7 +26,6 @@ describe HttpStub::Server::Application::CrossOriginSupport do
28
26
  end
29
27
 
30
28
  let(:app_class) { HttpStub::Server::Application::CrossOriginSupportTestApplication }
31
- let(:app) { app_class.new! }
32
29
 
33
30
  before(:example) { app_class.register(described_class) }
34
31
 
@@ -5,9 +5,10 @@ describe HttpStub::Server::Application::RequestSupport, "when integrated into a
5
5
 
6
6
  class HttpStub::Server::Application::RequestSupport::IntegrationTestApplication < Sinatra::Base
7
7
 
8
+ set :session_identifier, nil
9
+
8
10
  def initialize
9
- @session_configuration = HttpStub::Server::Session::Configuration.new(nil)
10
- @server_memory = HttpStub::Server::Memory::Memory.new(@session_configuration)
11
+ @server_memory = HttpStub::Server::MemoryFixture.create
11
12
  super()
12
13
  end
13
14
 
@@ -32,13 +33,12 @@ describe HttpStub::Server::Application::RequestSupport, "when integrated into a
32
33
  end
33
34
 
34
35
  def logger
35
- HttpServerManager::Test::SilentLogger
36
+ HttpStub::Server::SilentLogger
36
37
  end
37
38
 
38
39
  end
39
40
 
40
41
  let(:app_class) { HttpStub::Server::Application::RequestSupport::IntegrationTestApplication }
41
- let(:app) { app_class.new! }
42
42
 
43
43
  describe "#http_stub_request" do
44
44
 
@@ -6,9 +6,8 @@ describe HttpStub::Server::Application::RequestSupport do
6
6
  class HttpStub::Server::Application::RequestSupport::TestApplication < Sinatra::Base
7
7
  include HttpStub::Server::Application::RequestSupport
8
8
 
9
- def initialize(session_configuration, server_memory)
10
- @session_configuration = session_configuration
11
- @server_memory = server_memory
9
+ def initialize(server_memory)
10
+ @server_memory = server_memory
12
11
  super()
13
12
  end
14
13
 
@@ -18,19 +17,24 @@ describe HttpStub::Server::Application::RequestSupport do
18
17
 
19
18
  end
20
19
 
21
- let(:session_configuration) { instance_double(HttpStub::Server::Session::Configuration) }
22
- let(:server_memory) { instance_double(HttpStub::Server::Memory::Memory) }
23
- let(:request_factory) { instance_double(HttpStub::Server::Request::Factory) }
20
+ let(:session_identifier) { { header: :some_session_id } }
21
+ let(:server_memory) { instance_double(HttpStub::Server::Memory::Memory) }
22
+
23
+ let(:request_factory) { instance_double(HttpStub::Server::Request::Factory) }
24
24
 
25
25
  let(:app_class) { HttpStub::Server::Application::RequestSupport::TestApplication }
26
- let(:app) { app_class.new!(session_configuration, server_memory) }
26
+ let(:app) { app_class.new!(server_memory) }
27
+
28
+ before(:example) do
29
+ HttpStub::Server::Application::RequestSupport::TestApplication.set(:session_identifier, session_identifier)
30
+ end
27
31
 
28
32
  describe "constructor" do
29
33
 
30
34
  subject { app }
31
35
 
32
- it "creates a factory for creating http_stub using the servers session configuration" do
33
- expect(HttpStub::Server::Request::Factory).to receive(:new).with(session_configuration, anything)
36
+ it "creates a factory for creating http_stub requests using the configured session identifier" do
37
+ expect(HttpStub::Server::Request::Factory).to receive(:new).with(session_identifier, anything)
34
38
 
35
39
  subject
36
40
  end
@@ -47,8 +51,9 @@ describe HttpStub::Server::Application::RequestSupport do
47
51
 
48
52
  subject { get "/request_support_test" }
49
53
 
50
- it "creates a http_stub request for rack requests issued" do
51
- allow(HttpStub::Server::Request::Factory).to receive(:new).and_return(request_factory)
54
+ before(:example) { allow(HttpStub::Server::Request::Factory).to receive(:new).and_return(request_factory) }
55
+
56
+ it "creates a http_stub request for the issued rack request" do
52
57
  expect(request_factory).to receive(:create).with(a_kind_of(Rack::Request), anything, anything)
53
58
 
54
59
  subject
@@ -10,7 +10,7 @@ describe HttpStub::Server::Application::Routes::Memory do
10
10
  subject { get "/http_stub/memory" }
11
11
 
12
12
  it "retrieves the servers memorized stub via the memory controller" do
13
- memorized_stubs = (1..3).map { HttpStub::Server::Stub::Empty::INSTANCE }
13
+ memorized_stubs = (1..3).map { HttpStub::Server::StubFixture.create }
14
14
  expect(memory_controller).to receive(:find_stubs).and_return(memorized_stubs)
15
15
 
16
16
  subject
@@ -18,24 +18,4 @@ describe HttpStub::Server::Application::Routes::Memory do
18
18
 
19
19
  end
20
20
 
21
- context "when a request to reset the servers memory is received" do
22
-
23
- subject { delete "/http_stub/memory" }
24
-
25
- before(:example) { allow(memory_controller).to receive(:reset) }
26
-
27
- it "resets the servers memory via the memory controller" do
28
- expect(memory_controller).to receive(:reset)
29
-
30
- subject
31
- end
32
-
33
- it "responds without error" do
34
- subject
35
-
36
- expect(response.status).to eql(200)
37
- end
38
-
39
- end
40
-
41
21
  end
@@ -5,38 +5,6 @@ describe HttpStub::Server::Application::Routes::Scenario do
5
5
 
6
6
  before(:example) { allow(HttpStub::Server::Scenario::Controller).to receive(:new).and_return(scenario_controller) }
7
7
 
8
- context "when a scenario registration request is received" do
9
-
10
- let(:payload) do
11
- {
12
- uri: "/a_scenario_path",
13
- stubs: [ { uri: "/a_path", method: "a method", response: { status: 200, body: "Foo" } } ],
14
- triggered_scenario_names: [ "some/uri/to/activate" ]
15
- }.to_json
16
- end
17
- let(:registration_response) { instance_double(HttpStub::Server::Stub::Response::Base) }
18
-
19
- before(:example) do
20
- allow(request).to receive(:body).and_return(payload)
21
- allow(scenario_controller).to receive(:register).and_return(registration_response)
22
- end
23
-
24
- subject { post "/http_stub/scenarios" }
25
-
26
- it "registers the scenario via the scenario controller" do
27
- expect(scenario_controller).to receive(:register).and_return(registration_response)
28
-
29
- subject
30
- end
31
-
32
- it "processes the scenario controllers response via the response pipeline" do
33
- expect(response_pipeline).to receive(:process).with(registration_response)
34
-
35
- subject
36
- end
37
-
38
- end
39
-
40
8
  context "when a request to show a scenario is received" do
41
9
 
42
10
  let(:scenario_name) { "Some scenario name" }
@@ -68,10 +36,10 @@ describe HttpStub::Server::Application::Routes::Scenario do
68
36
 
69
37
  end
70
38
 
71
- context "when a request to active scenarios is received" do
39
+ context "when a request to activate a scenario is received" do
72
40
 
73
41
  let(:scenario_names) { (1..3).map { |i| "scenario name #{i}" } }
74
- let(:activation_response) { instance_double(HttpStub::Server::Stub::Response::Base) }
42
+ let(:activation_response) { HttpStub::Server::Stub::ResponseFixture.create }
75
43
 
76
44
  subject { post "/http_stub/scenarios/activate" }
77
45
 
@@ -86,32 +54,12 @@ describe HttpStub::Server::Application::Routes::Scenario do
86
54
  subject
87
55
  end
88
56
 
89
- it "processes the scenario controllers response via the response pipeline" do
90
- expect(response_pipeline).to receive(:process).with(activation_response)
91
-
92
- subject
93
- end
94
-
95
- end
96
-
97
- context "when a request to clear the scenarios has been received" do
98
-
99
- subject { delete "/http_stub/scenarios" }
100
-
101
- before(:example) { allow(scenario_controller).to receive(:clear) }
102
-
103
- it "delegates clearing to the scenario controller" do
104
- expect(scenario_controller).to receive(:clear).with(anything)
57
+ it "serves the scenario controllers response" do
58
+ expect(activation_response).to receive(:serve_on).with(an_instance_of(app_class))
105
59
 
106
60
  subject
107
61
  end
108
62
 
109
- it "responds with a 200 status code" do
110
- subject
111
-
112
- expect(response.status).to eql(200)
113
- end
114
-
115
63
  end
116
64
 
117
65
  end