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,231 +0,0 @@
1
- describe HttpStub::Configurer::Request::Stub do
2
-
3
- let(:fixture) { HttpStub::StubFixture.new }
4
- let(:stub_response) { instance_double(HttpStub::Configurer::Request::StubResponse) }
5
- let(:stub_triggers) { instance_double(HttpStub::Configurer::Request::Triggers) }
6
-
7
- let(:stub) { HttpStub::Configurer::Request::Stub.new(fixture.configurer_payload) }
8
-
9
- before(:example) do
10
- allow(HttpStub::Configurer::Request::StubResponse).to receive(:new).and_return(stub_response)
11
- allow(HttpStub::Configurer::Request::Triggers).to receive(:new).and_return(stub_triggers)
12
- end
13
-
14
- describe "#payload" do
15
-
16
- subject { stub.payload }
17
-
18
- before(:example) do
19
- allow(HttpStub::Configurer::Request::ControllableValue).to receive(:format)
20
- allow(stub_response).to receive(:payload)
21
- allow(stub_triggers).to receive(:payload)
22
- end
23
-
24
- context "when request headers" do
25
-
26
- context "are provided" do
27
-
28
- it "formats the headers into control values" do
29
- expect(HttpStub::Configurer::Request::ControllableValue).to receive(:format).with(fixture.request.headers)
30
-
31
- subject
32
- end
33
-
34
- end
35
-
36
- context "are not provided" do
37
-
38
- before(:example) { fixture.request.headers = nil }
39
-
40
- it "formats an empty header hash" do
41
- expect(HttpStub::Configurer::Request::ControllableValue).to receive(:format).with({})
42
-
43
- subject
44
- end
45
-
46
- end
47
-
48
- end
49
-
50
- context "when request parameters" do
51
-
52
- context "are provided" do
53
-
54
- it "formats the request parameters into control values" do
55
- expect(HttpStub::Configurer::Request::ControllableValue).to receive(:format).with(fixture.request.parameters)
56
-
57
- subject
58
- end
59
-
60
- end
61
-
62
- context "are not provided" do
63
-
64
- before(:example) { fixture.request.parameters = nil }
65
-
66
- it "formats an empty parameter hash" do
67
- expect(HttpStub::Configurer::Request::ControllableValue).to receive(:format).with({})
68
-
69
- subject
70
- end
71
-
72
- end
73
-
74
- end
75
-
76
- context "when a request body" do
77
-
78
- context "is provided" do
79
-
80
- it "formats the request body into a control value" do
81
- expect(HttpStub::Configurer::Request::ControllableValue).to receive(:format).with(fixture.request.body)
82
-
83
- subject
84
- end
85
-
86
- end
87
-
88
- context "is not provided" do
89
-
90
- before(:example) { fixture.request.body = nil }
91
-
92
- it "formats an empty parameter hash" do
93
- expect(HttpStub::Configurer::Request::ControllableValue).to receive(:format).with({})
94
-
95
- subject
96
- end
97
-
98
- end
99
-
100
- end
101
-
102
- it "creates a stub response with the provided response options" do
103
- expect(HttpStub::Configurer::Request::StubResponse).to(
104
- receive(:new).with(anything, fixture.configurer_payload[:response]).and_return(stub_response)
105
- )
106
-
107
- subject
108
- end
109
-
110
- it "creates stub triggers with the provided triggers options" do
111
- expect(HttpStub::Configurer::Request::Triggers).to(
112
- receive(:new).with(fixture.configurer_payload[:triggers]).and_return(stub_triggers)
113
- )
114
-
115
- subject
116
- end
117
-
118
- context "builds a hash that" do
119
-
120
- it "has an entry containing the control value representation of the uri" do
121
- allow(HttpStub::Configurer::Request::ControllableValue).to(
122
- receive(:format).with(fixture.request.uri).and_return("uri as a string")
123
- )
124
-
125
- expect(subject).to include(uri: "uri as a string")
126
- end
127
-
128
- it "has an entry for the method option" do
129
- expect(subject).to include(method: fixture.request.http_method)
130
- end
131
-
132
- it "has an entry containing the string representation of the request headers" do
133
- allow(HttpStub::Configurer::Request::ControllableValue).to(
134
- receive(:format).with(fixture.request.headers).and_return("request headers as string")
135
- )
136
-
137
- expect(subject).to include(headers: "request headers as string")
138
- end
139
-
140
- it "has an entry containing the string representation of the request parameters" do
141
- allow(HttpStub::Configurer::Request::ControllableValue).to(
142
- receive(:format).with(fixture.request.parameters).and_return("request parameters as string")
143
- )
144
-
145
- expect(subject).to include(parameters: "request parameters as string")
146
- end
147
-
148
- it "has an entry containing the response payload" do
149
- allow(stub_response).to receive(:payload).and_return("response payload")
150
-
151
- expect(subject).to include(response: "response payload")
152
- end
153
-
154
- it "has an entry containing the triggers payload" do
155
- allow(stub_triggers).to receive(:payload).and_return("triggers payload")
156
-
157
- expect(subject).to include(triggers: "triggers payload")
158
- end
159
-
160
- end
161
-
162
- end
163
-
164
- describe "#response_files" do
165
-
166
- let(:stub_response_file) { nil }
167
- let(:triggers_response_files) { [] }
168
-
169
- subject { stub.response_files }
170
-
171
- before(:example) do
172
- allow(stub_response).to receive(:file).and_return(stub_response_file)
173
- allow(stub_triggers).to receive(:response_files).and_return(triggers_response_files)
174
- end
175
-
176
- context "when the response contains a file" do
177
-
178
- let(:stub_response_file) { instance_double(HttpStub::Configurer::Request::StubResponseFile) }
179
-
180
- let(:triggers_response_files) { [] }
181
-
182
- it "includes the stub response's file" do
183
- expect(subject).to include(stub_response_file)
184
- end
185
-
186
- end
187
-
188
- context "when the triggers contain files" do
189
-
190
- let(:triggers_response_files) do
191
- (1..3).map { instance_double(HttpStub::Configurer::Request::StubResponseFile) }
192
- end
193
-
194
- it "includes the triggers files" do
195
- expect(subject).to include(*triggers_response_files)
196
- end
197
-
198
- end
199
-
200
- context "when both the response and triggers contain files" do
201
-
202
- let(:stub_response_file) { instance_double(HttpStub::Configurer::Request::StubResponseFile) }
203
- let(:triggers_response_files) do
204
- (1..3).map { instance_double(HttpStub::Configurer::Request::StubResponseFile) }
205
- end
206
-
207
- it "is all the files" do
208
- expect(subject).to eql(([ stub_response_file ] + triggers_response_files).flatten)
209
- end
210
-
211
- end
212
-
213
- context "when neither the response or triggers contain files" do
214
-
215
- it "returns an empty array" do
216
- expect(subject).to eql([])
217
- end
218
-
219
- end
220
-
221
- end
222
-
223
- describe "#to_s" do
224
-
225
- it "returns the request uri" do
226
- expect(stub.to_s).to eql(fixture.request.uri)
227
- end
228
-
229
- end
230
-
231
- end
@@ -1,101 +0,0 @@
1
- describe HttpStub::Configurer::Request::Triggers do
2
-
3
- let(:scenario_names) { (1..3).map { |i| "Some scenario #{i}" } }
4
- let(:stubs) { (1..3).map { instance_double(HttpStub::Configurer::Request::Stub) } }
5
-
6
- let(:triggers) { HttpStub::Configurer::Request::Triggers.new(scenario_names: scenario_names, stubs: stubs) }
7
-
8
- describe "#response_files" do
9
-
10
- let(:stubs) do
11
- response_files_per_stub.map do |response_files|
12
- instance_double(HttpStub::Configurer::Request::Stub, response_files: response_files)
13
- end
14
- end
15
-
16
- subject { triggers.response_files }
17
-
18
- context "when many stubs contains response files" do
19
-
20
- let(:response_files_per_stub) do
21
- (1..3).map { (1..3).map { HttpStub::Configurer::Request::StubResponseFile } }
22
- end
23
-
24
- it "returns all the response files" do
25
- expect(subject).to eql(response_files_per_stub.flatten)
26
- end
27
-
28
- end
29
-
30
- context "when one stub contains response files" do
31
-
32
- let(:response_files) { (1..3).map { HttpStub::Configurer::Request::StubResponseFile } }
33
- let(:response_files_per_stub) { (1..3).map { |i| i % 2 == 0 ? response_files : [] } }
34
-
35
- it "returns the response files" do
36
- expect(subject).to eql(response_files)
37
- end
38
-
39
- end
40
-
41
- context "when no stubs contain response files" do
42
-
43
- let(:response_files_per_stub) { (1..3).map { [] } }
44
-
45
- it "returns an empty array" do
46
- expect(subject).to eql([])
47
- end
48
-
49
- end
50
-
51
- end
52
-
53
- describe "#payload" do
54
-
55
- let(:stub_payloads) { stubs.each_with_index.map { |i| "Stub payload #{i}" } }
56
-
57
- subject { triggers.payload }
58
-
59
- before(:example) do
60
- stubs.zip(stub_payloads).each { |stub, payload| allow(stub).to receive(:payload).and_return(payload) }
61
- end
62
-
63
- context "when scenario names are provided" do
64
-
65
- it "has a scenario names entry containing the names" do
66
- expect(subject).to include(scenario_names: scenario_names)
67
- end
68
-
69
- end
70
-
71
- context "when no scenario names are provided" do
72
-
73
- let(:scenario_names) { [] }
74
-
75
- it "has an scenario names entry that is empty" do
76
- expect(subject).to include(scenario_names: [])
77
- end
78
-
79
- end
80
-
81
- context "when stubs are provided" do
82
-
83
- it "has a stubs entry containing the payload of the stubs" do
84
- expect(subject).to include(stubs: stub_payloads)
85
- end
86
-
87
- end
88
-
89
- context "when stub are not provided" do
90
-
91
- let(:stubs) { [] }
92
-
93
- it "has a stubs entry that is empty" do
94
- expect(subject).to include(stubs: [])
95
- end
96
-
97
- end
98
-
99
- end
100
-
101
- end
@@ -1,35 +0,0 @@
1
- describe HttpStub::Configurer::Server::BufferedCommandProcessor do
2
-
3
- let(:command_processor) { instance_double(HttpStub::Configurer::Server::CommandProcessor) }
4
-
5
- let(:buffered_command_processor) { HttpStub::Configurer::Server::BufferedCommandProcessor.new(command_processor) }
6
-
7
- describe "#flush" do
8
-
9
- subject { buffered_command_processor.flush }
10
-
11
- describe "when a number of commands have been buffered via processing" do
12
-
13
- let(:commands) { (1..3).map { instance_double(HttpStub::Configurer::Server::Command) } }
14
-
15
- before(:example) { commands.each { |command| buffered_command_processor.process(command) } }
16
-
17
- it "processes the buffered commands via the command processor" do
18
- commands.each { |command| expect(command_processor).to receive(:process).with(command) }
19
-
20
- subject
21
- end
22
-
23
- end
24
-
25
- describe "when no commands have been buffered" do
26
-
27
- it "executes without error" do
28
- expect { subject }.not_to raise_error
29
- end
30
-
31
- end
32
-
33
- end
34
-
35
- end
@@ -1,75 +0,0 @@
1
- describe HttpStub::Configurer::Server::CommandProcessor do
2
-
3
- let(:server_host) { "localhost" }
4
- let(:server_port) { 8001 }
5
- let(:server_base_uri) { "http://#{server_host}:#{server_port}" }
6
- let(:configuration) do
7
- double(HttpStub::Configurer::Server::Configuration, base_uri: server_base_uri, host: server_host, port: server_port)
8
- end
9
-
10
- let(:command_processor) { HttpStub::Configurer::Server::CommandProcessor.new(configuration) }
11
-
12
- describe "#process" do
13
-
14
- let(:command) do
15
- HttpStub::Configurer::Server::Command.new(request: request, description: "performing an operation")
16
- end
17
-
18
- subject { command_processor.process(command) }
19
-
20
- context "when the server is running" do
21
- include_context "server integration"
22
-
23
- describe "and the server responds with a 200 response" do
24
-
25
- let(:request) { create_get_request("stubs") }
26
-
27
- it "executes without error" do
28
- expect { subject }.not_to raise_error
29
- end
30
-
31
- it "returns the server response" do
32
- expect(subject).to be_a(Net::HTTPResponse)
33
- end
34
-
35
- end
36
-
37
- describe "and the server responds with a non-200 response" do
38
-
39
- let(:request) { create_get_request("causes_error") }
40
-
41
- it "raises an exception that includes the server base URI" do
42
- expect { subject }.to raise_error(/#{server_base_uri}/)
43
- end
44
-
45
- it "raises an exception that includes the commands description" do
46
- expect { subject }.to raise_error(/performing an operation/)
47
- end
48
-
49
- end
50
-
51
- end
52
-
53
- context "when the server is unavailable" do
54
-
55
- subject { command_processor.process(command, open_timeout: 1) }
56
-
57
- let(:request) { create_get_request("does/not/exist") }
58
-
59
- it "raises an exception that includes the server base URI" do
60
- expect { subject }.to raise_error(/#{server_base_uri}/)
61
- end
62
-
63
- it "raises an exception that includes the commands description" do
64
- expect { subject }.to raise_error(/performing an operation/)
65
- end
66
-
67
- end
68
-
69
- def create_get_request(path)
70
- HttpStub::Configurer::Request::Http::Basic.new(method: :get, path: path)
71
- end
72
-
73
- end
74
-
75
- end
@@ -1,26 +0,0 @@
1
- describe HttpStub::Configurer::Server::Command do
2
-
3
- let(:http_request) { double("HttpRequest") }
4
- let(:request) { double("HttpStubRequest", to_http_request: http_request) }
5
- let(:description) { "Some Description" }
6
- let(:args) { { request: request, description: description } }
7
-
8
- let(:command) { HttpStub::Configurer::Server::Command.new(args) }
9
-
10
- describe "#http_request" do
11
-
12
- it "returns the provided request adapted to a http request" do
13
- expect(command.http_request).to eql(http_request)
14
- end
15
-
16
- end
17
-
18
- describe "#description" do
19
-
20
- it "exposes the provided description" do
21
- expect(command.description).to eql(description)
22
- end
23
-
24
- end
25
-
26
- end