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,118 +0,0 @@
1
- describe HttpStub::Configurer::Request::Http::Multipart do
2
-
3
- class HttpStub::Configurer::Request::SomeModel
4
-
5
- attr_reader :payload, :response_files
6
-
7
- def initialize(args)
8
- @payload = args[:payload]
9
- @response_files = args[:response_files]
10
- end
11
-
12
- end
13
-
14
- let(:payload) { { key: "value" } }
15
- let(:response_files) { [] }
16
-
17
- let(:path) { "some/model/path" }
18
- let(:model) { HttpStub::Configurer::Request::SomeModel.new(payload: payload, response_files: response_files) }
19
- let(:args) { { path: path , model: model } }
20
-
21
- let(:multipart_request) { HttpStub::Configurer::Request::Http::Multipart.new(args) }
22
-
23
- describe "#to_http_request" do
24
-
25
- subject { multipart_request.to_http_request }
26
-
27
- it "creates a HTTP multipart request" do
28
- expect(Net::HTTP::Post::Multipart).to receive(:new)
29
-
30
- subject
31
- end
32
-
33
- it "returns the created HTTP multipart request" do
34
- http_multipart_request = instance_double(Net::HTTP::Post::Multipart)
35
- allow(Net::HTTP::Post::Multipart).to receive(:new).and_return(http_multipart_request)
36
-
37
- expect(subject).to eql(http_multipart_request)
38
- end
39
-
40
- it "creates a HTTP request with the provided path prefixed with http_stub scoping" do
41
- expect(Net::HTTP::Post::Multipart).to receive(:new).with("/http_stub/some/model/path", anything, anything)
42
-
43
- subject
44
- end
45
-
46
- it "creates a HTTP request with a payload parameter containing the JSON representation of the payload" do
47
- expect(Net::HTTP::Post::Multipart).to(
48
- receive(:new).with(anything, hash_including(payload: payload.to_json), anything)
49
- )
50
-
51
- subject
52
- end
53
-
54
- context "when the payload contains response files" do
55
-
56
- let(:response_files) do
57
- (1..3).map do |i|
58
- instance_double(HttpStub::Configurer::Request::StubResponseFile,
59
- id: "id#{i}", path: "file/path/#{i}", type: "file-type-#{i}", name: "file_name_#{i}")
60
- end
61
- end
62
-
63
- it "creates a HTTP request with an upload parameter for each file keyed on the file ID" do
64
- expected_upload_parameters = response_files.reduce({}) do |result, response_file|
65
- upload_file = instance_double(UploadIO)
66
- expect(UploadIO).to(
67
- receive(:new).with(response_file.path, response_file.type, response_file.name).and_return(upload_file)
68
- )
69
- result.tap { |hash| hash["response_file_#{response_file.id}"] = upload_file }
70
- end
71
- expect(Net::HTTP::Post::Multipart).to(
72
- receive(:new).with(anything, hash_including(expected_upload_parameters), anything)
73
- )
74
-
75
- subject
76
- end
77
-
78
- end
79
-
80
- context "when the payload contains no response files" do
81
-
82
- it "creates a HTTP request with no upload parameters" do
83
- expect(Net::HTTP::Post::Multipart).to receive(:new).with(anything, { payload: payload.to_json }, anything)
84
-
85
- subject
86
- end
87
-
88
- end
89
-
90
- context "when headers are provided" do
91
-
92
- let(:headers) { (1..3).each_with_object({}) { |i, result| result["header#{i}"] = "value#{i}" } }
93
-
94
- let(:args) { { path: path, headers: headers, model: model } }
95
-
96
- it "creates a HTTP request with the provided headers" do
97
- expect(Net::HTTP::Post::Multipart).to receive(:new).with(anything, anything, headers)
98
-
99
- subject
100
- end
101
-
102
- end
103
-
104
- context "when no headers are provided" do
105
-
106
- let(:args) { { path: path, model: model } }
107
-
108
- it "creates a HTTP request with empty headers" do
109
- expect(Net::HTTP::Post::Multipart).to receive(:new).with(anything, anything, {})
110
-
111
- subject
112
- end
113
-
114
- end
115
-
116
- end
117
-
118
- end
@@ -1,70 +0,0 @@
1
- describe HttpStub::Configurer::Request::Omittable do
2
-
3
- describe "::format" do
4
-
5
- context "when the value is a hash" do
6
-
7
- context "that contains entries with values that are :omitted" do
8
-
9
- let(:value) do
10
- (1..5).reduce({}) do |result, i|
11
- result["key#{i}"] = (i % 2 == 0) ? "value#{i}" : :omitted
12
- result
13
- end
14
- end
15
-
16
- it "returns a hash containing the omitted values converted to 'control:omitted'" do
17
- expected_hash = (1..5).reduce({}) do |result, i|
18
- result["key#{i}"] = (i % 2 == 0) ? "value#{i}" : "control:omitted"
19
- result
20
- end
21
-
22
- expect(perform_format).to eql(expected_hash)
23
- end
24
-
25
- end
26
-
27
- context "that contains no entries to be omitted" do
28
-
29
- let(:value) do
30
- (1..3).reduce({}) do |result, i|
31
- result["key#{i}"] = "value#{i}"
32
- result
33
- end
34
- end
35
-
36
- it "returns the hash unchanged" do
37
- expect(perform_format).to eql(value)
38
- end
39
-
40
- end
41
-
42
- context "that is empty" do
43
-
44
- let(:value) { {} }
45
-
46
- it "returns the hash unchanged" do
47
- expect(perform_format).to eql({})
48
- end
49
-
50
- end
51
-
52
- end
53
-
54
- context "when the value is not a hash" do
55
-
56
- let(:value) { "not a hash" }
57
-
58
- it "returns the value unchanged" do
59
- expect(perform_format).to eql(value)
60
- end
61
-
62
- end
63
-
64
- def perform_format
65
- HttpStub::Configurer::Request::Omittable.format(value)
66
- end
67
-
68
- end
69
-
70
- end
@@ -1,77 +0,0 @@
1
- describe HttpStub::Configurer::Request::Regexpable do
2
-
3
- describe "#format" do
4
-
5
- describe "when the value is a string" do
6
-
7
- let(:value) { "some string value" }
8
-
9
- it "returns the value unaltered" do
10
- expect(HttpStub::Configurer::Request::Regexpable.format(value)).to eql(value)
11
- end
12
-
13
- end
14
-
15
- describe "when the value is a regular expression" do
16
-
17
- let(:value) { /.+?[a-z]/ }
18
-
19
- it "returns a string prefixed by 'regexp:'" do
20
- expect(HttpStub::Configurer::Request::Regexpable.format(value)).to start_with("regexp:")
21
- end
22
-
23
- it "contains the regular expression converted to a string" do
24
- expect(HttpStub::Configurer::Request::Regexpable.format(value)).to end_with(".+?[a-z]")
25
- end
26
-
27
- describe "and the regular expression contain escaped meta characters" do
28
-
29
- let(:value) { /\^\+\[/ }
30
-
31
- it "returns a string that retains the escape characters" do
32
- expect(HttpStub::Configurer::Request::Regexpable.format(value)).to include("\\^\\+\\[")
33
- end
34
-
35
- end
36
-
37
- describe "and the regular expression contain path separators" do
38
-
39
- let(:value) { /\/some\/path/ }
40
-
41
- it "represents the path separators as a single forward-slash" do
42
- expect(HttpStub::Configurer::Request::Regexpable.format(value)).to end_with("/some/path")
43
- end
44
-
45
- end
46
-
47
- end
48
-
49
- describe "when the value is a hash" do
50
-
51
- describe "and the hash has multiple entries" do
52
-
53
- let(:value) { { key1: "value1", key2: /^.*value2$/, key3: "value3" } }
54
-
55
- it "returns a json representation of the hash whose values are their regexpable form" do
56
- expected_formatted_hash = {key1: "value1", key2: "regexp:^.*value2$", key3: "value3"}
57
-
58
- expect(HttpStub::Configurer::Request::Regexpable.format(value)).to eql(expected_formatted_hash)
59
- end
60
-
61
- end
62
-
63
- describe "and the hash is empty" do
64
-
65
- let(:value) { {} }
66
-
67
- it "returns an empty hash" do
68
- expect(HttpStub::Configurer::Request::Regexpable.format(value)).to eql({})
69
- end
70
-
71
- end
72
-
73
- end
74
-
75
- end
76
-
77
- end
@@ -1,69 +0,0 @@
1
- describe HttpStub::Configurer::Request::Scenario do
2
-
3
- let(:name) { "Some scenario name" }
4
- let(:stubs) { (1..3).map { instance_double(HttpStub::Configurer::Request::Stub) } }
5
- let(:triggered_scenario_names) { (1..3).map { |i| "Triggered scenario name #{i}" } }
6
-
7
- let(:scenario) do
8
- HttpStub::Configurer::Request::Scenario.new(
9
- name: name, stubs: stubs, triggered_scenario_names: triggered_scenario_names
10
- )
11
- end
12
-
13
- describe "#payload" do
14
-
15
- let(:stub_payloads) { stubs.each_with_index.map { |_stub, i| { stub_payload_key: "stub payload value #{i}" } } }
16
-
17
- subject { scenario.payload }
18
-
19
- before(:example) do
20
- stubs.zip(stub_payloads).each { |stub, payload| allow(stub).to receive(:payload).and_return(payload) }
21
- end
22
-
23
- it "returns a hash containing the scenario's name" do
24
- expect(subject).to include(name: name)
25
- end
26
-
27
- it "returns a hash containing the stub payloads" do
28
- expect(subject).to include(stubs: stub_payloads)
29
- end
30
-
31
- it "returns a hash containing the uris to activate" do
32
- expect(subject).to include(triggered_scenario_names: triggered_scenario_names)
33
- end
34
-
35
- end
36
-
37
- describe "#response_files" do
38
-
39
- let(:stub_response_files) do
40
- stubs.map { (1..3).map { instance_double(HttpStub::Configurer::Request::StubResponseFile) } }
41
- end
42
-
43
- subject { scenario.response_files }
44
-
45
- before(:example) do
46
- stubs.zip(stub_response_files).each { |stub, files| allow(stub).to receive(:response_files).and_return(files) }
47
- end
48
-
49
- it "delegates to the stubs" do
50
- stubs.zip(stub_response_files).each { |stub, files| expect(stub).to receive(:response_files).and_return(files) }
51
-
52
- subject
53
- end
54
-
55
- it "returns the accummulation of all stub files" do
56
- expect(subject).to eql(stub_response_files.flatten)
57
- end
58
-
59
- end
60
-
61
- describe "#to_s" do
62
-
63
- it "returns the scenario's name" do
64
- expect(scenario.to_s).to eql(name)
65
- end
66
-
67
- end
68
-
69
- end
@@ -1,195 +0,0 @@
1
- describe HttpStub::Configurer::Request::StubResponse do
2
-
3
- let(:stub_fixture) { HttpStub::StubFixture.new }
4
- let(:fixture) { stub_fixture.response }
5
-
6
- let(:stub_response) { HttpStub::Configurer::Request::StubResponse.new(stub_fixture.id, fixture.symbolized) }
7
-
8
- describe "#payload" do
9
-
10
- subject { stub_response.payload }
11
-
12
- context "when a status response argument is provided" do
13
-
14
- it "has a response entry for the argument" do
15
- expect(subject).to include(status: fixture.status)
16
- end
17
-
18
- end
19
-
20
- context "when no status response argument is provided" do
21
-
22
- before(:example) { fixture.status = nil }
23
-
24
- it "has a response entry with an empty status code" do
25
- expect(subject).to include(status: "")
26
- end
27
-
28
- end
29
-
30
- context "when response headers are provided" do
31
-
32
- it "has a headers response entry containing the the provided headers" do
33
- expect(subject).to include(headers: fixture.headers)
34
- end
35
-
36
- end
37
-
38
- context "when response headers are omitted" do
39
-
40
- before(:example) { fixture.headers = nil }
41
-
42
- it "has a headers response entry containing an empty hash" do
43
- expect(subject).to include(headers: {})
44
- end
45
-
46
- end
47
-
48
- context "when a response body argument is provided" do
49
-
50
- before(:example) do
51
- fixture.body = "some body"
52
- fixture.json = nil
53
- end
54
-
55
- it "has a response body entry that contains the body argument" do
56
- expect(subject).to include(body: fixture.body)
57
- end
58
-
59
- end
60
-
61
- context "when a response json argument is provided" do
62
-
63
- let(:json_object) { { some_key: "some value" } }
64
-
65
- before(:example) do
66
- fixture.body = nil
67
- fixture.json = json_object
68
- end
69
-
70
- it "has a response body entry that contains the json argument converted to JSON" do
71
- expect(subject).to include(body: json_object.to_json)
72
- end
73
-
74
- end
75
-
76
- context "when a delay option is provided" do
77
-
78
- it "has a response entry for the argument" do
79
- expect(subject).to include(delay_in_seconds: fixture.delay_in_seconds)
80
- end
81
-
82
- end
83
-
84
- context "when a delay option is omitted" do
85
-
86
- before(:example) { fixture.delay_in_seconds = nil }
87
-
88
- it "has a response entry with an empty delay" do
89
- expect(subject).to include(delay_in_seconds: "")
90
- end
91
-
92
- end
93
-
94
- end
95
-
96
- describe "#file" do
97
-
98
- subject { stub_response.file }
99
-
100
- context "when the body contains a file hash" do
101
-
102
- let(:content_type_key) { "content-type" }
103
- let(:content_type_value) { "some-content-type" }
104
- let(:file_path) { "some/file/path" }
105
- let(:file_name) { "some_file.name" }
106
-
107
- before(:example) do
108
- fixture.headers = { content_type_key => content_type_value }
109
- fixture.body = { file: { path: file_path, name: file_name } }
110
- end
111
-
112
- it "creates a response file containing the stub id" do
113
- expect_response_file_to_be_created_with(id: stub_fixture.id)
114
-
115
- subject
116
- end
117
-
118
- it "creates a response file containing the provided file path" do
119
- expect_response_file_to_be_created_with(path: file_path)
120
-
121
- subject
122
- end
123
-
124
- it "creates a response file containing the provided file name" do
125
- expect_response_file_to_be_created_with(name: file_name)
126
-
127
- subject
128
- end
129
-
130
- context "when the content type header key is provided" do
131
-
132
- context "in lower case" do
133
-
134
- let(:content_type_key) { "content-type" }
135
-
136
- it "creates a response file whose type is the content-type response header" do
137
- expect_response_file_to_be_created_with(type: content_type_value)
138
-
139
- subject
140
- end
141
-
142
- end
143
-
144
- context "in upper case" do
145
-
146
- let(:content_type_key) { "Content-Type" }
147
-
148
- it "creates a response file whose type is the content-type response header" do
149
- expect_response_file_to_be_created_with(type: content_type_value)
150
-
151
- subject
152
- end
153
-
154
- end
155
-
156
- end
157
-
158
- context "when the content type header is not provided" do
159
-
160
- let(:content_type_value) { nil }
161
-
162
- it "creates a response file whose type is nil, which allows the server to default the value" do
163
- expect_response_file_to_be_created_with(type: nil)
164
-
165
- subject
166
- end
167
-
168
- end
169
-
170
- it "returns the created response file" do
171
- response_file = instance_double(HttpStub::Configurer::Request::StubResponseFile)
172
- allow(HttpStub::Configurer::Request::StubResponseFile).to receive(:new).and_return(response_file)
173
-
174
- expect(subject).to eql(response_file)
175
- end
176
-
177
- def expect_response_file_to_be_created_with(hash)
178
- expect(HttpStub::Configurer::Request::StubResponseFile).to receive(:new).with(hash_including(hash))
179
- end
180
-
181
- end
182
-
183
- context "when the body contains text" do
184
-
185
- before(:example) { fixture.body = "some text" }
186
-
187
- it "returns nil" do
188
- expect(subject).to be(nil)
189
- end
190
-
191
- end
192
-
193
- end
194
-
195
- end