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,29 +0,0 @@
1
- describe HttpStub::Server::Application::ResponsePipeline do
2
-
3
- let(:application) { instance_double(Sinatra::Base) }
4
-
5
- let(:response_pipeline) { described_class.new(application) }
6
-
7
- describe "#process" do
8
-
9
- let(:response) { double(HttpStub::Server::Stub::Response::Base, delay_in_seconds: 5, serve_on: nil) }
10
-
11
- before(:example) { allow(response_pipeline).to receive(:sleep) }
12
-
13
- subject { response_pipeline.process(response) }
14
-
15
- it "sleeps for the duration declared in the response" do
16
- expect(response_pipeline).to receive(:sleep).with(5)
17
-
18
- subject
19
- end
20
-
21
- it "serves the response via the application" do
22
- expect(response).to receive(:serve_on).with(application)
23
-
24
- subject
25
- end
26
-
27
- end
28
-
29
- end
@@ -1,30 +0,0 @@
1
- describe HttpStub::Server::Application::ResponseSupport do
2
-
3
- context "when included in an application" do
4
- include_context "rack application test"
5
-
6
- class HttpStub::Server::Application::ResponseSupportTestApplication < Sinatra::Base
7
-
8
- include HttpStub::Server::Application::ResponseSupport
9
-
10
- get "/response_support_test" do
11
- halt 200
12
- end
13
-
14
- end
15
-
16
- let(:app_class) { HttpStub::Server::Application::ResponseSupportTestApplication }
17
-
18
- it "creates a response pipeline for the application when handling a request" do
19
- expect(HttpStub::Server::Application::ResponsePipeline).to receive(:new).with(an_instance_of(app_class))
20
-
21
- issue_a_request
22
- end
23
-
24
- def issue_a_request
25
- get "/response_support_test"
26
- end
27
-
28
- end
29
-
30
- end
@@ -1,64 +0,0 @@
1
- describe HttpStub::Server::Scenario::Parser do
2
-
3
- let(:parser) { described_class }
4
-
5
- describe "::parse" do
6
-
7
- let(:payload) { HttpStub::ScenarioFixture.new.server_payload }
8
- let(:payload_parameter) { payload.to_json }
9
- let(:parameters) { { "payload" => payload_parameter } }
10
- let(:request) { instance_double(HttpStub::Server::Request::Request, parameters: parameters) }
11
-
12
- let(:parsed_payload) { payload.clone }
13
-
14
- subject { parser.parse(request) }
15
-
16
- before(:example) { allow(JSON).to receive(:parse).and_return(parsed_payload) }
17
-
18
- it "parses the JSON payload in the request" do
19
- expect(JSON).to receive(:parse).with(payload_parameter)
20
-
21
- subject
22
- end
23
-
24
- it "returns the modified payload" do
25
- expect(subject).to eql(parsed_payload)
26
- end
27
-
28
- context "when the request contains many stubs" do
29
-
30
- let(:payload) { HttpStub::ScenarioFixture.new.with_stubs!(3).server_payload }
31
-
32
- let(:stub_payloads) { payload["stubs"] }
33
-
34
- before(:example) do
35
- stub_payloads.each { |stub_payload| allow(HttpStub::Server::Stub::Payload).to receive(:modify!) }
36
- end
37
-
38
- it "modifies each stub payload" do
39
- stub_payloads.each do |stub_payload|
40
- expect(HttpStub::Server::Stub::Payload).to receive(:modify!).with(stub_payload, request)
41
- end
42
-
43
- subject
44
- end
45
-
46
- end
47
-
48
- context "when the request contains one stub" do
49
-
50
- let(:payload) { HttpStub::ScenarioFixture.new.with_stubs!(1).server_payload }
51
-
52
- let(:stub_payload) { payload["stubs"].first }
53
-
54
- it "modifies the stub payload" do
55
- expect(HttpStub::Server::Stub::Payload).to receive(:modify!).with(stub_payload, request)
56
-
57
- subject
58
- end
59
-
60
- end
61
-
62
- end
63
-
64
- end
@@ -1,94 +0,0 @@
1
- describe HttpStub::Server::Session::Configuration do
2
-
3
- let(:identifier_setting) { nil }
4
-
5
- let(:configuration) { described_class.new(identifier_setting) }
6
-
7
- describe "#identifer_configuration" do
8
-
9
- subject { configuration.identifier_configuration }
10
-
11
- shared_examples_for "an identifier configuration starting with the default configuration" do
12
-
13
- it "has the http_stub session id parameter as the first entry" do
14
- expect(subject.first).to eql(parameter: :http_stub_session_id)
15
- end
16
-
17
- it "has the http_stub session id header as the second entry" do
18
- expect(subject[1]).to eql(header: :http_stub_session_id)
19
- end
20
-
21
- end
22
-
23
- context "when a setting is provided" do
24
-
25
- let(:identifier_setting) { { header: :custom_session_header } }
26
-
27
- it_behaves_like "an identifier configuration starting with the default configuration"
28
-
29
- it "returns a configuration containing the setting as the last entry" do
30
- expect(subject.last).to eql(header: :custom_session_header)
31
- end
32
-
33
- it "returns a configuration containing only the default settings and the provided setting" do
34
- expect(subject.size).to eql(3)
35
- end
36
-
37
- end
38
-
39
- context "when no setting is provided" do
40
-
41
- let(:identifier_setting) { nil }
42
-
43
- it_behaves_like "an identifier configuration starting with the default configuration"
44
-
45
- it "returns a configuration containing only the default settings" do
46
- expect(subject.size).to eql(2)
47
- end
48
-
49
- end
50
-
51
- end
52
-
53
- describe "#default_identifier" do
54
-
55
- subject { configuration.default_identifier }
56
-
57
- it "has an original value that is the memory session id" do
58
- expect(subject).to eql(HttpStub::Server::Session::MEMORY_SESSION_ID)
59
- end
60
-
61
- context "when changed" do
62
-
63
- let(:new_identifier) { "some other identifier" }
64
-
65
- before(:example) { configuration.default_identifier = new_identifier }
66
-
67
- it "returns the newly assigned value" do
68
- expect(subject).to eql(new_identifier)
69
- end
70
-
71
- end
72
-
73
- end
74
-
75
- describe "#reset" do
76
-
77
- subject { configuration.reset }
78
-
79
- context "when the default indentifier has changed" do
80
-
81
- before(:example) { configuration.default_identifier = "some other identifier" }
82
-
83
- it "reverts the default identifier to it's original value" do
84
- subject
85
-
86
- expect(configuration.default_identifier).to eql(HttpStub::Server::Session::MEMORY_SESSION_ID)
87
-
88
- end
89
-
90
- end
91
-
92
- end
93
-
94
- end
@@ -1,47 +0,0 @@
1
- describe HttpStub::Server::Status::Controller do
2
-
3
- let(:session_configuration) { instance_double(HttpStub::Server::Session::Configuration) }
4
- let(:server_memory) { instance_double(HttpStub::Server::Memory::Memory) }
5
-
6
- let(:controller) { described_class.new(session_configuration, server_memory) }
7
-
8
- describe "#current" do
9
-
10
- let(:current_memory_status) { "Some status" }
11
-
12
- subject { controller.current }
13
-
14
- before(:example) { allow(server_memory).to receive(:status).and_return(current_memory_status) }
15
-
16
- it "returns the current status of the servers memory" do
17
- expect(subject).to eql(current_memory_status)
18
- end
19
-
20
- end
21
-
22
- describe "#initialized" do
23
-
24
- subject { controller.initialized }
25
-
26
- before(:example) do
27
- allow(server_memory).to receive(:initialized!)
28
- allow(session_configuration).to receive(:default_identifier=)
29
- end
30
-
31
- it "marks the servers memory as intialized" do
32
- expect(server_memory).to receive(:initialized!)
33
-
34
- subject
35
- end
36
-
37
- it "establishes the transactional session as the default session" do
38
- expect(session_configuration).to(
39
- receive(:default_identifier=).with(HttpStub::Server::Session::TRANSACTIONAL_SESSION_ID)
40
- )
41
-
42
- subject
43
- end
44
-
45
- end
46
-
47
- end
@@ -1,56 +0,0 @@
1
- describe HttpStub::Server::Stub::Parser do
2
-
3
- let(:parser) { described_class }
4
-
5
- describe "::parse" do
6
-
7
- let(:parameters) { {} }
8
- let(:body_hash) { {} }
9
- let(:request) do
10
- instance_double(HttpStub::Server::Request::Request, parameters: parameters, body: body_hash.to_json)
11
- end
12
-
13
- subject { parser.parse(request) }
14
-
15
- context "when the request contains a payload parameter" do
16
-
17
- let(:payload) { HttpStub::StubFixture.new.server_payload }
18
- let(:parameters) { { "payload" => payload.to_json } }
19
-
20
- it "modifies the payload" do
21
- expect(HttpStub::Server::Stub::Payload).to receive(:modify!).with(payload, request)
22
-
23
- subject
24
- end
25
-
26
- it "returns the modified payload" do
27
- modified_payload = { modified_payload_key: "modified payload value" }
28
- allow(HttpStub::Server::Stub::Payload).to receive(:modify!).and_return(modified_payload)
29
-
30
- expect(subject).to eql(modified_payload)
31
- end
32
-
33
- end
34
-
35
- context "when the request body contains the payload (for API backwards compatibility)" do
36
-
37
- let(:body_hash) { HttpStub::StubFixture.new.server_payload }
38
-
39
- it "modifies the body" do
40
- expect(HttpStub::Server::Stub::Payload).to receive(:modify!).with(body_hash, request)
41
-
42
- subject
43
- end
44
-
45
- it "returns the modified body" do
46
- modified_body = { modified_body_key: "modified body value" }
47
- allow(HttpStub::Server::Stub::Payload).to receive(:modify!).and_return(modified_body)
48
-
49
- expect(subject).to eql(modified_body)
50
- end
51
-
52
- end
53
-
54
- end
55
-
56
- end
@@ -1,23 +0,0 @@
1
- describe HttpStub::Server::Stub::Payload::BaseUriModifier do
2
-
3
- let(:modifier) { described_class }
4
-
5
- describe "::modify!" do
6
-
7
- let(:payload) { HttpStub::StubFixture.new.server_payload }
8
- let(:base_uri) { "http://base.uri:8888" }
9
- let(:request) { instance_double(HttpStub::Server::Request::Request, base_uri: base_uri) }
10
-
11
- subject { modifier.modify!(payload, request) }
12
-
13
- it "alters the payload to include the servers base uri" do
14
- expected_payload = payload.clone.merge("base_uri" => base_uri)
15
-
16
- subject
17
-
18
- expect(payload).to eql(expected_payload)
19
- end
20
-
21
- end
22
-
23
- end
@@ -1,84 +0,0 @@
1
- describe HttpStub::Server::Stub::Payload::ResponseBodyModifier do
2
-
3
- describe "::modify!" do
4
-
5
- let(:parameters) { {} }
6
- let(:request) { instance_double(HttpStub::Server::Request::Request, parameters: parameters) }
7
-
8
- let!(:original_payload) { payload.clone }
9
-
10
- subject { described_class.modify!(payload, request) }
11
-
12
- context "when the payload contains a response file and has a corresponding file parameter" do
13
-
14
- let(:payload_fixture) { HttpStub::StubFixture.new.with_file_response! }
15
- let(:payload) { payload_fixture.server_payload }
16
- let(:parameters) { { "response_file_#{payload_fixture.id}" => payload_fixture.file_parameter } }
17
-
18
- it "modifies the payload to have a response body that contains the file parameter value" do
19
- expected_payload = payload.clone.tap { |hash| hash["response"]["body"] = payload_fixture.file_parameter }
20
-
21
- subject
22
-
23
- expect(payload).to eql(expected_payload)
24
- end
25
-
26
- end
27
-
28
- context "when the payload contains triggered stubs" do
29
-
30
- let(:payload_fixture) { HttpStub::StubFixture.new.with_triggered_stubs!(trigger_fixtures) }
31
- let(:payload) { payload_fixture.server_payload }
32
-
33
- context "and the trigger payloads contain response text" do
34
-
35
- let(:trigger_fixtures) { (1..3).map { HttpStub::StubFixture.new.with_text_response! } }
36
-
37
- it "leaves the payload unchanged" do
38
- subject
39
-
40
- expect(payload).to eql(original_payload)
41
- end
42
-
43
- end
44
-
45
- context "and the trigger payloads contain a response file with corresponding file parameters" do
46
-
47
- let(:trigger_fixtures) { (1..3).map { HttpStub::StubFixture.new.with_file_response! } }
48
- let(:file_parameters) { trigger_fixtures.map(&:file_parameter) }
49
- let(:parameters) do
50
- trigger_fixtures.reduce({}) do |result, fixture|
51
- result.merge("response_file_#{fixture.id}" => fixture.file_parameter)
52
- end
53
- end
54
-
55
- it "modifies the payload to have trigger response bodies replaced by the files" do
56
- expected_payload = payload.clone
57
- expected_payload["triggers"]["stubs"].zip(file_parameters).each do |trigger, file_parameter|
58
- trigger["response"]["body"] = file_parameter
59
- end
60
-
61
- subject
62
-
63
- expect(payload).to eql(expected_payload)
64
- end
65
-
66
- end
67
-
68
- end
69
-
70
- context "when the payload does not contain a response file and has no triggered stubs" do
71
-
72
- let(:payload) { HttpStub::StubFixture.new.server_payload }
73
-
74
- it "leaves the payload unchanged" do
75
- subject
76
-
77
- expect(payload).to eql(original_payload)
78
- end
79
-
80
- end
81
-
82
- end
83
-
84
- end
@@ -1,33 +0,0 @@
1
- describe HttpStub::Server::Stub::Payload do
2
-
3
- describe "::modify!" do
4
-
5
- let(:payload) { HttpStub::StubFixture.new.server_payload }
6
- let(:request) { instance_double(HttpStub::Server::Request::Request) }
7
-
8
- subject { described_class.modify!(payload, request) }
9
-
10
- before(:example) do
11
- allow(HttpStub::Server::Stub::Payload::BaseUriModifier).to receive(:modify!)
12
- allow(HttpStub::Server::Stub::Payload::ResponseBodyModifier).to receive(:modify!)
13
- end
14
-
15
- it "modifies the payloads base uri" do
16
- expect(HttpStub::Server::Stub::Payload::BaseUriModifier).to receive(:modify!).with(payload, request)
17
-
18
- subject
19
- end
20
-
21
- it "modifies the payloads request body" do
22
- expect(HttpStub::Server::Stub::Payload::ResponseBodyModifier).to receive(:modify!).with(payload, request)
23
-
24
- subject
25
- end
26
-
27
- it "returns the potentially modified payload" do
28
- expect(subject).to be(payload)
29
- end
30
-
31
- end
32
-
33
- end