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,17 +0,0 @@
1
- module HttpStub
2
- module Server
3
- module Stub
4
- module Payload
5
-
6
- class BaseUriModifier
7
-
8
- def self.modify!(payload, request)
9
- payload["base_uri"] = request.base_uri
10
- end
11
-
12
- end
13
-
14
- end
15
- end
16
- end
17
- end
@@ -1,21 +0,0 @@
1
- module HttpStub
2
- module Server
3
- module Stub
4
- module Payload
5
-
6
- class ResponseBodyModifier
7
-
8
- def self.modify!(payload, request)
9
- response_file = request.parameters["response_file_#{payload["id"]}"]
10
- payload["response"]["body"] = response_file if response_file
11
- if payload["triggers"] && payload["triggers"]["stubs"]
12
- payload["triggers"]["stubs"].each { |trigger_payload| modify!(trigger_payload, request) }
13
- end
14
- end
15
-
16
- end
17
-
18
- end
19
- end
20
- end
21
- end
@@ -1,32 +0,0 @@
1
- module HttpStub
2
- module Server
3
- module Stub
4
- module Response
5
- module Attribute
6
-
7
- class Body < ::String
8
-
9
- def initialize(stub_body)
10
- @stub_body = stub_body
11
- super stub_body.nil? ? "" : stub_body
12
- end
13
-
14
- def with_values_from(request)
15
- if self.provided?
16
- HttpStub::Server::Stub::Response::Attribute::Interpolator.interpolate(@stub_body, request)
17
- else
18
- nil
19
- end
20
- end
21
-
22
- def provided?
23
- !@stub_body.nil?
24
- end
25
-
26
- end
27
-
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,32 +0,0 @@
1
- module HttpStub
2
- module Server
3
- module Stub
4
- module Response
5
- module Attribute
6
-
7
- class Headers < ::Hash
8
- include HttpStub::Extensions::Core::Hash::Formatted
9
-
10
- def initialize(stub_headers)
11
- super(stub_headers, ":")
12
- end
13
-
14
- def with_values_from(request)
15
- self.each_with_object({}) do |(name, value), result|
16
- result[name] = value.is_a?(String) ? interpolate(value, request) : value
17
- end
18
- end
19
-
20
- private
21
-
22
- def interpolate(value, request)
23
- HttpStub::Server::Stub::Response::Attribute::Interpolator.interpolate(value, request)
24
- end
25
-
26
- end
27
-
28
- end
29
- end
30
- end
31
- end
32
- end
@@ -1,26 +0,0 @@
1
- module HttpStub
2
- module Server
3
- module Stub
4
- module Response
5
- module Attribute
6
-
7
- module Interpolator
8
-
9
- CHAIN = [
10
- HttpStub::Server::Stub::Response::Attribute::Interpolator::Headers,
11
- HttpStub::Server::Stub::Response::Attribute::Interpolator::Parameters
12
- ].freeze
13
-
14
- private_constant :CHAIN
15
-
16
- def self.interpolate(value, request)
17
- CHAIN.reduce(value) { |result, interpolator| interpolator.interpolate(result, request) }
18
- end
19
-
20
- end
21
-
22
- end
23
- end
24
- end
25
- end
26
- end
@@ -1,27 +0,0 @@
1
- module HttpStub
2
- module Server
3
- module Stub
4
- module Response
5
- module Attribute
6
- module Interpolator
7
-
8
- class Headers
9
-
10
- CONTROL_VALUE_REGEXP = /control:request\.headers\[([^\]]+)\]/
11
-
12
- private_constant :CONTROL_VALUE_REGEXP
13
-
14
- def self.interpolate(value, request)
15
- value.scan(CONTROL_VALUE_REGEXP).flatten.reduce(value) do |result, header_name|
16
- result.gsub("control:request.headers[#{header_name}]", request.headers[header_name] || "")
17
- end
18
- end
19
-
20
- end
21
-
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,27 +0,0 @@
1
- module HttpStub
2
- module Server
3
- module Stub
4
- module Response
5
- module Attribute
6
- module Interpolator
7
-
8
- class Parameters
9
-
10
- CONTROL_VALUE_REGEXP = /control:request\.parameters\[([^\]]+)\]/
11
-
12
- private_constant :CONTROL_VALUE_REGEXP
13
-
14
- def self.interpolate(value, request)
15
- value.scan(CONTROL_VALUE_REGEXP).flatten.reduce(value) do |result, parameter_name|
16
- result.gsub("control:request.parameters[#{parameter_name}]", request.parameters[parameter_name] || "")
17
- end
18
- end
19
-
20
- end
21
-
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,61 +0,0 @@
1
- module HttpStub
2
- module Server
3
- module Stub
4
- module Response
5
-
6
- class Base
7
-
8
- DEFAULT_ARGS = { "status" => 200, "delay_in_seconds" => 0 }.freeze
9
-
10
- private_constant :DEFAULT_ARGS
11
-
12
- class << self
13
-
14
- def add_default_headers(headers)
15
- default_headers.merge!(headers)
16
- end
17
-
18
- def merge_defaults(args)
19
- args.clone.tap do |result|
20
- headers = result["headers"] ||= {}
21
- DEFAULT_ARGS.each { |key, value| result[key] = value if !result[key] || result[key] == "" }
22
- default_headers.each { |key, value| headers[key] = value if !headers[key] || headers[key] == "" }
23
- end
24
- end
25
-
26
- private
27
-
28
- def default_headers
29
- @default_headers ||= {}
30
- end
31
-
32
- end
33
-
34
- attr_reader :status, :headers, :delay_in_seconds
35
-
36
- def initialize(args={})
37
- @original_args = args
38
- resolved_args = self.class.merge_defaults(args)
39
- @status = resolved_args["status"]
40
- @headers = HttpStub::Server::Stub::Response::Attribute::Headers.new(resolved_args["headers"])
41
- @delay_in_seconds = resolved_args["delay_in_seconds"]
42
- end
43
-
44
- def type
45
- self.class.name.demodulize.underscore
46
- end
47
-
48
- def to_hash
49
- { status: @status, headers: @headers, delay_in_seconds: @delay_in_seconds }
50
- end
51
-
52
- def to_json(*args)
53
- self.to_hash.to_json(*args)
54
- end
55
-
56
- end
57
-
58
- end
59
- end
60
- end
61
- end
@@ -1,45 +0,0 @@
1
- module HttpStub
2
- module Server
3
- module Stub
4
- module Response
5
-
6
- class File < HttpStub::Server::Stub::Response::Base
7
-
8
- add_default_headers "content-type" => "application/octet-stream"
9
-
10
- attr_reader :uri
11
-
12
- def initialize(args)
13
- @file = args["body"][:tempfile]
14
- @uri = "file://#{@file.path}"
15
- super
16
- end
17
-
18
- def with_values_from(request)
19
- self.class.new(@original_args.merge("headers" => @headers.with_values_from(request)))
20
- end
21
-
22
- def serve_on(application)
23
- application.send_file(@file.path, send_options)
24
- @status = application.response.status
25
- end
26
-
27
- def to_hash
28
- super.merge(file_uri: @uri)
29
- end
30
-
31
- private
32
-
33
- def send_options
34
- { type: @headers["content-type"] }.tap do |options|
35
- options[:last_modified] = @headers["last-modified"] if @headers["last-modified"]
36
- options[:disposition] = @headers["content-disposition"] if @headers["content-disposition"]
37
- end
38
- end
39
-
40
- end
41
-
42
- end
43
- end
44
- end
45
- end
@@ -1,35 +0,0 @@
1
- module HttpStub
2
- module Server
3
- module Stub
4
- module Response
5
-
6
- class Text < HttpStub::Server::Stub::Response::Base
7
-
8
- add_default_headers "content-type" => "application/json"
9
-
10
- attr_reader :body
11
-
12
- def initialize(args={})
13
- super
14
- @body = HttpStub::Server::Stub::Response::Attribute::Body.new(args["body"])
15
- end
16
-
17
- def with_values_from(request)
18
- self.class.new(@original_args.merge("headers" => @headers.with_values_from(request),
19
- "body" => @body.with_values_from(request)))
20
- end
21
-
22
- def serve_on(application)
23
- application.halt(@status, @headers.to_hash, @body)
24
- end
25
-
26
- def to_hash
27
- super.merge(body: @body)
28
- end
29
-
30
- end
31
-
32
- end
33
- end
34
- end
35
- end
@@ -1 +0,0 @@
1
- %a{ href: response.uri, class: :file }= response.uri
@@ -1 +0,0 @@
1
- = pp(response.body)
@@ -1,157 +0,0 @@
1
- describe "Configurer initialization acceptance" do
2
- include_context "configurer integration"
3
-
4
- context "when a configurer is initialized" do
5
-
6
- context "that contains a stub" do
7
-
8
- let(:configurer_specification) { { class: HttpStub::Examples::ConfigurerWithTrivialStub } }
9
-
10
- it "registers the stub" do
11
- response = HTTParty.get("#{server_uri}/a_class_stub")
12
-
13
- expect(response.code).to eql(201)
14
- expect(response.body).to eql("Class stub body")
15
- end
16
-
17
- context "and another stub is registered" do
18
-
19
- before(:example) do
20
- stub_server.add_stub! do |stub|
21
- stub.match_requests(uri: "/another_stub", method: :get)
22
- stub.respond_with(body: "Another stub body")
23
- end
24
- end
25
-
26
- context "and the servers stubs are recalled" do
27
-
28
- before(:example) { stub_server.recall_stubs! }
29
-
30
- it "removes the stub just registered" do
31
- response = HTTParty.get("#{server_uri}/another_stub")
32
-
33
- expect(response.code).to eql(404)
34
- end
35
-
36
- it "retains the stub registered during initialization" do
37
- response = HTTParty.get("#{server_uri}/a_class_stub")
38
-
39
- expect(response.code).to eql(201)
40
- expect(response.body).to eql("Class stub body")
41
- end
42
-
43
- end
44
-
45
- end
46
-
47
- context "and the stub is overridden" do
48
-
49
- before(:example) do
50
- stub_server.add_stub! do |stub|
51
- stub.match_requests(uri: "/a_class_stub", method: :get)
52
- stub.respond_with(body: "Other class stub body")
53
- end
54
- end
55
-
56
- context "and the servers stubs are recalled" do
57
-
58
- before(:example) { stub_server.recall_stubs! }
59
-
60
- it "re-establishes the class stub" do
61
- response = HTTParty.get("#{server_uri}/a_class_stub")
62
-
63
- expect(response.code).to eql(201)
64
- expect(response.body).to eql("Class stub body")
65
- end
66
-
67
- end
68
-
69
- end
70
-
71
- end
72
-
73
- context "and the configurer contains an initialize callback" do
74
-
75
- let(:configurer_specification) { { class: HttpStub::Examples::ConfigurerWithInitializeCallback } }
76
-
77
- it "executes the callback" do
78
- response = HTTParty.get("#{server_uri}/stubbed_on_initialize_path")
79
-
80
- expect(response.code).to eql(200)
81
- expect(response.body).to eql("Stubbed on initialize body")
82
- end
83
-
84
- end
85
-
86
- end
87
-
88
- context "when a configurer is uninitialized" do
89
-
90
- let(:configurer_specification) { { class: HttpStub::Examples::ConfigurerWithTrivialStub, initialize: false } }
91
-
92
- context "and the configurer is informed that the server has started" do
93
-
94
- before(:example) { stub_server.has_started! }
95
-
96
- it "does not initialize the configurer" do
97
- expect { stub_server.activate!("an_activator") }.to raise_error(/error occurred activating 'an_activator'/i)
98
- end
99
-
100
- context "and an attempt is made to register a stub" do
101
-
102
- before(:example) do
103
- stub_server.add_stub! do
104
- match_requests(uri: "/some_stub_path", method: :get).respond_with(body: "Some stub body")
105
- end
106
- end
107
-
108
- it "registers the stub in the servers transactional session" do
109
- response = HTTParty.get("#{server_uri}/some_stub_path", request_session_id_header("http_stub_transactional"))
110
-
111
- expect(response.code).to eql(200)
112
- expect(response.body).to eql("Some stub body")
113
- end
114
-
115
- it "does not register the stub in the servers memory session" do
116
- response = HTTParty.get("#{server_uri}/some_stub_path", request_session_id_header("http_stub_memory"))
117
-
118
- expect(response.code).to eql(404)
119
- end
120
-
121
- end
122
-
123
- def request_session_id_header(session_id)
124
- { headers: { "http_stub_session_id" => session_id } }
125
- end
126
-
127
- end
128
-
129
- context "and the configurer has not been informed that the server has started" do
130
-
131
- context "and an attempt is made to activate a stub" do
132
-
133
- it "raises an exception indicating an error occurred during activation" do
134
- expect { stub_server.activate!("an_activator") }.to raise_error(/error occurred activating 'an_activator'/i)
135
- end
136
-
137
- end
138
-
139
- end
140
-
141
- context "and the configurer contains an initialize callback" do
142
-
143
- let(:configurer_specification) do
144
- { class: HttpStub::Examples::ConfigurerWithInitializeCallback, initialize: false }
145
- end
146
-
147
- it "does not execute the callback" do
148
- response = HTTParty.get("#{server_uri}/stubbed_on_initialize_path")
149
-
150
- expect(response.code).to eql(404)
151
- end
152
-
153
- end
154
-
155
- end
156
-
157
- end