aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/controller/api/conditional_get_test.rb
diff options
context:
space:
mode:
authorSantiago Pastorino <santiago@wyeworks.com>2015-04-15 15:30:27 -0300
committerSantiago Pastorino <santiago@wyeworks.com>2015-06-11 16:54:09 -0300
commit032778eefb4439a72c2933ea0bd4a7a0ef776234 (patch)
tree4f79724c4543a479f2271a16354c91f95f5997e6 /actionpack/test/controller/api/conditional_get_test.rb
parented7d787e120347ebc97647014a5e1fef7a34c19c (diff)
downloadrails-032778eefb4439a72c2933ea0bd4a7a0ef776234.tar.gz
rails-032778eefb4439a72c2933ea0bd4a7a0ef776234.tar.bz2
rails-032778eefb4439a72c2933ea0bd4a7a0ef776234.zip
Add ActionController API functionality
Diffstat (limited to 'actionpack/test/controller/api/conditional_get_test.rb')
-rw-r--r--actionpack/test/controller/api/conditional_get_test.rb57
1 files changed, 57 insertions, 0 deletions
diff --git a/actionpack/test/controller/api/conditional_get_test.rb b/actionpack/test/controller/api/conditional_get_test.rb
new file mode 100644
index 0000000000..e729ea9d33
--- /dev/null
+++ b/actionpack/test/controller/api/conditional_get_test.rb
@@ -0,0 +1,57 @@
+require 'abstract_unit'
+require 'active_support/core_ext/integer/time'
+require 'active_support/core_ext/numeric/time'
+
+class ConditionalGetApiController < ActionController::API
+ before_action :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 ConditionalGetApiTest < ActionController::TestCase
+ tests ConditionalGetApiController
+
+ 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 @response.body.blank?
+ assert_equal @last_modified, @response.headers['Last-Modified']
+ end
+end