spec/ramaze/helper/csrf.rb in ramaze-2011.10.23 vs spec/ramaze/helper/csrf.rb in ramaze-2011.12.28
- old
+ new
@@ -8,102 +8,92 @@
# certain values.
#
# - Yorick Peterse
#
class SpecHelperCSRF < Ramaze::Controller
-
+
engine :none
helper :csrf
-
+
before_all do
csrf_protection :check_post, :protect_me do
respond("The specified CSRF token is incorrect.", 401)
end
end
# Generate a new csrf token
def index
generate_csrf_token
end
-
+
# Retrieve the current value of the CSRF token
def get
return get_csrf_token
end
-
+
# Check if the token isn't regenerated
def dont_regenerate
$token_sess = session[:_csrf][:token]
$token_method = get_csrf_token
end
-
+
# Check the TTL
def check_ttl
generate_csrf_token :ttl => 3
$old_token = get_csrf_token
sleep 4
$new_token = get_csrf_token
end
-
+
# Check if the before_all block works
def check_post
"POST allowed."
end
-
+
end
describe Ramaze::Helper::CSRF do
behaves_like :rack_test
-
- # ------------------------------------------------
- # General validation
-
- it 'Generate a new CSRF token' do
+
+ it 'generate a new csrf token' do
got = get '/'
-
+
got.status.should.equal 200
got.body.should.equal ''
end
-
- it 'Retrieve the current CSRF token' do
+
+ it 'retrieve the current CSRF token' do
got = get '/get'
-
+
got.status.should.equal 200
got.body.length.should.equal 128
end
-
- # ------------------------------------------------
- # Validate the token expiration
-
- it 'Check if the token is regenerated (it shouldn\'t)' do
+
+ it 'do not generate a new token' do
got = get '/dont_regenerate'
-
+
got.status.should.equal 200
$token_sess.should.equal $token_method
end
-
- it 'Check if the token successfully expires after 3 seconds' do
+
+ it 'expire token after 3 seconds' do
got = get '/check_ttl'
-
+
got.status.should.equal 200
$old_token.should.not.equal $new_token
end
-
- # ------------------------------------------------
- # Validate all HTTP requests (GET, POST, etc)
-
- it 'Validate all HTTP requests (GET, POST, etc)' do
+
+ it 'validate all HTTP requests' do
methods = [:get, :post, :put, :delete]
-
+
methods.each do |method|
got_invalid = self.send(method, '/check_post', :name => "Yorick Peterse")
got_valid = self.send(method, '/check_post', :csrf_token => $new_token)
got_invalid.status.should.equal 401
got_invalid.body.should.equal "The specified CSRF token is incorrect."
-
+
got_valid.status.should.equal 200
got_valid.body.should.equal "POST allowed."
end
end
-
end