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,162 @@
1
+ require 'active_support/test_case'
2
+
3
+ module ActionView
4
+ class Base
5
+ alias_method :initialize_without_template_tracking, :initialize
6
+ def initialize(*args)
7
+ @_rendered = { :template => nil, :partials => Hash.new(0) }
8
+ initialize_without_template_tracking(*args)
9
+ end
10
+ end
11
+
12
+ module Renderable
13
+ alias_method :render_without_template_tracking, :render
14
+ def render(view, local_assigns = {})
15
+ if respond_to?(:path) && !is_a?(InlineTemplate)
16
+ rendered = view.instance_variable_get(:@_rendered)
17
+ rendered[:partials][self] += 1 if is_a?(RenderablePartial)
18
+ rendered[:template] ||= self
19
+ end
20
+ render_without_template_tracking(view, local_assigns)
21
+ end
22
+ end
23
+
24
+ class TestCase < ActiveSupport::TestCase
25
+ class TestController < ActionController::Base
26
+ attr_accessor :request, :response, :params
27
+
28
+ def self.controller_path
29
+ ''
30
+ end
31
+
32
+ def initialize
33
+ @request = ActionController::TestRequest.new
34
+ @response = ActionController::TestResponse.new
35
+
36
+ @params = {}
37
+ send(:initialize_current_url)
38
+ end
39
+ end
40
+
41
+ include ActionController::TestCase::Assertions
42
+ include ActionController::TestProcess
43
+
44
+ include ActionController::PolymorphicRoutes
45
+ include ActionController::RecordIdentifier
46
+
47
+ include ActionView::Helpers
48
+ include ActionController::Helpers
49
+
50
+ class_inheritable_accessor :helper_class
51
+ attr_accessor :controller, :output_buffer, :rendered
52
+
53
+ setup :setup_with_controller
54
+ def setup_with_controller
55
+ @controller = TestController.new
56
+ @output_buffer = ''
57
+ @rendered = ''
58
+
59
+ self.class.send(:include_helper_modules!)
60
+ make_test_case_available_to_view!
61
+ end
62
+
63
+ def render(options = {}, local_assigns = {}, &block)
64
+ @rendered << output = _view.render(options, local_assigns, &block)
65
+ output
66
+ end
67
+
68
+ def protect_against_forgery?
69
+ false
70
+ end
71
+
72
+ class << self
73
+ def tests(helper_class)
74
+ self.helper_class = helper_class
75
+ end
76
+
77
+ def helper_class
78
+ if current_helper_class = read_inheritable_attribute(:helper_class)
79
+ current_helper_class
80
+ else
81
+ self.helper_class = determine_default_helper_class(name)
82
+ end
83
+ end
84
+
85
+ def determine_default_helper_class(name)
86
+ name.sub(/Test$/, '').constantize
87
+ rescue NameError
88
+ nil
89
+ end
90
+
91
+ def helper_method(*methods)
92
+ # Almost a duplicate from ActionController::Helpers
93
+ methods.flatten.each do |method|
94
+ master_helper_module.module_eval <<-end_eval
95
+ def #{method}(*args, &block) # def current_user(*args, &block)
96
+ _test_case.send(%(#{method}), *args, &block) # test_case.send(%(current_user), *args, &block)
97
+ end # end
98
+ end_eval
99
+ end
100
+ end
101
+
102
+ private
103
+ def include_helper_modules!
104
+ helper(helper_class) if helper_class
105
+ include master_helper_module
106
+ end
107
+ end
108
+
109
+ private
110
+ def make_test_case_available_to_view!
111
+ test_case_instance = self
112
+ master_helper_module.module_eval do
113
+ define_method(:_test_case) { test_case_instance }
114
+ private :_test_case
115
+ end
116
+ end
117
+
118
+ def _view
119
+ view = ActionView::Base.new(ActionController::Base.view_paths, _assigns, @controller)
120
+ view.helpers.include master_helper_module
121
+ view.output_buffer = self.output_buffer
122
+ view
123
+ end
124
+
125
+ # Support the selector assertions
126
+ #
127
+ # Need to experiment if this priority is the best one: rendered => output_buffer
128
+ def response_from_page_or_rjs
129
+ HTML::Document.new(rendered.blank? ? output_buffer : rendered).root
130
+ end
131
+
132
+ EXCLUDE_IVARS = %w{
133
+ @output_buffer
134
+ @fixture_cache
135
+ @method_name
136
+ @_result
137
+ @loaded_fixtures
138
+ @test_passed
139
+ @view
140
+ }
141
+
142
+ def _instance_variables
143
+ instance_variables - EXCLUDE_IVARS
144
+ end
145
+
146
+ def _assigns
147
+ _instance_variables.inject({}) do |hash, var|
148
+ name = var[1..-1].to_sym
149
+ hash[name] = instance_variable_get(var)
150
+ hash
151
+ end
152
+ end
153
+
154
+ def method_missing(selector, *args)
155
+ if ActionController::Routing::Routes.named_routes.helpers.include?(selector)
156
+ @controller.__send__(selector, *args)
157
+ else
158
+ super
159
+ end
160
+ end
161
+ end
162
+ end
@@ -0,0 +1,58 @@
1
+ #--
2
+ # Copyright (c) 2004-2009 David Heinemeier Hansson
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ begin
25
+ require 'active_support'
26
+ rescue LoadError
27
+ activesupport_path = "#{File.dirname(__FILE__)}/../../activesupport/lib"
28
+ if File.directory?(activesupport_path)
29
+ $:.unshift activesupport_path
30
+ require 'active_support'
31
+ end
32
+ end
33
+
34
+ module ActionView
35
+ def self.load_all!
36
+ [Base, InlineTemplate, TemplateError]
37
+ end
38
+
39
+ autoload :Base, 'action_view/base'
40
+ autoload :Helpers, 'action_view/helpers'
41
+ autoload :InlineTemplate, 'action_view/inline_template'
42
+ autoload :Partials, 'action_view/partials'
43
+ autoload :PathSet, 'action_view/paths'
44
+ autoload :Renderable, 'action_view/renderable'
45
+ autoload :RenderablePartial, 'action_view/renderable_partial'
46
+ autoload :Template, 'action_view/template'
47
+ autoload :ReloadableTemplate, 'action_view/reloadable_template'
48
+ autoload :TemplateError, 'action_view/template_error'
49
+ autoload :TemplateHandler, 'action_view/template_handler'
50
+ autoload :TemplateHandlers, 'action_view/template_handlers'
51
+ autoload :Helpers, 'action_view/helpers'
52
+ autoload :SafeBuffer, 'action_view/safe_buffer'
53
+ end
54
+
55
+ require 'action_view/erb/util'
56
+
57
+
58
+ I18n.load_path << "#{File.dirname(__FILE__)}/action_view/locale/en.yml"
data/lib/actionpack.rb ADDED
@@ -0,0 +1,2 @@
1
+ require 'action_pack'
2
+ ActiveSupport::Deprecation.warn 'require "actionpack" is deprecated and will be removed in Rails 3. Use require "action_pack" instead.'
@@ -0,0 +1,61 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../lib')
2
+ $:.unshift(File.dirname(__FILE__) + '/../../activesupport/lib')
3
+ $:.unshift(File.dirname(__FILE__) + '/fixtures/helpers')
4
+ $:.unshift(File.dirname(__FILE__) + '/fixtures/alternate_helpers')
5
+
6
+ require 'rubygems'
7
+ require 'yaml'
8
+ require 'stringio'
9
+ require 'test/unit'
10
+
11
+ gem 'mocha', '>= 0.9.7'
12
+ require 'mocha'
13
+
14
+ begin
15
+ require 'ruby-debug'
16
+ Debugger.settings[:autoeval] = true
17
+ Debugger.start
18
+ rescue LoadError
19
+ # Debugging disabled. `gem install ruby-debug` to enable.
20
+ end
21
+
22
+ require 'action_controller'
23
+ require 'action_controller/cgi_ext'
24
+ require 'action_controller/test_process'
25
+ require 'action_view/test_case'
26
+
27
+ # Show backtraces for deprecated behavior for quicker cleanup.
28
+ ActiveSupport::Deprecation.debug = true
29
+
30
+ ActionController::Base.logger = nil
31
+ ActionController::Routing::Routes.reload rescue nil
32
+
33
+ ActionController::Base.session_store = nil
34
+
35
+ # Register danish language for testing
36
+ I18n.backend.store_translations 'da', {}
37
+ I18n.backend.store_translations 'pt-BR', {}
38
+ ORIGINAL_LOCALES = I18n.available_locales.map(&:to_s).sort
39
+
40
+ FIXTURE_LOAD_PATH = File.join(File.dirname(__FILE__), 'fixtures')
41
+ ActionView::Base.cache_template_loading = true
42
+ ActionController::Base.view_paths = FIXTURE_LOAD_PATH
43
+ CACHED_VIEW_PATHS = ActionView::Base.cache_template_loading? ?
44
+ ActionController::Base.view_paths :
45
+ ActionController::Base.view_paths.map {|path| ActionView::Template::EagerPath.new(path.to_s)}
46
+
47
+ class DummyMutex
48
+ def lock
49
+ @locked = true
50
+ end
51
+
52
+ def unlock
53
+ @locked = false
54
+ end
55
+
56
+ def locked?
57
+ @locked
58
+ end
59
+ end
60
+
61
+ ActionController::Reloader.default_lock = DummyMutex.new
@@ -0,0 +1,104 @@
1
+ require 'abstract_unit'
2
+
3
+ # Define the essentials
4
+ class ActiveRecordTestConnector
5
+ cattr_accessor :able_to_connect
6
+ cattr_accessor :connected
7
+
8
+ # Set our defaults
9
+ self.connected = false
10
+ self.able_to_connect = true
11
+ end
12
+
13
+ # Try to grab AR
14
+ if defined?(ActiveRecord) && defined?(Fixtures)
15
+ $stderr.puts 'Active Record is already loaded, running tests'
16
+ else
17
+ $stderr.print 'Attempting to load Active Record... '
18
+ begin
19
+ PATH_TO_AR = "#{File.dirname(__FILE__)}/../../activerecord/lib"
20
+ raise LoadError, "#{PATH_TO_AR} doesn't exist" unless File.directory?(PATH_TO_AR)
21
+ $LOAD_PATH.unshift PATH_TO_AR
22
+ require 'active_record'
23
+ require 'active_record/fixtures'
24
+ $stderr.puts 'success'
25
+ rescue LoadError => e
26
+ $stderr.print "failed. Skipping Active Record assertion tests: #{e}"
27
+ ActiveRecordTestConnector.able_to_connect = false
28
+ end
29
+ end
30
+ $stderr.flush
31
+
32
+
33
+ # Define the rest of the connector
34
+ class ActiveRecordTestConnector
35
+ class << self
36
+ def setup
37
+ unless self.connected || !self.able_to_connect
38
+ setup_connection
39
+ load_schema
40
+ require_fixture_models
41
+ self.connected = true
42
+ end
43
+ rescue Exception => e # errors from ActiveRecord setup
44
+ $stderr.puts "\nSkipping ActiveRecord assertion tests: #{e}"
45
+ #$stderr.puts " #{e.backtrace.join("\n ")}\n"
46
+ self.able_to_connect = false
47
+ end
48
+
49
+ private
50
+ def setup_connection
51
+ if Object.const_defined?(:ActiveRecord)
52
+ defaults = { :database => ':memory:' }
53
+ begin
54
+ adapter = defined?(JRUBY_VERSION) ? 'jdbcsqlite3' : 'sqlite3'
55
+ options = defaults.merge :adapter => adapter, :timeout => 500
56
+ ActiveRecord::Base.establish_connection(options)
57
+ ActiveRecord::Base.configurations = { 'sqlite3_ar_integration' => options }
58
+ ActiveRecord::Base.connection
59
+ rescue Exception # errors from establishing a connection
60
+ $stderr.puts 'SQLite 3 unavailable; trying SQLite 2.'
61
+ options = defaults.merge :adapter => 'sqlite'
62
+ ActiveRecord::Base.establish_connection(options)
63
+ ActiveRecord::Base.configurations = { 'sqlite2_ar_integration' => options }
64
+ ActiveRecord::Base.connection
65
+ end
66
+
67
+ Object.send(:const_set, :QUOTED_TYPE, ActiveRecord::Base.connection.quote_column_name('type')) unless Object.const_defined?(:QUOTED_TYPE)
68
+ else
69
+ raise "Can't setup connection since ActiveRecord isn't loaded."
70
+ end
71
+ end
72
+
73
+ # Load actionpack sqlite tables
74
+ def load_schema
75
+ File.read(File.dirname(__FILE__) + "/fixtures/db_definitions/sqlite.sql").split(';').each do |sql|
76
+ ActiveRecord::Base.connection.execute(sql) unless sql.blank?
77
+ end
78
+ end
79
+
80
+ def require_fixture_models
81
+ Dir.glob(File.dirname(__FILE__) + "/fixtures/*.rb").each {|f| require f}
82
+ end
83
+ end
84
+ end
85
+
86
+ class ActiveRecordTestCase < ActionController::TestCase
87
+ include ActiveRecord::TestFixtures
88
+
89
+ # Set our fixture path
90
+ if ActiveRecordTestConnector.able_to_connect
91
+ self.fixture_path = [FIXTURE_LOAD_PATH]
92
+ self.use_transactional_fixtures = false
93
+ end
94
+
95
+ def self.fixtures(*args)
96
+ super if ActiveRecordTestConnector.connected
97
+ end
98
+
99
+ def run(*args)
100
+ super if ActiveRecordTestConnector.connected
101
+ end
102
+ end
103
+
104
+ ActiveRecordTestConnector.setup
@@ -0,0 +1,174 @@
1
+ require 'active_record_unit'
2
+
3
+ class ActiveRecordStoreTest < ActionController::IntegrationTest
4
+ DispatcherApp = ActionController::Dispatcher.new
5
+ SessionApp = ActiveRecord::SessionStore.new(DispatcherApp,
6
+ :key => '_session_id')
7
+ SessionAppWithFixation = ActiveRecord::SessionStore.new(DispatcherApp,
8
+ :key => '_session_id', :cookie_only => false)
9
+
10
+ class TestController < ActionController::Base
11
+ def no_session_access
12
+ head :ok
13
+ end
14
+
15
+ def set_session_value
16
+ session[:foo] = params[:foo] || "bar"
17
+ head :ok
18
+ end
19
+
20
+ def get_session_value
21
+ render :text => "foo: #{session[:foo].inspect}"
22
+ end
23
+
24
+ def get_session_id
25
+ session[:foo]
26
+ render :text => "#{request.session_options[:id]}"
27
+ end
28
+
29
+ def call_reset_session
30
+ session[:foo]
31
+ reset_session
32
+ session[:foo] = "baz"
33
+ head :ok
34
+ end
35
+
36
+ def rescue_action(e) raise end
37
+ end
38
+
39
+ def setup
40
+ ActiveRecord::SessionStore.session_class.create_table!
41
+ @integration_session = open_session(SessionApp)
42
+ end
43
+
44
+ def teardown
45
+ ActiveRecord::SessionStore.session_class.drop_table!
46
+ end
47
+
48
+ def test_setting_and_getting_session_value
49
+ with_test_route_set do
50
+ get '/set_session_value'
51
+ assert_response :success
52
+ assert cookies['_session_id']
53
+
54
+ get '/get_session_value'
55
+ assert_response :success
56
+ assert_equal 'foo: "bar"', response.body
57
+
58
+ get '/set_session_value', :foo => "baz"
59
+ assert_response :success
60
+ assert cookies['_session_id']
61
+
62
+ get '/get_session_value'
63
+ assert_response :success
64
+ assert_equal 'foo: "baz"', response.body
65
+ end
66
+ end
67
+
68
+ def test_getting_nil_session_value
69
+ with_test_route_set do
70
+ get '/get_session_value'
71
+ assert_response :success
72
+ assert_equal 'foo: nil', response.body
73
+ end
74
+ end
75
+
76
+ def test_setting_session_value_after_session_reset
77
+ with_test_route_set do
78
+ get '/set_session_value'
79
+ assert_response :success
80
+ assert cookies['_session_id']
81
+ session_id = cookies['_session_id']
82
+
83
+ get '/call_reset_session'
84
+ assert_response :success
85
+ assert_not_equal [], headers['Set-Cookie']
86
+
87
+ get '/get_session_value'
88
+ assert_response :success
89
+ assert_equal 'foo: "baz"', response.body
90
+
91
+ get '/get_session_id'
92
+ assert_response :success
93
+ assert_not_equal session_id, response.body
94
+ end
95
+ end
96
+
97
+ def test_getting_session_id
98
+ with_test_route_set do
99
+ get '/set_session_value'
100
+ assert_response :success
101
+ assert cookies['_session_id']
102
+ session_id = cookies['_session_id']
103
+
104
+ get '/get_session_id'
105
+ assert_response :success
106
+ assert_equal session_id, response.body
107
+ end
108
+ end
109
+
110
+ def test_prevents_session_fixation
111
+ with_test_route_set do
112
+ get '/set_session_value'
113
+ assert_response :success
114
+ assert cookies['_session_id']
115
+
116
+ get '/get_session_value'
117
+ assert_response :success
118
+ assert_equal 'foo: "bar"', response.body
119
+ session_id = cookies['_session_id']
120
+ assert session_id
121
+
122
+ reset!
123
+
124
+ get '/set_session_value', :_session_id => session_id, :foo => "baz"
125
+ assert_response :success
126
+ assert_equal nil, cookies['_session_id']
127
+
128
+ get '/get_session_value', :_session_id => session_id
129
+ assert_response :success
130
+ assert_equal 'foo: nil', response.body
131
+ assert_equal nil, cookies['_session_id']
132
+ end
133
+ end
134
+
135
+ def test_allows_session_fixation
136
+ @integration_session = open_session(SessionAppWithFixation)
137
+
138
+ with_test_route_set do
139
+ get '/set_session_value'
140
+ assert_response :success
141
+ assert cookies['_session_id']
142
+
143
+ get '/get_session_value'
144
+ assert_response :success
145
+ assert_equal 'foo: "bar"', response.body
146
+ session_id = cookies['_session_id']
147
+ assert session_id
148
+
149
+ reset!
150
+ @integration_session = open_session(SessionAppWithFixation)
151
+
152
+ get '/set_session_value', :_session_id => session_id, :foo => "baz"
153
+ assert_response :success
154
+ assert_equal session_id, cookies['_session_id']
155
+
156
+ get '/get_session_value', :_session_id => session_id
157
+ assert_response :success
158
+ assert_equal 'foo: "baz"', response.body
159
+ assert_equal session_id, cookies['_session_id']
160
+ end
161
+ end
162
+
163
+ private
164
+ def with_test_route_set
165
+ with_routing do |set|
166
+ set.draw do |map|
167
+ map.with_options :controller => "active_record_store_test/test" do |c|
168
+ c.connect "/:action"
169
+ end
170
+ end
171
+ yield
172
+ end
173
+ end
174
+ end