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,171 +0,0 @@
1
- # encoding: utf-8
2
- require 'abstract_unit'
3
-
4
- module TestFileUtils
5
- def file_name() File.basename(__FILE__) end
6
- def file_path() File.expand_path(__FILE__) end
7
- def file_data() @data ||= File.open(file_path, 'rb') { |f| f.read } end
8
- end
9
-
10
- class SendFileController < ActionController::Base
11
- include TestFileUtils
12
- layout "layouts/standard" # to make sure layouts don't interfere
13
-
14
- attr_writer :options
15
- def options() @options ||= {} end
16
-
17
- def file() send_file(file_path, options) end
18
- def data() send_data(file_data, options) end
19
- def multibyte_text_data() send_data("Кирилица\n祝您好運", options) end
20
-
21
- def rescue_action(e) raise end
22
- end
23
-
24
- class SendFileTest < ActionController::TestCase
25
- tests SendFileController
26
- include TestFileUtils
27
-
28
- Mime::Type.register "image/png", :png unless defined? Mime::PNG
29
-
30
- def setup
31
- @controller = SendFileController.new
32
- @request = ActionController::TestRequest.new
33
- @response = ActionController::TestResponse.new
34
- end
35
-
36
- def test_file_nostream
37
- @controller.options = { :stream => false }
38
- response = nil
39
- assert_nothing_raised { response = process('file') }
40
- assert_not_nil response
41
- assert_kind_of String, response.body
42
- assert_equal file_data, response.body
43
- end
44
-
45
- def test_file_stream
46
- response = nil
47
- assert_nothing_raised { response = process('file') }
48
- assert_not_nil response
49
- assert_kind_of Proc, response.body
50
-
51
- require 'stringio'
52
- output = StringIO.new
53
- output.binmode
54
- output.string.force_encoding(file_data.encoding) if output.string.respond_to?(:force_encoding)
55
- assert_nothing_raised { response.body.call(response, output) }
56
- assert_equal file_data, output.string
57
- end
58
-
59
- def test_file_url_based_filename
60
- @controller.options = { :url_based_filename => true }
61
- response = nil
62
- assert_nothing_raised { response = process('file') }
63
- assert_not_nil response
64
- assert_equal "attachment", response.headers["Content-Disposition"]
65
- end
66
-
67
- def test_x_sendfile_header
68
- @controller.options = { :x_sendfile => true }
69
-
70
- response = nil
71
- assert_nothing_raised { response = process('file') }
72
- assert_not_nil response
73
-
74
- assert_equal @controller.file_path, response.headers['X-Sendfile']
75
- assert response.body.blank?
76
- assert !response.etag?, response.headers.inspect
77
- end
78
-
79
- def test_data
80
- response = nil
81
- assert_nothing_raised { response = process('data') }
82
- assert_not_nil response
83
-
84
- assert_kind_of String, response.body
85
- assert_equal file_data, response.body
86
- end
87
-
88
- def test_headers_after_send_shouldnt_include_charset
89
- response = process('data')
90
- assert_equal "application/octet-stream", response.content_type
91
-
92
- response = process('file')
93
- assert_equal "application/octet-stream", response.content_type
94
- end
95
-
96
- # Test that send_file_headers! is setting the correct HTTP headers.
97
- def test_send_file_headers!
98
- options = {
99
- :length => 1,
100
- :type => Mime::PNG,
101
- :disposition => 'disposition',
102
- :filename => 'filename'
103
- }
104
-
105
- # Do it a few times: the resulting headers should be identical
106
- # no matter how many times you send with the same options.
107
- # Test resolving Ticket #458.
108
- @controller.headers = {}
109
- @controller.send(:send_file_headers!, options)
110
- @controller.send(:send_file_headers!, options)
111
- @controller.send(:send_file_headers!, options)
112
-
113
- h = @controller.headers
114
- assert_equal '1', h['Content-Length']
115
- assert_equal 'image/png', h['Content-Type']
116
- assert_equal 'disposition; filename="filename"', h['Content-Disposition']
117
- assert_equal 'binary', h['Content-Transfer-Encoding']
118
-
119
- # test overriding Cache-Control: no-cache header to fix IE open/save dialog
120
- @controller.headers = { 'Cache-Control' => 'no-cache' }
121
- @controller.send(:send_file_headers!, options)
122
- h = @controller.headers
123
- assert_equal 'private', h['Cache-Control']
124
- end
125
-
126
- def test_send_file_headers_with_mime_lookup_with_symbol
127
- options = {
128
- :length => 1,
129
- :type => :png
130
- }
131
-
132
- @controller.headers = {}
133
- @controller.send(:send_file_headers!, options)
134
-
135
- headers = @controller.headers
136
-
137
- assert_equal 'image/png', headers['Content-Type']
138
- end
139
-
140
-
141
- def test_send_file_headers_with_bad_symbol
142
- options = {
143
- :length => 1,
144
- :type => :this_type_is_not_registered
145
- }
146
-
147
- @controller.headers = {}
148
- assert_raise(ArgumentError){ @controller.send(:send_file_headers!, options) }
149
- end
150
-
151
- %w(file data).each do |method|
152
- define_method "test_send_#{method}_status" do
153
- @controller.options = { :stream => false, :status => 500 }
154
- assert_nothing_raised { assert_not_nil process(method) }
155
- assert_equal '500 Internal Server Error', @response.status
156
- end
157
-
158
- define_method "test_default_send_#{method}_status" do
159
- @controller.options = { :stream => false }
160
- assert_nothing_raised { assert_not_nil process(method) }
161
- assert_equal ActionController::Base::DEFAULT_RENDER_STATUS_CODE, @response.status
162
- end
163
- end
164
-
165
- def test_send_data_content_length_header
166
- @controller.headers = {}
167
- @controller.options = { :type => :text, :filename => 'file_with_utf8_text' }
168
- process('multibyte_text_data')
169
- assert_equal '29', @controller.headers['Content-Length']
170
- end
171
- end
@@ -1,64 +0,0 @@
1
- require 'abstract_unit'
2
-
3
- # You need to start a memcached server inorder to run these tests
4
- class AbstractStoreTest < ActionController::IntegrationTest
5
- SessionKey = '_myapp_session'
6
- DispatcherApp = ActionController::Dispatcher.new
7
-
8
- class TestController < ActionController::Base
9
- def get_session
10
- session[:test] = 'test'
11
- head :ok
12
- end
13
- end
14
-
15
- def test_expiry_after
16
- with_test_route_set(:expire_after => 5 * 60) do
17
- get 'get_session'
18
- assert_response :success
19
- assert_match /expires=\S+/, headers['Set-Cookie']
20
- end
21
- end
22
-
23
- protected
24
-
25
- def with_test_route_set(options = {})
26
- with_routing do |set|
27
- set.draw do |map|
28
- map.with_options :controller => "abstract_store_test/test" do |c|
29
- c.connect "/:action"
30
- end
31
- end
32
-
33
- options = { :key => SessionKey, :secret => 'SessionSecret' }.merge!(options)
34
- @integration_session = open_session(TestStore.new(DispatcherApp, options))
35
-
36
- yield
37
- end
38
- end
39
-
40
- class TestStore < ActionController::Session::AbstractStore
41
- def initialize(app, options = {})
42
- super
43
- @_store = Hash.new({})
44
- end
45
-
46
- private
47
-
48
- def get_session(env, sid)
49
- sid ||= generate_sid
50
- session = @_store[sid]
51
- [sid, session]
52
- end
53
-
54
- def set_session(env, sid, session_data)
55
- @_store[sid] = session_data
56
- end
57
-
58
- def destroy(env)
59
- @_store.delete(sid)
60
- end
61
- end
62
-
63
- end
64
-
@@ -1,354 +0,0 @@
1
- require 'abstract_unit'
2
- require 'stringio'
3
-
4
- class CookieStoreTest < ActionController::IntegrationTest
5
- SessionKey = '_myapp_session'
6
- SessionSecret = 'b3c631c314c0bbca50c1b2843150fe33'
7
-
8
- DispatcherApp = ActionController::Dispatcher.new
9
-
10
- Verifier = ActiveSupport::MessageVerifier.new(SessionSecret, 'SHA1')
11
-
12
- SignedBar = "BAh7BjoIZm9vIghiYXI%3D--fef868465920f415f2c0652d6910d3af288a0367"
13
-
14
- class TestController < ActionController::Base
15
- def no_session_access
16
- head :ok
17
- end
18
-
19
- def persistent_session_id
20
- render :text => session[:session_id]
21
- end
22
-
23
- def set_session_value
24
- session[:foo] = "bar"
25
- render :text => Rack::Utils.escape(Verifier.generate(session.to_hash))
26
- end
27
-
28
- def get_session_value
29
- render :text => "foo: #{session[:foo].inspect}"
30
- end
31
-
32
- def get_session_id
33
- render :text => "foo: #{session[:foo].inspect}; id: #{request.session_options[:id]}"
34
- end
35
-
36
- def get_session_id_only
37
- render :text => "id: #{request.session_options[:id]}"
38
- end
39
-
40
- def call_session_clear
41
- session.clear
42
- head :ok
43
- end
44
-
45
- def call_reset_session_twice
46
- reset_session
47
- reset_session
48
- head :ok
49
- end
50
-
51
- def call_reset_session
52
- reset_session
53
- head :ok
54
- end
55
-
56
- def raise_data_overflow
57
- session[:foo] = 'bye!' * 1024
58
- head :ok
59
- end
60
-
61
- def set_session_value_and_cookie
62
- cookies["foo"] = "bar"
63
- session[:foo] = "bar"
64
- render :text => Rack::Utils.escape(Verifier.generate(session.to_hash))
65
- end
66
-
67
- def rescue_action(e) raise end
68
- end
69
-
70
- def test_raises_argument_error_if_missing_session_key
71
- assert_raise(ArgumentError, nil.inspect) {
72
- ActionController::Session::CookieStore.new(nil,
73
- :key => nil, :secret => SessionSecret)
74
- }
75
-
76
- assert_raise(ArgumentError, ''.inspect) {
77
- ActionController::Session::CookieStore.new(nil,
78
- :key => '', :secret => SessionSecret)
79
- }
80
- end
81
-
82
- def test_raises_argument_error_if_missing_secret
83
- assert_raise(ArgumentError, nil.inspect) {
84
- ActionController::Session::CookieStore.new(nil,
85
- :key => SessionKey, :secret => nil)
86
- }
87
-
88
- assert_raise(ArgumentError, ''.inspect) {
89
- ActionController::Session::CookieStore.new(nil,
90
- :key => SessionKey, :secret => '')
91
- }
92
- end
93
-
94
- def test_raises_argument_error_if_secret_is_probably_insecure
95
- assert_raise(ArgumentError, "password".inspect) {
96
- ActionController::Session::CookieStore.new(nil,
97
- :key => SessionKey, :secret => "password")
98
- }
99
-
100
- assert_raise(ArgumentError, "secret".inspect) {
101
- ActionController::Session::CookieStore.new(nil,
102
- :key => SessionKey, :secret => "secret")
103
- }
104
-
105
- assert_raise(ArgumentError, "12345678901234567890123456789".inspect) {
106
- ActionController::Session::CookieStore.new(nil,
107
- :key => SessionKey, :secret => "12345678901234567890123456789")
108
- }
109
- end
110
-
111
- def test_setting_session_value
112
- with_test_route_set do
113
- get '/set_session_value'
114
- assert_response :success
115
- assert_equal "_myapp_session=#{response.body}; path=/; HttpOnly",
116
- headers['Set-Cookie']
117
- end
118
- end
119
-
120
- def test_getting_session_value
121
- with_test_route_set do
122
- cookies[SessionKey] = SignedBar
123
- get '/get_session_value'
124
- assert_response :success
125
- assert_equal 'foo: "bar"', response.body
126
- end
127
- end
128
-
129
- def test_getting_session_id
130
- with_test_route_set do
131
- cookies[SessionKey] = SignedBar
132
- get '/persistent_session_id'
133
- assert_response :success
134
- assert_equal response.body.size, 32
135
- session_id = response.body
136
-
137
- get '/get_session_id'
138
- assert_response :success
139
- assert_equal "foo: \"bar\"; id: #{session_id}", response.body
140
-
141
- get '/get_session_id_only'
142
- assert_response :success
143
- assert_equal "id: #{session_id}", response.body, "should be able to read session id without accessing the session hash"
144
- end
145
- end
146
-
147
- def test_disregards_tampered_sessions
148
- with_test_route_set do
149
- cookies[SessionKey] = "BAh7BjoIZm9vIghiYXI%3D--123456780"
150
- get '/get_session_value'
151
- assert_response :success
152
- assert_equal 'foo: nil', response.body
153
- end
154
- end
155
-
156
- def test_does_not_set_secure_cookies_over_http
157
- with_test_route_set(:secure => true) do
158
- get '/set_session_value'
159
- assert_response :success
160
- assert_equal nil, headers['Set-Cookie']
161
- end
162
- end
163
-
164
- def test_does_set_secure_cookies_over_https
165
- with_test_route_set(:secure => true) do
166
- get '/set_session_value', nil, 'HTTPS' => 'on'
167
- assert_response :success
168
- assert_equal "_myapp_session=#{response.body}; path=/; secure; HttpOnly",
169
- headers['Set-Cookie']
170
- end
171
- end
172
-
173
- def test_close_raises_when_data_overflows
174
- with_test_route_set do
175
- assert_raise(ActionController::Session::CookieStore::CookieOverflow) {
176
- get '/raise_data_overflow'
177
- }
178
- end
179
- end
180
-
181
- def test_doesnt_write_session_cookie_if_session_is_not_accessed
182
- with_test_route_set do
183
- get '/no_session_access'
184
- assert_response :success
185
- assert_equal nil, headers['Set-Cookie']
186
- end
187
- end
188
-
189
- def test_doesnt_write_session_cookie_if_session_is_unchanged
190
- with_test_route_set do
191
- cookies[SessionKey] = "BAh7BjoIZm9vIghiYXI%3D--" +
192
- "fef868465920f415f2c0652d6910d3af288a0367"
193
- get '/no_session_access'
194
- assert_response :success
195
- assert_equal nil, headers['Set-Cookie']
196
- end
197
- end
198
-
199
- def test_calling_session_reset_twice
200
- with_test_route_set do
201
- get '/set_session_value'
202
- assert_response :success
203
- session_payload = response.body
204
- assert_equal "_myapp_session=#{response.body}; path=/; HttpOnly",
205
- headers['Set-Cookie']
206
-
207
- get '/call_reset_session_twice'
208
- assert_response :success
209
- assert_not_equal "", headers['Set-Cookie']
210
- assert_not_equal session_payload, cookies[SessionKey]
211
-
212
- get '/get_session_value'
213
- assert_response :success
214
- assert_equal 'foo: nil', response.body
215
- end
216
- end
217
-
218
- def test_setting_session_value_after_session_reset
219
- with_test_route_set do
220
- get '/set_session_value'
221
- assert_response :success
222
- session_payload = response.body
223
- assert_equal "_myapp_session=#{response.body}; path=/; HttpOnly",
224
- headers['Set-Cookie']
225
-
226
- get '/call_reset_session'
227
- assert_response :success
228
- assert_not_equal "", headers['Set-Cookie']
229
- assert_not_equal session_payload, cookies[SessionKey]
230
-
231
- get '/get_session_value'
232
- assert_response :success
233
- assert_equal 'foo: nil', response.body
234
- end
235
- end
236
-
237
- def test_setting_session_value_after_session_reset
238
- with_test_route_set do
239
- get '/set_session_value'
240
- assert_response :success
241
- session_payload = response.body
242
- assert_equal "_myapp_session=#{response.body}; path=/; HttpOnly",
243
- headers['Set-Cookie']
244
-
245
- get '/call_reset_session'
246
- assert_response :success
247
- assert_not_equal "", headers['Set-Cookie']
248
- assert_not_equal session_payload, cookies[SessionKey]
249
-
250
- get '/get_session_value'
251
- assert_response :success
252
- assert_equal 'foo: nil', response.body
253
- end
254
- end
255
-
256
- def test_setting_session_value_after_session_clear
257
- with_test_route_set do
258
- get '/set_session_value'
259
- assert_response :success
260
- session_payload = response.body
261
- assert_equal "_myapp_session=#{response.body}; path=/; HttpOnly",
262
- headers['Set-Cookie']
263
-
264
- get '/call_session_clear'
265
- assert_response :success
266
-
267
- get '/get_session_value'
268
- assert_response :success
269
- assert_equal 'foo: nil', response.body
270
- end
271
- end
272
-
273
- def test_getting_from_nonexistent_session
274
- with_test_route_set do
275
- get '/get_session_value'
276
- assert_response :success
277
- assert_equal 'foo: nil', response.body
278
- assert_nil headers['Set-Cookie'], "should only create session on write, not read"
279
- end
280
- end
281
-
282
- # {:foo=>#<SessionAutoloadTest::Foo bar:"baz">, :session_id=>"ce8b0752a6ab7c7af3cdb8a80e6b9e46"}
283
- SignedSerializedCookie = "BAh7BzoIZm9vbzodU2Vzc2lvbkF1dG9sb2FkVGVzdDo6Rm9vBjoJQGJhciIIYmF6Og9zZXNzaW9uX2lkIiVjZThiMDc1MmE2YWI3YzdhZjNjZGI4YTgwZTZiOWU0Ng==--2bf3af1ae8bd4e52b9ac2099258ace0c380e601c"
284
-
285
- def test_deserializes_unloaded_classes_on_get_id
286
- with_test_route_set do
287
- with_autoload_path "session_autoload_test" do
288
- cookies[SessionKey] = SignedSerializedCookie
289
- get '/get_session_id_only'
290
- assert_response :success
291
- assert_equal 'id: ce8b0752a6ab7c7af3cdb8a80e6b9e46', response.body, "should auto-load unloaded class"
292
- end
293
- end
294
- end
295
-
296
- def test_deserializes_unloaded_classes_on_get_value
297
- with_test_route_set do
298
- with_autoload_path "session_autoload_test" do
299
- cookies[SessionKey] = SignedSerializedCookie
300
- get '/get_session_value'
301
- assert_response :success
302
- assert_equal 'foo: #<SessionAutoloadTest::Foo bar:"baz">', response.body, "should auto-load unloaded class"
303
- end
304
- end
305
- end
306
-
307
- def test_persistent_session_id
308
- with_test_route_set do
309
- cookies[SessionKey] = SignedBar
310
- get '/persistent_session_id'
311
- assert_response :success
312
- assert_equal response.body.size, 32
313
- session_id = response.body
314
- get '/persistent_session_id'
315
- assert_equal session_id, response.body
316
- reset!
317
- get '/persistent_session_id'
318
- assert_not_equal session_id, response.body
319
- end
320
- end
321
-
322
- def test_setting_session_value_and_cookie
323
- with_test_route_set do
324
- get '/set_session_value_and_cookie'
325
- assert_response :success
326
- assert_equal({"_myapp_session" => response.body, "foo" => "bar"}, cookies)
327
- end
328
- end
329
-
330
- private
331
- def with_test_route_set(options = {})
332
- with_routing do |set|
333
- set.draw do |map|
334
- map.with_options :controller => "cookie_store_test/test" do |c|
335
- c.connect "/:action"
336
- end
337
- end
338
-
339
- options = { :key => SessionKey, :secret => SessionSecret }.merge!(options)
340
- @integration_session = open_session(ActionController::Session::CookieStore.new(DispatcherApp, options))
341
-
342
- yield
343
- end
344
- end
345
-
346
- def unmarshal_session(cookie_string)
347
- session = Rack::Utils.parse_query(cookie_string, ';,').inject({}) {|h,(k,v)|
348
- h[k] = Array === v ? v.first : v
349
- h
350
- }[SessionKey]
351
- verifier = ActiveSupport::MessageVerifier.new(SessionSecret, 'SHA1')
352
- verifier.verify(session)
353
- end
354
- end