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,65 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module DSL
4
-
5
- class StubBuilder
6
-
7
- attr_reader :request, :response, :triggers
8
-
9
- def initialize(parent_builder=nil, &block)
10
- @request = {}
11
- @response = {}
12
- @triggers = { scenarios: [], stubs: [] }
13
- self.merge!(parent_builder) if parent_builder
14
- self.invoke(&block) if block_given?
15
- end
16
-
17
- def match_requests(args)
18
- self.tap { @request.deep_merge!(args) }
19
- end
20
-
21
- def schema(type, definition)
22
- { schema: { type: type, definition: definition } }
23
- end
24
-
25
- def respond_with(args={}, &_block)
26
- resolved_args = args
27
- resolved_args = yield HttpStub::Configurer::DSL::RequestReferencer.new if block_given?
28
- self.tap { @response.deep_merge!(resolved_args) }
29
- end
30
-
31
- def trigger(args)
32
- resolved_args = args.clone
33
- resolved_args[:scenarios] ||= resolved_args[:scenario] ? [ resolved_args[:scenario] ] : []
34
- resolved_args[:stubs] ||= resolved_args[:stub] ? [ resolved_args[:stub] ] : []
35
- @triggers[:scenarios].concat(resolved_args[:scenarios])
36
- @triggers[:stubs].concat(resolved_args[:stubs])
37
- self
38
- end
39
-
40
- def invoke(&block)
41
- block.arity.zero? ? self.instance_eval(&block) : (yield self)
42
- end
43
-
44
- def merge!(stub_builder)
45
- self.match_requests(stub_builder.request)
46
- self.respond_with(stub_builder.response)
47
- self.trigger(stub_builder.triggers)
48
- end
49
-
50
- def build
51
- HttpStub::Configurer::Request::Stub.new(
52
- request: @request,
53
- response: @response,
54
- triggers: {
55
- scenario_names: @triggers[:scenarios],
56
- stubs: @triggers[:stubs].map(&:build)
57
- }
58
- )
59
- end
60
-
61
- end
62
-
63
- end
64
- end
65
- end
@@ -1,23 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
-
4
- module Part
5
-
6
- def configure(configurer)
7
- @configurer = configurer
8
- configure_methods = self.methods.find_all { |method| method.to_s =~ /^configure_.+_(stub|scenario)s?$/ }
9
- configure_methods.each { |configure_method| self.send(configure_method) }
10
- end
11
-
12
- def method_missing(name, *args, &block)
13
- @configurer.respond_to?(name, true) ? @configurer.send(name, *args, &block) : super
14
- end
15
-
16
- def respond_to_missing?(name, include_private = false)
17
- @configurer.respond_to?(name, include_private)
18
- end
19
-
20
- end
21
-
22
- end
23
- end
@@ -1,19 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module Request
4
-
5
- class ControllableValue
6
-
7
- CONTROL_FORMATTERS = [ HttpStub::Configurer::Request::Regexpable,
8
- HttpStub::Configurer::Request::Omittable ].freeze
9
-
10
- private_constant :CONTROL_FORMATTERS
11
-
12
- def self.format(value)
13
- CONTROL_FORMATTERS.reduce(value) { |result, formatter| formatter.format(result) }
14
- end
15
-
16
- end
17
- end
18
- end
19
- end
@@ -1,27 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module Request
4
- module Http
5
-
6
- class Basic
7
-
8
- def initialize(args)
9
- @request_method = args[:method]
10
- @path = args[:path]
11
- @headers = args[:headers] || {}
12
- @parameters = args[:parameters]
13
- end
14
-
15
- def to_http_request
16
- http_request_class = Net::HTTP.const_get(@request_method.to_s.capitalize)
17
- http_request_class.new("/http_stub/#{@path}", @headers.stringify_keys).tap do |http_request|
18
- http_request.set_form_data(@parameters) if @parameters
19
- end
20
- end
21
-
22
- end
23
-
24
- end
25
- end
26
- end
27
- end
@@ -1,33 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module Request
4
- module Http
5
-
6
- class Factory
7
-
8
- class << self
9
-
10
- def multipart(path, model, headers={})
11
- HttpStub::Configurer::Request::Http::Multipart.new(path: path, headers: headers, model: model)
12
- end
13
-
14
- def get(path, headers={})
15
- HttpStub::Configurer::Request::Http::Basic.new(method: :get, path: path, headers: headers)
16
- end
17
-
18
- def post(path, parameters={})
19
- HttpStub::Configurer::Request::Http::Basic.new(method: :post, path: path, parameters: parameters)
20
- end
21
-
22
- def delete(path, headers={})
23
- HttpStub::Configurer::Request::Http::Basic.new(method: :delete, path: path, headers: headers)
24
- end
25
-
26
- end
27
-
28
- end
29
-
30
- end
31
- end
32
- end
33
- end
@@ -1,34 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module Request
4
- module Http
5
-
6
- class Multipart
7
-
8
- def initialize(args)
9
- @model = args[:model]
10
- @path = args[:path]
11
- @headers = args[:headers] || {}
12
- end
13
-
14
- def to_http_request
15
- Net::HTTP::Post::Multipart.new("/http_stub/#{@path}", parameters, @headers.stringify_keys)
16
- end
17
-
18
- private
19
-
20
- def parameters
21
- { payload: @model.payload.to_json }.tap do |parameters|
22
- @model.response_files.each do |response_file|
23
- parameters["response_file_#{response_file.id}"] =
24
- UploadIO.new(response_file.path, response_file.type, response_file.name)
25
- end
26
- end
27
- end
28
-
29
- end
30
-
31
- end
32
- end
33
- end
34
- end
@@ -1,26 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module Request
4
-
5
- class Omittable
6
-
7
- class << self
8
-
9
- def format(value)
10
- value.is_a?(Hash) ? format_hash(value) : value
11
- end
12
-
13
- private
14
-
15
- def format_hash(hash)
16
- hash.each_with_object({}) do |(key, value), result|
17
- result[key] = value == :omitted ? "control:omitted" : value
18
- end
19
- end
20
-
21
- end
22
-
23
- end
24
- end
25
- end
26
- end
@@ -1,33 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module Request
4
-
5
- class Regexpable
6
-
7
- class << self
8
-
9
- FORMATTERS = { Regexp => :format_regexp, Hash => :format_hash }.freeze
10
-
11
- private_constant :FORMATTERS
12
-
13
- def format(value)
14
- formatter = FORMATTERS.find { |formatter_entry| value.is_a?(formatter_entry[0]) }
15
- formatter ? self.send(formatter[1], value) : value
16
- end
17
-
18
- private
19
-
20
- def format_regexp(regexp)
21
- "regexp:#{regexp.source.gsub(%r{\\\/}, "/")}"
22
- end
23
-
24
- def format_hash(hash)
25
- hash.each_with_object({}) { |entry, result| result[entry[0]] = format(entry[1]) }
26
- end
27
-
28
- end
29
-
30
- end
31
- end
32
- end
33
- end
@@ -1,29 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module Request
4
-
5
- class Scenario
6
-
7
- def initialize(args)
8
- @name = args[:name]
9
- @stubs = args[:stubs]
10
- @triggered_scenario_names = args[:triggered_scenario_names]
11
- end
12
-
13
- def payload
14
- { name: @name, stubs: @stubs.map(&:payload), triggered_scenario_names: @triggered_scenario_names }
15
- end
16
-
17
- def response_files
18
- @stubs.map(&:response_files).flatten
19
- end
20
-
21
- def to_s
22
- @name
23
- end
24
-
25
- end
26
-
27
- end
28
- end
29
- end
@@ -1,39 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module Request
4
-
5
- class Stub
6
-
7
- def initialize(args)
8
- @id = SecureRandom.uuid
9
- @request = args[:request]
10
- @response = HttpStub::Configurer::Request::StubResponse.new(@id, args[:response])
11
- @triggers = HttpStub::Configurer::Request::Triggers.new(args[:triggers])
12
- end
13
-
14
- def payload
15
- {
16
- id: @id,
17
- uri: HttpStub::Configurer::Request::ControllableValue.format(@request[:uri]),
18
- method: @request[:method],
19
- headers: HttpStub::Configurer::Request::ControllableValue.format(@request[:headers] || {}),
20
- parameters: HttpStub::Configurer::Request::ControllableValue.format(@request[:parameters] || {}),
21
- body: HttpStub::Configurer::Request::ControllableValue.format(@request[:body] || {}),
22
- response: @response.payload,
23
- triggers: @triggers.payload
24
- }
25
- end
26
-
27
- def response_files
28
- ([ @response.file ] + @triggers.response_files).compact
29
- end
30
-
31
- def to_s
32
- @request[:uri]
33
- end
34
-
35
- end
36
-
37
- end
38
- end
39
- end
@@ -1,38 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module Request
4
-
5
- class StubResponse
6
-
7
- def initialize(id, args)
8
- @id = id
9
- @status = args[:status] || ""
10
- @headers = (args[:headers] || {}).with_indifferent_and_insensitive_access
11
- @body = args[:json].try(:to_json) || args[:body]
12
- @delay_in_seconds = args[:delay_in_seconds] || ""
13
- end
14
-
15
- def payload
16
- { status: @status, headers: @headers, body: @body, delay_in_seconds: @delay_in_seconds }
17
- end
18
-
19
- def file
20
- contains_file? ? create_response_file : nil
21
- end
22
-
23
- private
24
-
25
- def contains_file?
26
- @body.is_a?(Hash) && @body.key?(:file)
27
- end
28
-
29
- def create_response_file
30
- args = { id: @id, type: @headers["content-type"] }.merge(@body[:file])
31
- HttpStub::Configurer::Request::StubResponseFile.new(args)
32
- end
33
-
34
- end
35
-
36
- end
37
- end
38
- end
@@ -1,20 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module Request
4
-
5
- class StubResponseFile
6
-
7
- attr_reader :id, :path, :name, :type
8
-
9
- def initialize(args)
10
- @id = args[:id]
11
- @path = args[:path]
12
- @name = args[:name]
13
- @type = args[:type]
14
- end
15
-
16
- end
17
-
18
- end
19
- end
20
- end
@@ -1,25 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module Request
4
-
5
- class Triggers
6
-
7
- def initialize(args)
8
- @scenario_names = args[:scenario_names]
9
- @stubs = args[:stubs]
10
- end
11
-
12
- def response_files
13
- @stubs.map(&:response_files).flatten
14
- end
15
-
16
- def payload
17
- { scenario_names: @scenario_names, stubs: @stubs.map(&:payload) }
18
- end
19
-
20
- end
21
-
22
- end
23
- end
24
-
25
- end
@@ -1,24 +0,0 @@
1
- module HttpStub
2
- module Configurer
3
- module Server
4
-
5
- class BufferedCommandProcessor
6
-
7
- def initialize(command_processor)
8
- @command_processor = command_processor
9
- @commands = []
10
- end
11
-
12
- def process(command)
13
- @commands << command
14
- end
15
-
16
- def flush
17
- @commands.each { |command| @command_processor.process(command) }
18
- end
19
-
20
- end
21
-
22
- end
23
- end
24
- end