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,197 +0,0 @@
1
- describe HttpStub::Server::Stub::Response::File do
2
-
3
- let(:headers) { {} }
4
- let(:file_name) { "sample.txt" }
5
- let(:temp_file_path) { "#{HttpStub::Spec::RESOURCES_DIR}/#{file_name}" }
6
- let(:body) { { filename: file_name, tempfile: File.new(temp_file_path) } }
7
- let(:additional_args) { {} }
8
- let(:args) { { "headers" => headers, "body" => body }.merge(additional_args) }
9
-
10
- let(:response_file) { HttpStub::Server::Stub::Response::File.new(args) }
11
-
12
- it "is a base response" do
13
- expect(response_file).to be_a(HttpStub::Server::Stub::Response::Base)
14
- end
15
-
16
- describe "#uri" do
17
-
18
- subject { response_file.uri }
19
-
20
- it "is prefixed with 'file://' to support display within a hyperlink" do
21
- expect(subject).to start_with("file://")
22
- end
23
-
24
- it "concludes with the path to the temp file provided" do
25
- expect(subject).to end_with(temp_file_path)
26
- end
27
-
28
- end
29
-
30
- describe "#with_values_from" do
31
-
32
- let(:request) { instance_double(HttpStub::Server::Request::Request) }
33
- let(:interpolated_headers) { { interpolated_header_name: "some interpolated header value" } }
34
- let(:response_headers) do
35
- instance_double(HttpStub::Server::Stub::Response::Attribute::Headers, with_values_from: interpolated_headers)
36
- end
37
-
38
- subject { response_file.with_values_from(request) }
39
-
40
- before(:example) do
41
- allow(HttpStub::Server::Stub::Response::Attribute::Headers).to receive(:new).and_return(response_headers)
42
- ensure_response_file_is_created!
43
- end
44
-
45
- it "interpolates headers with values from the request" do
46
- expect(response_headers).to receive(:with_values_from).with(request)
47
-
48
- subject
49
- end
50
-
51
- it "creates a new response file with the interpolated headers" do
52
- expect(described_class).to receive(:new).with(hash_including("headers" => interpolated_headers))
53
-
54
- subject
55
- end
56
-
57
- it "creates a new response file with other arguments preserved" do
58
- expect(described_class).to receive(:new).with(hash_including("body" => body))
59
-
60
- subject
61
- end
62
-
63
- it "returns the created file response" do
64
- new_file_response = instance_double(described_class)
65
- expect(described_class).to receive(:new).and_return(new_file_response)
66
-
67
- expect(subject).to eql(new_file_response)
68
- end
69
-
70
- def ensure_response_file_is_created!
71
- response_file
72
- end
73
-
74
- end
75
-
76
- describe "#serve_on" do
77
-
78
- let(:status) { 321 }
79
- let(:additional_args) { { "status" => status } }
80
- let(:server_response) { instance_double(Sinatra::Response, status: 200) }
81
- let(:server) { instance_double(Sinatra::Base, response: server_response) }
82
-
83
- subject { response_file.serve_on(server) }
84
-
85
- it "sends the temp file via the server" do
86
- expect(server).to receive(:send_file).with(temp_file_path, anything)
87
-
88
- subject
89
- end
90
-
91
- it "sends the file without any provided response status to ensure that 304 responses are honoured" do
92
- expect(server).to receive(:send_file).with(anything, hash_excluding(:status))
93
-
94
- subject
95
- end
96
-
97
- it "updates the responses status to reflect the status evaluated by Sinatra" do
98
- expect(server).to receive(:send_file).ordered
99
- expect(server_response).to receive(:status).and_return(304).ordered
100
-
101
- subject
102
-
103
- expect(response_file.status).to eql(304)
104
- end
105
-
106
- context "when a content type header is specified" do
107
-
108
- let(:content_type) { "plain/text" }
109
- let(:headers) { { "content-type" => content_type } }
110
-
111
- it "sends the file with a type that is the provided content type" do
112
- expect(server).to receive(:send_file).with(anything, hash_including(type: content_type))
113
-
114
- subject
115
- end
116
-
117
- end
118
-
119
- context "when no content type header is specified" do
120
-
121
- let(:headers) { {} }
122
-
123
- it "sends the file with a type of application/octet-stream" do
124
- expect(server).to receive(:send_file).with(anything, hash_including(type: "application/octet-stream"))
125
-
126
- subject
127
- end
128
-
129
- end
130
-
131
- context "when a last modified header is specified" do
132
-
133
- let(:last_modified_date) { "Thu, 14 May 2015 12:56:00 GMT" }
134
- let(:headers) { { "last-modified" => last_modified_date } }
135
-
136
- it "sends the file with the last modified date" do
137
- expect(server).to receive(:send_file).with(anything, hash_including(last_modified: last_modified_date))
138
-
139
- subject
140
- end
141
-
142
- end
143
-
144
- context "when no last modified header is specified" do
145
-
146
- let(:headers) { {} }
147
-
148
- it "sends the file without a last modified date" do
149
- expect(server).to receive(:send_file).with(anything, hash_excluding(:last_modified))
150
-
151
- subject
152
- end
153
-
154
- end
155
-
156
- context "when a content disposition header is specified" do
157
-
158
- let(:content_disposition) { "attachment" }
159
- let(:headers) { { "content-disposition" => content_disposition } }
160
-
161
- it "sends the file with a disposition whose value is the provided content disposition" do
162
- expect(server).to receive(:send_file).with(anything, hash_including(disposition: content_disposition))
163
-
164
- subject
165
- end
166
-
167
- end
168
-
169
- context "when a content disposition header is not specified" do
170
-
171
- let(:headers) { {} }
172
-
173
- it "sends the file without a disposition" do
174
- expect(server).to receive(:send_file).with(anything, hash_excluding(:disposition))
175
-
176
- subject
177
- end
178
-
179
- end
180
-
181
- end
182
-
183
- describe "#to_hash" do
184
-
185
- subject { response_file.to_hash }
186
-
187
- it "contains the files uri" do
188
- expect(subject).to include(file_uri: response_file.uri)
189
- end
190
-
191
- it "contains the standard response elements" do
192
- expect(subject).to include(headers: response_file.headers)
193
- end
194
-
195
- end
196
-
197
- end
@@ -1,182 +0,0 @@
1
- describe HttpStub::Server::Stub::Response::Text do
2
-
3
- let(:status) { 123 }
4
- let(:headers) { {} }
5
- let(:body) { "Some text body" }
6
- let(:args) { { "status" => status, "headers" => headers, "body" => body } }
7
-
8
- let(:response_text) { HttpStub::Server::Stub::Response::Text.new(args) }
9
-
10
- describe "#body" do
11
-
12
- it "returns the value provided in the arguments" do
13
- expect(response_text.body).to eql("Some text body")
14
- end
15
-
16
- end
17
-
18
- it "is a base response" do
19
- expect(response_text).to be_a(HttpStub::Server::Stub::Response::Base)
20
- end
21
-
22
- describe "#with_values_from" do
23
-
24
- let(:request) { instance_double(HttpStub::Server::Request::Request) }
25
- let(:interpolated_headers) { { interpolated_header_name: "some interpolated header value" } }
26
- let(:response_headers) do
27
- instance_double(HttpStub::Server::Stub::Response::Attribute::Headers, with_values_from: interpolated_headers)
28
- end
29
- let(:interpolated_body) { "some interpolated body" }
30
- let(:response_body) do
31
- instance_double(HttpStub::Server::Stub::Response::Attribute::Body, with_values_from: interpolated_body )
32
- end
33
-
34
- subject { response_text.with_values_from(request) }
35
-
36
- before(:example) do
37
- allow(HttpStub::Server::Stub::Response::Attribute::Headers).to receive(:new).and_return(response_headers)
38
- allow(HttpStub::Server::Stub::Response::Attribute::Body).to receive(:new).and_return(response_body)
39
- ensure_response_text_is_created!
40
- end
41
-
42
- it "interpolates headers with values from the request" do
43
- expect(response_headers).to receive(:with_values_from).with(request)
44
-
45
- subject
46
- end
47
-
48
- it "creates a new response text with the interpolated headers" do
49
- expect(described_class).to receive(:new).with(hash_including("headers" => interpolated_headers))
50
-
51
- subject
52
- end
53
-
54
- it "creates a new response text with the interpolated body" do
55
- expect(described_class).to receive(:new).with(hash_including("body" => interpolated_body))
56
-
57
- subject
58
- end
59
-
60
- it "creates a new response text with other arguments preserved" do
61
- expect(described_class).to receive(:new).with(hash_including("status" => status))
62
-
63
- subject
64
- end
65
-
66
- it "returns the created text response" do
67
- new_text_response = instance_double(described_class)
68
- expect(described_class).to receive(:new).and_return(new_text_response)
69
-
70
- expect(subject).to eql(new_text_response)
71
- end
72
-
73
- def ensure_response_text_is_created!
74
- response_text
75
- end
76
-
77
- end
78
-
79
- describe "#serve_on" do
80
-
81
- let(:server) { instance_double(Sinatra::Base) }
82
-
83
- subject { response_text.serve_on(server) }
84
-
85
- it "halts processing of the servers request" do
86
- expect(server).to receive(:halt)
87
-
88
- subject
89
- end
90
-
91
- it "halts with the responses status" do
92
- expect(server).to receive(:halt).with(status, anything, anything)
93
-
94
- subject
95
- end
96
-
97
- context "when headers are provided" do
98
-
99
- context "that contain a content-type" do
100
-
101
- let(:headers) do
102
- {
103
- "content-type" => "some/content/type",
104
- "another-header" => "some value",
105
- "yet-another-header" => "some other value"
106
- }
107
- end
108
-
109
- it "halts with the provided headers" do
110
- expect(server).to receive(:halt).with(anything, headers, anything)
111
-
112
- subject
113
- end
114
-
115
- end
116
-
117
- context "that do not contain a content-type" do
118
-
119
- let(:headers) do
120
- {
121
- "a-header" => "some value",
122
- "another-header" => "another value",
123
- "yet-another-header" => "yet another value"
124
- }
125
- end
126
-
127
- it "halts with the provided headers" do
128
- expect(server).to receive(:halt).with(anything, hash_including(headers), anything)
129
-
130
- subject
131
- end
132
-
133
- it "halts with a default content-type of application/json" do
134
- expect_server_to_halt_with_default_content_type
135
-
136
- subject
137
- end
138
-
139
- end
140
-
141
- end
142
-
143
- context "when no headers are provided" do
144
-
145
- let(:headers) { {} }
146
-
147
- it "halts with a default content-type of application/json" do
148
- expect_server_to_halt_with_default_content_type
149
-
150
- subject
151
- end
152
-
153
- end
154
-
155
- it "halts with the responses body" do
156
- expect(server).to receive(:halt).with(anything, anything, body)
157
-
158
- subject
159
- end
160
-
161
- def expect_server_to_halt_with_default_content_type
162
- expected_content_type_entry = { "content-type" => "application/json" }
163
- expect(server).to receive(:halt).with(anything, hash_including(expected_content_type_entry), anything)
164
- end
165
-
166
- end
167
-
168
- describe "#to_hash" do
169
-
170
- subject { response_text.to_hash }
171
-
172
- it "contains the responses body" do
173
- expect(subject).to include(body: response_text.body)
174
- end
175
-
176
- it "contains the standard response elements" do
177
- expect(subject).to include(headers: response_text.headers)
178
- end
179
-
180
- end
181
-
182
- end
Binary file
@@ -1 +0,0 @@
1
- Some sample text
@@ -1,24 +0,0 @@
1
- shared_context "configurer integration" do
2
- include_context "server integration"
3
-
4
- let(:configurer_specification) { {} }
5
- let(:effective_configurer_specification) do
6
- { class: HttpStub::EmptyConfigurer, initialize: true }.merge(configurer_specification)
7
- end
8
-
9
- let(:server_specification) { effective_configurer_specification.slice(:name, :port) }
10
-
11
- let(:configurer) { effective_configurer_specification[:class] }
12
- let(:stub_server) { configurer.stub_server }
13
-
14
- let(:stub_registrator) { HttpStub::StubRegistrator.new(stub_server) }
15
-
16
- before(:example) do
17
- stub_server.host = server_host
18
- stub_server.port = server_port
19
- configurer.initialize! if effective_configurer_specification[:initialize]
20
- end
21
-
22
- after(:example) { stub_server.reset! }
23
-
24
- end
@@ -1,7 +0,0 @@
1
- module HttpStub
2
-
3
- class EmptyConfigurer
4
- include HttpStub::Configurer
5
- end
6
-
7
- end
@@ -1,33 +0,0 @@
1
- module HttpStub
2
-
3
- class ScenarioFixture
4
-
5
- def initialize
6
- @name = "Some Scenario Name"
7
- @stub_fixtures = []
8
- @triggered_scenario_names = []
9
- end
10
-
11
- def with_name!(name)
12
- self.tap { @name = name }
13
- end
14
-
15
- def with_stubs!(number)
16
- self.tap { @stub_fixtures.concat((1..number).map { HttpStub::StubFixture.new }) }
17
- end
18
-
19
- def with_triggered_scenario_names!(names)
20
- self.tap { @triggered_scenario_names.concat(names) }
21
- end
22
-
23
- def server_payload
24
- {
25
- "name" => @name,
26
- "stubs" => @stub_fixtures.map(&:server_payload),
27
- "triggered_scenario_names" => @triggered_scenario_names
28
- }
29
- end
30
-
31
- end
32
-
33
- end