actionpack 2.3.18 → 3.0.0.beta

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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,65 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class JsonParamsParsingTest < ActionController::IntegrationTest
4
- class TestController < ActionController::Base
5
- class << self
6
- attr_accessor :last_request_parameters
7
- end
8
-
9
- def parse
10
- self.class.last_request_parameters = request.request_parameters
11
- head :ok
12
- end
13
- end
14
-
15
- def teardown
16
- TestController.last_request_parameters = nil
17
- end
18
-
19
- test "parses json params for application json" do
20
- assert_parses(
21
- {"person" => {"name" => "David"}},
22
- "{\"person\": {\"name\": \"David\"}}", { 'CONTENT_TYPE' => 'application/json' }
23
- )
24
- end
25
-
26
- test "parses json params for application jsonrequest" do
27
- assert_parses(
28
- {"person" => {"name" => "David"}},
29
- "{\"person\": {\"name\": \"David\"}}", { 'CONTENT_TYPE' => 'application/jsonrequest' }
30
- )
31
- end
32
-
33
- test "logs error if parsing unsuccessful" do
34
- with_test_routing do
35
- begin
36
- $stderr = StringIO.new
37
- json = "[\"person]\": {\"name\": \"David\"}}"
38
- post "/parse", json, {'CONTENT_TYPE' => 'application/json'}
39
- assert_response :error
40
- $stderr.rewind && err = $stderr.read
41
- assert err =~ /Error occurred while parsing request parameters/
42
- ensure
43
- $stderr = STDERR
44
- end
45
- end
46
- end
47
-
48
- private
49
- def assert_parses(expected, actual, headers = {})
50
- with_test_routing do
51
- post "/parse", actual, headers
52
- assert_response :ok
53
- assert_equal(expected, TestController.last_request_parameters)
54
- end
55
- end
56
-
57
- def with_test_routing
58
- with_routing do |set|
59
- set.draw do |map|
60
- map.connect ':action', :controller => "json_params_parsing_test/test"
61
- end
62
- yield
63
- end
64
- end
65
- end
@@ -1,177 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class MultipartParamsParsingTest < ActionController::IntegrationTest
4
- class TestController < ActionController::Base
5
- class << self
6
- attr_accessor :last_request_parameters
7
- end
8
-
9
- def parse
10
- self.class.last_request_parameters = request.request_parameters
11
- head :ok
12
- end
13
-
14
- def read
15
- render :text => "File: #{params[:uploaded_data].read}"
16
- end
17
-
18
- def read_complex
19
- render :text => "File: #{params[:level0][:level1][0][:file_data].read}"
20
- end
21
- end
22
-
23
- FIXTURE_PATH = File.dirname(__FILE__) + '/../../fixtures/multipart'
24
-
25
- def teardown
26
- TestController.last_request_parameters = nil
27
- end
28
-
29
- test "parses single parameter" do
30
- assert_equal({ 'foo' => 'bar' }, parse_multipart('single_parameter'))
31
- end
32
-
33
- test "parses bracketed parameters" do
34
- assert_equal({ 'foo' => { 'baz' => 'bar'}}, parse_multipart('bracketed_param'))
35
- end
36
-
37
- test "parses text file" do
38
- params = parse_multipart('text_file')
39
- assert_equal %w(file foo), params.keys.sort
40
- assert_equal 'bar', params['foo']
41
-
42
- file = params['file']
43
- assert_kind_of Tempfile, file
44
- assert_equal 'file.txt', file.original_filename
45
- assert_equal "text/plain", file.content_type
46
- assert_equal 'contents', file.read
47
- end
48
-
49
- test "parses boundary problem file" do
50
- params = parse_multipart('boundary_problem_file')
51
- assert_equal %w(file foo), params.keys.sort
52
-
53
- file = params['file']
54
- foo = params['foo']
55
-
56
- assert_kind_of Tempfile, file
57
-
58
- assert_equal 'file.txt', file.original_filename
59
- assert_equal "text/plain", file.content_type
60
-
61
- assert_equal 'bar', foo
62
- end
63
-
64
- test "parses large text file" do
65
- params = parse_multipart('large_text_file')
66
- assert_equal %w(file foo), params.keys.sort
67
- assert_equal 'bar', params['foo']
68
-
69
- file = params['file']
70
-
71
- assert_kind_of Tempfile, file
72
-
73
- assert_equal 'file.txt', file.original_filename
74
- assert_equal "text/plain", file.content_type
75
- assert ('a' * 20480) == file.read
76
- end
77
-
78
- test "parses binary file" do
79
- params = parse_multipart('binary_file')
80
- assert_equal %w(file flowers foo), params.keys.sort
81
- assert_equal 'bar', params['foo']
82
-
83
- file = params['file']
84
- assert_kind_of Tempfile, file
85
- assert_equal 'file.csv', file.original_filename
86
- assert_nil file.content_type
87
- assert_equal 'contents', file.read
88
-
89
- file = params['flowers']
90
- assert_kind_of Tempfile, file
91
- assert_equal 'flowers.jpg', file.original_filename
92
- assert_equal "image/jpeg", file.content_type
93
- assert_equal 19512, file.size
94
- end
95
-
96
- test "parses mixed files" do
97
- params = parse_multipart('mixed_files')
98
- assert_equal %w(files foo), params.keys.sort
99
- assert_equal 'bar', params['foo']
100
-
101
- # Ruby CGI doesn't handle multipart/mixed for us.
102
- files = params['files']
103
- assert_kind_of Tempfile, files
104
- files.force_encoding('ASCII-8BIT') if files.respond_to?(:force_encoding)
105
- assert_equal 19756, files.size
106
- end
107
-
108
- test "does not create tempfile if no file has been selected" do
109
- params = parse_multipart('none')
110
- assert_equal %w(submit-name), params.keys.sort
111
- assert_equal 'Larry', params['submit-name']
112
- assert_equal nil, params['files']
113
- end
114
-
115
- test "parses empty upload file" do
116
- params = parse_multipart('empty')
117
- assert_equal %w(files submit-name), params.keys.sort
118
- assert_equal 'Larry', params['submit-name']
119
- assert params['files']
120
- assert_equal "", params['files'].read
121
- end
122
-
123
- test "uploads and reads binary file" do
124
- with_test_routing do
125
- fixture = FIXTURE_PATH + "/mona_lisa.jpg"
126
- params = { :uploaded_data => fixture_file_upload(fixture, "image/jpg") }
127
- post '/read', params
128
- expected_length = 'File: '.length + File.size(fixture)
129
- assert_equal expected_length, response.content_length
130
- end
131
- end
132
-
133
- test "uploads and reads file" do
134
- with_test_routing do
135
- post '/read', :uploaded_data => fixture_file_upload(FIXTURE_PATH + "/hello.txt", "text/plain")
136
- assert_equal "File: Hello", response.body
137
- end
138
- end
139
-
140
- test "uploads and reads file in complex parameter" do
141
- with_test_routing do
142
- post '/read_complex',
143
- :level0 => {
144
- :level1 => [ { :file_data => fixture_file_upload(FIXTURE_PATH + "/hello.txt", "text/plain") }
145
- ]
146
- }
147
- assert_equal "File: Hello", response.body
148
- end
149
- end
150
-
151
- private
152
- def fixture(name)
153
- File.open(File.join(FIXTURE_PATH, name), 'rb') do |file|
154
- { "rack.input" => file.read,
155
- "CONTENT_TYPE" => "multipart/form-data; boundary=AaB03x",
156
- "CONTENT_LENGTH" => file.stat.size.to_s }
157
- end
158
- end
159
-
160
- def parse_multipart(name)
161
- with_test_routing do
162
- headers = fixture(name)
163
- post "/parse", headers.delete("rack.input"), headers
164
- assert_response :ok
165
- TestController.last_request_parameters
166
- end
167
- end
168
-
169
- def with_test_routing
170
- with_routing do |set|
171
- set.draw do |map|
172
- map.connect ':action', :controller => "multipart_params_parsing_test/test"
173
- end
174
- yield
175
- end
176
- end
177
- end
@@ -1,129 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class QueryStringParsingTest < ActionController::IntegrationTest
4
- class TestController < ActionController::Base
5
- class << self
6
- attr_accessor :last_query_parameters
7
- end
8
-
9
- def parse
10
- self.class.last_query_parameters = request.query_parameters
11
- head :ok
12
- end
13
- end
14
-
15
- def teardown
16
- TestController.last_query_parameters = nil
17
- end
18
-
19
- test "query string" do
20
- assert_parses(
21
- {"action" => "create_customer", "full_name" => "David Heinemeier Hansson", "customerId" => "1"},
22
- "action=create_customer&full_name=David%20Heinemeier%20Hansson&customerId=1"
23
- )
24
- end
25
-
26
- test "deep query string" do
27
- assert_parses(
28
- {'x' => {'y' => {'z' => '10'}}},
29
- "x[y][z]=10"
30
- )
31
- end
32
-
33
- test "deep query string with array" do
34
- assert_parses({'x' => {'y' => {'z' => ['10']}}}, 'x[y][z][]=10')
35
- assert_parses({'x' => {'y' => {'z' => ['10', '5']}}}, 'x[y][z][]=10&x[y][z][]=5')
36
- end
37
-
38
- test "deep query string with array of hash" do
39
- assert_parses({'x' => {'y' => [{'z' => '10'}]}}, 'x[y][][z]=10')
40
- assert_parses({'x' => {'y' => [{'z' => '10', 'w' => '10'}]}}, 'x[y][][z]=10&x[y][][w]=10')
41
- assert_parses({'x' => {'y' => [{'z' => '10', 'v' => {'w' => '10'}}]}}, 'x[y][][z]=10&x[y][][v][w]=10')
42
- end
43
-
44
- test "deep query string with array of hashes with one pair" do
45
- assert_parses({'x' => {'y' => [{'z' => '10'}, {'z' => '20'}]}}, 'x[y][][z]=10&x[y][][z]=20')
46
- end
47
-
48
- test "deep query string with array of hashes with multiple pairs" do
49
- assert_parses(
50
- {'x' => {'y' => [{'z' => '10', 'w' => 'a'}, {'z' => '20', 'w' => 'b'}]}},
51
- 'x[y][][z]=10&x[y][][w]=a&x[y][][z]=20&x[y][][w]=b'
52
- )
53
- end
54
-
55
- test "query string with nil" do
56
- assert_parses(
57
- { "action" => "create_customer", "full_name" => ''},
58
- "action=create_customer&full_name="
59
- )
60
- end
61
-
62
- test "query string with array" do
63
- assert_parses(
64
- { "action" => "create_customer", "selected" => ["1", "2", "3"]},
65
- "action=create_customer&selected[]=1&selected[]=2&selected[]=3"
66
- )
67
- end
68
-
69
- test "query string with amps" do
70
- assert_parses(
71
- { "action" => "create_customer", "name" => "Don't & Does"},
72
- "action=create_customer&name=Don%27t+%26+Does"
73
- )
74
- end
75
-
76
- test "query string with many equal" do
77
- assert_parses(
78
- { "action" => "create_customer", "full_name" => "abc=def=ghi"},
79
- "action=create_customer&full_name=abc=def=ghi"
80
- )
81
- end
82
-
83
- test "query string without equal" do
84
- assert_parses({"action" => nil}, "action")
85
- assert_parses({"action" => {"foo" => nil}}, "action[foo]")
86
- assert_parses({"action" => {"foo" => { "bar" => nil }}}, "action[foo][bar]")
87
- assert_parses({"action" => {"foo" => { "bar" => nil }}}, "action[foo][bar][]")
88
- assert_parses({"action" => {"foo" => nil}}, "action[foo][]")
89
- assert_parses({"action"=>{"foo"=>[{"bar"=>nil}]}}, "action[foo][][bar]")
90
- end
91
-
92
- def test_array_parses_without_nil
93
- assert_parses({"action" => ['1']}, "action[]=1&action[]")
94
- end
95
-
96
- test "query string with empty key" do
97
- assert_parses(
98
- { "action" => "create_customer", "full_name" => "David Heinemeier Hansson" },
99
- "action=create_customer&full_name=David%20Heinemeier%20Hansson&=Save"
100
- )
101
- end
102
-
103
- test "query string with many ampersands" do
104
- assert_parses(
105
- { "action" => "create_customer", "full_name" => "David Heinemeier Hansson"},
106
- "&action=create_customer&&&full_name=David%20Heinemeier%20Hansson"
107
- )
108
- end
109
-
110
- test "unbalanced query string with array" do
111
- assert_parses(
112
- {'location' => ["1", "2"], 'age_group' => ["2"]},
113
- "location[]=1&location[]=2&age_group[]=2"
114
- )
115
- end
116
-
117
- private
118
- def assert_parses(expected, actual)
119
- with_routing do |set|
120
- set.draw do |map|
121
- map.connect ':action', :controller => "query_string_parsing_test/test"
122
- end
123
-
124
- get "/parse", actual
125
- assert_response :ok
126
- assert_equal(expected, TestController.last_query_parameters)
127
- end
128
- end
129
- end
@@ -1,35 +0,0 @@
1
- require 'abstract_unit'
2
- require 'stringio'
3
-
4
- class ActionController::TestRequestTest < ActiveSupport::TestCase
5
-
6
- def setup
7
- @request = ActionController::TestRequest.new
8
- end
9
-
10
- def test_test_request_has_session_options_initialized
11
- assert @request.session_options
12
- end
13
-
14
- Rack::Session::Abstract::ID::DEFAULT_OPTIONS.each_key do |option|
15
- test "test_rack_default_session_options_#{option}_exists_in_session_options_and_is_default" do
16
- assert_equal(Rack::Session::Abstract::ID::DEFAULT_OPTIONS[option],
17
- @request.session_options[option],
18
- "Missing rack session default option #{option} in request.session_options")
19
- end
20
- test "test_rack_default_session_options_#{option}_exists_in_session_options" do
21
- assert(@request.session_options.has_key?(option),
22
- "Missing rack session option #{option} in request.session_options")
23
- end
24
- end
25
-
26
- def test_session_id_exists_by_default
27
- assert_not_nil(@request.session_options[:id])
28
- end
29
-
30
- def test_session_id_different_on_each_call
31
- prev_id =
32
- assert_not_equal(@request.session_options[:id], ActionController::TestRequest.new.session_options[:id])
33
- end
34
-
35
- end
@@ -1,146 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- class UrlEncodedParamsParsingTest < ActionController::IntegrationTest
4
- class TestController < ActionController::Base
5
- class << self
6
- attr_accessor :last_request_parameters, :last_request_type
7
- end
8
-
9
- def parse
10
- self.class.last_request_parameters = request.request_parameters
11
- head :ok
12
- end
13
- end
14
-
15
- def teardown
16
- TestController.last_request_parameters = nil
17
- end
18
-
19
- test "parses unbalanced query string with array" do
20
- assert_parses(
21
- {'location' => ["1", "2"], 'age_group' => ["2"]},
22
- "location[]=1&location[]=2&age_group[]=2"
23
- )
24
- end
25
-
26
- test "parses nested hash" do
27
- query = [
28
- "note[viewers][viewer][][type]=User",
29
- "note[viewers][viewer][][id]=1",
30
- "note[viewers][viewer][][type]=Group",
31
- "note[viewers][viewer][][id]=2"
32
- ].join("&")
33
-
34
- expected = { "note" => { "viewers"=>{"viewer"=>[{ "id"=>"1", "type"=>"User"}, {"type"=>"Group", "id"=>"2"} ]} } }
35
- assert_parses(expected, query)
36
- end
37
-
38
- test "parses more complex nesting" do
39
- query = [
40
- "customers[boston][first][name]=David",
41
- "customers[boston][first][url]=http://David",
42
- "customers[boston][second][name]=Allan",
43
- "customers[boston][second][url]=http://Allan",
44
- "something_else=blah",
45
- "something_nil=",
46
- "something_empty=",
47
- "products[first]=Apple Computer",
48
- "products[second]=Pc",
49
- "=Save"
50
- ].join("&")
51
-
52
- expected = {
53
- "customers" => {
54
- "boston" => {
55
- "first" => {
56
- "name" => "David",
57
- "url" => "http://David"
58
- },
59
- "second" => {
60
- "name" => "Allan",
61
- "url" => "http://Allan"
62
- }
63
- }
64
- },
65
- "something_else" => "blah",
66
- "something_empty" => "",
67
- "something_nil" => "",
68
- "products" => {
69
- "first" => "Apple Computer",
70
- "second" => "Pc"
71
- }
72
- }
73
-
74
- assert_parses expected, query
75
- end
76
-
77
- test "parses params with array" do
78
- query = "selected[]=1&selected[]=2&selected[]=3"
79
- expected = { "selected" => [ "1", "2", "3" ] }
80
- assert_parses expected, query
81
- end
82
-
83
- test "parses params with nil key" do
84
- query = "=&test2=value1"
85
- expected = { "test2" => "value1" }
86
- assert_parses expected, query
87
- end
88
-
89
- test "parses params with array prefix and hashes" do
90
- query = "a[][b][c]=d"
91
- expected = {"a" => [{"b" => {"c" => "d"}}]}
92
- assert_parses expected, query
93
- end
94
-
95
- test "parses params with complex nesting" do
96
- query = "a[][b][c][][d][]=e"
97
- expected = {"a" => [{"b" => {"c" => [{"d" => ["e"]}]}}]}
98
- assert_parses expected, query
99
- end
100
-
101
- test "parses params with file path" do
102
- query = [
103
- "customers[boston][first][name]=David",
104
- "something_else=blah",
105
- "logo=#{File.expand_path(__FILE__)}"
106
- ].join("&")
107
-
108
- expected = {
109
- "customers" => {
110
- "boston" => {
111
- "first" => {
112
- "name" => "David"
113
- }
114
- }
115
- },
116
- "something_else" => "blah",
117
- "logo" => File.expand_path(__FILE__),
118
- }
119
-
120
- assert_parses expected, query
121
- end
122
-
123
- test "parses params with Safari 2 trailing null character" do
124
- query = "selected[]=1&selected[]=2&selected[]=3\0"
125
- expected = { "selected" => [ "1", "2", "3" ] }
126
- assert_parses expected, query
127
- end
128
-
129
- private
130
- def with_test_routing
131
- with_routing do |set|
132
- set.draw do |map|
133
- map.connect ':action', :controller => "url_encoded_params_parsing_test/test"
134
- end
135
- yield
136
- end
137
- end
138
-
139
- def assert_parses(expected, actual)
140
- with_test_routing do
141
- post "/parse", actual
142
- assert_response :ok
143
- assert_equal(expected, TestController.last_request_parameters)
144
- end
145
- end
146
- end