actionpack 2.3.18 → 3.0.0.beta

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of actionpack might be problematic. Click here for more details.

Files changed (513) hide show
  1. data/CHANGELOG +15 -64
  2. data/README +39 -48
  3. data/lib/abstract_controller.rb +22 -0
  4. data/lib/abstract_controller/base.rb +191 -0
  5. data/lib/abstract_controller/callbacks.rb +113 -0
  6. data/lib/abstract_controller/collector.rb +30 -0
  7. data/lib/abstract_controller/compatibility.rb +18 -0
  8. data/lib/abstract_controller/helpers.rb +163 -0
  9. data/lib/abstract_controller/layouts.rb +413 -0
  10. data/lib/abstract_controller/localized_cache.rb +49 -0
  11. data/lib/abstract_controller/logger.rb +13 -0
  12. data/lib/abstract_controller/rendering.rb +238 -0
  13. data/lib/{action_controller → abstract_controller}/translation.rb +1 -1
  14. data/lib/action_controller.rb +68 -102
  15. data/lib/action_controller/base.rb +77 -1409
  16. data/lib/action_controller/caching.rb +58 -45
  17. data/lib/action_controller/caching/actions.rb +100 -114
  18. data/lib/action_controller/caching/fragments.rb +17 -19
  19. data/lib/action_controller/caching/pages.rb +12 -6
  20. data/lib/action_controller/caching/sweeping.rb +42 -0
  21. data/lib/action_controller/deprecated.rb +5 -0
  22. data/lib/action_controller/deprecated/dispatcher.rb +28 -0
  23. data/lib/action_controller/deprecated/integration_test.rb +2 -0
  24. data/lib/action_controller/deprecated/performance_test.rb +1 -0
  25. data/lib/action_controller/metal.rb +125 -0
  26. data/lib/action_controller/metal/compatibility.rb +141 -0
  27. data/lib/action_controller/metal/conditional_get.rb +86 -0
  28. data/lib/action_controller/metal/configuration.rb +28 -0
  29. data/lib/action_controller/metal/cookies.rb +17 -0
  30. data/lib/action_controller/metal/exceptions.rb +46 -0
  31. data/lib/action_controller/metal/flash.rb +28 -0
  32. data/lib/action_controller/metal/head.rb +33 -0
  33. data/lib/action_controller/metal/helpers.rb +116 -0
  34. data/lib/action_controller/metal/hide_actions.rb +50 -0
  35. data/lib/action_controller/{http_authentication.rb → metal/http_authentication.rb} +18 -15
  36. data/lib/action_controller/metal/instrumentation.rb +99 -0
  37. data/lib/action_controller/metal/mime_responds.rb +300 -0
  38. data/lib/action_controller/metal/rack_delegation.rb +35 -0
  39. data/lib/action_controller/metal/redirecting.rb +90 -0
  40. data/lib/action_controller/metal/renderers.rb +95 -0
  41. data/lib/action_controller/metal/rendering.rb +69 -0
  42. data/lib/action_controller/metal/request_forgery_protection.rb +115 -0
  43. data/lib/action_controller/metal/rescue.rb +13 -0
  44. data/lib/action_controller/metal/responder.rb +220 -0
  45. data/lib/action_controller/{session_management.rb → metal/session_management.rb} +5 -14
  46. data/lib/action_controller/{streaming.rb → metal/streaming.rb} +13 -12
  47. data/lib/action_controller/metal/testing.rb +42 -0
  48. data/lib/action_controller/metal/url_for.rb +157 -0
  49. data/lib/action_controller/{verification.rb → metal/verification.rb} +41 -41
  50. data/lib/action_controller/middleware.rb +38 -0
  51. data/lib/action_controller/polymorphic_routes.rb +20 -26
  52. data/lib/action_controller/railtie.rb +30 -0
  53. data/lib/action_controller/railties/subscriber.rb +63 -0
  54. data/lib/action_controller/record_identifier.rb +3 -16
  55. data/lib/action_controller/test_case.rb +156 -18
  56. data/lib/action_controller/url_rewriter.rb +47 -200
  57. data/lib/action_controller/vendor/html-scanner.rb +16 -12
  58. data/lib/action_controller/vendor/html-scanner/html/node.rb +1 -1
  59. data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +12 -9
  60. data/lib/action_dispatch.rb +88 -0
  61. data/lib/action_dispatch/http/cache.rb +123 -0
  62. data/lib/action_dispatch/http/filter_parameters.rb +98 -0
  63. data/lib/{action_controller → action_dispatch/http}/headers.rb +8 -8
  64. data/lib/action_dispatch/http/mime_negotiation.rb +101 -0
  65. data/lib/{action_controller → action_dispatch/http}/mime_type.rb +30 -11
  66. data/lib/{action_controller → action_dispatch/http}/mime_types.rb +5 -3
  67. data/lib/action_dispatch/http/parameters.rb +49 -0
  68. data/lib/action_dispatch/http/request.rb +223 -0
  69. data/lib/action_dispatch/http/response.rb +209 -0
  70. data/lib/action_dispatch/http/upload.rb +48 -0
  71. data/lib/action_dispatch/http/url.rb +129 -0
  72. data/lib/action_dispatch/middleware/callbacks.rb +50 -0
  73. data/lib/action_dispatch/middleware/cascade.rb +29 -0
  74. data/lib/action_dispatch/middleware/cookies.rb +216 -0
  75. data/lib/{action_controller → action_dispatch/middleware}/flash.rb +51 -90
  76. data/lib/action_dispatch/middleware/head.rb +18 -0
  77. data/lib/action_dispatch/middleware/params_parser.rb +78 -0
  78. data/lib/action_dispatch/middleware/rescue.rb +26 -0
  79. data/lib/action_dispatch/middleware/session/abstract_store.rb +209 -0
  80. data/lib/{action_controller → action_dispatch/middleware}/session/cookie_store.rb +56 -60
  81. data/lib/action_dispatch/middleware/session/mem_cache_store.rb +47 -0
  82. data/lib/action_dispatch/middleware/show_exceptions.rb +173 -0
  83. data/lib/{action_controller/middleware_stack.rb → action_dispatch/middleware/stack.rb} +23 -13
  84. data/lib/action_dispatch/middleware/static.rb +44 -0
  85. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/_request_and_response.erb +10 -3
  86. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/_trace.erb +4 -4
  87. data/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb +10 -0
  88. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/layout.erb +2 -2
  89. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/missing_template.erb +0 -0
  90. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/routing_error.erb +0 -0
  91. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/template_error.erb +3 -3
  92. data/lib/{action_controller → action_dispatch/middleware}/templates/rescues/unknown_action.erb +0 -0
  93. data/lib/action_dispatch/railtie.rb +15 -0
  94. data/lib/action_dispatch/routing.rb +217 -0
  95. data/lib/action_dispatch/routing/deprecated_mapper.rb +877 -0
  96. data/lib/action_dispatch/routing/mapper.rb +649 -0
  97. data/lib/action_dispatch/routing/route.rb +55 -0
  98. data/lib/action_dispatch/routing/route_set.rb +445 -0
  99. data/lib/action_dispatch/testing/assertions.rb +21 -0
  100. data/lib/action_dispatch/testing/assertions/dom.rb +37 -0
  101. data/lib/{action_controller/assertions/model_assertions.rb → action_dispatch/testing/assertions/model.rb} +2 -4
  102. data/lib/action_dispatch/testing/assertions/response.rb +154 -0
  103. data/lib/{action_controller/assertions/routing_assertions.rb → action_dispatch/testing/assertions/routing.rb} +72 -34
  104. data/lib/{action_controller/assertions/selector_assertions.rb → action_dispatch/testing/assertions/selector.rb} +14 -11
  105. data/lib/{action_controller/assertions/tag_assertions.rb → action_dispatch/testing/assertions/tag.rb} +25 -14
  106. data/lib/{action_controller → action_dispatch/testing}/integration.rb +173 -406
  107. data/lib/action_dispatch/testing/performance_test.rb +17 -0
  108. data/lib/action_dispatch/testing/test_process.rb +42 -0
  109. data/lib/action_dispatch/testing/test_request.rb +83 -0
  110. data/lib/action_dispatch/testing/test_response.rb +136 -0
  111. data/lib/action_pack/version.rb +3 -3
  112. data/lib/action_view.rb +29 -26
  113. data/lib/action_view/base.rb +101 -148
  114. data/lib/action_view/context.rb +44 -0
  115. data/lib/action_view/helpers.rb +6 -4
  116. data/lib/action_view/helpers/{active_record_helper.rb → active_model_helper.rb} +63 -63
  117. data/lib/action_view/helpers/asset_tag_helper.rb +166 -31
  118. data/lib/action_view/helpers/cache_helper.rb +1 -1
  119. data/lib/action_view/helpers/capture_helper.rb +40 -8
  120. data/lib/action_view/helpers/csrf_helper.rb +2 -4
  121. data/lib/action_view/helpers/date_helper.rb +14 -15
  122. data/lib/action_view/helpers/form_helper.rb +121 -24
  123. data/lib/action_view/helpers/form_options_helper.rb +26 -25
  124. data/lib/action_view/helpers/form_tag_helper.rb +42 -33
  125. data/lib/action_view/helpers/javascript_helper.rb +1 -109
  126. data/lib/action_view/helpers/number_helper.rb +4 -1
  127. data/lib/action_view/helpers/prototype_helper.rb +75 -499
  128. data/lib/action_view/helpers/raw_output_helper.rb +1 -1
  129. data/lib/action_view/helpers/record_tag_helper.rb +3 -3
  130. data/lib/action_view/helpers/sanitize_helper.rb +3 -2
  131. data/lib/action_view/helpers/scriptaculous_helper.rb +89 -53
  132. data/lib/action_view/helpers/tag_helper.rb +12 -13
  133. data/lib/action_view/helpers/text_helper.rb +33 -38
  134. data/lib/action_view/helpers/translation_helper.rb +11 -35
  135. data/lib/action_view/helpers/url_helper.rb +140 -134
  136. data/lib/action_view/locale/en.yml +34 -28
  137. data/lib/action_view/paths.rb +27 -24
  138. data/lib/action_view/railtie.rb +17 -0
  139. data/lib/action_view/railties/subscriber.rb +24 -0
  140. data/lib/action_view/{partials.rb → render/partials.rb} +161 -51
  141. data/lib/action_view/render/rendering.rb +117 -0
  142. data/lib/action_view/template.rb +88 -217
  143. data/lib/action_view/template/error.rb +105 -0
  144. data/lib/action_view/template/handler.rb +41 -0
  145. data/lib/action_view/template/handlers.rb +54 -0
  146. data/lib/action_view/{template_handlers → template/handlers}/builder.rb +6 -6
  147. data/lib/action_view/template/handlers/erb.rb +58 -0
  148. data/lib/action_view/{template_handlers → template/handlers}/rjs.rb +8 -3
  149. data/lib/action_view/template/resolver.rb +164 -0
  150. data/lib/action_view/template/text.rb +40 -0
  151. data/lib/action_view/test_case.rb +18 -18
  152. metadata +165 -420
  153. data/RUNNING_UNIT_TESTS +0 -24
  154. data/Rakefile +0 -158
  155. data/install.rb +0 -30
  156. data/lib/action_controller/assertions/dom_assertions.rb +0 -55
  157. data/lib/action_controller/assertions/response_assertions.rb +0 -169
  158. data/lib/action_controller/benchmarking.rb +0 -107
  159. data/lib/action_controller/caching/sweeper.rb +0 -45
  160. data/lib/action_controller/cgi_ext.rb +0 -15
  161. data/lib/action_controller/cgi_ext/cookie.rb +0 -112
  162. data/lib/action_controller/cgi_ext/query_extension.rb +0 -22
  163. data/lib/action_controller/cgi_ext/stdinput.rb +0 -24
  164. data/lib/action_controller/cgi_process.rb +0 -77
  165. data/lib/action_controller/cookies.rb +0 -197
  166. data/lib/action_controller/dispatcher.rb +0 -133
  167. data/lib/action_controller/failsafe.rb +0 -87
  168. data/lib/action_controller/filters.rb +0 -680
  169. data/lib/action_controller/helpers.rb +0 -225
  170. data/lib/action_controller/layout.rb +0 -286
  171. data/lib/action_controller/middlewares.rb +0 -14
  172. data/lib/action_controller/mime_responds.rb +0 -193
  173. data/lib/action_controller/params_parser.rb +0 -77
  174. data/lib/action_controller/performance_test.rb +0 -15
  175. data/lib/action_controller/rack_lint_patch.rb +0 -36
  176. data/lib/action_controller/reloader.rb +0 -54
  177. data/lib/action_controller/request.rb +0 -518
  178. data/lib/action_controller/request_forgery_protection.rb +0 -116
  179. data/lib/action_controller/rescue.rb +0 -183
  180. data/lib/action_controller/resources.rb +0 -682
  181. data/lib/action_controller/response.rb +0 -237
  182. data/lib/action_controller/routing.rb +0 -388
  183. data/lib/action_controller/routing/builder.rb +0 -197
  184. data/lib/action_controller/routing/optimisations.rb +0 -130
  185. data/lib/action_controller/routing/recognition_optimisation.rb +0 -167
  186. data/lib/action_controller/routing/route.rb +0 -265
  187. data/lib/action_controller/routing/route_set.rb +0 -503
  188. data/lib/action_controller/routing/routing_ext.rb +0 -49
  189. data/lib/action_controller/routing/segments.rb +0 -343
  190. data/lib/action_controller/session/abstract_store.rb +0 -276
  191. data/lib/action_controller/session/mem_cache_store.rb +0 -60
  192. data/lib/action_controller/status_codes.rb +0 -88
  193. data/lib/action_controller/string_coercion.rb +0 -29
  194. data/lib/action_controller/templates/rescues/diagnostics.erb +0 -11
  195. data/lib/action_controller/test_process.rb +0 -580
  196. data/lib/action_controller/uploaded_file.rb +0 -44
  197. data/lib/action_view/helpers/benchmark_helper.rb +0 -54
  198. data/lib/action_view/inline_template.rb +0 -19
  199. data/lib/action_view/reloadable_template.rb +0 -117
  200. data/lib/action_view/renderable.rb +0 -109
  201. data/lib/action_view/renderable_partial.rb +0 -53
  202. data/lib/action_view/template_error.rb +0 -99
  203. data/lib/action_view/template_handler.rb +0 -34
  204. data/lib/action_view/template_handlers.rb +0 -48
  205. data/lib/action_view/template_handlers/erb.rb +0 -25
  206. data/lib/actionpack.rb +0 -2
  207. data/test/abstract_unit.rb +0 -78
  208. data/test/active_record_unit.rb +0 -104
  209. data/test/activerecord/active_record_store_test.rb +0 -221
  210. data/test/activerecord/render_partial_with_record_identification_test.rb +0 -188
  211. data/test/adv_attr_test.rb +0 -20
  212. data/test/controller/action_pack_assertions_test.rb +0 -545
  213. data/test/controller/addresses_render_test.rb +0 -37
  214. data/test/controller/assert_select_test.rb +0 -735
  215. data/test/controller/base_test.rb +0 -217
  216. data/test/controller/benchmark_test.rb +0 -32
  217. data/test/controller/caching_test.rb +0 -743
  218. data/test/controller/capture_test.rb +0 -66
  219. data/test/controller/content_type_test.rb +0 -178
  220. data/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  221. data/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  222. data/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  223. data/test/controller/cookie_test.rb +0 -208
  224. data/test/controller/deprecation/deprecated_base_methods_test.rb +0 -32
  225. data/test/controller/dispatcher_test.rb +0 -144
  226. data/test/controller/dom_assertions_test.rb +0 -53
  227. data/test/controller/failsafe_test.rb +0 -60
  228. data/test/controller/fake_controllers.rb +0 -33
  229. data/test/controller/fake_models.rb +0 -19
  230. data/test/controller/filter_params_test.rb +0 -52
  231. data/test/controller/filters_test.rb +0 -885
  232. data/test/controller/flash_test.rb +0 -174
  233. data/test/controller/header_test.rb +0 -14
  234. data/test/controller/helper_test.rb +0 -224
  235. data/test/controller/html-scanner/cdata_node_test.rb +0 -15
  236. data/test/controller/html-scanner/document_test.rb +0 -148
  237. data/test/controller/html-scanner/node_test.rb +0 -89
  238. data/test/controller/html-scanner/sanitizer_test.rb +0 -300
  239. data/test/controller/html-scanner/tag_node_test.rb +0 -238
  240. data/test/controller/html-scanner/text_node_test.rb +0 -50
  241. data/test/controller/html-scanner/tokenizer_test.rb +0 -131
  242. data/test/controller/http_basic_authentication_test.rb +0 -113
  243. data/test/controller/http_digest_authentication_test.rb +0 -254
  244. data/test/controller/integration_test.rb +0 -526
  245. data/test/controller/layout_test.rb +0 -215
  246. data/test/controller/localized_templates_test.rb +0 -24
  247. data/test/controller/logging_test.rb +0 -46
  248. data/test/controller/middleware_stack_test.rb +0 -90
  249. data/test/controller/mime_responds_test.rb +0 -536
  250. data/test/controller/mime_type_test.rb +0 -93
  251. data/test/controller/output_escaping_test.rb +0 -19
  252. data/test/controller/polymorphic_routes_test.rb +0 -297
  253. data/test/controller/rack_test.rb +0 -308
  254. data/test/controller/record_identifier_test.rb +0 -139
  255. data/test/controller/redirect_test.rb +0 -285
  256. data/test/controller/reloader_test.rb +0 -125
  257. data/test/controller/render_test.rb +0 -1783
  258. data/test/controller/request/json_params_parsing_test.rb +0 -65
  259. data/test/controller/request/multipart_params_parsing_test.rb +0 -177
  260. data/test/controller/request/query_string_parsing_test.rb +0 -129
  261. data/test/controller/request/test_request_test.rb +0 -35
  262. data/test/controller/request/url_encoded_params_parsing_test.rb +0 -146
  263. data/test/controller/request/xml_params_parsing_test.rb +0 -103
  264. data/test/controller/request_forgery_protection_test.rb +0 -233
  265. data/test/controller/request_test.rb +0 -398
  266. data/test/controller/rescue_test.rb +0 -541
  267. data/test/controller/resources_test.rb +0 -1393
  268. data/test/controller/routing_test.rb +0 -2592
  269. data/test/controller/selector_test.rb +0 -628
  270. data/test/controller/send_file_test.rb +0 -171
  271. data/test/controller/session/abstract_store_test.rb +0 -64
  272. data/test/controller/session/cookie_store_test.rb +0 -354
  273. data/test/controller/session/mem_cache_store_test.rb +0 -187
  274. data/test/controller/session/test_session_test.rb +0 -58
  275. data/test/controller/test_test.rb +0 -700
  276. data/test/controller/translation_test.rb +0 -26
  277. data/test/controller/url_rewriter_test.rb +0 -395
  278. data/test/controller/verification_test.rb +0 -270
  279. data/test/controller/view_paths_test.rb +0 -141
  280. data/test/controller/webservice_test.rb +0 -273
  281. data/test/fixtures/_top_level_partial.html.erb +0 -1
  282. data/test/fixtures/_top_level_partial_only.erb +0 -1
  283. data/test/fixtures/addresses/list.erb +0 -1
  284. data/test/fixtures/alternate_helpers/foo_helper.rb +0 -3
  285. data/test/fixtures/bad_customers/_bad_customer.html.erb +0 -1
  286. data/test/fixtures/companies.yml +0 -24
  287. data/test/fixtures/company.rb +0 -10
  288. data/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +0 -1
  289. data/test/fixtures/content_type/render_default_for_rhtml.rhtml +0 -1
  290. data/test/fixtures/content_type/render_default_for_rjs.rjs +0 -1
  291. data/test/fixtures/content_type/render_default_for_rxml.rxml +0 -1
  292. data/test/fixtures/customers/_customer.html.erb +0 -1
  293. data/test/fixtures/db_definitions/sqlite.sql +0 -49
  294. data/test/fixtures/developer.rb +0 -9
  295. data/test/fixtures/developers.yml +0 -21
  296. data/test/fixtures/developers/_developer.erb +0 -1
  297. data/test/fixtures/developers_projects.yml +0 -13
  298. data/test/fixtures/failsafe/500.html +0 -1
  299. data/test/fixtures/fun/games/_game.erb +0 -1
  300. data/test/fixtures/fun/games/hello_world.erb +0 -1
  301. data/test/fixtures/fun/serious/games/_game.erb +0 -1
  302. data/test/fixtures/functional_caching/_partial.erb +0 -3
  303. data/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +0 -3
  304. data/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +0 -6
  305. data/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +0 -5
  306. data/test/fixtures/functional_caching/fragment_cached.html.erb +0 -2
  307. data/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +0 -1
  308. data/test/fixtures/functional_caching/inline_fragment_cached.html.erb +0 -2
  309. data/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +0 -1
  310. data/test/fixtures/good_customers/_good_customer.html.erb +0 -1
  311. data/test/fixtures/helpers/abc_helper.rb +0 -5
  312. data/test/fixtures/helpers/fun/games_helper.rb +0 -3
  313. data/test/fixtures/helpers/fun/pdf_helper.rb +0 -3
  314. data/test/fixtures/layout_tests/abs_path_layout.rhtml +0 -1
  315. data/test/fixtures/layout_tests/alt/hello.rhtml +0 -1
  316. data/test/fixtures/layout_tests/alt/layouts/alt.rhtml +0 -0
  317. data/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +0 -1
  318. data/test/fixtures/layout_tests/layouts/item.rhtml +0 -1
  319. data/test/fixtures/layout_tests/layouts/layout_test.rhtml +0 -1
  320. data/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +0 -1
  321. data/test/fixtures/layout_tests/layouts/third_party_template_library.mab +0 -1
  322. data/test/fixtures/layout_tests/views/hello.rhtml +0 -1
  323. data/test/fixtures/layouts/_column.html.erb +0 -2
  324. data/test/fixtures/layouts/block_with_layout.erb +0 -3
  325. data/test/fixtures/layouts/builder.builder +0 -3
  326. data/test/fixtures/layouts/default_html.html.erb +0 -1
  327. data/test/fixtures/layouts/partial_with_layout.erb +0 -3
  328. data/test/fixtures/layouts/standard.erb +0 -1
  329. data/test/fixtures/layouts/talk_from_action.erb +0 -2
  330. data/test/fixtures/layouts/xhr.html.erb +0 -2
  331. data/test/fixtures/layouts/yield.erb +0 -2
  332. data/test/fixtures/localized/hello_world.de.html +0 -1
  333. data/test/fixtures/localized/hello_world.en.html +0 -1
  334. data/test/fixtures/mascot.rb +0 -3
  335. data/test/fixtures/mascots.yml +0 -4
  336. data/test/fixtures/mascots/_mascot.html.erb +0 -1
  337. data/test/fixtures/multipart/binary_file +0 -0
  338. data/test/fixtures/multipart/boundary_problem_file +0 -10
  339. data/test/fixtures/multipart/bracketed_param +0 -5
  340. data/test/fixtures/multipart/empty +0 -10
  341. data/test/fixtures/multipart/hello.txt +0 -1
  342. data/test/fixtures/multipart/large_text_file +0 -10
  343. data/test/fixtures/multipart/mixed_files +0 -0
  344. data/test/fixtures/multipart/mona_lisa.jpg +0 -0
  345. data/test/fixtures/multipart/none +0 -9
  346. data/test/fixtures/multipart/single_parameter +0 -5
  347. data/test/fixtures/multipart/text_file +0 -10
  348. data/test/fixtures/override/test/hello_world.erb +0 -1
  349. data/test/fixtures/override2/layouts/test/sub.erb +0 -1
  350. data/test/fixtures/post_test/layouts/post.html.erb +0 -1
  351. data/test/fixtures/post_test/layouts/super_post.iphone.erb +0 -1
  352. data/test/fixtures/post_test/post/index.html.erb +0 -1
  353. data/test/fixtures/post_test/post/index.iphone.erb +0 -1
  354. data/test/fixtures/post_test/super_post/index.html.erb +0 -1
  355. data/test/fixtures/post_test/super_post/index.iphone.erb +0 -1
  356. data/test/fixtures/project.rb +0 -3
  357. data/test/fixtures/projects.yml +0 -7
  358. data/test/fixtures/projects/_project.erb +0 -1
  359. data/test/fixtures/public/404.html +0 -1
  360. data/test/fixtures/public/500.da.html +0 -1
  361. data/test/fixtures/public/500.html +0 -1
  362. data/test/fixtures/public/absolute/test.css +0 -23
  363. data/test/fixtures/public/absolute/test.js +0 -63
  364. data/test/fixtures/public/images/rails.png +0 -0
  365. data/test/fixtures/public/javascripts/application.js +0 -1
  366. data/test/fixtures/public/javascripts/bank.js +0 -1
  367. data/test/fixtures/public/javascripts/controls.js +0 -1
  368. data/test/fixtures/public/javascripts/dragdrop.js +0 -1
  369. data/test/fixtures/public/javascripts/effects.js +0 -1
  370. data/test/fixtures/public/javascripts/prototype.js +0 -1
  371. data/test/fixtures/public/javascripts/robber.js +0 -1
  372. data/test/fixtures/public/javascripts/subdir/subdir.js +0 -1
  373. data/test/fixtures/public/javascripts/version.1.0.js +0 -1
  374. data/test/fixtures/public/stylesheets/bank.css +0 -1
  375. data/test/fixtures/public/stylesheets/robber.css +0 -1
  376. data/test/fixtures/public/stylesheets/subdir/subdir.css +0 -1
  377. data/test/fixtures/public/stylesheets/version.1.0.css +0 -1
  378. data/test/fixtures/quiz/questions/_question.html.erb +0 -1
  379. data/test/fixtures/replies.yml +0 -15
  380. data/test/fixtures/replies/_reply.erb +0 -1
  381. data/test/fixtures/reply.rb +0 -7
  382. data/test/fixtures/respond_to/all_types_with_layout.html.erb +0 -1
  383. data/test/fixtures/respond_to/all_types_with_layout.js.rjs +0 -1
  384. data/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +0 -1
  385. data/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +0 -1
  386. data/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +0 -1
  387. data/test/fixtures/respond_to/layouts/missing.html.erb +0 -1
  388. data/test/fixtures/respond_to/layouts/standard.html.erb +0 -1
  389. data/test/fixtures/respond_to/layouts/standard.iphone.erb +0 -1
  390. data/test/fixtures/respond_to/using_defaults.html.erb +0 -1
  391. data/test/fixtures/respond_to/using_defaults.js.rjs +0 -1
  392. data/test/fixtures/respond_to/using_defaults.xml.builder +0 -1
  393. data/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +0 -1
  394. data/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +0 -1
  395. data/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +0 -1
  396. data/test/fixtures/scope/test/modgreet.erb +0 -1
  397. data/test/fixtures/session_autoload_test/session_autoload_test/foo.rb +0 -10
  398. data/test/fixtures/shared.html.erb +0 -1
  399. data/test/fixtures/symlink_parent/symlinked_layout.erb +0 -5
  400. data/test/fixtures/test/_counter.html.erb +0 -1
  401. data/test/fixtures/test/_customer.erb +0 -1
  402. data/test/fixtures/test/_customer_counter.erb +0 -1
  403. data/test/fixtures/test/_customer_counter_with_as.erb +0 -1
  404. data/test/fixtures/test/_customer_greeting.erb +0 -1
  405. data/test/fixtures/test/_customer_with_var.erb +0 -1
  406. data/test/fixtures/test/_form.erb +0 -1
  407. data/test/fixtures/test/_from_helper.erb +0 -1
  408. data/test/fixtures/test/_hash_greeting.erb +0 -1
  409. data/test/fixtures/test/_hash_object.erb +0 -2
  410. data/test/fixtures/test/_hello.builder +0 -1
  411. data/test/fixtures/test/_labelling_form.erb +0 -1
  412. data/test/fixtures/test/_layout_for_block_with_args.html.erb +0 -3
  413. data/test/fixtures/test/_layout_for_partial.html.erb +0 -3
  414. data/test/fixtures/test/_local_inspector.html.erb +0 -1
  415. data/test/fixtures/test/_one.html.erb +0 -1
  416. data/test/fixtures/test/_partial.erb +0 -1
  417. data/test/fixtures/test/_partial.html.erb +0 -1
  418. data/test/fixtures/test/_partial.js.erb +0 -1
  419. data/test/fixtures/test/_partial_for_use_in_layout.html.erb +0 -1
  420. data/test/fixtures/test/_partial_only.erb +0 -1
  421. data/test/fixtures/test/_partial_with_only_html_version.html.erb +0 -1
  422. data/test/fixtures/test/_person.erb +0 -2
  423. data/test/fixtures/test/_raise.html.erb +0 -1
  424. data/test/fixtures/test/_two.html.erb +0 -1
  425. data/test/fixtures/test/_utf8_partial.html.erb +0 -1
  426. data/test/fixtures/test/_utf8_partial_magic.html.erb +0 -2
  427. data/test/fixtures/test/action_talk_to_layout.erb +0 -2
  428. data/test/fixtures/test/array_translation.erb +0 -1
  429. data/test/fixtures/test/calling_partial_with_layout.html.erb +0 -1
  430. data/test/fixtures/test/capturing.erb +0 -4
  431. data/test/fixtures/test/content_for.erb +0 -2
  432. data/test/fixtures/test/content_for_concatenated.erb +0 -3
  433. data/test/fixtures/test/content_for_with_parameter.erb +0 -2
  434. data/test/fixtures/test/delete_with_js.rjs +0 -2
  435. data/test/fixtures/test/dont_pick_me +0 -1
  436. data/test/fixtures/test/dot.directory/render_file_with_ivar.erb +0 -1
  437. data/test/fixtures/test/enum_rjs_test.rjs +0 -6
  438. data/test/fixtures/test/formatted_html_erb.html.erb +0 -1
  439. data/test/fixtures/test/formatted_xml_erb.builder +0 -1
  440. data/test/fixtures/test/formatted_xml_erb.html.erb +0 -1
  441. data/test/fixtures/test/formatted_xml_erb.xml.erb +0 -1
  442. data/test/fixtures/test/greeting.erb +0 -1
  443. data/test/fixtures/test/greeting.js.rjs +0 -1
  444. data/test/fixtures/test/hello.builder +0 -4
  445. data/test/fixtures/test/hello_world.da.html.erb +0 -1
  446. data/test/fixtures/test/hello_world.erb +0 -1
  447. data/test/fixtures/test/hello_world.erb~ +0 -1
  448. data/test/fixtures/test/hello_world.pt-BR.html.erb +0 -1
  449. data/test/fixtures/test/hello_world_container.builder +0 -3
  450. data/test/fixtures/test/hello_world_from_rxml.builder +0 -4
  451. data/test/fixtures/test/hello_world_with_layout_false.erb +0 -1
  452. data/test/fixtures/test/hello_xml_world.builder +0 -11
  453. data/test/fixtures/test/hyphen-ated.erb +0 -1
  454. data/test/fixtures/test/implicit_content_type.atom.builder +0 -2
  455. data/test/fixtures/test/list.erb +0 -1
  456. data/test/fixtures/test/malformed/malformed.en.html.erb~ +0 -1
  457. data/test/fixtures/test/malformed/malformed.erb~ +0 -1
  458. data/test/fixtures/test/malformed/malformed.html.erb~ +0 -1
  459. data/test/fixtures/test/nested_layout.erb +0 -3
  460. data/test/fixtures/test/non_erb_block_content_for.builder +0 -4
  461. data/test/fixtures/test/potential_conflicts.erb +0 -4
  462. data/test/fixtures/test/render_explicit_html_template.js.rjs +0 -1
  463. data/test/fixtures/test/render_file_from_template.html.erb +0 -1
  464. data/test/fixtures/test/render_file_with_ivar.erb +0 -1
  465. data/test/fixtures/test/render_file_with_locals.erb +0 -1
  466. data/test/fixtures/test/render_implicit_html_template.js.rjs +0 -1
  467. data/test/fixtures/test/render_implicit_html_template_from_xhr_request.da.html.erb +0 -1
  468. data/test/fixtures/test/render_implicit_html_template_from_xhr_request.html.erb +0 -1
  469. data/test/fixtures/test/render_implicit_js_template_without_layout.js.erb +0 -1
  470. data/test/fixtures/test/render_to_string_test.erb +0 -1
  471. data/test/fixtures/test/scoped_array_translation.erb +0 -1
  472. data/test/fixtures/test/sub_template_raise.html.erb +0 -1
  473. data/test/fixtures/test/template.erb +0 -1
  474. data/test/fixtures/test/translation.erb +0 -1
  475. data/test/fixtures/test/update_element_with_capture.erb +0 -9
  476. data/test/fixtures/test/using_layout_around_block.html.erb +0 -1
  477. data/test/fixtures/test/using_layout_around_block_with_args.html.erb +0 -1
  478. data/test/fixtures/test/utf8.html.erb +0 -4
  479. data/test/fixtures/test/utf8_magic.html.erb +0 -5
  480. data/test/fixtures/test/utf8_magic_with_bare_partial.html.erb +0 -5
  481. data/test/fixtures/topic.rb +0 -3
  482. data/test/fixtures/topics.yml +0 -22
  483. data/test/fixtures/topics/_topic.html.erb +0 -1
  484. data/test/template/active_record_helper_i18n_test.rb +0 -51
  485. data/test/template/active_record_helper_test.rb +0 -302
  486. data/test/template/asset_tag_helper_test.rb +0 -770
  487. data/test/template/atom_feed_helper_test.rb +0 -315
  488. data/test/template/benchmark_helper_test.rb +0 -86
  489. data/test/template/compiled_templates_test.rb +0 -204
  490. data/test/template/date_helper_i18n_test.rb +0 -121
  491. data/test/template/date_helper_test.rb +0 -2603
  492. data/test/template/erb_util_test.rb +0 -36
  493. data/test/template/form_helper_test.rb +0 -1447
  494. data/test/template/form_options_helper_i18n_test.rb +0 -27
  495. data/test/template/form_options_helper_test.rb +0 -811
  496. data/test/template/form_tag_helper_test.rb +0 -356
  497. data/test/template/javascript_helper_test.rb +0 -106
  498. data/test/template/number_helper_i18n_test.rb +0 -69
  499. data/test/template/number_helper_test.rb +0 -132
  500. data/test/template/prototype_helper_test.rb +0 -639
  501. data/test/template/raw_output_helper_test.rb +0 -21
  502. data/test/template/record_tag_helper_test.rb +0 -58
  503. data/test/template/render_test.rb +0 -329
  504. data/test/template/sanitize_helper_test.rb +0 -57
  505. data/test/template/scriptaculous_helper_test.rb +0 -90
  506. data/test/template/tag_helper_test.rb +0 -98
  507. data/test/template/template_test.rb +0 -32
  508. data/test/template/test_test.rb +0 -54
  509. data/test/template/text_helper_test.rb +0 -601
  510. data/test/template/translation_helper_test.rb +0 -95
  511. data/test/template/url_helper_test.rb +0 -641
  512. data/test/testing_sandbox.rb +0 -15
  513. data/test/view/test_case_test.rb +0 -176
@@ -1,541 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class RescueController < ActionController::Base
4
- class NotAuthorized < StandardError
5
- end
6
- class NotAuthorizedToRescueAsString < StandardError
7
- end
8
-
9
- class RecordInvalid < StandardError
10
- end
11
- class RecordInvalidToRescueAsString < StandardError
12
- end
13
-
14
- class NotAllowed < StandardError
15
- end
16
- class NotAllowedToRescueAsString < StandardError
17
- end
18
-
19
- class InvalidRequest < StandardError
20
- end
21
- class InvalidRequestToRescueAsString < StandardError
22
- end
23
-
24
- class BadGateway < StandardError
25
- end
26
- class BadGatewayToRescueAsString < StandardError
27
- end
28
-
29
- class ResourceUnavailable < StandardError
30
- end
31
- class ResourceUnavailableToRescueAsString < StandardError
32
- end
33
-
34
- # We use a fully-qualified name in some strings, and a relative constant
35
- # name in some other to test correct handling of both cases.
36
-
37
- rescue_from NotAuthorized, :with => :deny_access
38
- rescue_from 'RescueController::NotAuthorizedToRescueAsString', :with => :deny_access
39
-
40
- rescue_from RecordInvalid, :with => :show_errors
41
- rescue_from 'RescueController::RecordInvalidToRescueAsString', :with => :show_errors
42
-
43
- rescue_from NotAllowed, :with => proc { head :forbidden }
44
- rescue_from 'RescueController::NotAllowedToRescueAsString', :with => proc { head :forbidden }
45
-
46
- rescue_from InvalidRequest, :with => proc { |exception| render :text => exception.message }
47
- rescue_from 'InvalidRequestToRescueAsString', :with => proc { |exception| render :text => exception.message }
48
-
49
- rescue_from BadGateway do
50
- head :status => 502
51
- end
52
- rescue_from 'BadGatewayToRescueAsString' do
53
- head :status => 502
54
- end
55
-
56
- rescue_from ResourceUnavailable do |exception|
57
- render :text => exception.message
58
- end
59
- rescue_from 'ResourceUnavailableToRescueAsString' do |exception|
60
- render :text => exception.message
61
- end
62
-
63
- # This is a Dispatcher exception and should be in ApplicationController.
64
- rescue_from ActionController::RoutingError do
65
- render :text => 'no way'
66
- end
67
-
68
- before_filter(:only => :before_filter_raises) { raise 'umm nice' }
69
-
70
- def before_filter_raises
71
- end
72
-
73
- def raises
74
- render :text => 'already rendered'
75
- raise "don't panic!"
76
- end
77
-
78
- def method_not_allowed
79
- raise ActionController::MethodNotAllowed.new(:get, :head, :put)
80
- end
81
-
82
- def not_implemented
83
- raise ActionController::NotImplemented.new(:get, :put)
84
- end
85
-
86
- def not_authorized
87
- raise NotAuthorized
88
- end
89
- def not_authorized_raise_as_string
90
- raise NotAuthorizedToRescueAsString
91
- end
92
-
93
- def not_allowed
94
- raise NotAllowed
95
- end
96
- def not_allowed_raise_as_string
97
- raise NotAllowedToRescueAsString
98
- end
99
-
100
- def invalid_request
101
- raise InvalidRequest
102
- end
103
- def invalid_request_raise_as_string
104
- raise InvalidRequestToRescueAsString
105
- end
106
-
107
- def record_invalid
108
- raise RecordInvalid
109
- end
110
- def record_invalid_raise_as_string
111
- raise RecordInvalidToRescueAsString
112
- end
113
-
114
- def bad_gateway
115
- raise BadGateway
116
- end
117
- def bad_gateway_raise_as_string
118
- raise BadGatewayToRescueAsString
119
- end
120
-
121
- def resource_unavailable
122
- raise ResourceUnavailable
123
- end
124
- def resource_unavailable_raise_as_string
125
- raise ResourceUnavailableToRescueAsString
126
- end
127
-
128
- def missing_template
129
- end
130
-
131
- protected
132
- def deny_access
133
- head :forbidden
134
- end
135
-
136
- def show_errors(exception)
137
- head :unprocessable_entity
138
- end
139
- end
140
-
141
- class RescueControllerTest < ActionController::TestCase
142
- FIXTURE_PUBLIC = "#{File.dirname(__FILE__)}/../fixtures".freeze
143
-
144
- setup :set_all_requests_local
145
- setup :populate_exception_object
146
-
147
- def set_all_requests_local
148
- RescueController.consider_all_requests_local = true
149
- @request.remote_addr = '1.2.3.4'
150
- @request.host = 'example.com'
151
- end
152
-
153
- def populate_exception_object
154
- begin
155
- raise 'foo'
156
- rescue => @exception
157
- end
158
- end
159
-
160
- def test_rescue_exceptions_raised_by_filters
161
- with_rails_root FIXTURE_PUBLIC do
162
- with_all_requests_local false do
163
- get :before_filter_raises
164
- end
165
- end
166
-
167
- assert_response :internal_server_error
168
- end
169
-
170
- def test_rescue_action_locally_if_all_requests_local
171
- @controller.expects(:local_request?).never
172
- @controller.expects(:rescue_action_locally).with(@exception)
173
- @controller.expects(:rescue_action_in_public).never
174
-
175
- with_all_requests_local do
176
- @controller.send :rescue_action, @exception
177
- end
178
- end
179
-
180
- def test_rescue_action_locally_if_remote_addr_is_localhost
181
- @controller.expects(:local_request?).returns(true)
182
- @controller.expects(:rescue_action_locally).with(@exception)
183
- @controller.expects(:rescue_action_in_public).never
184
-
185
- with_all_requests_local false do
186
- @controller.send :rescue_action, @exception
187
- end
188
- end
189
-
190
- def test_rescue_action_in_public_otherwise
191
- @controller.expects(:local_request?).returns(false)
192
- @controller.expects(:rescue_action_locally).never
193
- @controller.expects(:rescue_action_in_public).with(@exception)
194
-
195
- with_all_requests_local false do
196
- @controller.send :rescue_action, @exception
197
- end
198
- end
199
-
200
- def test_rescue_action_in_public_with_localized_error_file
201
- # Change locale
202
- old_locale = I18n.locale
203
- I18n.locale = :da
204
-
205
- with_rails_root FIXTURE_PUBLIC do
206
- with_all_requests_local false do
207
- get :raises
208
- end
209
- end
210
-
211
- assert_response :internal_server_error
212
- body = File.read("#{FIXTURE_PUBLIC}/public/500.da.html")
213
- assert_equal body, @response.body
214
- ensure
215
- I18n.locale = old_locale
216
- end
217
-
218
- def test_rescue_action_in_public_with_error_file
219
- with_rails_root FIXTURE_PUBLIC do
220
- with_all_requests_local false do
221
- get :raises
222
- end
223
- end
224
-
225
- assert_response :internal_server_error
226
- body = File.read("#{FIXTURE_PUBLIC}/public/500.html")
227
- assert_equal body, @response.body
228
- end
229
-
230
- def test_rescue_action_in_public_without_error_file
231
- with_rails_root '/tmp' do
232
- with_all_requests_local false do
233
- get :raises
234
- end
235
- end
236
-
237
- assert_response :internal_server_error
238
- assert_equal ' ', @response.body
239
- end
240
-
241
- def test_rescue_unknown_action_in_public_with_error_file
242
- with_rails_root FIXTURE_PUBLIC do
243
- with_all_requests_local false do
244
- get :foobar_doesnt_exist
245
- end
246
- end
247
-
248
- assert_response :not_found
249
- body = File.read("#{FIXTURE_PUBLIC}/public/404.html")
250
- assert_equal body, @response.body
251
- end
252
-
253
- def test_rescue_unknown_action_in_public_without_error_file
254
- with_rails_root '/tmp' do
255
- with_all_requests_local false do
256
- get :foobar_doesnt_exist
257
- end
258
- end
259
-
260
- assert_response :not_found
261
- assert_equal ' ', @response.body
262
- end
263
-
264
- def test_rescue_missing_template_in_public
265
- with_rails_root FIXTURE_PUBLIC do
266
- with_all_requests_local true do
267
- get :missing_template
268
- end
269
- end
270
-
271
- assert_response :internal_server_error
272
- assert @response.body.include?('missing_template'), "Response should include the template name."
273
- end
274
-
275
- def test_rescue_action_locally
276
- get :raises
277
- assert_response :internal_server_error
278
- assert_template 'diagnostics.erb'
279
- assert @response.body.include?('RescueController#raises'), "Response should include controller and action."
280
- assert @response.body.include?("don't panic"), "Response should include exception message."
281
- end
282
-
283
- def test_local_request_when_remote_addr_is_localhost
284
- @controller.expects(:request).returns(@request).at_least(10)
285
- ['127.0.0.1', '127.0.0.127', '::1', '0:0:0:0:0:0:0:1', '0:0:0:0:0:0:0:1%0'].each do |ip_address|
286
- with_remote_addr ip_address do
287
- assert @controller.send(:local_request?)
288
- end
289
- end
290
- end
291
-
292
- def test_local_request_when_remote_addr_isnt_locahost
293
- @controller.expects(:request).returns(@request).at_least(4)
294
- with_remote_addr '1.2.3.4' do
295
- assert !@controller.send(:local_request?)
296
- end
297
- with_remote_addr '2002::102:304' do
298
- assert !@controller.send(:local_request?)
299
- end
300
- end
301
-
302
- def test_rescue_responses
303
- responses = ActionController::Base.rescue_responses
304
-
305
- assert_equal ActionController::Rescue::DEFAULT_RESCUE_RESPONSE, responses.default
306
- assert_equal ActionController::Rescue::DEFAULT_RESCUE_RESPONSE, responses[Exception.new]
307
-
308
- assert_equal :not_found, responses[ActionController::RoutingError.name]
309
- assert_equal :not_found, responses[ActionController::UnknownAction.name]
310
- assert_equal :not_found, responses['ActiveRecord::RecordNotFound']
311
- assert_equal :conflict, responses['ActiveRecord::StaleObjectError']
312
- assert_equal :unprocessable_entity, responses['ActiveRecord::RecordInvalid']
313
- assert_equal :unprocessable_entity, responses['ActiveRecord::RecordNotSaved']
314
- assert_equal :method_not_allowed, responses['ActionController::MethodNotAllowed']
315
- assert_equal :not_implemented, responses['ActionController::NotImplemented']
316
- end
317
-
318
- def test_rescue_templates
319
- templates = ActionController::Base.rescue_templates
320
-
321
- assert_equal ActionController::Rescue::DEFAULT_RESCUE_TEMPLATE, templates.default
322
- assert_equal ActionController::Rescue::DEFAULT_RESCUE_TEMPLATE, templates[Exception.new]
323
-
324
- assert_equal 'missing_template', templates[ActionView::MissingTemplate.name]
325
- assert_equal 'routing_error', templates[ActionController::RoutingError.name]
326
- assert_equal 'unknown_action', templates[ActionController::UnknownAction.name]
327
- assert_equal 'template_error', templates[ActionView::TemplateError.name]
328
- end
329
-
330
- def test_not_implemented
331
- with_all_requests_local false do
332
- with_rails_public_path(".") do
333
- head :not_implemented
334
- end
335
- end
336
- assert_response :not_implemented
337
- assert_equal "GET, PUT", @response.headers['Allow']
338
- end
339
-
340
- def test_method_not_allowed
341
- with_all_requests_local false do
342
- with_rails_public_path(".") do
343
- get :method_not_allowed
344
- end
345
- end
346
- assert_response :method_not_allowed
347
- assert_equal "GET, HEAD, PUT", @response.headers['Allow']
348
- end
349
-
350
- def test_rescue_handler
351
- get :not_authorized
352
- assert_response :forbidden
353
- end
354
- def test_rescue_handler_string
355
- get :not_authorized_raise_as_string
356
- assert_response :forbidden
357
- end
358
-
359
- def test_rescue_handler_with_argument
360
- @controller.expects(:show_errors).once.with { |e| e.is_a?(Exception) }
361
- get :record_invalid
362
- end
363
- def test_rescue_handler_with_argument_as_string
364
- @controller.expects(:show_errors).once.with { |e| e.is_a?(Exception) }
365
- get :record_invalid_raise_as_string
366
- end
367
-
368
- def test_proc_rescue_handler
369
- get :not_allowed
370
- assert_response :forbidden
371
- end
372
- def test_proc_rescue_handler_as_string
373
- get :not_allowed_raise_as_string
374
- assert_response :forbidden
375
- end
376
-
377
- def test_proc_rescue_handle_with_argument
378
- get :invalid_request
379
- assert_equal "RescueController::InvalidRequest", @response.body
380
- end
381
- def test_proc_rescue_handle_with_argument_as_string
382
- get :invalid_request_raise_as_string
383
- assert_equal "RescueController::InvalidRequestToRescueAsString", @response.body
384
- end
385
-
386
- def test_block_rescue_handler
387
- get :bad_gateway
388
- assert_response 502
389
- end
390
- def test_block_rescue_handler_as_string
391
- get :bad_gateway_raise_as_string
392
- assert_response 502
393
- end
394
-
395
- def test_block_rescue_handler_with_argument
396
- get :resource_unavailable
397
- assert_equal "RescueController::ResourceUnavailable", @response.body
398
- end
399
-
400
- def test_block_rescue_handler_with_argument_as_string
401
- get :resource_unavailable_raise_as_string
402
- assert_equal "RescueController::ResourceUnavailableToRescueAsString", @response.body
403
- end
404
-
405
- def test_rescue_dispatcher_exceptions
406
- env = @request.env
407
- env["action_controller.rescue.request"] = @request
408
- env["action_controller.rescue.response"] = @response
409
-
410
- RescueController.call_with_exception(env, ActionController::RoutingError.new("Route not found"))
411
- assert_equal "no way", @response.body
412
- end
413
-
414
- def test_rescue_dispatcher_exceptions_without_request_set
415
- @request.env['REQUEST_URI'] = '/no_way'
416
- response = RescueController.call_with_exception(@request.env, ActionController::RoutingError.new("Route not found"))
417
- assert_kind_of ActionController::Response, response
418
- assert_equal "no way", response.body
419
- end
420
-
421
- protected
422
- def with_all_requests_local(local = true)
423
- old_local, ActionController::Base.consider_all_requests_local =
424
- ActionController::Base.consider_all_requests_local, local
425
- yield
426
- ensure
427
- ActionController::Base.consider_all_requests_local = old_local
428
- end
429
-
430
- def with_remote_addr(addr)
431
- old_remote_addr, @request.remote_addr = @request.remote_addr, addr
432
- yield
433
- ensure
434
- @request.remote_addr = old_remote_addr
435
- end
436
-
437
- def with_rails_public_path(rails_root)
438
- old_rails = Object.const_get(:Rails) rescue nil
439
- mod = Object.const_set(:Rails, Module.new)
440
- (class << mod; self; end).instance_eval do
441
- define_method(:public_path) { "#{rails_root}/public" }
442
- end
443
- yield
444
- ensure
445
- Object.module_eval { remove_const(:Rails) } if defined?(Rails)
446
- Object.const_set(:Rails, old_rails) if old_rails
447
- end
448
-
449
- def with_rails_root(path = nil,&block)
450
- old_rails_root = RAILS_ROOT if defined?(RAILS_ROOT)
451
- if path
452
- silence_warnings { Object.const_set(:RAILS_ROOT, path) }
453
- else
454
- Object.remove_const(:RAILS_ROOT) rescue nil
455
- end
456
-
457
- with_rails_public_path(path, &block)
458
-
459
- ensure
460
- if old_rails_root
461
- silence_warnings { Object.const_set(:RAILS_ROOT, old_rails_root) }
462
- else
463
- Object.remove_const(:RAILS_ROOT) rescue nil
464
- end
465
- end
466
- end
467
-
468
- class ExceptionInheritanceRescueController < ActionController::Base
469
-
470
- class ParentException < StandardError
471
- end
472
-
473
- class ChildException < ParentException
474
- end
475
-
476
- class GrandchildException < ChildException
477
- end
478
-
479
- rescue_from ChildException, :with => lambda { head :ok }
480
- rescue_from ParentException, :with => lambda { head :created }
481
- rescue_from GrandchildException, :with => lambda { head :no_content }
482
-
483
- def raise_parent_exception
484
- raise ParentException
485
- end
486
-
487
- def raise_child_exception
488
- raise ChildException
489
- end
490
-
491
- def raise_grandchild_exception
492
- raise GrandchildException
493
- end
494
- end
495
-
496
- class ExceptionInheritanceRescueControllerTest < ActionController::TestCase
497
- def test_bottom_first
498
- get :raise_grandchild_exception
499
- assert_response :no_content
500
- end
501
-
502
- def test_inheritance_works
503
- get :raise_child_exception
504
- assert_response :created
505
- end
506
- end
507
-
508
- class ControllerInheritanceRescueController < ExceptionInheritanceRescueController
509
- class FirstExceptionInChildController < StandardError
510
- end
511
-
512
- class SecondExceptionInChildController < StandardError
513
- end
514
-
515
- rescue_from FirstExceptionInChildController, 'SecondExceptionInChildController', :with => lambda { head :gone }
516
-
517
- def raise_first_exception_in_child_controller
518
- raise FirstExceptionInChildController
519
- end
520
-
521
- def raise_second_exception_in_child_controller
522
- raise SecondExceptionInChildController
523
- end
524
- end
525
-
526
- class ControllerInheritanceRescueControllerTest < ActionController::TestCase
527
- def test_first_exception_in_child_controller
528
- get :raise_first_exception_in_child_controller
529
- assert_response :gone
530
- end
531
-
532
- def test_second_exception_in_child_controller
533
- get :raise_second_exception_in_child_controller
534
- assert_response :gone
535
- end
536
-
537
- def test_exception_in_parent_controller
538
- get :raise_parent_exception
539
- assert_response :created
540
- end
541
- end