my_controller_test.rb
108 lines
| 3.5 KiB
| text/x-ruby
|
RubyLexer
|
r484 | # redMine - project management software | ||
# Copyright (C) 2006-2007 Jean-Philippe Lang | ||||
# | ||||
# This program is free software; you can redistribute it and/or | ||||
# modify it under the terms of the GNU General Public License | ||||
# as published by the Free Software Foundation; either version 2 | ||||
# of the License, or (at your option) any later version. | ||||
# | ||||
# This program is distributed in the hope that it will be useful, | ||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of | ||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||||
# GNU General Public License for more details. | ||||
# | ||||
# You should have received a copy of the GNU General Public License | ||||
# along with this program; if not, write to the Free Software | ||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | ||||
|
r60 | require File.dirname(__FILE__) + '/../test_helper' | ||
require 'my_controller' | ||||
# Re-raise errors caught by the controller. | ||||
class MyController; def rescue_action(e) raise e end; end | ||||
class MyControllerTest < Test::Unit::TestCase | ||||
|
r2274 | fixtures :users, :issues, :issue_statuses, :trackers, :enumerations, :custom_fields | ||
|
r673 | |||
|
r60 | def setup | ||
@controller = MyController.new | ||||
@request = ActionController::TestRequest.new | ||||
|
r484 | @request.session[:user_id] = 2 | ||
|
r60 | @response = ActionController::TestResponse.new | ||
end | ||||
|
r484 | def test_index | ||
get :index | ||||
assert_response :success | ||||
assert_template 'page' | ||||
end | ||||
def test_page | ||||
get :page | ||||
assert_response :success | ||||
assert_template 'page' | ||||
end | ||||
|
r2274 | def test_my_account_should_show_editable_custom_fields | ||
|
r484 | get :account | ||
assert_response :success | ||||
assert_template 'account' | ||||
assert_equal User.find(2), assigns(:user) | ||||
|
r2274 | |||
assert_tag :input, :attributes => { :name => 'user[custom_field_values][4]'} | ||||
end | ||||
def test_my_account_should_not_show_non_editable_custom_fields | ||||
UserCustomField.find(4).update_attribute :editable, false | ||||
get :account | ||||
assert_response :success | ||||
assert_template 'account' | ||||
assert_equal User.find(2), assigns(:user) | ||||
assert_no_tag :input, :attributes => { :name => 'user[custom_field_values][4]'} | ||||
|
r484 | end | ||
def test_update_account | ||||
|
r2274 | post :account, :user => {:firstname => "Joe", | ||
:login => "root", | ||||
:admin => 1, | ||||
:custom_field_values => {"4" => "0100562500"}} | ||||
|
r673 | assert_redirected_to 'my/account' | ||
|
r484 | user = User.find(2) | ||
assert_equal user, assigns(:user) | ||||
assert_equal "Joe", user.firstname | ||||
assert_equal "jsmith", user.login | ||||
|
r2274 | assert_equal "0100562500", user.custom_value_for(4).value | ||
|
r484 | assert !user.admin? | ||
end | ||||
def test_change_password | ||||
|
r842 | get :password | ||
|
r484 | assert_response :success | ||
|
r842 | assert_template 'password' | ||
|
r484 | |||
# non matching password confirmation | ||||
|
r842 | post :password, :password => 'jsmith', | ||
:new_password => 'hello', | ||||
:new_password_confirmation => 'hello2' | ||||
|
r484 | assert_response :success | ||
|
r842 | assert_template 'password' | ||
|
r484 | assert_tag :tag => "div", :attributes => { :class => "errorExplanation" } | ||
# wrong password | ||||
|
r842 | post :password, :password => 'wrongpassword', | ||
:new_password => 'hello', | ||||
:new_password_confirmation => 'hello' | ||||
assert_response :success | ||||
assert_template 'password' | ||||
|
r603 | assert_equal 'Wrong password', flash[:error] | ||
|
r484 | |||
# good password | ||||
|
r842 | post :password, :password => 'jsmith', | ||
:new_password => 'hello', | ||||
:new_password_confirmation => 'hello' | ||||
|
r484 | assert_redirected_to 'my/account' | ||
assert User.try_to_login('jsmith', 'hello') | ||||
|
r60 | end | ||
end | ||||