foodsoft/test/functional/login_controller_test.rb

50 lines
1.7 KiB
Ruby

require File.dirname(__FILE__) + '/../test_helper'
require 'login_controller'
# Re-raise errors caught by the controller.
class LoginController; def rescue_action(e) raise e end; end
class LoginControllerTest < Test::Unit::TestCase
fixtures :users
def setup
@controller = LoginController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
@admin = User.find(1)
@admin.set_password({:required => true}, "secret", "secret")
@admin.save
@emails = ActionMailer::Base.deliveries
@emails.clear
end
def test_login_with_invalid_user
post :login, :login => {:user => 'bubu', :password => 'baba'}
assert_response :success
assert_equal "Sorry, anmelden nicht möglich", assigns(:error)
end
def test_login_with_valid_user
post :login, :login => {:user => 'admin', :password => 'secret'}
assert_redirected_to :controller => 'index'
#assert_not_nil session[:user_nick] #TODO: make this work !
#user = User.find(session[:user_id])
#assert_equal 'admin@foo.test', user.email
end
def test_reset_password_with_invalid_email
post :reset_password, :login => {:email => "admin@bubu.baba"}
assert_match "Leider keine passende Emailadresse", flash[:error]
end
def test_reset_password_and_mail_delivery
post :reset_password, :login => {:email => "admin@foo.test"}
assert_redirected_to :action => 'login'
assert_equal 1, @emails.size #FIXME: Why this doesn't function ?
email = @email.first
assert_match(/admin/, response.subject)
assert_equal("admin@foo.test", response.to[0])
assert_match(/Dein Passwort neues lautet: /, response.body)
end
end