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,187 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- # You need to start a memcached server inorder to run these tests
4
- class MemCacheStoreTest < ActionController::IntegrationTest
5
- class TestController < ActionController::Base
6
- def no_session_access
7
- head :ok
8
- end
9
-
10
- def set_session_value
11
- session[:foo] = "bar"
12
- head :ok
13
- end
14
-
15
- def set_serialized_session_value
16
- session[:foo] = SessionAutoloadTest::Foo.new
17
- head :ok
18
- end
19
-
20
- def get_session_value
21
- render :text => "foo: #{session[:foo].inspect}"
22
- end
23
-
24
- def get_session_id
25
- render :text => "#{request.session_options[:id]}"
26
- end
27
-
28
- def call_reset_session
29
- session[:bar]
30
- reset_session
31
- session[:bar] = "baz"
32
- head :ok
33
- end
34
-
35
- def rescue_action(e) raise end
36
- end
37
-
38
- begin
39
- DispatcherApp = ActionController::Dispatcher.new
40
-
41
- def test_setting_and_getting_session_value
42
- with_test_route_set do
43
- get '/set_session_value'
44
- assert_response :success
45
- assert cookies['_session_id']
46
-
47
- get '/get_session_value'
48
- assert_response :success
49
- assert_equal 'foo: "bar"', response.body
50
- end
51
- end
52
-
53
- def test_getting_nil_session_value
54
- with_test_route_set do
55
- get '/get_session_value'
56
- assert_response :success
57
- assert_equal 'foo: nil', response.body
58
- end
59
- end
60
-
61
- def test_setting_session_value_after_session_reset
62
- with_test_route_set do
63
- get '/set_session_value'
64
- assert_response :success
65
- assert cookies['_session_id']
66
- session_id = cookies['_session_id']
67
-
68
- get '/call_reset_session'
69
- assert_response :success
70
- assert_not_equal [], headers['Set-Cookie']
71
-
72
- get '/get_session_value'
73
- assert_response :success
74
- assert_equal 'foo: nil', response.body
75
-
76
- get '/get_session_id'
77
- assert_response :success
78
- assert_not_equal session_id, response.body
79
- end
80
- end
81
-
82
- def test_getting_session_value_after_session_reset
83
- with_test_route_set do
84
- get '/set_session_value'
85
- assert_response :success
86
- assert cookies['_session_id']
87
- session_id = cookies["_session_id"]
88
-
89
- get '/call_reset_session'
90
- assert_response :success
91
- assert_not_equal [], headers['Set-Cookie']
92
-
93
- cookies["_session_id"] = session_id # replace our new session_id with our old, pre-reset session_id
94
-
95
- get '/get_session_value'
96
- assert_response :success
97
- assert_equal 'foo: nil', response.body, "data for this session should have been obliterated from memcached"
98
- end
99
- end
100
-
101
- def test_getting_from_nonexistent_session
102
- with_test_route_set do
103
- get '/get_session_value'
104
- assert_response :success
105
- assert_equal 'foo: nil', response.body
106
- assert_nil cookies['_session_id'], "should only create session on write, not read"
107
- end
108
- end
109
-
110
- def test_getting_session_id
111
- with_test_route_set do
112
- get '/set_session_value'
113
- assert_response :success
114
- assert cookies['_session_id']
115
- session_id = cookies['_session_id']
116
-
117
- get '/get_session_id'
118
- assert_response :success
119
- assert_equal session_id, response.body, "should be able to read session id without accessing the session hash"
120
- end
121
- end
122
-
123
- def test_doesnt_write_session_cookie_if_session_id_is_already_exists
124
- with_test_route_set do
125
- get '/set_session_value'
126
- assert_response :success
127
- assert cookies['_session_id']
128
-
129
- get '/get_session_value'
130
- assert_response :success
131
- assert_equal nil, headers['Set-Cookie'], "should not resend the cookie again if session_id cookie is already exists"
132
- end
133
- end
134
-
135
- def test_deserializes_unloaded_class
136
- with_test_route_set do
137
- with_autoload_path "session_autoload_test" do
138
- get '/set_serialized_session_value'
139
- assert_response :success
140
- assert cookies['_session_id']
141
- end
142
- with_autoload_path "session_autoload_test" do
143
- get '/get_session_id'
144
- assert_response :success
145
- end
146
- with_autoload_path "session_autoload_test" do
147
- get '/get_session_value'
148
- assert_response :success
149
- assert_equal 'foo: #<SessionAutoloadTest::Foo bar:"baz">', response.body, "should auto-load unloaded class"
150
- end
151
- end
152
- end
153
-
154
- def test_prevents_session_fixation
155
- with_test_route_set do
156
- get '/get_session_value'
157
- assert_response :success
158
- assert_equal 'foo: nil', response.body
159
- session_id = cookies['_session_id']
160
-
161
- reset!
162
-
163
- get '/set_session_value', :_session_id => session_id
164
- assert_response :success
165
- assert_equal nil, cookies['_session_id']
166
- end
167
- end
168
- rescue LoadError, RuntimeError
169
- $stderr.puts "Skipping MemCacheStoreTest tests. Start memcached and try again."
170
- end
171
-
172
- private
173
- def with_test_route_set(options = {})
174
- with_routing do |set|
175
- set.draw do |map|
176
- map.with_options :controller => "mem_cache_store_test/test" do |c|
177
- c.connect "/:action"
178
- end
179
- end
180
-
181
- options = { :key => '_session_id' }.merge!(options)
182
- @integration_session = open_session(ActionController::Session::MemCacheStore.new(DispatcherApp, options))
183
-
184
- yield
185
- end
186
- end
187
- end
@@ -1,58 +0,0 @@
1
- require 'abstract_unit'
2
- require 'stringio'
3
-
4
- class ActionController::TestSessionTest < ActiveSupport::TestCase
5
-
6
- def test_calling_delete_without_parameters_raises_deprecation_warning_and_calls_to_clear_test_session
7
- assert_deprecated(/use clear instead/){ ActionController::TestSession.new.delete }
8
- end
9
-
10
- def test_calling_update_without_parameters_raises_deprecation_warning_and_calls_to_clear_test_session
11
- assert_deprecated(/use replace instead/){ ActionController::TestSession.new.update }
12
- end
13
-
14
- def test_calling_close_raises_deprecation_warning
15
- assert_deprecated(/sessions should no longer be closed/){ ActionController::TestSession.new.close }
16
- end
17
-
18
- def test_defaults
19
- session = ActionController::TestSession.new
20
- assert_equal({}, session.data)
21
- assert_equal('', session.session_id)
22
- end
23
-
24
- def test_ctor_allows_setting
25
- session = ActionController::TestSession.new({:one => 'one', :two => 'two'})
26
- assert_equal('one', session[:one])
27
- assert_equal('two', session[:two])
28
- end
29
-
30
- def test_setting_session_item_sets_item
31
- session = ActionController::TestSession.new
32
- session[:key] = 'value'
33
- assert_equal('value', session[:key])
34
- end
35
-
36
- def test_calling_delete_removes_item_and_returns_its_value
37
- session = ActionController::TestSession.new
38
- session[:key] = 'value'
39
- assert_equal('value', session[:key])
40
- assert_equal('value', session.delete(:key))
41
- assert_nil(session[:key])
42
- end
43
-
44
- def test_calling_update_with_params_passes_to_attributes
45
- session = ActionController::TestSession.new()
46
- session.update('key' => 'value')
47
- assert_equal('value', session[:key])
48
- end
49
-
50
- def test_clear_emptys_session
51
- params = {:one => 'one', :two => 'two'}
52
- session = ActionController::TestSession.new({:one => 'one', :two => 'two'})
53
- session.clear
54
- assert_nil(session[:one])
55
- assert_nil(session[:two])
56
- end
57
-
58
- end
@@ -1,700 +0,0 @@
1
- require 'abstract_unit'
2
- require 'controller/fake_controllers'
3
-
4
- class TestTest < ActionController::TestCase
5
- class TestController < ActionController::Base
6
- def no_op
7
- render :text => 'dummy'
8
- end
9
-
10
- def set_flash
11
- flash["test"] = ">#{flash["test"]}<"
12
- render :text => 'ignore me'
13
- end
14
-
15
- def set_flash_now
16
- flash.now["test_now"] = ">#{flash["test_now"]}<"
17
- render :text => 'ignore me'
18
- end
19
-
20
- def set_session
21
- session['string'] = 'A wonder'
22
- session[:symbol] = 'it works'
23
- render :text => 'Success'
24
- end
25
-
26
- def reset_the_session
27
- reset_session
28
- render :text => 'ignore me'
29
- end
30
-
31
- def render_raw_post
32
- raise ActiveSupport::TestCase::Assertion, "#raw_post is blank" if request.raw_post.blank?
33
- render :text => request.raw_post
34
- end
35
-
36
- def render_body
37
- render :text => request.body.read
38
- end
39
-
40
- def test_params
41
- render :text => params.inspect
42
- end
43
-
44
- def test_uri
45
- render :text => request.request_uri
46
- end
47
-
48
- def test_query_string
49
- render :text => request.query_string
50
- end
51
-
52
- def test_html_output
53
- render :text => <<HTML
54
- <html>
55
- <body>
56
- <a href="/"><img src="/images/button.png" /></a>
57
- <div id="foo">
58
- <ul>
59
- <li class="item">hello</li>
60
- <li class="item">goodbye</li>
61
- </ul>
62
- </div>
63
- <div id="bar">
64
- <form action="/somewhere">
65
- Name: <input type="text" name="person[name]" id="person_name" />
66
- </form>
67
- </div>
68
- </body>
69
- </html>
70
- HTML
71
- end
72
-
73
- def test_xml_output
74
- response.content_type = "application/xml"
75
- render :text => <<XML
76
- <?xml version="1.0" encoding="UTF-8"?>
77
- <root>
78
- <area>area is an empty tag in HTML, raising an error if not in xml mode</area>
79
- </root>
80
- XML
81
- end
82
-
83
- def test_only_one_param
84
- render :text => (params[:left] && params[:right]) ? "EEP, Both here!" : "OK"
85
- end
86
-
87
- def test_remote_addr
88
- render :text => (request.remote_addr || "not specified")
89
- end
90
-
91
- def test_file_upload
92
- render :text => params[:file].size
93
- end
94
-
95
- def test_send_file
96
- send_file(File.expand_path(__FILE__))
97
- end
98
-
99
- def redirect_to_same_controller
100
- redirect_to :controller => 'test', :action => 'test_uri', :id => 5
101
- end
102
-
103
- def redirect_to_different_controller
104
- redirect_to :controller => 'fail', :id => 5
105
- end
106
-
107
- def create
108
- head :created, :location => 'created resource'
109
- end
110
-
111
- private
112
- def rescue_action(e)
113
- raise e
114
- end
115
-
116
- def generate_url(opts)
117
- url_for(opts.merge(:action => "test_uri"))
118
- end
119
- end
120
-
121
- def setup
122
- @controller = TestController.new
123
- @request = ActionController::TestRequest.new
124
- @response = ActionController::TestResponse.new
125
- ActionController::Routing.use_controllers! %w(content admin/user test_test/test)
126
- ActionController::Routing::Routes.load_routes!
127
- end
128
-
129
- def teardown
130
- ActionController::Routing::Routes.reload
131
- end
132
-
133
- def test_raw_post_handling
134
- params = {:page => {:name => 'page name'}, 'some key' => 123}
135
- post :render_raw_post, params.dup
136
-
137
- assert_equal params.to_query, @response.body
138
- end
139
-
140
- def test_body_stream
141
- params = { :page => { :name => 'page name' }, 'some key' => 123 }
142
-
143
- post :render_body, params.dup
144
-
145
- assert_equal params.to_query, @response.body
146
- end
147
-
148
- def test_process_without_flash
149
- process :set_flash
150
- assert_equal '><', flash['test']
151
- end
152
-
153
- def test_process_with_flash
154
- process :set_flash, nil, nil, { "test" => "value" }
155
- assert_equal '>value<', flash['test']
156
- end
157
-
158
- def test_process_with_flash_now
159
- process :set_flash_now, nil, nil, { "test_now" => "value_now" }
160
- assert_equal '>value_now<', flash['test_now']
161
- end
162
-
163
- def test_process_with_session
164
- process :set_session
165
- assert_equal 'A wonder', session['string'], "A value stored in the session should be available by string key"
166
- assert_equal 'A wonder', session[:string], "Test session hash should allow indifferent access"
167
- assert_equal 'it works', session['symbol'], "Test session hash should allow indifferent access"
168
- assert_equal 'it works', session[:symbol], "Test session hash should allow indifferent access"
169
- end
170
-
171
- def test_process_with_session_arg
172
- process :no_op, nil, { 'string' => 'value1', :symbol => 'value2' }
173
- assert_equal 'value1', session['string']
174
- assert_equal 'value1', session[:string]
175
- assert_equal 'value2', session['symbol']
176
- assert_equal 'value2', session[:symbol]
177
- end
178
-
179
- def test_session_is_cleared_from_controller_after_reset_session
180
- process :set_session
181
- process :reset_the_session
182
- assert_equal Hash.new, @controller.session.to_hash
183
- end
184
-
185
- def test_session_is_cleared_from_response_after_reset_session
186
- process :set_session
187
- process :reset_the_session
188
- assert_equal Hash.new, @response.session.to_hash
189
- end
190
-
191
- def test_session_is_cleared_from_request_after_reset_session
192
- process :set_session
193
- process :reset_the_session
194
- assert_equal Hash.new, @request.session.to_hash
195
- end
196
-
197
- def test_process_with_request_uri_with_no_params
198
- process :test_uri
199
- assert_equal "/test_test/test/test_uri", @response.body
200
- end
201
-
202
- def test_process_with_request_uri_with_params
203
- process :test_uri, :id => 7
204
- assert_equal "/test_test/test/test_uri/7", @response.body
205
- end
206
-
207
- def test_process_with_request_uri_with_params_with_explicit_uri
208
- @request.set_REQUEST_URI "/explicit/uri"
209
- process :test_uri, :id => 7
210
- assert_equal "/explicit/uri", @response.body
211
- end
212
-
213
- def test_process_with_query_string
214
- process :test_query_string, :q => 'test'
215
- assert_equal "q=test", @response.body
216
- end
217
-
218
- def test_process_with_query_string_with_explicit_uri
219
- @request.set_REQUEST_URI "/explicit/uri?q=test?extra=question"
220
- process :test_query_string
221
- assert_equal "q=test?extra=question", @response.body
222
- end
223
-
224
- def test_multiple_calls
225
- process :test_only_one_param, :left => true
226
- assert_equal "OK", @response.body
227
- process :test_only_one_param, :right => true
228
- assert_equal "OK", @response.body
229
- end
230
-
231
- def test_assert_tag_tag
232
- process :test_html_output
233
-
234
- # there is a 'form' tag
235
- assert_tag :tag => 'form'
236
- # there is not an 'hr' tag
237
- assert_no_tag :tag => 'hr'
238
- end
239
-
240
- def test_assert_tag_attributes
241
- process :test_html_output
242
-
243
- # there is a tag with an 'id' of 'bar'
244
- assert_tag :attributes => { :id => "bar" }
245
- # there is no tag with a 'name' of 'baz'
246
- assert_no_tag :attributes => { :name => "baz" }
247
- end
248
-
249
- def test_assert_tag_parent
250
- process :test_html_output
251
-
252
- # there is a tag with a parent 'form' tag
253
- assert_tag :parent => { :tag => "form" }
254
- # there is no tag with a parent of 'input'
255
- assert_no_tag :parent => { :tag => "input" }
256
- end
257
-
258
- def test_assert_tag_child
259
- process :test_html_output
260
-
261
- # there is a tag with a child 'input' tag
262
- assert_tag :child => { :tag => "input" }
263
- # there is no tag with a child 'strong' tag
264
- assert_no_tag :child => { :tag => "strong" }
265
- end
266
-
267
- def test_assert_tag_ancestor
268
- process :test_html_output
269
-
270
- # there is a 'li' tag with an ancestor having an id of 'foo'
271
- assert_tag :ancestor => { :attributes => { :id => "foo" } }, :tag => "li"
272
- # there is no tag of any kind with an ancestor having an href matching 'foo'
273
- assert_no_tag :ancestor => { :attributes => { :href => /foo/ } }
274
- end
275
-
276
- def test_assert_tag_descendant
277
- process :test_html_output
278
-
279
- # there is a tag with a descendant 'li' tag
280
- assert_tag :descendant => { :tag => "li" }
281
- # there is no tag with a descendant 'html' tag
282
- assert_no_tag :descendant => { :tag => "html" }
283
- end
284
-
285
- def test_assert_tag_sibling
286
- process :test_html_output
287
-
288
- # there is a tag with a sibling of class 'item'
289
- assert_tag :sibling => { :attributes => { :class => "item" } }
290
- # there is no tag with a sibling 'ul' tag
291
- assert_no_tag :sibling => { :tag => "ul" }
292
- end
293
-
294
- def test_assert_tag_after
295
- process :test_html_output
296
-
297
- # there is a tag following a sibling 'div' tag
298
- assert_tag :after => { :tag => "div" }
299
- # there is no tag following a sibling tag with id 'bar'
300
- assert_no_tag :after => { :attributes => { :id => "bar" } }
301
- end
302
-
303
- def test_assert_tag_before
304
- process :test_html_output
305
-
306
- # there is a tag preceding a tag with id 'bar'
307
- assert_tag :before => { :attributes => { :id => "bar" } }
308
- # there is no tag preceding a 'form' tag
309
- assert_no_tag :before => { :tag => "form" }
310
- end
311
-
312
- def test_assert_tag_children_count
313
- process :test_html_output
314
-
315
- # there is a tag with 2 children
316
- assert_tag :children => { :count => 2 }
317
- # in particular, there is a <ul> tag with two children (a nameless pair of <li>s)
318
- assert_tag :tag => 'ul', :children => { :count => 2 }
319
- # there is no tag with 4 children
320
- assert_no_tag :children => { :count => 4 }
321
- end
322
-
323
- def test_assert_tag_children_less_than
324
- process :test_html_output
325
-
326
- # there is a tag with less than 5 children
327
- assert_tag :children => { :less_than => 5 }
328
- # there is no 'ul' tag with less than 2 children
329
- assert_no_tag :children => { :less_than => 2 }, :tag => "ul"
330
- end
331
-
332
- def test_assert_tag_children_greater_than
333
- process :test_html_output
334
-
335
- # there is a 'body' tag with more than 1 children
336
- assert_tag :children => { :greater_than => 1 }, :tag => "body"
337
- # there is no tag with more than 10 children
338
- assert_no_tag :children => { :greater_than => 10 }
339
- end
340
-
341
- def test_assert_tag_children_only
342
- process :test_html_output
343
-
344
- # there is a tag containing only one child with an id of 'foo'
345
- assert_tag :children => { :count => 1,
346
- :only => { :attributes => { :id => "foo" } } }
347
- # there is no tag containing only one 'li' child
348
- assert_no_tag :children => { :count => 1, :only => { :tag => "li" } }
349
- end
350
-
351
- def test_assert_tag_content
352
- process :test_html_output
353
-
354
- # the output contains the string "Name"
355
- assert_tag :content => /Name/
356
- # the output does not contain the string "test"
357
- assert_no_tag :content => /test/
358
- end
359
-
360
- def test_assert_tag_multiple
361
- process :test_html_output
362
-
363
- # there is a 'div', id='bar', with an immediate child whose 'action'
364
- # attribute matches the regexp /somewhere/.
365
- assert_tag :tag => "div", :attributes => { :id => "bar" },
366
- :child => { :attributes => { :action => /somewhere/ } }
367
-
368
- # there is no 'div', id='foo', with a 'ul' child with more than
369
- # 2 "li" children.
370
- assert_no_tag :tag => "div", :attributes => { :id => "foo" },
371
- :child => {
372
- :tag => "ul",
373
- :children => { :greater_than => 2,
374
- :only => { :tag => "li" } } }
375
- end
376
-
377
- def test_assert_tag_children_without_content
378
- process :test_html_output
379
-
380
- # there is a form tag with an 'input' child which is a self closing tag
381
- assert_tag :tag => "form",
382
- :children => { :count => 1,
383
- :only => { :tag => "input" } }
384
-
385
- # the body tag has an 'a' child which in turn has an 'img' child
386
- assert_tag :tag => "body",
387
- :children => { :count => 1,
388
- :only => { :tag => "a",
389
- :children => { :count => 1,
390
- :only => { :tag => "img" } } } }
391
- end
392
-
393
- def test_should_not_impose_childless_html_tags_in_xml
394
- process :test_xml_output
395
-
396
- begin
397
- $stderr = StringIO.new
398
- assert_select 'area' #This will cause a warning if content is processed as HTML
399
- $stderr.rewind && err = $stderr.read
400
- ensure
401
- $stderr = STDERR
402
- end
403
-
404
- assert err.empty?
405
- end
406
-
407
- def test_assert_tag_attribute_matching
408
- @response.body = '<input type="text" name="my_name">'
409
- assert_tag :tag => 'input',
410
- :attributes => { :name => /my/, :type => 'text' }
411
- assert_no_tag :tag => 'input',
412
- :attributes => { :name => 'my', :type => 'text' }
413
- assert_no_tag :tag => 'input',
414
- :attributes => { :name => /^my$/, :type => 'text' }
415
- end
416
-
417
- def test_assert_tag_content_matching
418
- @response.body = "<p>hello world</p>"
419
- assert_tag :tag => "p", :content => "hello world"
420
- assert_tag :tag => "p", :content => /hello/
421
- assert_no_tag :tag => "p", :content => "hello"
422
- end
423
-
424
- def test_assert_generates
425
- assert_generates 'controller/action/5', :controller => 'controller', :action => 'action', :id => '5'
426
- assert_generates 'controller/action/7', {:id => "7"}, {:controller => "controller", :action => "action"}
427
- assert_generates 'controller/action/5', {:controller => "controller", :action => "action", :id => "5", :name => "bob"}, {}, {:name => "bob"}
428
- assert_generates 'controller/action/7', {:id => "7", :name => "bob"}, {:controller => "controller", :action => "action"}, {:name => "bob"}
429
- assert_generates 'controller/action/7', {:id => "7"}, {:controller => "controller", :action => "action", :name => "bob"}, {}
430
- end
431
-
432
- def test_assert_routing
433
- assert_routing 'content', :controller => 'content', :action => 'index'
434
- end
435
-
436
- def test_assert_routing_with_method
437
- with_routing do |set|
438
- set.draw { |map| map.resources(:content) }
439
- assert_routing({ :method => 'post', :path => 'content' }, { :controller => 'content', :action => 'create' })
440
- end
441
- end
442
-
443
- def test_assert_routing_in_module
444
- assert_routing 'admin/user', :controller => 'admin/user', :action => 'index'
445
- end
446
-
447
- def test_params_passing
448
- get :test_params, :page => {:name => "Page name", :month => '4', :year => '2004', :day => '6'}
449
- parsed_params = eval(@response.body)
450
- assert_equal(
451
- {'controller' => 'test_test/test', 'action' => 'test_params',
452
- 'page' => {'name' => "Page name", 'month' => '4', 'year' => '2004', 'day' => '6'}},
453
- parsed_params
454
- )
455
- end
456
-
457
- def test_id_converted_to_string
458
- get :test_params, :id => 20, :foo => Object.new
459
- assert_kind_of String, @request.path_parameters['id']
460
- end
461
-
462
- def test_array_path_parameter_handled_properly
463
- with_routing do |set|
464
- set.draw do |map|
465
- map.connect 'file/*path', :controller => 'test_test/test', :action => 'test_params'
466
- map.connect ':controller/:action/:id'
467
- end
468
-
469
- get :test_params, :path => ['hello', 'world']
470
- assert_equal ['hello', 'world'], @request.path_parameters['path']
471
- assert_equal 'hello/world', @request.path_parameters['path'].to_s
472
- end
473
- end
474
-
475
- def test_assert_realistic_path_parameters
476
- get :test_params, :id => 20, :foo => Object.new
477
-
478
- # All elements of path_parameters should use string keys
479
- @request.path_parameters.keys.each do |key|
480
- assert_kind_of String, key
481
- end
482
- end
483
-
484
- def test_with_routing_places_routes_back
485
- assert ActionController::Routing::Routes
486
- routes_id = ActionController::Routing::Routes.object_id
487
-
488
- begin
489
- with_routing { raise 'fail' }
490
- fail 'Should not be here.'
491
- rescue RuntimeError
492
- end
493
-
494
- assert ActionController::Routing::Routes
495
- assert_equal routes_id, ActionController::Routing::Routes.object_id
496
- end
497
-
498
- def test_remote_addr
499
- get :test_remote_addr
500
- assert_equal "0.0.0.0", @response.body
501
-
502
- @request.remote_addr = "192.0.0.1"
503
- get :test_remote_addr
504
- assert_equal "192.0.0.1", @response.body
505
- end
506
-
507
- def test_header_properly_reset_after_remote_http_request
508
- xhr :get, :test_params
509
- assert_nil @request.env['HTTP_X_REQUESTED_WITH']
510
- end
511
-
512
- def test_header_properly_reset_after_get_request
513
- get :test_params
514
- @request.recycle!
515
- assert_nil @request.instance_variable_get("@request_method")
516
- end
517
-
518
- def test_params_reset_after_post_request
519
- post :no_op, :foo => "bar"
520
- assert_equal "bar", @request.params[:foo]
521
- @request.recycle!
522
- post :no_op
523
- assert @request.params[:foo].blank?
524
- end
525
-
526
- %w(controller response request).each do |variable|
527
- %w(get post put delete head process).each do |method|
528
- define_method("test_#{variable}_missing_for_#{method}_raises_error") do
529
- remove_instance_variable "@#{variable}"
530
- begin
531
- send(method, :test_remote_addr)
532
- assert false, "expected RuntimeError, got nothing"
533
- rescue RuntimeError => error
534
- assert true
535
- assert_match %r{@#{variable} is nil}, error.message
536
- rescue => error
537
- assert false, "expected RuntimeError, got #{error.class}"
538
- end
539
- end
540
- end
541
- end
542
-
543
- FILES_DIR = File.dirname(__FILE__) + '/../fixtures/multipart'
544
-
545
- if RUBY_VERSION < '1.9'
546
- READ_BINARY = 'rb'
547
- READ_PLAIN = 'r'
548
- else
549
- READ_BINARY = 'rb:binary'
550
- READ_PLAIN = 'r:binary'
551
- end
552
-
553
- def test_test_uploaded_file
554
- filename = 'mona_lisa.jpg'
555
- path = "#{FILES_DIR}/#{filename}"
556
- content_type = 'image/png'
557
- expected = File.read(path)
558
- expected.force_encoding(Encoding::BINARY) if expected.respond_to?(:force_encoding)
559
-
560
- file = ActionController::TestUploadedFile.new(path, content_type)
561
- assert_equal filename, file.original_filename
562
- assert_equal content_type, file.content_type
563
- assert_equal file.path, file.local_path
564
- assert_equal expected, file.read
565
-
566
- new_content_type = "new content_type"
567
- file.content_type = new_content_type
568
- assert_equal new_content_type, file.content_type
569
-
570
- end
571
-
572
- def test_test_uploaded_file_with_binary
573
- filename = 'mona_lisa.jpg'
574
- path = "#{FILES_DIR}/#{filename}"
575
- content_type = 'image/png'
576
-
577
- binary_uploaded_file = ActionController::TestUploadedFile.new(path, content_type, :binary)
578
- assert_equal File.open(path, READ_BINARY).read, binary_uploaded_file.read
579
-
580
- plain_uploaded_file = ActionController::TestUploadedFile.new(path, content_type)
581
- assert_equal File.open(path, READ_PLAIN).read, plain_uploaded_file.read
582
- end
583
-
584
- def test_fixture_file_upload_with_binary
585
- filename = 'mona_lisa.jpg'
586
- path = "#{FILES_DIR}/#{filename}"
587
- content_type = 'image/jpg'
588
-
589
- binary_file_upload = fixture_file_upload(path, content_type, :binary)
590
- assert_equal File.open(path, READ_BINARY).read, binary_file_upload.read
591
-
592
- plain_file_upload = fixture_file_upload(path, content_type)
593
- assert_equal File.open(path, READ_PLAIN).read, plain_file_upload.read
594
- end
595
-
596
- def test_fixture_file_upload
597
- post :test_file_upload, :file => fixture_file_upload(FILES_DIR + "/mona_lisa.jpg", "image/jpg")
598
- assert_equal '159528', @response.body
599
- end
600
-
601
- def test_test_uploaded_file_exception_when_file_doesnt_exist
602
- assert_raise(RuntimeError) { ActionController::TestUploadedFile.new('non_existent_file') }
603
- end
604
-
605
- def test_redirect_url_only_cares_about_location_header
606
- get :create
607
- assert_response :created
608
-
609
- # Redirect url doesn't care that it wasn't a :redirect response.
610
- assert_equal 'created resource', @response.redirect_url
611
- assert_equal @response.redirect_url, redirect_to_url
612
-
613
- # Must be a :redirect response.
614
- assert_raise(ActiveSupport::TestCase::Assertion) do
615
- assert_redirected_to 'created resource'
616
- end
617
- end
618
-
619
- def test_binary_content_works_with_send_file
620
- get :test_send_file
621
- assert_nothing_raised(NoMethodError) { @response.binary_content }
622
- end
623
-
624
- protected
625
- def with_foo_routing
626
- with_routing do |set|
627
- set.draw do |map|
628
- map.generate_url 'foo', :controller => 'test'
629
- map.connect ':controller/:action/:id'
630
- end
631
- yield set
632
- end
633
- end
634
- end
635
-
636
- class CleanBacktraceTest < ActionController::TestCase
637
- def test_should_reraise_the_same_object
638
- exception = ActiveSupport::TestCase::Assertion.new('message')
639
- clean_backtrace { raise exception }
640
- rescue Exception => caught
641
- assert_equal exception.object_id, caught.object_id
642
- assert_equal exception.message, caught.message
643
- end
644
-
645
- def test_should_clean_assertion_lines_from_backtrace
646
- path = File.expand_path("#{File.dirname(__FILE__)}/../../lib/action_controller")
647
- exception = ActiveSupport::TestCase::Assertion.new('message')
648
- exception.set_backtrace ["#{path}/abc", "#{path}/assertions/def"]
649
- clean_backtrace { raise exception }
650
- rescue Exception => caught
651
- assert_equal ["#{path}/abc"], caught.backtrace
652
- end
653
-
654
- def test_should_only_clean_assertion_failure_errors
655
- clean_backtrace do
656
- raise "can't touch this", [File.expand_path("#{File.dirname(__FILE__)}/../../lib/action_controller/assertions/abc")]
657
- end
658
- rescue => caught
659
- assert !caught.backtrace.empty?
660
- end
661
- end
662
-
663
- class InferringClassNameTest < ActionController::TestCase
664
- def test_determine_controller_class
665
- assert_equal ContentController, determine_class("ContentControllerTest")
666
- end
667
-
668
- def test_determine_controller_class_with_nonsense_name
669
- assert_nil determine_class("HelloGoodBye")
670
- end
671
-
672
- def test_determine_controller_class_with_sensible_name_where_no_controller_exists
673
- assert_nil determine_class("NoControllerWithThisNameTest")
674
- end
675
-
676
- private
677
- def determine_class(name)
678
- ActionController::TestCase.determine_default_controller_class(name)
679
- end
680
- end
681
-
682
- class CrazyNameTest < ActionController::TestCase
683
- tests ContentController
684
-
685
- def test_controller_class_can_be_set_manually_not_just_inferred
686
- assert_equal ContentController, self.class.controller_class
687
- end
688
- end
689
-
690
- class NamedRoutesControllerTest < ActionController::TestCase
691
- tests ContentController
692
-
693
- def test_should_be_able_to_use_named_routes_before_a_request_is_done
694
- with_routing do |set|
695
- set.draw { |map| map.resources :contents }
696
- assert_equal 'http://test.host/contents/new', new_content_url
697
- assert_equal 'http://test.host/contents/1', content_url(:id => 1)
698
- end
699
- end
700
- end