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
@@ -4,34 +4,13 @@ module HttpStub
4
4
 
5
5
  class Memory
6
6
 
7
- DEFAULT_STATUS = "Started".freeze
8
- INITIALIZED_STATUS = "Initialized".freeze
7
+ attr_reader :scenario_registry, :stubs, :session_registry
9
8
 
10
- SESSION_ID = HttpStub::Server::Session::MEMORY_SESSION_ID
11
-
12
- private_constant :DEFAULT_STATUS, :INITIALIZED_STATUS, :SESSION_ID
13
-
14
- attr_reader :status, :scenarios, :sessions
15
-
16
- def initialize(session_configuration)
17
- @status = DEFAULT_STATUS
18
- @scenarios = HttpStub::Server::Registry.new("scenario")
19
- @session = HttpStub::Server::Session::Session.new(SESSION_ID, @scenarios, HttpStub::Server::Session::Empty)
20
- @sessions = HttpStub::Server::Session::Registry.new(session_configuration, @scenarios, @session)
21
- end
22
-
23
- def initialized!
24
- @status = INITIALIZED_STATUS
25
- end
26
-
27
- def stubs
28
- @session.stubs
29
- end
30
-
31
- def reset(logger)
32
- @scenarios.clear(logger)
33
- @sessions.clear(logger)
34
- @status = DEFAULT_STATUS
9
+ def initialize(configurator_state)
10
+ initial_state = HttpStub::Server::Memory::InitialState.new(configurator_state)
11
+ @scenario_registry = HttpStub::Server::Scenario::Registry.new(initial_state.load_scenarios)
12
+ @stubs = initial_state.load_stubs(@scenario_registry)
13
+ @session_registry = HttpStub::Server::Session::Registry.new(@scenario_registry, @stubs)
35
14
  end
36
15
 
37
16
  end
@@ -3,9 +3,11 @@ module HttpStub
3
3
 
4
4
  class Registry
5
5
 
6
+ delegate :find_all, to: :@models
7
+
6
8
  def initialize(model_name, models=[])
7
9
  @model_name = model_name
8
- @models = models
10
+ @models = models.reverse
9
11
  end
10
12
 
11
13
  def add(model, logger)
@@ -4,15 +4,15 @@ module HttpStub
4
4
 
5
5
  class Factory
6
6
 
7
- def initialize(session_configuration, server_memory)
7
+ def initialize(session_identifier_setting, server_memory)
8
+ @session_identifier_strategy = HttpStub::Server::Session::IdentifierStrategy.new(session_identifier_setting)
8
9
  @server_memory = server_memory
9
- @session_identifier_strategy = HttpStub::Server::Session::IdentifierStrategy.new(session_configuration)
10
10
  end
11
11
 
12
12
  def create(rack_request, sinatra_parameters, logger)
13
13
  sinatra_request = HttpStub::Server::Request::SinatraRequest.new(rack_request, sinatra_parameters)
14
14
  session_id = @session_identifier_strategy.identifier_for(sinatra_request)
15
- session = @server_memory.sessions.find_or_create(session_id, logger)
15
+ session = @server_memory.session_registry.find_or_create(session_id, logger)
16
16
  HttpStub::Server::Request::Request.new(sinatra_request, session_id, session)
17
17
  end
18
18
 
@@ -3,15 +3,21 @@ module HttpStub
3
3
 
4
4
  class Response
5
5
 
6
- def self.ok(opts={})
7
- HttpStub::Server::Stub::Response::Text.new(
8
- { "headers" => {}, "body" => "OK" }.merge(opts).merge("status" => 200)
9
- )
6
+ class << self
7
+
8
+ def ok(opts={})
9
+ HttpStub::Server::Stub::Response.create({ body: "OK" }.merge(opts).merge(status: 200))
10
+ end
11
+
12
+ def invalid_request(cause)
13
+ HttpStub::Server::Stub::Response.create(status: 400, body: cause.to_s)
14
+ end
15
+
10
16
  end
11
17
 
12
18
  OK = ok.freeze
13
- NOT_FOUND = HttpStub::Server::Stub::Response::Text.new("status" => 404, "body" => "NOT FOUND").freeze
14
- EMPTY = HttpStub::Server::Stub::Response::Text.new.freeze
19
+ NOT_FOUND = HttpStub::Server::Stub::Response.create(status: 404, body: "NOT FOUND").freeze
20
+ EMPTY = HttpStub::Server::Stub::Response.create.freeze
15
21
 
16
22
  end
17
23
 
@@ -3,8 +3,8 @@ module HttpStub
3
3
 
4
4
  module Scenario
5
5
 
6
- def self.create(args)
7
- HttpStub::Server::Scenario::Scenario.new(args)
6
+ def self.create(hash)
7
+ HttpStub::Server::Scenario::Scenario.new(hash)
8
8
  end
9
9
 
10
10
  end
@@ -5,13 +5,7 @@ module HttpStub
5
5
  class Controller
6
6
 
7
7
  def initialize(server_memory)
8
- @scenario_registry = server_memory.scenarios
9
- end
10
-
11
- def register(request, logger)
12
- scenario = HttpStub::Server::Scenario.create(HttpStub::Server::Scenario::Parser.parse(request))
13
- @scenario_registry.add(scenario, logger)
14
- HttpStub::Server::Response::OK
8
+ @scenario_registry = server_memory.scenario_registry
15
9
  end
16
10
 
17
11
  def find(request, logger)
@@ -26,12 +20,8 @@ module HttpStub
26
20
  scenario_names = request.parameters[:name] ? [request.parameters[:name] ] : request.parameters[:names]
27
21
  scenario_names.each { |name| request.session.activate_scenario!(name, logger) }
28
22
  HttpStub::Server::Response::OK
29
- rescue HttpStub::Server::Scenario::NotFoundError
30
- HttpStub::Server::Response::NOT_FOUND
31
- end
32
-
33
- def clear(logger)
34
- @scenario_registry.clear(logger)
23
+ rescue HttpStub::Server::Scenario::NotFoundError => error
24
+ HttpStub::Server::Response.invalid_request(error)
35
25
  end
36
26
 
37
27
  end
@@ -0,0 +1,25 @@
1
+ module HttpStub
2
+ module Server
3
+ module Scenario
4
+
5
+ class Registry
6
+
7
+ delegate :find, :find_all, :all, to: :@scenario_registry
8
+
9
+ def initialize(scenarios)
10
+ @scenario_registry = HttpStub::Server::Registry.new("scenario", scenarios)
11
+ end
12
+
13
+ def stubs_activated_by(scenario, logger)
14
+ scenario.stubs + scenario.triggered_scenarios.map(&:name).map do |triggered_scenario_name|
15
+ triggered_scenario = @scenario_registry.find(triggered_scenario_name, logger)
16
+ raise HttpStub::Server::Scenario::NotFoundError, triggered_scenario_name unless triggered_scenario
17
+ stubs_activated_by(triggered_scenario, logger)
18
+ end.flatten
19
+ end
20
+
21
+ end
22
+
23
+ end
24
+ end
25
+ end
@@ -6,12 +6,17 @@ module HttpStub
6
6
 
7
7
  attr_reader :name, :links, :stubs, :triggered_scenarios
8
8
 
9
- def initialize(args)
10
- @args = args
11
- @name = args["name"]
12
- @links = HttpStub::Server::Scenario::Links.new(@name)
13
- @stubs = create_stubs(args["stubs"])
14
- @triggered_scenarios = create_triggers(args["triggered_scenario_names"])
9
+ def initialize(hash)
10
+ @args = hash
11
+ @name = hash[:name]
12
+ @links = HttpStub::Server::Scenario::Links.new(@name)
13
+ @initially_activated_flag = hash[:activated]
14
+ @stubs = create_stubs(hash[:stubs])
15
+ @triggered_scenarios = create_triggers(hash[:triggered_scenario_names])
16
+ end
17
+
18
+ def initially_activated?
19
+ !!@initially_activated_flag
15
20
  end
16
21
 
17
22
  def matches?(name, _logger)
@@ -24,8 +29,8 @@ module HttpStub
24
29
 
25
30
  private
26
31
 
27
- def create_stubs(stubs_args)
28
- stubs_args.map { |stub_args| HttpStub::Server::Stub.create(stub_args) }
32
+ def create_stubs(stub_hashes)
33
+ stub_hashes.map { |hash| HttpStub::Server::Stub.create(hash) }
29
34
  end
30
35
 
31
36
  def create_triggers(scenario_names)
@@ -3,7 +3,6 @@ module HttpStub
3
3
 
4
4
  module Session
5
5
 
6
- MEMORY_SESSION_ID = "http_stub_memory".freeze
7
6
  TRANSACTIONAL_SESSION_ID = "http_stub_transactional".freeze
8
7
 
9
8
  ID_ATTRIBUTE_NAME = :http_stub_session_id
@@ -4,29 +4,28 @@ module HttpStub
4
4
 
5
5
  class Controller
6
6
 
7
- def initialize(session_configuration, server_memory)
8
- @session_configuration = session_configuration
9
- @server_memory = server_memory
7
+ def initialize(server_memory)
8
+ @server_memory = server_memory
10
9
  end
11
10
 
12
11
  def find(request, logger)
13
- @server_memory.sessions.find(request.session_id, logger)
12
+ @server_memory.session_registry.find(request.session_id, logger)
14
13
  end
15
14
 
16
15
  def find_transactional(logger)
17
- @server_memory.sessions.find(HttpStub::Server::Session::TRANSACTIONAL_SESSION_ID, logger)
16
+ @server_memory.session_registry.find(HttpStub::Server::Session::TRANSACTIONAL_SESSION_ID, logger)
18
17
  end
19
18
 
20
19
  def find_all
21
- @server_memory.sessions.all
20
+ @server_memory.session_registry.all
22
21
  end
23
22
 
24
23
  def delete(request, logger)
25
- @server_memory.sessions.delete(request.session_id, logger)
24
+ @server_memory.session_registry.delete(request.session_id, logger)
26
25
  end
27
26
 
28
27
  def clear(logger)
29
- @server_memory.sessions.clear(logger)
28
+ @server_memory.session_registry.clear(logger)
30
29
  end
31
30
 
32
31
  end
@@ -4,8 +4,15 @@ module HttpStub
4
4
 
5
5
  class IdentifierStrategy
6
6
 
7
- def initialize(session_configuration)
8
- @identifier_configuration = session_configuration.identifier_configuration
7
+ DEFAULT_CONFIGURATION = [
8
+ { parameter: HttpStub::Server::Session::ID_ATTRIBUTE_NAME },
9
+ { header: HttpStub::Server::Session::ID_ATTRIBUTE_NAME }
10
+ ].freeze
11
+
12
+ private_constant :DEFAULT_CONFIGURATION
13
+
14
+ def initialize(identifier_setting)
15
+ @identifier_configuration = DEFAULT_CONFIGURATION + (identifier_setting ? [ identifier_setting ] : [])
9
16
  end
10
17
 
11
18
  def identifier_for(sinatra_request)
@@ -4,29 +4,23 @@ module HttpStub
4
4
 
5
5
  class Registry
6
6
 
7
- delegate :find, :all, :delete, to: :@session_registry
7
+ delegate :find, :all, :delete, :clear, to: :@session_registry
8
8
 
9
- def initialize(session_configuration, scenario_registry, memory_session)
10
- @session_configuration = session_configuration
11
- @scenario_registry = scenario_registry
12
- @memory_session = memory_session
13
- @session_registry = HttpStub::Server::Registry.new("session", [ memory_session ])
9
+ def initialize(scenario_registry, initial_stubs)
10
+ @scenario_registry = scenario_registry
11
+ @initial_stubs = initial_stubs
12
+ @session_registry = HttpStub::Server::Registry.new("session")
14
13
  end
15
14
 
16
15
  def find_or_create(session_id, logger)
17
- effective_session_id = session_id || @session_configuration.default_identifier
16
+ effective_session_id = session_id || HttpStub::Server::Session::TRANSACTIONAL_SESSION_ID
18
17
  @session_registry.find(effective_session_id, logger) || create(effective_session_id, logger)
19
18
  end
20
19
 
21
- def clear(logger)
22
- @memory_session.clear(logger)
23
- @session_registry.replace([ @memory_session ], logger)
24
- end
25
-
26
20
  private
27
21
 
28
22
  def create(session_id, logger)
29
- HttpStub::Server::Session::Session.new(session_id, @scenario_registry, @memory_session).tap do |session|
23
+ HttpStub::Server::Session::Session.new(session_id, @scenario_registry, @initial_stubs).tap do |session|
30
24
  @session_registry.add(session, logger)
31
25
  end
32
26
  end
@@ -6,10 +6,10 @@ module HttpStub
6
6
 
7
7
  attr_reader :id
8
8
 
9
- def initialize(id, scenario_registry, memory_session)
9
+ def initialize(id, scenario_registry, initial_stubs)
10
10
  @id = id
11
11
  @scenario_registry = scenario_registry
12
- @stub_registry = HttpStub::Server::Stub::Registry.new(memory_session)
12
+ @stub_registry = HttpStub::Server::Stub::Registry.new(initial_stubs)
13
13
  @stub_match_registry = HttpStub::Server::Registry.new("stub match")
14
14
  @stub_miss_registry = HttpStub::Server::Registry.new("stub miss")
15
15
  end
@@ -21,8 +21,8 @@ module HttpStub
21
21
  def activate_scenario!(name, logger)
22
22
  found_scenario = @scenario_registry.find(name, logger)
23
23
  raise HttpStub::Server::Scenario::NotFoundError, name unless found_scenario
24
- @stub_registry.concat(found_scenario.stubs, logger)
25
- found_scenario.triggered_scenarios.each { |scenario| activate_scenario!(scenario.name, logger) }
24
+ activated_stubs = @scenario_registry.stubs_activated_by(found_scenario, logger)
25
+ @stub_registry.concat(activated_stubs, logger)
26
26
  end
27
27
 
28
28
  def add_stub(stub, logger)
@@ -69,10 +69,6 @@ module HttpStub
69
69
  @stub_registry.reset(logger)
70
70
  end
71
71
 
72
- def clear(logger)
73
- [ @stub_miss_registry, @stub_match_registry, @stub_registry ].each { |registry| registry.clear(logger) }
74
- end
75
-
76
72
  end
77
73
 
78
74
  end
@@ -0,0 +1,13 @@
1
+ module HttpStub
2
+ module Server
3
+
4
+ class StdoutLogger
5
+
6
+ def self.info(message)
7
+ puts message
8
+ end
9
+
10
+ end
11
+
12
+ end
13
+ end
@@ -3,10 +3,11 @@ module HttpStub
3
3
 
4
4
  module Stub
5
5
 
6
- def self.create(args)
7
- HttpStub::Server::Stub::Stub.new(args)
6
+ def self.create(hash)
7
+ HttpStub::Server::Stub::Stub.new(hash)
8
8
  end
9
9
 
10
10
  end
11
+
11
12
  end
12
13
  end
@@ -4,12 +4,6 @@ module HttpStub
4
4
 
5
5
  class Controller
6
6
 
7
- def register(request, logger)
8
- stub = HttpStub::Server::Stub.create(HttpStub::Server::Stub::Parser.parse(request))
9
- request.session.add_stub(stub, logger)
10
- HttpStub::Server::Response.ok("headers" => { "location" => stub.uri })
11
- end
12
-
13
7
  def match(request, logger)
14
8
  stub = request.session.match(request, logger)
15
9
  response = stub ? stub.response_for(request) : HttpStub::Server::Response::NOT_FOUND
@@ -30,10 +24,6 @@ module HttpStub
30
24
  request.session.reset(logger)
31
25
  end
32
26
 
33
- def clear(request, logger)
34
- request.session.clear(logger)
35
- end
36
-
37
27
  end
38
28
 
39
29
  end
@@ -7,6 +7,7 @@ module HttpStub
7
7
  private
8
8
 
9
9
  def initialize
10
+ @stub_id = ""
10
11
  @uri = ""
11
12
  @match_rules = HttpStub::Server::Stub::Match::Rules::EMPTY
12
13
  @response = HttpStub::Server::Response::EMPTY
@@ -15,7 +16,7 @@ module HttpStub
15
16
 
16
17
  public
17
18
 
18
- attr_reader :uri, :match_rules, :response, :triggers
19
+ attr_reader :stub_id, :uri, :match_rules, :response, :triggers
19
20
 
20
21
  def matches?(_criteria, _logger)
21
22
  false
@@ -7,7 +7,7 @@ module HttpStub
7
7
 
8
8
  def last_match(request, logger)
9
9
  result = request.session.last_match(request.parameters.slice(:method, :uri), logger)
10
- result ? HttpStub::Server::Response.ok("body" => result.to_json) : HttpStub::Server::Response::NOT_FOUND
10
+ result ? HttpStub::Server::Response.ok(body: result.to_json) : HttpStub::Server::Response::NOT_FOUND
11
11
  end
12
12
 
13
13
  def matches(request)
@@ -6,7 +6,8 @@ module HttpStub
6
6
  class ExactValueMatcher
7
7
 
8
8
  def self.match?(stub_value, actual_value)
9
- stub_value == actual_value
9
+ stub_match_value = stub_value && !stub_value.is_a?(Symbol) ? stub_value.to_s : stub_value
10
+ stub_match_value == actual_value
10
11
  end
11
12
 
12
13
  end
@@ -5,7 +5,7 @@ module HttpStub
5
5
 
6
6
  class OmittedValueMatcher
7
7
 
8
- OMITTED_CONTROL_VALUE = "control:omitted".freeze
8
+ OMITTED_CONTROL_VALUE = :omitted
9
9
 
10
10
  private_constant :OMITTED_CONTROL_VALUE
11
11