1 require File.dirname(__FILE__) + '/../test_helper'
2 require 'users_controller'
4 # Re-raise errors caught by the controller.
5 class UsersController; def rescue_action(e) raise e end; end
7 class UsersControllerTest < Test::Unit::TestCase
12 @controller = UsersController.new
13 @request = ActionController::TestRequest.new
14 @response = ActionController::TestResponse.new
17 def test_should_allow_signup
18 assert_difference 'User.count' do
20 assert_response :redirect
24 def test_should_require_login_on_signup
25 assert_no_difference 'User.count' do
26 create_user(:login => nil)
27 assert assigns(:user).errors.on(:login)
28 assert_response :success
32 def test_should_require_password_on_signup
33 assert_no_difference 'User.count' do
34 create_user(:password => nil)
35 assert assigns(:user).errors.on(:password)
36 assert_response :success
40 def test_should_require_password_confirmation_on_signup
41 assert_no_difference 'User.count' do
42 create_user(:password_confirmation => nil)
43 assert assigns(:user).errors.on(:password_confirmation)
44 assert_response :success
48 def test_should_require_email_on_signup
49 assert_no_difference 'User.count' do
50 create_user(:email => nil)
51 assert assigns(:user).errors.on(:email)
52 assert_response :success
56 def test_should_activate_user
57 assert_nil User.authenticate('aaron', 'test')
58 get :activate, :activation_code => users(:aaron).activation_code
59 assert_redirected_to '/'
60 assert_not_nil flash[:notice]
61 assert_equal users(:aaron), User.authenticate('aaron', 'test')
64 def test_should_not_activate_user_without_key
66 assert_nil flash[:notice]
67 rescue ActionController::RoutingError
68 # in the event your routes deny this, we'll just bow out gracefully.
71 def test_should_not_activate_user_with_blank_key
72 get :activate, :activation_code => ''
73 assert_nil flash[:notice]
74 rescue ActionController::RoutingError
79 def create_user(options = {})
80 post :create, :user => { :login => 'quire', :email => 'quire@example.com',
81 :password => 'quire', :password_confirmation => 'quire' }.merge(options)