actionpack_csi 2.3.5.p6

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 (429) hide show
  1. data/CHANGELOG +5184 -0
  2. data/MIT-LICENSE +21 -0
  3. data/README +409 -0
  4. data/RUNNING_UNIT_TESTS +24 -0
  5. data/Rakefile +160 -0
  6. data/install.rb +30 -0
  7. data/lib/action_controller/assertions/dom_assertions.rb +55 -0
  8. data/lib/action_controller/assertions/model_assertions.rb +21 -0
  9. data/lib/action_controller/assertions/response_assertions.rb +160 -0
  10. data/lib/action_controller/assertions/routing_assertions.rb +146 -0
  11. data/lib/action_controller/assertions/selector_assertions.rb +638 -0
  12. data/lib/action_controller/assertions/tag_assertions.rb +127 -0
  13. data/lib/action_controller/base.rb +1423 -0
  14. data/lib/action_controller/benchmarking.rb +107 -0
  15. data/lib/action_controller/caching/actions.rb +177 -0
  16. data/lib/action_controller/caching/fragments.rb +120 -0
  17. data/lib/action_controller/caching/pages.rb +152 -0
  18. data/lib/action_controller/caching/sweeper.rb +45 -0
  19. data/lib/action_controller/caching/sweeping.rb +55 -0
  20. data/lib/action_controller/caching.rb +71 -0
  21. data/lib/action_controller/cgi_ext/cookie.rb +112 -0
  22. data/lib/action_controller/cgi_ext/query_extension.rb +22 -0
  23. data/lib/action_controller/cgi_ext/stdinput.rb +24 -0
  24. data/lib/action_controller/cgi_ext.rb +15 -0
  25. data/lib/action_controller/cgi_process.rb +77 -0
  26. data/lib/action_controller/cookies.rb +95 -0
  27. data/lib/action_controller/dispatcher.rb +133 -0
  28. data/lib/action_controller/failsafe.rb +86 -0
  29. data/lib/action_controller/filters.rb +680 -0
  30. data/lib/action_controller/flash.rb +171 -0
  31. data/lib/action_controller/headers.rb +33 -0
  32. data/lib/action_controller/helpers.rb +225 -0
  33. data/lib/action_controller/http_authentication.rb +309 -0
  34. data/lib/action_controller/integration.rb +692 -0
  35. data/lib/action_controller/layout.rb +286 -0
  36. data/lib/action_controller/middleware_stack.rb +119 -0
  37. data/lib/action_controller/middlewares.rb +14 -0
  38. data/lib/action_controller/mime_responds.rb +193 -0
  39. data/lib/action_controller/mime_type.rb +212 -0
  40. data/lib/action_controller/mime_types.rb +21 -0
  41. data/lib/action_controller/params_parser.rb +77 -0
  42. data/lib/action_controller/performance_test.rb +15 -0
  43. data/lib/action_controller/polymorphic_routes.rb +189 -0
  44. data/lib/action_controller/rack_lint_patch.rb +36 -0
  45. data/lib/action_controller/record_identifier.rb +104 -0
  46. data/lib/action_controller/reloader.rb +54 -0
  47. data/lib/action_controller/request.rb +493 -0
  48. data/lib/action_controller/request_forgery_protection.rb +113 -0
  49. data/lib/action_controller/rescue.rb +183 -0
  50. data/lib/action_controller/resources.rb +682 -0
  51. data/lib/action_controller/response.rb +239 -0
  52. data/lib/action_controller/routing/builder.rb +197 -0
  53. data/lib/action_controller/routing/optimisations.rb +130 -0
  54. data/lib/action_controller/routing/recognition_optimisation.rb +167 -0
  55. data/lib/action_controller/routing/route.rb +265 -0
  56. data/lib/action_controller/routing/route_set.rb +502 -0
  57. data/lib/action_controller/routing/routing_ext.rb +49 -0
  58. data/lib/action_controller/routing/segments.rb +343 -0
  59. data/lib/action_controller/routing.rb +388 -0
  60. data/lib/action_controller/session/abstract_store.rb +181 -0
  61. data/lib/action_controller/session/cookie_store.rb +221 -0
  62. data/lib/action_controller/session/mem_cache_store.rb +51 -0
  63. data/lib/action_controller/session_management.rb +54 -0
  64. data/lib/action_controller/status_codes.rb +88 -0
  65. data/lib/action_controller/streaming.rb +181 -0
  66. data/lib/action_controller/string_coercion.rb +29 -0
  67. data/lib/action_controller/templates/rescues/_request_and_response.erb +24 -0
  68. data/lib/action_controller/templates/rescues/_trace.erb +26 -0
  69. data/lib/action_controller/templates/rescues/diagnostics.erb +11 -0
  70. data/lib/action_controller/templates/rescues/layout.erb +29 -0
  71. data/lib/action_controller/templates/rescues/missing_template.erb +2 -0
  72. data/lib/action_controller/templates/rescues/routing_error.erb +10 -0
  73. data/lib/action_controller/templates/rescues/template_error.erb +21 -0
  74. data/lib/action_controller/templates/rescues/unknown_action.erb +2 -0
  75. data/lib/action_controller/test_case.rb +209 -0
  76. data/lib/action_controller/test_process.rb +580 -0
  77. data/lib/action_controller/translation.rb +13 -0
  78. data/lib/action_controller/uploaded_file.rb +44 -0
  79. data/lib/action_controller/url_rewriter.rb +216 -0
  80. data/lib/action_controller/vendor/html-scanner/html/document.rb +68 -0
  81. data/lib/action_controller/vendor/html-scanner/html/node.rb +537 -0
  82. data/lib/action_controller/vendor/html-scanner/html/sanitizer.rb +173 -0
  83. data/lib/action_controller/vendor/html-scanner/html/selector.rb +828 -0
  84. data/lib/action_controller/vendor/html-scanner/html/tokenizer.rb +105 -0
  85. data/lib/action_controller/vendor/html-scanner/html/version.rb +11 -0
  86. data/lib/action_controller/vendor/html-scanner.rb +16 -0
  87. data/lib/action_controller/verification.rb +130 -0
  88. data/lib/action_controller.rb +113 -0
  89. data/lib/action_pack/version.rb +9 -0
  90. data/lib/action_pack.rb +24 -0
  91. data/lib/action_view/base.rb +362 -0
  92. data/lib/action_view/erb/util.rb +44 -0
  93. data/lib/action_view/helpers/active_record_helper.rb +305 -0
  94. data/lib/action_view/helpers/asset_tag_helper.rb +694 -0
  95. data/lib/action_view/helpers/atom_feed_helper.rb +198 -0
  96. data/lib/action_view/helpers/benchmark_helper.rb +54 -0
  97. data/lib/action_view/helpers/cache_helper.rb +39 -0
  98. data/lib/action_view/helpers/capture_helper.rb +136 -0
  99. data/lib/action_view/helpers/date_helper.rb +988 -0
  100. data/lib/action_view/helpers/debug_helper.rb +38 -0
  101. data/lib/action_view/helpers/form_helper.rb +1074 -0
  102. data/lib/action_view/helpers/form_options_helper.rb +600 -0
  103. data/lib/action_view/helpers/form_tag_helper.rb +487 -0
  104. data/lib/action_view/helpers/javascript_helper.rb +208 -0
  105. data/lib/action_view/helpers/number_helper.rb +308 -0
  106. data/lib/action_view/helpers/prototype_helper.rb +1305 -0
  107. data/lib/action_view/helpers/raw_output_helper.rb +9 -0
  108. data/lib/action_view/helpers/record_identification_helper.rb +20 -0
  109. data/lib/action_view/helpers/record_tag_helper.rb +58 -0
  110. data/lib/action_view/helpers/sanitize_helper.rb +259 -0
  111. data/lib/action_view/helpers/scriptaculous_helper.rb +226 -0
  112. data/lib/action_view/helpers/tag_helper.rb +150 -0
  113. data/lib/action_view/helpers/text_helper.rb +587 -0
  114. data/lib/action_view/helpers/translation_helper.rb +39 -0
  115. data/lib/action_view/helpers/url_helper.rb +639 -0
  116. data/lib/action_view/helpers.rb +59 -0
  117. data/lib/action_view/inline_template.rb +19 -0
  118. data/lib/action_view/locale/en.yml +117 -0
  119. data/lib/action_view/partials.rb +240 -0
  120. data/lib/action_view/paths.rb +69 -0
  121. data/lib/action_view/reloadable_template.rb +117 -0
  122. data/lib/action_view/renderable.rb +95 -0
  123. data/lib/action_view/renderable_partial.rb +47 -0
  124. data/lib/action_view/safe_buffer.rb +28 -0
  125. data/lib/action_view/template.rb +252 -0
  126. data/lib/action_view/template_error.rb +99 -0
  127. data/lib/action_view/template_handler.rb +34 -0
  128. data/lib/action_view/template_handlers/builder.rb +17 -0
  129. data/lib/action_view/template_handlers/erb.rb +22 -0
  130. data/lib/action_view/template_handlers/rjs.rb +13 -0
  131. data/lib/action_view/template_handlers.rb +48 -0
  132. data/lib/action_view/test_case.rb +162 -0
  133. data/lib/action_view.rb +58 -0
  134. data/lib/actionpack.rb +2 -0
  135. data/test/abstract_unit.rb +61 -0
  136. data/test/active_record_unit.rb +104 -0
  137. data/test/activerecord/active_record_store_test.rb +174 -0
  138. data/test/activerecord/render_partial_with_record_identification_test.rb +188 -0
  139. data/test/adv_attr_test.rb +20 -0
  140. data/test/controller/action_pack_assertions_test.rb +543 -0
  141. data/test/controller/addresses_render_test.rb +37 -0
  142. data/test/controller/assert_select_test.rb +734 -0
  143. data/test/controller/base_test.rb +217 -0
  144. data/test/controller/benchmark_test.rb +32 -0
  145. data/test/controller/caching_test.rb +729 -0
  146. data/test/controller/capture_test.rb +66 -0
  147. data/test/controller/content_type_test.rb +168 -0
  148. data/test/controller/controller_fixtures/app/controllers/admin/user_controller.rb +0 -0
  149. data/test/controller/controller_fixtures/app/controllers/user_controller.rb +0 -0
  150. data/test/controller/controller_fixtures/vendor/plugins/bad_plugin/lib/plugin_controller.rb +0 -0
  151. data/test/controller/cookie_test.rb +134 -0
  152. data/test/controller/deprecation/deprecated_base_methods_test.rb +32 -0
  153. data/test/controller/dispatcher_test.rb +144 -0
  154. data/test/controller/dom_assertions_test.rb +53 -0
  155. data/test/controller/failsafe_test.rb +60 -0
  156. data/test/controller/fake_controllers.rb +33 -0
  157. data/test/controller/fake_models.rb +19 -0
  158. data/test/controller/filter_params_test.rb +52 -0
  159. data/test/controller/filters_test.rb +885 -0
  160. data/test/controller/flash_test.rb +147 -0
  161. data/test/controller/header_test.rb +14 -0
  162. data/test/controller/helper_test.rb +224 -0
  163. data/test/controller/html-scanner/cdata_node_test.rb +15 -0
  164. data/test/controller/html-scanner/document_test.rb +148 -0
  165. data/test/controller/html-scanner/node_test.rb +89 -0
  166. data/test/controller/html-scanner/sanitizer_test.rb +274 -0
  167. data/test/controller/html-scanner/tag_node_test.rb +238 -0
  168. data/test/controller/html-scanner/text_node_test.rb +50 -0
  169. data/test/controller/html-scanner/tokenizer_test.rb +131 -0
  170. data/test/controller/http_basic_authentication_test.rb +113 -0
  171. data/test/controller/http_digest_authentication_test.rb +254 -0
  172. data/test/controller/integration_test.rb +483 -0
  173. data/test/controller/layout_test.rb +215 -0
  174. data/test/controller/logging_test.rb +46 -0
  175. data/test/controller/middleware_stack_test.rb +90 -0
  176. data/test/controller/mime_responds_test.rb +536 -0
  177. data/test/controller/mime_type_test.rb +93 -0
  178. data/test/controller/polymorphic_routes_test.rb +297 -0
  179. data/test/controller/rack_test.rb +311 -0
  180. data/test/controller/record_identifier_test.rb +139 -0
  181. data/test/controller/redirect_test.rb +285 -0
  182. data/test/controller/reloader_test.rb +124 -0
  183. data/test/controller/render_test.rb +1762 -0
  184. data/test/controller/request/json_params_parsing_test.rb +65 -0
  185. data/test/controller/request/multipart_params_parsing_test.rb +162 -0
  186. data/test/controller/request/query_string_parsing_test.rb +120 -0
  187. data/test/controller/request/test_request_test.rb +35 -0
  188. data/test/controller/request/url_encoded_params_parsing_test.rb +146 -0
  189. data/test/controller/request/xml_params_parsing_test.rb +103 -0
  190. data/test/controller/request_forgery_protection_test.rb +265 -0
  191. data/test/controller/request_test.rb +395 -0
  192. data/test/controller/rescue_test.rb +536 -0
  193. data/test/controller/resources_test.rb +1393 -0
  194. data/test/controller/routing_test.rb +2591 -0
  195. data/test/controller/selector_test.rb +628 -0
  196. data/test/controller/send_file_test.rb +171 -0
  197. data/test/controller/session/cookie_store_test.rb +216 -0
  198. data/test/controller/session/mem_cache_store_test.rb +127 -0
  199. data/test/controller/session/test_session_test.rb +58 -0
  200. data/test/controller/test_test.rb +700 -0
  201. data/test/controller/translation_test.rb +26 -0
  202. data/test/controller/url_rewriter_test.rb +385 -0
  203. data/test/controller/verification_test.rb +270 -0
  204. data/test/controller/view_paths_test.rb +141 -0
  205. data/test/controller/webservice_test.rb +273 -0
  206. data/test/fixtures/_top_level_partial.html.erb +1 -0
  207. data/test/fixtures/_top_level_partial_only.erb +1 -0
  208. data/test/fixtures/addresses/list.erb +1 -0
  209. data/test/fixtures/alternate_helpers/foo_helper.rb +3 -0
  210. data/test/fixtures/bad_customers/_bad_customer.html.erb +1 -0
  211. data/test/fixtures/companies.yml +24 -0
  212. data/test/fixtures/company.rb +10 -0
  213. data/test/fixtures/content_type/render_default_content_types_for_respond_to.rhtml +1 -0
  214. data/test/fixtures/content_type/render_default_for_rhtml.rhtml +1 -0
  215. data/test/fixtures/content_type/render_default_for_rjs.rjs +1 -0
  216. data/test/fixtures/content_type/render_default_for_rxml.rxml +1 -0
  217. data/test/fixtures/customers/_customer.html.erb +1 -0
  218. data/test/fixtures/db_definitions/sqlite.sql +49 -0
  219. data/test/fixtures/developer.rb +9 -0
  220. data/test/fixtures/developers/_developer.erb +1 -0
  221. data/test/fixtures/developers.yml +21 -0
  222. data/test/fixtures/developers_projects.yml +13 -0
  223. data/test/fixtures/failsafe/500.html +1 -0
  224. data/test/fixtures/fun/games/_game.erb +1 -0
  225. data/test/fixtures/fun/games/hello_world.erb +1 -0
  226. data/test/fixtures/fun/serious/games/_game.erb +1 -0
  227. data/test/fixtures/functional_caching/_partial.erb +3 -0
  228. data/test/fixtures/functional_caching/formatted_fragment_cached.html.erb +3 -0
  229. data/test/fixtures/functional_caching/formatted_fragment_cached.js.rjs +6 -0
  230. data/test/fixtures/functional_caching/formatted_fragment_cached.xml.builder +5 -0
  231. data/test/fixtures/functional_caching/fragment_cached.html.erb +2 -0
  232. data/test/fixtures/functional_caching/html_fragment_cached_with_partial.html.erb +1 -0
  233. data/test/fixtures/functional_caching/inline_fragment_cached.html.erb +2 -0
  234. data/test/fixtures/functional_caching/js_fragment_cached_with_partial.js.rjs +1 -0
  235. data/test/fixtures/good_customers/_good_customer.html.erb +1 -0
  236. data/test/fixtures/helpers/abc_helper.rb +5 -0
  237. data/test/fixtures/helpers/fun/games_helper.rb +3 -0
  238. data/test/fixtures/helpers/fun/pdf_helper.rb +3 -0
  239. data/test/fixtures/layout_tests/abs_path_layout.rhtml +1 -0
  240. data/test/fixtures/layout_tests/alt/hello.rhtml +1 -0
  241. data/test/fixtures/layout_tests/alt/layouts/alt.rhtml +0 -0
  242. data/test/fixtures/layout_tests/layouts/controller_name_space/nested.rhtml +1 -0
  243. data/test/fixtures/layout_tests/layouts/item.rhtml +1 -0
  244. data/test/fixtures/layout_tests/layouts/layout_test.rhtml +1 -0
  245. data/test/fixtures/layout_tests/layouts/multiple_extensions.html.erb +1 -0
  246. data/test/fixtures/layout_tests/layouts/third_party_template_library.mab +1 -0
  247. data/test/fixtures/layout_tests/views/hello.rhtml +1 -0
  248. data/test/fixtures/layouts/_column.html.erb +2 -0
  249. data/test/fixtures/layouts/block_with_layout.erb +3 -0
  250. data/test/fixtures/layouts/builder.builder +3 -0
  251. data/test/fixtures/layouts/default_html.html.erb +1 -0
  252. data/test/fixtures/layouts/partial_with_layout.erb +3 -0
  253. data/test/fixtures/layouts/standard.erb +1 -0
  254. data/test/fixtures/layouts/talk_from_action.erb +2 -0
  255. data/test/fixtures/layouts/xhr.html.erb +2 -0
  256. data/test/fixtures/layouts/yield.erb +2 -0
  257. data/test/fixtures/mascot.rb +3 -0
  258. data/test/fixtures/mascots/_mascot.html.erb +1 -0
  259. data/test/fixtures/mascots.yml +4 -0
  260. data/test/fixtures/multipart/binary_file +0 -0
  261. data/test/fixtures/multipart/boundary_problem_file +10 -0
  262. data/test/fixtures/multipart/bracketed_param +5 -0
  263. data/test/fixtures/multipart/empty +10 -0
  264. data/test/fixtures/multipart/hello.txt +1 -0
  265. data/test/fixtures/multipart/large_text_file +10 -0
  266. data/test/fixtures/multipart/mixed_files +0 -0
  267. data/test/fixtures/multipart/mona_lisa.jpg +0 -0
  268. data/test/fixtures/multipart/none +9 -0
  269. data/test/fixtures/multipart/single_parameter +5 -0
  270. data/test/fixtures/multipart/text_file +10 -0
  271. data/test/fixtures/override/test/hello_world.erb +1 -0
  272. data/test/fixtures/override2/layouts/test/sub.erb +1 -0
  273. data/test/fixtures/post_test/layouts/post.html.erb +1 -0
  274. data/test/fixtures/post_test/layouts/super_post.iphone.erb +1 -0
  275. data/test/fixtures/post_test/post/index.html.erb +1 -0
  276. data/test/fixtures/post_test/post/index.iphone.erb +1 -0
  277. data/test/fixtures/post_test/super_post/index.html.erb +1 -0
  278. data/test/fixtures/post_test/super_post/index.iphone.erb +1 -0
  279. data/test/fixtures/project.rb +3 -0
  280. data/test/fixtures/projects/_project.erb +1 -0
  281. data/test/fixtures/projects.yml +7 -0
  282. data/test/fixtures/public/404.html +1 -0
  283. data/test/fixtures/public/500.da.html +1 -0
  284. data/test/fixtures/public/500.html +1 -0
  285. data/test/fixtures/public/absolute/test.css +23 -0
  286. data/test/fixtures/public/absolute/test.js +63 -0
  287. data/test/fixtures/public/images/rails.png +0 -0
  288. data/test/fixtures/public/javascripts/application.js +1 -0
  289. data/test/fixtures/public/javascripts/bank.js +1 -0
  290. data/test/fixtures/public/javascripts/controls.js +1 -0
  291. data/test/fixtures/public/javascripts/dragdrop.js +1 -0
  292. data/test/fixtures/public/javascripts/effects.js +1 -0
  293. data/test/fixtures/public/javascripts/prototype.js +1 -0
  294. data/test/fixtures/public/javascripts/robber.js +1 -0
  295. data/test/fixtures/public/javascripts/subdir/subdir.js +1 -0
  296. data/test/fixtures/public/javascripts/version.1.0.js +1 -0
  297. data/test/fixtures/public/stylesheets/bank.css +1 -0
  298. data/test/fixtures/public/stylesheets/robber.css +1 -0
  299. data/test/fixtures/public/stylesheets/subdir/subdir.css +1 -0
  300. data/test/fixtures/public/stylesheets/version.1.0.css +1 -0
  301. data/test/fixtures/quiz/questions/_question.html.erb +1 -0
  302. data/test/fixtures/replies/_reply.erb +1 -0
  303. data/test/fixtures/replies.yml +15 -0
  304. data/test/fixtures/reply.rb +7 -0
  305. data/test/fixtures/respond_to/all_types_with_layout.html.erb +1 -0
  306. data/test/fixtures/respond_to/all_types_with_layout.js.rjs +1 -0
  307. data/test/fixtures/respond_to/custom_constant_handling_without_block.mobile.erb +1 -0
  308. data/test/fixtures/respond_to/iphone_with_html_response_type.html.erb +1 -0
  309. data/test/fixtures/respond_to/iphone_with_html_response_type.iphone.erb +1 -0
  310. data/test/fixtures/respond_to/layouts/missing.html.erb +1 -0
  311. data/test/fixtures/respond_to/layouts/standard.html.erb +1 -0
  312. data/test/fixtures/respond_to/layouts/standard.iphone.erb +1 -0
  313. data/test/fixtures/respond_to/using_defaults.html.erb +1 -0
  314. data/test/fixtures/respond_to/using_defaults.js.rjs +1 -0
  315. data/test/fixtures/respond_to/using_defaults.xml.builder +1 -0
  316. data/test/fixtures/respond_to/using_defaults_with_type_list.html.erb +1 -0
  317. data/test/fixtures/respond_to/using_defaults_with_type_list.js.rjs +1 -0
  318. data/test/fixtures/respond_to/using_defaults_with_type_list.xml.builder +1 -0
  319. data/test/fixtures/scope/test/modgreet.erb +1 -0
  320. data/test/fixtures/shared.html.erb +1 -0
  321. data/test/fixtures/symlink_parent/symlinked_layout.erb +5 -0
  322. data/test/fixtures/test/_counter.html.erb +1 -0
  323. data/test/fixtures/test/_customer.erb +1 -0
  324. data/test/fixtures/test/_customer_counter.erb +1 -0
  325. data/test/fixtures/test/_customer_greeting.erb +1 -0
  326. data/test/fixtures/test/_customer_with_var.erb +1 -0
  327. data/test/fixtures/test/_form.erb +1 -0
  328. data/test/fixtures/test/_from_helper.erb +1 -0
  329. data/test/fixtures/test/_hash_greeting.erb +1 -0
  330. data/test/fixtures/test/_hash_object.erb +2 -0
  331. data/test/fixtures/test/_hello.builder +1 -0
  332. data/test/fixtures/test/_labelling_form.erb +1 -0
  333. data/test/fixtures/test/_layout_for_block_with_args.html.erb +3 -0
  334. data/test/fixtures/test/_layout_for_partial.html.erb +3 -0
  335. data/test/fixtures/test/_local_inspector.html.erb +1 -0
  336. data/test/fixtures/test/_one.html.erb +1 -0
  337. data/test/fixtures/test/_partial.erb +1 -0
  338. data/test/fixtures/test/_partial.html.erb +1 -0
  339. data/test/fixtures/test/_partial.js.erb +1 -0
  340. data/test/fixtures/test/_partial_for_use_in_layout.html.erb +1 -0
  341. data/test/fixtures/test/_partial_only.erb +1 -0
  342. data/test/fixtures/test/_partial_with_only_html_version.html.erb +1 -0
  343. data/test/fixtures/test/_person.erb +2 -0
  344. data/test/fixtures/test/_raise.html.erb +1 -0
  345. data/test/fixtures/test/_two.html.erb +1 -0
  346. data/test/fixtures/test/action_talk_to_layout.erb +2 -0
  347. data/test/fixtures/test/calling_partial_with_layout.html.erb +1 -0
  348. data/test/fixtures/test/capturing.erb +4 -0
  349. data/test/fixtures/test/content_for.erb +2 -0
  350. data/test/fixtures/test/content_for_concatenated.erb +3 -0
  351. data/test/fixtures/test/content_for_with_parameter.erb +2 -0
  352. data/test/fixtures/test/delete_with_js.rjs +2 -0
  353. data/test/fixtures/test/dont_pick_me +1 -0
  354. data/test/fixtures/test/dot.directory/render_file_with_ivar.erb +1 -0
  355. data/test/fixtures/test/enum_rjs_test.rjs +6 -0
  356. data/test/fixtures/test/formatted_html_erb.html.erb +1 -0
  357. data/test/fixtures/test/formatted_xml_erb.builder +1 -0
  358. data/test/fixtures/test/formatted_xml_erb.html.erb +1 -0
  359. data/test/fixtures/test/formatted_xml_erb.xml.erb +1 -0
  360. data/test/fixtures/test/greeting.erb +1 -0
  361. data/test/fixtures/test/greeting.js.rjs +1 -0
  362. data/test/fixtures/test/hello.builder +4 -0
  363. data/test/fixtures/test/hello_world.da.html.erb +1 -0
  364. data/test/fixtures/test/hello_world.erb +1 -0
  365. data/test/fixtures/test/hello_world.erb~ +1 -0
  366. data/test/fixtures/test/hello_world.pt-BR.html.erb +1 -0
  367. data/test/fixtures/test/hello_world_container.builder +3 -0
  368. data/test/fixtures/test/hello_world_from_rxml.builder +4 -0
  369. data/test/fixtures/test/hello_world_with_layout_false.erb +1 -0
  370. data/test/fixtures/test/hello_xml_world.builder +11 -0
  371. data/test/fixtures/test/hyphen-ated.erb +1 -0
  372. data/test/fixtures/test/implicit_content_type.atom.builder +2 -0
  373. data/test/fixtures/test/list.erb +1 -0
  374. data/test/fixtures/test/malformed/malformed.en.html.erb~ +1 -0
  375. data/test/fixtures/test/malformed/malformed.erb~ +1 -0
  376. data/test/fixtures/test/malformed/malformed.html.erb~ +1 -0
  377. data/test/fixtures/test/nested_layout.erb +3 -0
  378. data/test/fixtures/test/non_erb_block_content_for.builder +4 -0
  379. data/test/fixtures/test/potential_conflicts.erb +4 -0
  380. data/test/fixtures/test/render_explicit_html_template.js.rjs +1 -0
  381. data/test/fixtures/test/render_file_from_template.html.erb +1 -0
  382. data/test/fixtures/test/render_file_with_ivar.erb +1 -0
  383. data/test/fixtures/test/render_file_with_locals.erb +1 -0
  384. data/test/fixtures/test/render_implicit_html_template.js.rjs +1 -0
  385. data/test/fixtures/test/render_implicit_html_template_from_xhr_request.da.html.erb +1 -0
  386. data/test/fixtures/test/render_implicit_html_template_from_xhr_request.html.erb +1 -0
  387. data/test/fixtures/test/render_implicit_js_template_without_layout.js.erb +1 -0
  388. data/test/fixtures/test/render_to_string_test.erb +1 -0
  389. data/test/fixtures/test/sub_template_raise.html.erb +1 -0
  390. data/test/fixtures/test/template.erb +1 -0
  391. data/test/fixtures/test/update_element_with_capture.erb +9 -0
  392. data/test/fixtures/test/using_layout_around_block.html.erb +1 -0
  393. data/test/fixtures/test/using_layout_around_block_with_args.html.erb +1 -0
  394. data/test/fixtures/test/utf8.html.erb +2 -0
  395. data/test/fixtures/topic.rb +3 -0
  396. data/test/fixtures/topics/_topic.html.erb +1 -0
  397. data/test/fixtures/topics.yml +22 -0
  398. data/test/template/active_record_helper_i18n_test.rb +44 -0
  399. data/test/template/active_record_helper_test.rb +302 -0
  400. data/test/template/asset_tag_helper_test.rb +771 -0
  401. data/test/template/atom_feed_helper_test.rb +315 -0
  402. data/test/template/benchmark_helper_test.rb +86 -0
  403. data/test/template/compiled_templates_test.rb +204 -0
  404. data/test/template/date_helper_i18n_test.rb +121 -0
  405. data/test/template/date_helper_test.rb +2485 -0
  406. data/test/template/erb_util_test.rb +24 -0
  407. data/test/template/form_helper_test.rb +1393 -0
  408. data/test/template/form_options_helper_i18n_test.rb +27 -0
  409. data/test/template/form_options_helper_test.rb +807 -0
  410. data/test/template/form_tag_helper_test.rb +344 -0
  411. data/test/template/javascript_helper_test.rb +106 -0
  412. data/test/template/number_helper_i18n_test.rb +69 -0
  413. data/test/template/number_helper_test.rb +132 -0
  414. data/test/template/prototype_helper_test.rb +639 -0
  415. data/test/template/raw_output_helper_test.rb +21 -0
  416. data/test/template/record_tag_helper_test.rb +58 -0
  417. data/test/template/render_test.rb +290 -0
  418. data/test/template/sanitize_helper_test.rb +57 -0
  419. data/test/template/scriptaculous_helper_test.rb +90 -0
  420. data/test/template/tag_helper_test.rb +98 -0
  421. data/test/template/template_test.rb +32 -0
  422. data/test/template/test_test.rb +54 -0
  423. data/test/template/text_helper_test.rb +543 -0
  424. data/test/template/translation_helper_test.rb +32 -0
  425. data/test/template/url_helper_test.rb +622 -0
  426. data/test/testing_sandbox.rb +15 -0
  427. data/test/view/safe_buffer_test.rb +36 -0
  428. data/test/view/test_case_test.rb +176 -0
  429. metadata +531 -0
@@ -0,0 +1,171 @@
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?
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
@@ -0,0 +1,216 @@
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
+ CookieStoreApp = ActionController::Session::CookieStore.new(DispatcherApp, :key => SessionKey, :secret => SessionSecret)
10
+
11
+ Verifier = ActiveSupport::MessageVerifier.new(SessionSecret, 'SHA1')
12
+
13
+ SignedBar = "BAh7BjoIZm9vIghiYXI%3D--fef868465920f415f2c0652d6910d3af288a0367"
14
+
15
+ class TestController < ActionController::Base
16
+ def no_session_access
17
+ head :ok
18
+ end
19
+
20
+ def persistent_session_id
21
+ render :text => session[:session_id]
22
+ end
23
+
24
+ def set_session_value
25
+ session[:foo] = "bar"
26
+ render :text => Rack::Utils.escape(Verifier.generate(session.to_hash))
27
+ end
28
+
29
+ def get_session_value
30
+ render :text => "foo: #{session[:foo].inspect}"
31
+ end
32
+
33
+ def get_session_id
34
+ render :text => "foo: #{session[:foo].inspect}; id: #{request.session_options[:id]}"
35
+ end
36
+
37
+ def call_reset_session
38
+ reset_session
39
+ head :ok
40
+ end
41
+
42
+ def raise_data_overflow
43
+ session[:foo] = 'bye!' * 1024
44
+ head :ok
45
+ end
46
+
47
+ def rescue_action(e) raise end
48
+ end
49
+
50
+ def setup
51
+ @integration_session = open_session(CookieStoreApp)
52
+ end
53
+
54
+ def test_raises_argument_error_if_missing_session_key
55
+ assert_raise(ArgumentError, nil.inspect) {
56
+ ActionController::Session::CookieStore.new(nil,
57
+ :key => nil, :secret => SessionSecret)
58
+ }
59
+
60
+ assert_raise(ArgumentError, ''.inspect) {
61
+ ActionController::Session::CookieStore.new(nil,
62
+ :key => '', :secret => SessionSecret)
63
+ }
64
+ end
65
+
66
+ def test_raises_argument_error_if_missing_secret
67
+ assert_raise(ArgumentError, nil.inspect) {
68
+ ActionController::Session::CookieStore.new(nil,
69
+ :key => SessionKey, :secret => nil)
70
+ }
71
+
72
+ assert_raise(ArgumentError, ''.inspect) {
73
+ ActionController::Session::CookieStore.new(nil,
74
+ :key => SessionKey, :secret => '')
75
+ }
76
+ end
77
+
78
+ def test_raises_argument_error_if_secret_is_probably_insecure
79
+ assert_raise(ArgumentError, "password".inspect) {
80
+ ActionController::Session::CookieStore.new(nil,
81
+ :key => SessionKey, :secret => "password")
82
+ }
83
+
84
+ assert_raise(ArgumentError, "secret".inspect) {
85
+ ActionController::Session::CookieStore.new(nil,
86
+ :key => SessionKey, :secret => "secret")
87
+ }
88
+
89
+ assert_raise(ArgumentError, "12345678901234567890123456789".inspect) {
90
+ ActionController::Session::CookieStore.new(nil,
91
+ :key => SessionKey, :secret => "12345678901234567890123456789")
92
+ }
93
+ end
94
+
95
+ def test_setting_session_value
96
+ with_test_route_set do
97
+ get '/set_session_value'
98
+ assert_response :success
99
+ assert_equal "_myapp_session=#{response.body}; path=/; HttpOnly",
100
+ headers['Set-Cookie']
101
+ end
102
+ end
103
+
104
+ def test_getting_session_value
105
+ with_test_route_set do
106
+ cookies[SessionKey] = SignedBar
107
+ get '/get_session_value'
108
+ assert_response :success
109
+ assert_equal 'foo: "bar"', response.body
110
+ end
111
+ end
112
+
113
+ def test_getting_session_id
114
+ with_test_route_set do
115
+ cookies[SessionKey] = SignedBar
116
+ get '/persistent_session_id'
117
+ assert_response :success
118
+ assert_equal response.body.size, 32
119
+ session_id = response.body
120
+
121
+ get '/get_session_id'
122
+ assert_response :success
123
+ assert_equal "foo: \"bar\"; id: #{session_id}", response.body
124
+ end
125
+ end
126
+
127
+ def test_disregards_tampered_sessions
128
+ with_test_route_set do
129
+ cookies[SessionKey] = "BAh7BjoIZm9vIghiYXI%3D--123456780"
130
+ get '/get_session_value'
131
+ assert_response :success
132
+ assert_equal 'foo: nil', response.body
133
+ end
134
+ end
135
+
136
+ def test_close_raises_when_data_overflows
137
+ with_test_route_set do
138
+ assert_raise(ActionController::Session::CookieStore::CookieOverflow) {
139
+ get '/raise_data_overflow'
140
+ }
141
+ end
142
+ end
143
+
144
+ def test_doesnt_write_session_cookie_if_session_is_not_accessed
145
+ with_test_route_set do
146
+ get '/no_session_access'
147
+ assert_response :success
148
+ assert_equal "", headers['Set-Cookie']
149
+ end
150
+ end
151
+
152
+ def test_doesnt_write_session_cookie_if_session_is_unchanged
153
+ with_test_route_set do
154
+ cookies[SessionKey] = "BAh7BjoIZm9vIghiYXI%3D--" +
155
+ "fef868465920f415f2c0652d6910d3af288a0367"
156
+ get '/no_session_access'
157
+ assert_response :success
158
+ assert_equal "", headers['Set-Cookie']
159
+ end
160
+ end
161
+
162
+ def test_setting_session_value_after_session_reset
163
+ with_test_route_set do
164
+ get '/set_session_value'
165
+ assert_response :success
166
+ session_payload = response.body
167
+ assert_equal "_myapp_session=#{response.body}; path=/; HttpOnly",
168
+ headers['Set-Cookie']
169
+
170
+ get '/call_reset_session'
171
+ assert_response :success
172
+ assert_not_equal [], headers['Set-Cookie']
173
+ assert_not_equal session_payload, cookies[SessionKey]
174
+
175
+ get '/get_session_value'
176
+ assert_response :success
177
+ assert_equal 'foo: nil', response.body
178
+ end
179
+ end
180
+
181
+ def test_persistent_session_id
182
+ with_test_route_set do
183
+ cookies[SessionKey] = SignedBar
184
+ get '/persistent_session_id'
185
+ assert_response :success
186
+ assert_equal response.body.size, 32
187
+ session_id = response.body
188
+ get '/persistent_session_id'
189
+ assert_equal session_id, response.body
190
+ reset!
191
+ get '/persistent_session_id'
192
+ assert_not_equal session_id, response.body
193
+ end
194
+ end
195
+
196
+ private
197
+ def with_test_route_set
198
+ with_routing do |set|
199
+ set.draw do |map|
200
+ map.with_options :controller => "cookie_store_test/test" do |c|
201
+ c.connect "/:action"
202
+ end
203
+ end
204
+ yield
205
+ end
206
+ end
207
+
208
+ def unmarshal_session(cookie_string)
209
+ session = Rack::Utils.parse_query(cookie_string, ';,').inject({}) {|h,(k,v)|
210
+ h[k] = Array === v ? v.first : v
211
+ h
212
+ }[SessionKey]
213
+ verifier = ActiveSupport::MessageVerifier.new(SessionSecret, 'SHA1')
214
+ verifier.verify(session)
215
+ end
216
+ end
@@ -0,0 +1,127 @@
1
+ require 'abstract_unit'
2
+
3
+ # You need to start a memcached server inorder to run these tests
4
+ class MemCacheStoreTest < ActionController::IntegrationTest
5
+ class TestController < ActionController::Base
6
+ def no_session_access
7
+ head :ok
8
+ end
9
+
10
+ def set_session_value
11
+ session[:foo] = "bar"
12
+ head :ok
13
+ end
14
+
15
+ def get_session_value
16
+ render :text => "foo: #{session[:foo].inspect}"
17
+ end
18
+
19
+ def get_session_id
20
+ session[:foo]
21
+ render :text => "#{request.session_options[:id]}"
22
+ end
23
+
24
+ def call_reset_session
25
+ session[:bar]
26
+ reset_session
27
+ session[:bar] = "baz"
28
+ head :ok
29
+ end
30
+
31
+ def rescue_action(e) raise end
32
+ end
33
+
34
+ begin
35
+ DispatcherApp = ActionController::Dispatcher.new
36
+ MemCacheStoreApp = ActionController::Session::MemCacheStore.new(
37
+ DispatcherApp, :key => '_session_id')
38
+
39
+
40
+ def setup
41
+ @integration_session = open_session(MemCacheStoreApp)
42
+ end
43
+
44
+ def test_setting_and_getting_session_value
45
+ with_test_route_set do
46
+ get '/set_session_value'
47
+ assert_response :success
48
+ assert cookies['_session_id']
49
+
50
+ get '/get_session_value'
51
+ assert_response :success
52
+ assert_equal 'foo: "bar"', response.body
53
+ end
54
+ end
55
+
56
+ def test_getting_nil_session_value
57
+ with_test_route_set do
58
+ get '/get_session_value'
59
+ assert_response :success
60
+ assert_equal 'foo: nil', response.body
61
+ end
62
+ end
63
+
64
+ def test_setting_session_value_after_session_reset
65
+ with_test_route_set do
66
+ get '/set_session_value'
67
+ assert_response :success
68
+ assert cookies['_session_id']
69
+ session_id = cookies['_session_id']
70
+
71
+ get '/call_reset_session'
72
+ assert_response :success
73
+ assert_not_equal [], headers['Set-Cookie']
74
+
75
+ get '/get_session_value'
76
+ assert_response :success
77
+ assert_equal 'foo: nil', response.body
78
+
79
+ get '/get_session_id'
80
+ assert_response :success
81
+ assert_not_equal session_id, response.body
82
+ end
83
+ end
84
+
85
+ def test_getting_session_id
86
+ with_test_route_set do
87
+ get '/set_session_value'
88
+ assert_response :success
89
+ assert cookies['_session_id']
90
+ session_id = cookies['_session_id']
91
+
92
+ get '/get_session_id'
93
+ assert_response :success
94
+ assert_equal session_id, response.body
95
+ end
96
+ end
97
+
98
+ def test_prevents_session_fixation
99
+ with_test_route_set do
100
+ get '/get_session_value'
101
+ assert_response :success
102
+ assert_equal 'foo: nil', response.body
103
+ session_id = cookies['_session_id']
104
+
105
+ reset!
106
+
107
+ get '/set_session_value', :_session_id => session_id
108
+ assert_response :success
109
+ assert_equal nil, cookies['_session_id']
110
+ end
111
+ end
112
+ rescue LoadError, RuntimeError
113
+ $stderr.puts "Skipping MemCacheStoreTest tests. Start memcached and try again."
114
+ end
115
+
116
+ private
117
+ def with_test_route_set
118
+ with_routing do |set|
119
+ set.draw do |map|
120
+ map.with_options :controller => "mem_cache_store_test/test" do |c|
121
+ c.connect "/:action"
122
+ end
123
+ end
124
+ yield
125
+ end
126
+ end
127
+ end
@@ -0,0 +1,58 @@
1
+ require 'abstract_unit'
2
+ require 'stringio'
3
+
4
+ class ActionController::TestSessionTest < ActiveSupport::TestCase
5
+
6
+ def test_calling_delete_without_parameters_raises_deprecation_warning_and_calls_to_clear_test_session
7
+ assert_deprecated(/use clear instead/){ ActionController::TestSession.new.delete }
8
+ end
9
+
10
+ def test_calling_update_without_parameters_raises_deprecation_warning_and_calls_to_clear_test_session
11
+ assert_deprecated(/use replace instead/){ ActionController::TestSession.new.update }
12
+ end
13
+
14
+ def test_calling_close_raises_deprecation_warning
15
+ assert_deprecated(/sessions should no longer be closed/){ ActionController::TestSession.new.close }
16
+ end
17
+
18
+ def test_defaults
19
+ session = ActionController::TestSession.new
20
+ assert_equal({}, session.data)
21
+ assert_equal('', session.session_id)
22
+ end
23
+
24
+ def test_ctor_allows_setting
25
+ session = ActionController::TestSession.new({:one => 'one', :two => 'two'})
26
+ assert_equal('one', session[:one])
27
+ assert_equal('two', session[:two])
28
+ end
29
+
30
+ def test_setting_session_item_sets_item
31
+ session = ActionController::TestSession.new
32
+ session[:key] = 'value'
33
+ assert_equal('value', session[:key])
34
+ end
35
+
36
+ def test_calling_delete_removes_item_and_returns_its_value
37
+ session = ActionController::TestSession.new
38
+ session[:key] = 'value'
39
+ assert_equal('value', session[:key])
40
+ assert_equal('value', session.delete(:key))
41
+ assert_nil(session[:key])
42
+ end
43
+
44
+ def test_calling_update_with_params_passes_to_attributes
45
+ session = ActionController::TestSession.new()
46
+ session.update('key' => 'value')
47
+ assert_equal('value', session[:key])
48
+ end
49
+
50
+ def test_clear_emptys_session
51
+ params = {:one => 'one', :two => 'two'}
52
+ session = ActionController::TestSession.new({:one => 'one', :two => 'two'})
53
+ session.clear
54
+ assert_nil(session[:one])
55
+ assert_nil(session[:two])
56
+ end
57
+
58
+ end