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,4 +1,4 @@
1
- describe HttpStub::Configurer::DSL::StubBuilderTemplate do
1
+ describe HttpStub::Configurator::Stub::Template do
2
2
 
3
3
  let(:parent_uri) { "/some/parent/uri" }
4
4
  let(:parent_template) do
@@ -10,31 +10,31 @@ describe HttpStub::Configurer::DSL::StubBuilderTemplate do
10
10
  let(:initial_request_method) { :put }
11
11
  let(:initial_block) { lambda { |stub| stub.match_requests(method: initial_request_method) } }
12
12
 
13
- let(:stub_builder_template) { described_class.new }
13
+ let(:template) { described_class.new }
14
14
 
15
- shared_context "mocked stub builder" do
15
+ shared_context "mocked stub" do
16
16
 
17
- let(:stub_builder) { instance_double(HttpStub::Configurer::DSL::StubBuilder) }
17
+ let(:templates_stub) { instance_double(HttpStub::Configurator::Stub::Stub) }
18
18
 
19
- before(:example) { allow(HttpStub::Configurer::DSL::StubBuilder).to receive(:new).and_return(stub_builder) }
19
+ before(:example) { allow(HttpStub::Configurator::Stub::Stub).to receive(:new).and_return(templates_stub) }
20
20
 
21
21
  end
22
22
 
23
- it "creates a stub builder to hold values established on the template" do
24
- allow(HttpStub::Configurer::DSL::StubBuilder).to receive(:new)
23
+ it "creates a stub to hold values established on the template" do
24
+ allow(HttpStub::Configurator::Stub::Stub).to receive(:new)
25
25
 
26
- stub_builder_template
26
+ template
27
27
  end
28
28
 
29
29
  describe "#match_requests" do
30
- include_context "mocked stub builder"
30
+ include_context "mocked stub"
31
31
 
32
32
  let(:request_matching_rules) { { uri: "/some/stub/uri", method: :get } }
33
33
 
34
- subject { stub_builder_template.match_requests(request_matching_rules) }
34
+ subject { template.match_requests(request_matching_rules) }
35
35
 
36
- it "delegates to the templates stub builder" do
37
- expect(stub_builder).to receive(:match_requests).with(request_matching_rules)
36
+ it "delegates to the templates stub" do
37
+ expect(templates_stub).to receive(:match_requests).with(request_matching_rules)
38
38
 
39
39
  subject
40
40
  end
@@ -42,22 +42,22 @@ describe HttpStub::Configurer::DSL::StubBuilderTemplate do
42
42
  end
43
43
 
44
44
  describe "#schema" do
45
- include_context "mocked stub builder"
45
+ include_context "mocked stub"
46
46
 
47
47
  let(:type) { :some_schema_type }
48
48
  let(:definition) { "some schema definition" }
49
49
 
50
- subject { stub_builder_template.schema(type, definition) }
50
+ subject { template.schema(type, definition) }
51
51
 
52
- it "delegates to the templates stub builder" do
53
- expect(stub_builder).to receive(:schema).with(type, definition)
52
+ it "delegates to the templates stub" do
53
+ expect(templates_stub).to receive(:schema).with(type, definition)
54
54
 
55
55
  subject
56
56
  end
57
57
 
58
58
  it "returns the created schema" do
59
59
  schema = { schema: :some_schema }
60
- expect(stub_builder).to receive(:schema).and_return(schema)
60
+ expect(templates_stub).to receive(:schema).and_return(schema)
61
61
 
62
62
  expect(subject).to eql(schema)
63
63
  end
@@ -65,14 +65,14 @@ describe HttpStub::Configurer::DSL::StubBuilderTemplate do
65
65
  end
66
66
 
67
67
  describe "#respond_with" do
68
- include_context "mocked stub builder"
68
+ include_context "mocked stub"
69
69
 
70
70
  let(:response_settings) { { status: 204 } }
71
71
 
72
- subject { stub_builder_template.respond_with(response_settings) }
72
+ subject { template.respond_with(response_settings) }
73
73
 
74
- it "delegates to the templates stub builder" do
75
- expect(stub_builder).to receive(:respond_with).with(response_settings)
74
+ it "delegates to the templates stub" do
75
+ expect(templates_stub).to receive(:respond_with).with(response_settings)
76
76
 
77
77
  subject
78
78
  end
@@ -80,14 +80,14 @@ describe HttpStub::Configurer::DSL::StubBuilderTemplate do
80
80
  end
81
81
 
82
82
  describe "#trigger" do
83
- include_context "mocked stub builder"
83
+ include_context "mocked stub"
84
84
 
85
85
  let(:trigger_settings) { { scenario: "some scenario name" } }
86
86
 
87
- subject { stub_builder_template.trigger(trigger_settings) }
87
+ subject { template.trigger(trigger_settings) }
88
88
 
89
- it "delegates to the templates stub builder" do
90
- expect(stub_builder).to receive(:trigger).with(trigger_settings)
89
+ it "delegates to the templates stub" do
90
+ expect(templates_stub).to receive(:trigger).with(trigger_settings)
91
91
 
92
92
  subject
93
93
  end
@@ -95,7 +95,7 @@ describe HttpStub::Configurer::DSL::StubBuilderTemplate do
95
95
  end
96
96
 
97
97
  describe "#invoke" do
98
- include_context "mocked stub builder"
98
+ include_context "mocked stub"
99
99
 
100
100
  let(:block_verifier) { double("BlockVerifier") }
101
101
  let(:block) do
@@ -105,16 +105,16 @@ describe HttpStub::Configurer::DSL::StubBuilderTemplate do
105
105
  end
106
106
  end
107
107
 
108
- let(:stub_builder) { HttpStub::Configurer::DSL::StubBuilder.new }
108
+ let(:templates_stub) { HttpStub::Configurator::Stub::Stub.new }
109
109
 
110
- subject { stub_builder_template.invoke(&block) }
110
+ subject { template.invoke(&block) }
111
111
 
112
112
  it "invokes the block with the templates stub builder" do
113
113
  expect(block_verifier).to receive(:verify)
114
114
 
115
115
  subject
116
116
 
117
- expect(@yielded_stub).to eql(stub_builder)
117
+ expect(@yielded_stub).to eql(templates_stub)
118
118
  end
119
119
 
120
120
  end
@@ -130,70 +130,72 @@ describe HttpStub::Configurer::DSL::StubBuilderTemplate do
130
130
  end
131
131
  end
132
132
 
133
- let(:stub_builder_template) { described_class.new(parent_template) }
133
+ let(:template) { described_class.new(parent_template) }
134
+
135
+ let(:built_stub_hash) { subject.to_hash }
134
136
 
135
- subject { stub_builder_template.build_stub }
137
+ subject { template.build_stub }
136
138
 
137
139
  context "when a parent template had been provided" do
138
140
 
139
141
  it "creates a stub capable of containing values established in the parent template" do
140
- expect(subject.request[:uri]).to eql(parent_uri)
142
+ expect(built_stub_hash[:match_rules][:uri]).to eql(parent_uri)
141
143
  end
142
144
 
143
145
  end
144
146
 
145
147
  context "when an initial block had been provided" do
146
148
 
147
- let(:stub_builder_template) { described_class.new(&initial_block) }
149
+ let(:template) { described_class.new(&initial_block) }
148
150
 
149
151
  it "creates a stub capable of containing values established in the initial block" do
150
- expect(subject.request[:method]).to eql(initial_request_method)
152
+ expect(built_stub_hash[:match_rules][:method]).to eql(initial_request_method)
151
153
  end
152
154
 
153
155
  end
154
156
 
155
157
  context "when response overrides are provided upon building the stub" do
156
158
 
157
- subject { stub_builder_template.build_stub(response_overrides) }
159
+ subject { template.build_stub(response_overrides) }
158
160
 
159
161
  it "creates a stub containing the overrides" do
160
- expect(subject.response[:status]).to eql(201)
162
+ expect(built_stub_hash[:response][:status]).to eql(201)
161
163
  end
162
164
 
163
165
  it "overrides any values initially established" do
164
- expect(subject.response[:body]).to eql("response overrides body")
166
+ expect(built_stub_hash[:response][:body]).to eql("response overrides body")
165
167
  end
166
168
 
167
169
  end
168
170
 
169
171
  context "when a block is provided upon building the stub" do
170
172
 
171
- subject { stub_builder_template.build_stub(&block) }
173
+ subject { template.build_stub(&block) }
172
174
 
173
175
  it "creates a stub that is modified by the block" do
174
- expect(subject.request[:uri]).to eql("/some/block/uri")
176
+ expect(built_stub_hash[:match_rules][:uri]).to eql("/some/block/uri")
175
177
  end
176
178
 
177
179
  it "overrides any values initially established" do
178
- expect(subject.response[:body]).to eql("block body")
180
+ expect(built_stub_hash[:response][:body]).to eql("block body")
179
181
  end
180
182
 
181
183
  end
182
184
 
183
185
  context "when both response overrides and a block are provided" do
184
186
 
185
- subject { stub_builder_template.build_stub(response_overrides, &block) }
187
+ subject { template.build_stub(response_overrides, &block) }
186
188
 
187
189
  it "creates a stub containing response overrides" do
188
- expect(subject.response[:status]).to eql(201)
190
+ expect(built_stub_hash[:response][:status]).to eql(201)
189
191
  end
190
192
 
191
193
  it "creates a stub that is modified by the block" do
192
- expect(subject.request[:uri]).to eql("/some/block/uri")
194
+ expect(built_stub_hash[:match_rules][:uri]).to eql("/some/block/uri")
193
195
  end
194
196
 
195
197
  it "creates a stub with values established in the block taking precedence over response overrides" do
196
- expect(subject.response[:body]).to eql("block body")
198
+ expect(built_stub_hash[:response][:body]).to eql("block body")
197
199
  end
198
200
 
199
201
  end
@@ -0,0 +1,27 @@
1
+ describe HttpStub::Configurator::Stub do
2
+
3
+ describe "::create" do
4
+
5
+ let(:name) { "some stub name" }
6
+ let(:block_verifier) { double("BlockVerifier") }
7
+ let(:block) { lambda { block_verifier.verify } }
8
+
9
+ subject { described_class.create(name, &block) }
10
+
11
+ it "creates a stub with the provided arguments" do
12
+ expect(HttpStub::Configurator::Stub::Stub).to receive(:new).with(name).and_yield
13
+ expect(block_verifier).to receive(:verify)
14
+
15
+ subject
16
+ end
17
+
18
+ it "returns the created stub" do
19
+ created_stub = instance_double(HttpStub::Configurator::Stub::Stub)
20
+ allow(HttpStub::Configurator::Stub::Stub).to receive(:new).and_return(created_stub)
21
+
22
+ expect(subject).to eql(created_stub)
23
+ end
24
+
25
+ end
26
+
27
+ end
@@ -0,0 +1,113 @@
1
+ describe HttpStub::Configurator do
2
+
3
+ let(:configurator_class) { Class.new { include HttpStub::Configurator } }
4
+ let(:configurator) { configurator_class.new }
5
+
6
+ describe "::state" do
7
+
8
+ subject { configurator_class.state }
9
+
10
+ it "creates state for the configurator" do
11
+ expect(HttpStub::Configurator::State).to receive(:new)
12
+
13
+ subject
14
+ end
15
+
16
+ it "returns the created state" do
17
+ state = HttpStub::Configurator::State.new
18
+ allow(HttpStub::Configurator::State).to receive(:new).and_return(state)
19
+
20
+ expect(subject).to eql(state)
21
+ end
22
+
23
+ it "reuses the state in subsequent requests" do
24
+ expect(subject).to be(configurator_class.state)
25
+ end
26
+
27
+ end
28
+
29
+ describe "::stub_server" do
30
+
31
+ subject { configurator_class.stub_server }
32
+
33
+ it "creates a server" do
34
+ expect(HttpStub::Configurator::Server).to receive(:new)
35
+
36
+ subject
37
+ end
38
+
39
+ it "returns the created server" do
40
+ server = instance_double(HttpStub::Configurator::Server)
41
+ allow(HttpStub::Configurator::Server).to receive(:new).and_return(server)
42
+
43
+ expect(subject).to eql(server)
44
+ end
45
+
46
+ it "reuses the stub server in subsequent requests" do
47
+ expect(subject).to be(configurator_class.stub_server)
48
+ end
49
+
50
+ end
51
+
52
+ describe "::parts=" do
53
+
54
+ class HttpStub::Configurator::TestablePart
55
+ include HttpStub::Configurator::Part
56
+
57
+ attr_reader :configurator_class
58
+
59
+ def apply_to(configurator_class)
60
+ @configurator_class = configurator_class
61
+ end
62
+
63
+ end
64
+
65
+ let(:parts) { (1..3).map { HttpStub::Configurator::TestablePart.new } }
66
+
67
+ subject do
68
+ configurator_class.parts = { part_1: parts[0], part_2: parts[1], part_3: parts[2] }
69
+ end
70
+
71
+ it "allows each part to be accessed on the configurator by name" do
72
+ subject
73
+
74
+ parts_on_configurator = [ configurator.part_1, configurator.part_2, configurator.part_3 ]
75
+ expect(parts_on_configurator).to eql(parts)
76
+ end
77
+
78
+ it "allows each part to be accessed on the configurator class by name" do
79
+ subject
80
+
81
+ parts_on_configurator_class = [ configurator_class.part_1, configurator_class.part_2, configurator_class.part_3 ]
82
+ expect(parts_on_configurator_class).to eql(parts)
83
+ end
84
+
85
+ it "applies the parts to the configurator" do
86
+ subject
87
+
88
+ expect(parts.map(&:configurator_class)).to eql([ configurator_class ] * 3)
89
+ end
90
+
91
+ end
92
+
93
+ describe "#state" do
94
+
95
+ subject { configurator.state }
96
+
97
+ it "returns the same state as the class method" do
98
+ expect(subject).to be(configurator_class.state)
99
+ end
100
+
101
+ end
102
+
103
+ describe "#stub_server" do
104
+
105
+ subject { configurator.stub_server }
106
+
107
+ it "returns the same server as the class method" do
108
+ expect(subject).to be(configurator_class.stub_server)
109
+ end
110
+
111
+ end
112
+
113
+ end
@@ -4,9 +4,9 @@ describe HttpStub::Extensions::Core::Hash do
4
4
 
5
5
  subject { hash.underscore_keys }
6
6
 
7
- describe "when the hash contains keys which are strings" do
7
+ context "when the hash contains keys which are strings" do
8
8
 
9
- describe "and keys contain underscores and hyphens" do
9
+ context "and keys contain underscores and hyphens" do
10
10
 
11
11
  let(:hash) do
12
12
  { "has_underscore" => 1, "has-hypen" => 2, "has_underscore_and-hypen" => 3 }
@@ -20,7 +20,7 @@ describe HttpStub::Extensions::Core::Hash do
20
20
 
21
21
  end
22
22
 
23
- describe "when the hash contains keys which are not strings" do
23
+ context "when the hash contains keys which are not strings" do
24
24
 
25
25
  let(:hash) do
26
26
  { 1 => 2, :symbol => 3, nil => 4 }
@@ -0,0 +1,29 @@
1
+ describe HttpStub::Extensions::Core::Object do
2
+
3
+ it "patches ::Object" do
4
+ expect(::Object.included_modules).to include(described_class)
5
+ end
6
+
7
+ describe "#short_class_name" do
8
+
9
+ subject { object.short_class_name }
10
+
11
+ context "when a class name is a single word" do
12
+
13
+ it "returns the name in lower case" do
14
+
15
+ end
16
+
17
+ end
18
+
19
+ context "when a class name contains many words" do
20
+
21
+ it "combines the words with an underscore" do
22
+
23
+ end
24
+
25
+ end
26
+
27
+ end
28
+
29
+ end
@@ -1,27 +1,32 @@
1
1
  describe HttpStub::Rake::ServerDaemonTasks do
2
+ include_context "surpressed output"
2
3
  include Rake::DSL
3
4
 
4
- before(:context) { HttpStub::Rake::ServerDaemonTasks.new(name: :example_server_daemon, port: 8002) }
5
+ before(:context) do
6
+ @server_name_in_rakefile = :example_server_daemon
7
+ @port_in_rakefile = 8001
8
+ HttpStub::Rake::ServerDaemonTasks.new(
9
+ name: @server_name_in_rakefile,
10
+ configurator: HttpStub::ConfiguratorFixture.create(port: @port_in_rakefile)
11
+ )
12
+ end
5
13
 
6
14
  describe "start task" do
7
15
 
8
16
  context "when invoked" do
9
17
 
10
- before(:context) { @exit_flag = Rake::Task["example_server_daemon:start"].invoke("--trace") }
18
+ before(:context) { @exit_flag = system "rake #{@server_name_in_rakefile}:start > /dev/null" }
11
19
 
12
- after(:context) { Rake::Task["example_server_daemon:stop"].invoke("--trace") }
20
+ after(:context) { system "rake #{@server_name_in_rakefile}:stop > /dev/null" }
13
21
 
14
22
  it "exits with a status code of 0" do
15
- expect(@exit_flag).to be_truthy
23
+ expect(@exit_flag).to be(true)
16
24
  end
17
25
 
18
26
  it "starts a stub server that responds to stub requests" do
19
- request = Net::HTTP::Post.new("/http_stub/stubs")
20
- request.body = { response: { status: 302, body: "Some Body" } }.to_json
21
-
22
- response = Net::HTTP.new("localhost", 8002).start { |http| http.request(request) }
27
+ response = HTTParty.get("http://localhost:#{@port_in_rakefile}/http_stub/stubs")
23
28
 
24
- expect(response.code).to eql("200")
29
+ expect(response.code).to eql(200)
25
30
  end
26
31
 
27
32
  end