diff options
Diffstat (limited to 'actionpack/test/controller/http/conditional_get_test.rb')
-rw-r--r-- | actionpack/test/controller/http/conditional_get_test.rb | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/actionpack/test/controller/http/conditional_get_test.rb b/actionpack/test/controller/http/conditional_get_test.rb new file mode 100644 index 0000000000..70d5ef296f --- /dev/null +++ b/actionpack/test/controller/http/conditional_get_test.rb @@ -0,0 +1,55 @@ +require 'abstract_unit' + +class ConditionalGetHTTPController < ActionController::HTTP + before_filter :handle_last_modified_and_etags, :only => :two + + def one + if stale?(:last_modified => Time.now.utc.beginning_of_day, :etag => [:foo, 123]) + render :text => "Hi!" + end + end + + def two + render :text => "Hi!" + end + + private + + def handle_last_modified_and_etags + fresh_when(:last_modified => Time.now.utc.beginning_of_day, :etag => [ :foo, 123 ]) + end +end + +class ConditionalGetHTTPTest < ActionController::TestCase + tests ConditionalGetHTTPController + + def setup + @last_modified = Time.now.utc.beginning_of_day.httpdate + end + + def test_request_with_bang_gets_last_modified + get :two + assert_equal @last_modified, @response.headers['Last-Modified'] + assert_response :success + end + + def test_request_with_bang_obeys_last_modified + @request.if_modified_since = @last_modified + get :two + assert_response :not_modified + end + + def test_last_modified_works_with_less_than_too + @request.if_modified_since = 5.years.ago.httpdate + get :two + assert_response :success + end + + def test_request_not_modified + @request.if_modified_since = @last_modified + get :one + assert_equal 304, @response.status.to_i + assert_blank @response.body + assert_equal @last_modified, @response.headers['Last-Modified'] + end +end |