Permalink
Browse files

Added protection from trailing slashes on page caching (closes #10229)…

… [devrieda]

git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@8226 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
  • Loading branch information...
1 parent 4d177ae commit 45d679bcb881adf8782230ff3b14ebc3a8d20e7b @dhh dhh committed Nov 28, 2007
View
@@ -1,5 +1,7 @@
*SVN*
+* Added protection from trailing slashes on page caching #10229 [devrieda]
+
* Asset timestamps are appended, not prepended. Closes #10276 [mnaberez]
* Minor inconsistency in description of render example. Closes #10029 [ScottSchram]
@@ -106,7 +106,7 @@ def caches_page(*actions)
private
def page_cache_file(path)
- name = ((path.empty? || path == "/") ? "/index" : URI.unescape(path))
+ name = (path.empty? || path == "/") ? "/index" : URI.unescape(path.chomp('/'))
name << page_cache_extension unless (name.split('/').last || name).include? '.'
return name
end
@@ -35,6 +35,10 @@ def expire_custom_path
expire_page("/index.html")
head :ok
end
+
+ def trailing_slash
+ render :text => "Sneak attack"
+ end
end
class PageCachingTest < Test::Unit::TestCase
@@ -91,6 +95,16 @@ def test_should_expire_cache_with_custom_path
get :expire_custom_path
assert !File.exist?("#{FILE_STORE_PATH}/index.html")
end
+
+ def test_should_cache_without_trailing_slash_on_url
+ @controller.class.cache_page 'cached content', '/page_caching_test/trailing_slash'
+ assert File.exist?("#{FILE_STORE_PATH}/page_caching_test/trailing_slash.html")
+ end
+
+ def test_should_cache_with_trailing_slash_on_url
+ @controller.class.cache_page 'cached content', '/page_caching_test/trailing_slash/'
+ assert File.exist?("#{FILE_STORE_PATH}/page_caching_test/trailing_slash.html")
+ end
uses_mocha("should_cache_ok_at_custom_path") do
def test_should_cache_ok_at_custom_path

0 comments on commit 45d679b

Please sign in to comment.