Renamed helpers to correspond to renamed Controller classes.
[merb_radiant.git] / radiant_specs / test / functional / admin / .svn / text-base / user_controller_test.rb.svn-base
blobdae2c8b051d70d2f98a4f79f29125d30bb5654ba
1 require File.dirname(__FILE__) + '/../../test_helper'
2 require 'admin/user_controller'
4 # Re-raise errors caught by the controller.
5 class Admin::UserController; def rescue_action(e) raise e end; end
7 class Admin::UserControllerTest < Test::Unit::TestCase
8   
9   fixtures :users
10   test_helper :user, :logging, :login
12   def setup
13     @controller = Admin::UserController.new
14     @request = ActionController::TestRequest.new
15     @response = ActionController::TestResponse.new
16     @user = create_test_user
17     login_as(@user)
18   end
19   
20   def teardown
21     destroy_test_user
22   end
24   def test_ancestors
25     assert Admin::UserController.ancestors.include?(Admin::AbstractModelController)
26   end
27   
28   [:index, :new, :edit, :remove].each do |action|
29     define_method "test_#{action}_action_allowed_if_admin" do
30       login_as(:admin)
31       get action, { :id => 1 }
32       assert_response :success, "action: #{action}"
33     end
35     define_method "test_#{action}_action_not_allowed_if_other" do
36       login_as(:non_admin)
37       get action, { :id => 1 }
38       assert_redirected_to page_index_url, "action: #{action}"
39       assert_match /privileges/, flash[:error], "action: #{action}"
40     end
41   end
42   
43   def test_remove__cannot_remove_self
44     @user = users(:admin)
45     login_as(@user)
46     get :remove, { :id => @user.id }
47     assert_redirected_to user_index_url
48     assert_match /cannot.*self/i, flash[:error]
49     assert_not_nil User.find(@user.id)
50   end
51   
52   def test_preferences
53     get :preferences, :user => { :email => 'updated@email.com' }
54     assert_response :success
55     assigned_user = assigns(:user)
56     assert_equal @user, assigned_user
57     assert @user.object_id != assigned_user.object_id
58     assert_equal 'jdoe@gmail.com', assigned_user.email
59   end
60   def test_preferences__post
61     post(
62       :preferences,
63       { :user => { :password => '', :password_confirmation => '', :email => 'updated@gmail.com' } }
64     )
65     @user = User.find(@user.id)
66     assert_redirected_to page_index_url
67     assert_match /preferences.*?saved/i, flash[:notice] 
68     assert_equal 'updated@gmail.com', @user.email
69   end
70   def test_preferences__post_with_bad_data
71     get :preferences, 'user' => { :login => 'superman' }
72     assert_response :success
73     assert_match /bad form data/i, flash[:error]
74   end
75   
76   def test_change_password
77     @user = User.create!(:name => 'Test', :login => 'pref_test', :password => 'whoa!', :password_confirmation => 'whoa!')
78     login_as(@user)
79     post(
80       :preferences,
81       { :user => { :password => 'funtimes', :password_confirmation => 'funtimes' } }
82     )
83     @user = User.find(@user.id)
84     assert_equal User.sha1('funtimes'), @user.password
85     
86     assert !log_matches(/"password"=>"funtimes"/)
87     assert !log_matches(/"password_confirmation"=>"funtimes"/)
88   end
90 end