X-Git-Url: https://projects.mako.cc/source/selectricity-live/blobdiff_plain/dc635b6d39be19a09a428282b6d639d029908df6..22f84a3ea8bc39eb4cb91575d35dfca683336032:/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/functional_test.rb diff --git a/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/functional_test.rb b/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/functional_test.rb new file mode 100644 index 0000000..48273e8 --- /dev/null +++ b/vendor/plugins/acts_as_authenticated/generators/authenticated/templates/functional_test.rb @@ -0,0 +1,129 @@ +require File.dirname(__FILE__) + '/../test_helper' +require '<%= controller_file_name %>_controller' + +# Re-raise errors caught by the controller. +class <%= controller_class_name %>Controller; def rescue_action(e) raise e end; end + +class <%= controller_class_name %>ControllerTest < Test::Unit::TestCase + # Be sure to include AuthenticatedTestHelper in test/test_helper.rb instead + # Then, you can remove it from this and the units test. + include AuthenticatedTestHelper + + fixtures :<%= table_name %> + + def setup + @controller = <%= controller_class_name %>Controller.new + @request = ActionController::TestRequest.new + @response = ActionController::TestResponse.new + end + + def test_should_login_and_redirect + post :login, :login => 'quentin', :password => 'test' + assert session[:<%= file_name %>] + assert_response :redirect + end + + def test_should_fail_login_and_not_redirect + post :login, :login => 'quentin', :password => 'bad password' + assert_nil session[:<%= file_name %>] + assert_response :success + end + + def test_should_allow_signup + assert_difference <%= class_name %>, :count do + create_<%= file_name %> + assert_response :redirect + end + end + + def test_should_require_login_on_signup + assert_no_difference <%= class_name %>, :count do + create_<%= file_name %>(:login => nil) + assert assigns(:<%= file_name %>).errors.on(:login) + assert_response :success + end + end + + def test_should_require_password_on_signup + assert_no_difference <%= class_name %>, :count do + create_<%= file_name %>(:password => nil) + assert assigns(:<%= file_name %>).errors.on(:password) + assert_response :success + end + end + + def test_should_require_password_confirmation_on_signup + assert_no_difference <%= class_name %>, :count do + create_<%= file_name %>(:password_confirmation => nil) + assert assigns(:<%= file_name %>).errors.on(:password_confirmation) + assert_response :success + end + end + + def test_should_require_email_on_signup + assert_no_difference <%= class_name %>, :count do + create_<%= file_name %>(:email => nil) + assert assigns(:<%= file_name %>).errors.on(:email) + assert_response :success + end + end + + def test_should_logout + login_as :quentin + get :logout + assert_nil session[:<%= file_name %>] + assert_response :redirect + end + + def test_should_remember_me + post :login, :login => 'quentin', :password => 'test', :remember_me => "1" + assert_not_nil @response.cookies["auth_token"] + end + + def test_should_not_remember_me + post :login, :login => 'quentin', :password => 'test', :remember_me => "0" + assert_nil @response.cookies["auth_token"] + end + + def test_should_delete_token_on_logout + login_as :quentin + get :logout + assert_equal @response.cookies["auth_token"], [] + end + + def test_should_login_with_cookie + <%= table_name %>(:quentin).remember_me + @request.cookies["auth_token"] = cookie_for(:quentin) + get :index + assert @controller.send(:logged_in?) + end + + def test_should_fail_expired_cookie_login + <%= table_name %>(:quentin).remember_me + users(:quentin).update_attribute :remember_token_expires_at, 5.minutes.ago + @request.cookies["auth_token"] = cookie_for(:quentin) + get :index + assert !@controller.send(:logged_in?) + end + + def test_should_fail_cookie_login + <%= table_name %>(:quentin).remember_me + @request.cookies["auth_token"] = auth_token('invalid_auth_token') + get :index + assert !@controller.send(:logged_in?) + end + + protected + def create_<%= file_name %>(options = {}) + post :signup, :<%= file_name %> => { :login => 'quire', :email => 'quire@example.com', + :password => 'quire', :password_confirmation => 'quire' }.merge(options) + end + + def auth_token(token) + CGI::Cookie.new('name' => 'auth_token', 'value' => token) + end + + def cookie_for(<%= file_name %>) + auth_token <%= table_name %>(<%= file_name %>).remember_token + end +end