require File.dirname(__FILE__) + '/../test_helper' require 'account_controller' # Re-raise errors caught by the controller. class AccountController; def rescue_action(e) raise e end; end class AccountControllerTest < Test::Unit::TestCase fixtures :users, :groups, :groups_users, :queued_mails def setup RetroCM.reload @controller = AccountController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new conf[:account_management] = true conf[:self_registration] = true conf[:activation] = 'auto' end def test_index get :index assert_response :redirect assert_redirected_to :controller => 'account', :action => 'account' end def test_account conf[:account_management] = false assert_raises(::ActionController::UnknownAction){ get :account } conf[:account_management] = true @request.session[:user_id] = nil get :account assert_response :redirect assert_redirected_to :controller => 'login', :action => 'login' @request.session[:user_id] = User.find(2).id get :account assert_response :success assert_valid_markup post :account, :user => {:name => 'New name'} assert_response :redirect assert_redirected_to :controller => 'account', :action => 'account' assert_not_nil(flash[:notice]) end def test_reset_password assert_equal(0, QueuedMail.count_for(Notifications)) conf[:account_management] = false assert_raises(::ActionController::UnknownAction){ get :reset_password } conf[:account_management] = true @request.session[:user_id] = nil get :reset_password assert_response :success assert_template 'account/reset_password' assert_valid_markup user = User.find(1) post :reset_password, :user => { :login => user.login, :email => user.email } assert_response :redirect assert_redirected_to :controller => 'login', :action => 'login' assert_not_nil(flash[:error]) assert_equal(0, QueuedMail.count_for(Notifications)) user = User.find(2) old_password = user.password.dup post :reset_password, :user => { :login => user.login, :email => user.email } assert_response :redirect assert_redirected_to :controller => 'login', :action => 'login' assert_not_nil(flash[:notice]) assert_equal(1, QueuedMail.count_for(Notifications)) assert_equal(old_password, user.password) user.reload assert_not_equal(old_password, user.password) end def test_register_access conf[:account_management] = false conf[:self_registration] = false assert_raises(::ActionController::UnknownAction){ get :register } conf[:account_management] = true conf[:self_registration] = false assert_raises(::ActionController::UnknownAction){ get :register } conf[:account_management] = false conf[:self_registration] = true assert_raises(::ActionController::UnknownAction){ get :register } end def test_register conf[:account_management] = true conf[:self_registration] = true conf[:activation] = 'auto' get :register assert_response :success assert_template 'account/register' assert_valid_markup assert_equal(0, QueuedMail.count_for(Notifications)) conf[:activation] = 'admin' post :register, :user => { :name => 'New user1', :login => 'newuser001', :email => 'newuser001@localhost', :plain_password => 'secret', :plain_password_confirmation => 'secret' } assert_response :redirect assert_redirected_to :controller => 'login', :action => 'login' assert_not_nil(flash[:notice]) assert_equal(0, QueuedMail.count_for(Notifications)) conf[:activation] = 'email' post :register, :user => { :name => 'New user2', :login => 'newuser002', :email => 'newuser002@localhost', :plain_password => 'secret', :plain_password_confirmation => 'secret' } assert_response :redirect assert_redirected_to :controller => 'account', :action => 'activate' assert_not_nil(flash[:notice]) assert_equal(1, QueuedMail.count_for(Notifications)) conf[:activation] = 'auto' post :register, :user => { :name => 'New user3', :login => 'newuser003', :email => 'newuser003@localhost', :plain_password => 'secret', :plain_password_confirmation => 'secret' } assert_response :redirect assert_redirected_to :controller => 'login', :action => 'login' assert_not_nil(flash[:notice]) assert_equal(1, QueuedMail.count_for(Notifications)) end def test_activate_access conf[:account_management] = false conf[:activation] = 'email' assert_raises(::ActionController::UnknownAction){ get :activate } conf[:account_management] = true conf[:activation] = 'auto' assert_raises(::ActionController::UnknownAction){ get :activate } conf[:account_management] = false conf[:activation] = 'admin' assert_raises(::ActionController::UnknownAction){ get :activate } end def test_activate conf[:account_management] = true conf[:activation] = 'email' get :activate assert_response :success assert_template 'account/activate' assert_valid_markup @request.session[:user_id] = 2 get :activate assert_response :redirect assert_redirected_to home_path @request.session[:user_id] = nil get :activate, :login => 'user', :code => '123456789' assert_response :success assert_template 'account/activate' assert_valid_markup user = User.new(:name => 'New user',:plain_password => 'secret', :plain_password_confirmation => 'secret') user.login = 'newuser007' user.email = 'newuser007@localhost' assert(user.save) assert(!user.active?) @request.session[:user_id] = nil get :activate, :login => user.login, :code => user.activation_code assert_response :redirect assert_redirected_to login_path assert_not_nil(flash[:notice]) assert(user.reload) assert(user.active?) end private def conf RetroCM[:general][:user_management] end end