##// END OF EJS Templates
Speeds up rendering of the project list for users who belong to hundreds of projects....
Speeds up rendering of the project list for users who belong to hundreds of projects. git-svn-id: http://svn.redmine.org/redmine/trunk@16123 e93f8b46-1217-0410-a6f0-8f06a7374b81

File last commit:

r15678:bf5dade8df89
r15741:f8df935dcada
Show More
users_controller_test.rb
635 lines | 19.1 KiB | text/x-ruby | RubyLexer
/ test / functional / users_controller_test.rb
Jean-Philippe Lang
Adds a Group filter on the admin users list (#7893)....
r5030 # Redmine - project management software
Jean-Philippe Lang
Updates copyright for 2016....
r14856 # Copyright (C) 2006-2016 Jean-Philippe Lang
Jean-Philippe Lang
Added some functional tests and a CVS test repository....
r974 #
# 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.
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508 #
Jean-Philippe Lang
Added some functional tests and a CVS test repository....
r974 # 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.
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508 #
Jean-Philippe Lang
Added some functional tests and a CVS test repository....
r974 # 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.
Jean-Baptiste Barth
Use absolute paths in test/**/* requires for Ruby 1.9.2 compatibility. #4050...
r4395 require File.expand_path('../../test_helper', __FILE__)
Jean-Philippe Lang
Added some functional tests and a CVS test repository....
r974
Jean-Philippe Lang
Adds our own class for controller tests....
r15279 class UsersControllerTest < Redmine::ControllerTest
Jean-Philippe Lang
Fixes UsersControllerTest....
r2431 include Redmine::I18n
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Add support for multiple email addresses per user (#4244)....
r13504 fixtures :users, :email_addresses, :projects, :members, :member_roles, :roles,
Toshi MARUYAMA
code layout cleanup test/functional/users_controller_test.rb...
r9547 :custom_fields, :custom_values, :groups_users,
Toshi MARUYAMA
fix UsersControllerTest failure randomly...
r13501 :auth_sources,
:enabled_modules,
:issues, :issue_statuses,
:trackers
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Added some functional tests and a CVS test repository....
r974 def setup
User.current = nil
@request.session[:user_id] = 1 # admin
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Unified UsersController#list and #index....
r2877 def test_index
get :index
Jean-Philippe Lang
Added some functional tests and a CVS test repository....
r974 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select 'table.users'
assert_select 'tr.user.active'
assert_select 'tr.user.locked', 0
Jean-Philippe Lang
Added some functional tests and a CVS test repository....
r974 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Adds named scopes for users index....
r7961 def test_index_with_status_filter
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :index, :params => {:status => 3}
Jean-Philippe Lang
Adds named scopes for users index....
r7961 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select 'tr.user.active', 0
assert_select 'tr.user.locked'
Jean-Philippe Lang
Adds named scopes for users index....
r7961 end
Jean-Philippe Lang
Unified UsersController#list and #index....
r2877 def test_index_with_name_filter
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :index, :params => {:name => 'john'}
Jean-Philippe Lang
Adds functional test for user search....
r1944 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select 'tr.user td.username', :text => 'jsmith'
assert_select 'tr.user', 1
Jean-Philippe Lang
Adds functional test for user search....
r1944 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Adds a Group filter on the admin users list (#7893)....
r5030 def test_index_with_group_filter
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :index, :params => {:group_id => '10'}
Jean-Philippe Lang
Adds a Group filter on the admin users list (#7893)....
r5030 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342
assert_select 'tr.user', Group.find(10).users.count
Jean-Philippe Lang
Fixed that group filter is escaped on users index....
r9496 assert_select 'select[name=group_id]' do
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'option[value="10"][selected=selected]'
Jean-Philippe Lang
Fixed that group filter is escaped on users index....
r9496 end
Jean-Philippe Lang
Adds a Group filter on the admin users list (#7893)....
r5030 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
AccountController#show (/account/show/:id) moved to UsersController#show (/users/:id)....
r2874 def test_show
@request.session[:user_id] = nil
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :show, :params => {:id => 2}
Jean-Philippe Lang
AccountController#show (/account/show/:id) moved to UsersController#show (/users/:id)....
r2874 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select 'h2', :text => /John Smith/
end
def test_show_should_display_visible_custom_fields
@request.session[:user_id] = nil
UserCustomField.find_by_name('Phone number').update_attribute :visible, true
get :show, :params => {:id => 2}
assert_response :success
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Replaced remaining #assert_tag with #assert_select....
r13242 assert_select 'li', :text => /Phone number/
Jean-Philippe Lang
Adds a "visible" option on User and Project custom fields (#1738)....
r4268 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Adds a "visible" option on User and Project custom fields (#1738)....
r4268 def test_show_should_not_display_hidden_custom_fields
@request.session[:user_id] = nil
UserCustomField.find_by_name('Phone number').update_attribute :visible, false
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :show, :params => {:id => 2}
Jean-Philippe Lang
Adds a "visible" option on User and Project custom fields (#1738)....
r4268 assert_response :success
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Replaced remaining #assert_tag with #assert_select....
r13242 assert_select 'li', :text => /Phone number/, :count => 0
Jean-Philippe Lang
AccountController#show (/account/show/:id) moved to UsersController#show (/users/:id)....
r2874 end
def test_show_should_not_fail_when_custom_values_are_nil
user = User.find(2)
# Create a custom field to illustrate the issue
custom_field = CustomField.create!(:name => 'Testing', :field_format => 'text')
custom_value = user.custom_values.build(:custom_field => custom_field).save!
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :show, :params => {:id => 2}
Jean-Philippe Lang
AccountController#show (/account/show/:id) moved to UsersController#show (/users/:id)....
r2874 assert_response :success
end
def test_show_inactive
Jean-Philippe Lang
Let administrators see locked user profiles....
r3379 @request.session[:user_id] = nil
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :show, :params => {:id => 5}
Jean-Philippe Lang
AccountController#show (/account/show/:id) moved to UsersController#show (/users/:id)....
r2874 assert_response 404
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Let administrators see locked user profiles....
r3379 def test_show_inactive_by_admin
@request.session[:user_id] = 1
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :show, :params => {:id => 5}
Jean-Philippe Lang
Let administrators see locked user profiles....
r3379 assert_response 200
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select 'h2', :text => /Dave2 Lopper2/
Jean-Philippe Lang
Let administrators see locked user profiles....
r3379 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Adds a role setting for controlling visibility of users: all or members of visible projects (#11724)....
r13202 def test_show_user_who_is_not_visible_should_return_404
Role.anonymous.update! :users_visibility => 'members_of_visible_projects'
user = User.generate!
@request.session[:user_id] = nil
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :show, :params => {:id => user.id}
Jean-Philippe Lang
Adds a role setting for controlling visibility of users: all or members of visible projects (#11724)....
r13202 assert_response 404
end
Jean-Baptiste Barth
Show projects depending on their visibility in user's profile. #6100...
r3821 def test_show_displays_memberships_based_on_project_visibility
@request.session[:user_id] = 1
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :show, :params => {:id => 2}
Jean-Baptiste Barth
Show projects depending on their visibility in user's profile. #6100...
r3821 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342
# membership of private project admin can see
assert_select 'li a', :text => "OnlineStore"
Jean-Baptiste Barth
Show projects depending on their visibility in user's profile. #6100...
r3821 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Adds support for requesting information about current user using /users/current (#7141)....
r4430 def test_show_current_should_require_authentication
@request.session[:user_id] = nil
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :show, :params => {:id => 'current'}
Jean-Philippe Lang
Adds support for requesting information about current user using /users/current (#7141)....
r4430 assert_response 302
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Adds support for requesting information about current user using /users/current (#7141)....
r4430 def test_show_current
@request.session[:user_id] = 2
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :show, :params => {:id => 'current'}
Jean-Philippe Lang
Adds support for requesting information about current user using /users/current (#7141)....
r4430 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select 'h2', :text => /John Smith/
Jean-Philippe Lang
Adds support for requesting information about current user using /users/current (#7141)....
r4430 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
UsersController tests cleanup....
r4387 def test_new
get :new
assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select 'input[name=?]', 'user[login]'
Jean-Philippe Lang
Fixes password sending when creating user....
r4386 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Fixes password sending when creating user....
r4386 def test_create
Setting.bcc_recipients = '1'
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Fixes password sending when creating user....
r4386 assert_difference 'User.count' do
assert_difference 'ActionMailer::Base.deliveries.size' do
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 post :create, :params => {
Jean-Philippe Lang
Fixes password sending when creating user....
r4386 :user => {
:firstname => 'John',
:lastname => 'Doe',
:login => 'jdoe',
Jean-Philippe Lang
Use 8+ characters long passwords in tests....
r10659 :password => 'secret123',
:password_confirmation => 'secret123',
Jean-Philippe Lang
Fixes password sending when creating user....
r4386 :mail => 'jdoe@gmail.com',
:mail_notification => 'none'
},
:send_information => '1'
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 }
Jean-Philippe Lang
Fixes password sending when creating user....
r4386 end
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Toshi MARUYAMA
Rails4: replace deprecated Relation#first with finder options at UsersControllerTest...
r12361 user = User.order('id DESC').first
Jean-Philippe Lang
Fixes password sending when creating user....
r4386 assert_redirected_to :controller => 'users', :action => 'edit', :id => user.id
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Fixes password sending when creating user....
r4386 assert_equal 'John', user.firstname
assert_equal 'Doe', user.lastname
assert_equal 'jdoe', user.login
assert_equal 'jdoe@gmail.com', user.mail
assert_equal 'none', user.mail_notification
Jean-Philippe Lang
Use 8+ characters long passwords in tests....
r10659 assert user.check_password?('secret123')
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Fixes password sending when creating user....
r4386 mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal [user.mail], mail.bcc
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 assert_mail_body_match 'secret', mail
Eric Davis
Refactor: split UsersController#add into #add and #create...
r4101 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Rails 3.1 compatibility....
r8947 def test_create_with_preferences
assert_difference 'User.count' do
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 post :create, :params => {
Jean-Philippe Lang
Rails 3.1 compatibility....
r8947 :user => {
:firstname => 'John',
:lastname => 'Doe',
:login => 'jdoe',
Jean-Philippe Lang
Use 8+ characters long passwords in tests....
r10659 :password => 'secret123',
:password_confirmation => 'secret123',
Jean-Philippe Lang
Rails 3.1 compatibility....
r8947 :mail => 'jdoe@gmail.com',
:mail_notification => 'none'
},
:pref => {
'hide_mail' => '1',
'time_zone' => 'Paris',
'comments_sorting' => 'desc',
Jean-Philippe Lang
User preference for monospaced / variable-width font in textareas (#23653)....
r15371 'warn_on_leaving_unsaved' => '0',
'textarea_font' => 'proportional'
Jean-Philippe Lang
Rails 3.1 compatibility....
r8947 }
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 }
Jean-Philippe Lang
Rails 3.1 compatibility....
r8947 end
Toshi MARUYAMA
Rails4: replace deprecated Relation#first with finder options at UsersControllerTest...
r12361 user = User.order('id DESC').first
Jean-Philippe Lang
Rails 3.1 compatibility....
r8947 assert_equal 'jdoe', user.login
assert_equal true, user.pref.hide_mail
assert_equal 'Paris', user.pref.time_zone
assert_equal 'desc', user.pref[:comments_sorting]
assert_equal '0', user.pref[:warn_on_leaving_unsaved]
Jean-Philippe Lang
User preference for monospaced / variable-width font in textareas (#23653)....
r15371 assert_equal 'proportional', user.pref[:textarea_font]
Jean-Philippe Lang
Rails 3.1 compatibility....
r8947 end
Jean-Philippe Lang
Option to generate a random password on user creation/update....
r11226 def test_create_with_generate_password_should_email_the_password
assert_difference 'User.count' do
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 post :create, :params => {
:user => {
:login => 'randompass',
:firstname => 'Random',
:lastname => 'Pass',
:mail => 'randompass@example.net',
:language => 'en',
:generate_password => '1',
:password => '',
:password_confirmation => ''
},
:send_information => 1
}
Jean-Philippe Lang
Option to generate a random password on user creation/update....
r11226 end
user = User.order('id DESC').first
assert_equal 'randompass', user.login
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
m = mail_body(mail).match(/Password: ([a-zA-Z0-9]+)/)
assert m
password = m[1]
assert user.check_password?(password)
end
Jean-Philippe Lang
Adds a few tests....
r13313 def test_create_and_continue
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 post :create, :params => {
:user => {
Jean-Philippe Lang
Adds a few tests....
r13313 :login => 'randompass',
:firstname => 'Random',
:lastname => 'Pass',
:mail => 'randompass@example.net',
:generate_password => '1'
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 },
:continue => '1'
}
Jean-Philippe Lang
Adds a few tests....
r13313 assert_redirected_to '/users/new?user%5Bgenerate_password%5D=1'
end
Jean-Philippe Lang
UsersController tests cleanup....
r4387 def test_create_with_failure
assert_no_difference 'User.count' do
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 post :create, :params => {:user => {}}
Jean-Philippe Lang
UsersController tests cleanup....
r4387 end
assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select_error /Email cannot be blank/
Jean-Philippe Lang
UsersController tests cleanup....
r4387 end
Jean-Philippe Lang
Fixed that preferences are not preserved when adding a user fails (#15552)....
r12099 def test_create_with_failure_sould_preserve_preference
assert_no_difference 'User.count' do
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 post :create, :params => {
Jean-Philippe Lang
Fixed that preferences are not preserved when adding a user fails (#15552)....
r12099 :user => {},
:pref => {
'no_self_notified' => '1',
'hide_mail' => '1',
'time_zone' => 'Paris',
'comments_sorting' => 'desc',
'warn_on_leaving_unsaved' => '0'
}
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 }
Jean-Philippe Lang
Fixed that preferences are not preserved when adding a user fails (#15552)....
r12099 end
assert_response :success
assert_select 'select#pref_time_zone option[selected=selected]', :text => /Paris/
Jean-Philippe Lang
Quote values in DOM selectors for Nokogiri compatibility....
r13237 assert_select 'input#pref_no_self_notified[value="1"][checked=checked]'
Jean-Philippe Lang
Fixed that preferences are not preserved when adding a user fails (#15552)....
r12099 end
Jean-Philippe Lang
Send a security notification when users gain or loose admin (#21421)....
r14883 def test_create_admin_should_send_security_notification
ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 post :create, :params => {
Jean-Philippe Lang
Send a security notification when users gain or loose admin (#21421)....
r14883 :user => {
:firstname => 'Edgar',
:lastname => 'Schmoe',
:login => 'eschmoe',
:password => 'secret123',
:password_confirmation => 'secret123',
:mail => 'eschmoe@example.foo',
:admin => '1'
}
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 }
Jean-Philippe Lang
Send a security notification when users gain or loose admin (#21421)....
r14883
assert_not_nil (mail = ActionMailer::Base.deliveries.last)
assert_mail_body_match '0.0.0.0', mail
assert_mail_body_match I18n.t(:mail_body_security_notification_add, field: I18n.t(:field_admin), value: 'eschmoe'), mail
assert_select_email do
assert_select 'a[href^=?]', 'http://localhost:3000/users', :text => 'Users'
end
# All admins should receive this
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin|
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| [mail.bcc, mail.cc].flatten.include?(admin.mail) }
end
end
def test_create_non_admin_should_not_send_security_notification
ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 post :create, :params => {
Jean-Philippe Lang
Send a security notification when users gain or loose admin (#21421)....
r14883 :user => {
:firstname => 'Edgar',
:lastname => 'Schmoe',
:login => 'eschmoe',
:password => 'secret123',
:password_confirmation => 'secret123',
:mail => 'eschmoe@example.foo',
:admin => '0'
}
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 }
Jean-Philippe Lang
Send a security notification when users gain or loose admin (#21421)....
r14883 assert_nil ActionMailer::Base.deliveries.last
end
Jean-Philippe Lang
UsersController tests cleanup....
r4387 def test_edit
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :edit, :params => {:id => 2}
Jean-Philippe Lang
UsersController tests cleanup....
r4387 assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select 'input[name=?][value=?]', 'user[login]', 'jsmith'
Jean-Philippe Lang
UsersController tests cleanup....
r4387 end
Eric Davis
Refactor: split UsersController#add into #add and #create...
r4101
Jean-Philippe Lang
Adds a test for editing a registered user....
r13360 def test_edit_registered_user
assert User.find(2).register!
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :edit, :params => {:id => 2}
Jean-Philippe Lang
Adds a test for editing a registered user....
r13360 assert_response :success
assert_select 'a', :text => 'Activate'
end
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116 def test_update
Jean-Philippe Lang
Ability to send an email with password when changing a user's password (#3566)....
r2708 ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => 2,
:user => {:firstname => 'Changed', :mail_notification => 'only_assigned'},
:pref => {:hide_mail => '1', :comments_sorting => 'desc'}
}
Eric Davis
Allow admins to edit user's email notifications and preferences. #3503...
r4109 user = User.find(2)
assert_equal 'Changed', user.firstname
Jean-Philippe Lang
Moves mail_notification param to user hash param so that it can be set using the User API....
r4382 assert_equal 'only_assigned', user.mail_notification
Eric Davis
Allow admins to edit user's email notifications and preferences. #3503...
r4109 assert_equal true, user.pref[:hide_mail]
assert_equal 'desc', user.pref[:comments_sorting]
Jean-Philippe Lang
Ability to send an email with password when changing a user's password (#3566)....
r2708 assert ActionMailer::Base.deliveries.empty?
end
Jean-Philippe Lang
UsersController tests cleanup....
r4387
def test_update_with_failure
assert_no_difference 'User.count' do
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => 2,
:user => {:firstname => ''}
}
Jean-Philippe Lang
UsersController tests cleanup....
r4387 end
assert_response :success
Jean-Philippe Lang
Removes calls to #assert_template and #assigns in functional tests....
r15342 assert_select_error /First name cannot be blank/
Jean-Philippe Lang
UsersController tests cleanup....
r4387 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Extracts user groups assignment from controller....
r4385 def test_update_with_group_ids_should_assign_groups
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => 2,
:user => {:group_ids => ['10']}
}
Jean-Philippe Lang
Extracts user groups assignment from controller....
r4385 user = User.find(2)
assert_equal [10], user.group_ids
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Eric Davis
Refactor: split UsersController#edit into #edit and #update...
r4116 def test_update_with_activation_should_send_a_notification
Jean-Philippe Lang
Ability to send an email with password when changing a user's password (#3566)....
r2708 u = User.new(:firstname => 'Foo', :lastname => 'Bar', :mail => 'foo.bar@somenet.foo', :language => 'fr')
u.login = 'foo'
u.status = User::STATUS_REGISTERED
u.save!
ActionMailer::Base.deliveries.clear
Setting.bcc_recipients = '1'
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => u.id,
:user => {:status => User::STATUS_ACTIVE}
}
Jean-Philippe Lang
Ability to send an email with password when changing a user's password (#3566)....
r2708 assert u.reload.active?
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal ['foo.bar@somenet.foo'], mail.bcc
Jean-Philippe Lang
Adds helpers for testing email body....
r8966 assert_mail_body_match ll('fr', :notice_account_activated), mail
Jean-Philippe Lang
Ability to send an email with password when changing a user's password (#3566)....
r2708 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Moves password param to user hash param so that it can be set using the User API....
r4379 def test_update_with_password_change_should_send_a_notification
Jean-Philippe Lang
Ability to send an email with password when changing a user's password (#3566)....
r2708 ActionMailer::Base.deliveries.clear
Setting.bcc_recipients = '1'
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => 2,
:user => {:password => 'newpass123', :password_confirmation => 'newpass123'},
:send_information => '1'
}
Jean-Philippe Lang
Ability to send an email with password when changing a user's password (#3566)....
r2708 u = User.find(2)
Jean-Philippe Lang
Use 8+ characters long passwords in tests....
r10659 assert u.check_password?('newpass123')
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Ability to send an email with password when changing a user's password (#3566)....
r2708 mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
assert_equal [u.mail], mail.bcc
Jean-Philippe Lang
Use 8+ characters long passwords in tests....
r10659 assert_mail_body_match 'newpass123', mail
Jean-Philippe Lang
Ability to send an email with password when changing a user's password (#3566)....
r2708 end
Eric Davis
Allow user password changes when changing to Internal authentication. #6267...
r3952
Jean-Philippe Lang
Option to generate a random password on user creation/update....
r11226 def test_update_with_generate_password_should_email_the_password
ActionMailer::Base.deliveries.clear
Setting.bcc_recipients = '1'
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => 2,
:user => {
:generate_password => '1',
:password => '',
:password_confirmation => ''
},
:send_information => '1'
}
Jean-Philippe Lang
Option to generate a random password on user creation/update....
r11226
mail = ActionMailer::Base.deliveries.last
assert_not_nil mail
m = mail_body(mail).match(/Password: ([a-zA-Z0-9]+)/)
assert m
password = m[1]
assert User.find(2).check_password?(password)
end
def test_update_without_generate_password_should_not_change_password
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => 2, :user => {
:firstname => 'changed',
:generate_password => '0',
:password => '',
:password_confirmation => ''
},
:send_information => '1'
}
Jean-Philippe Lang
Option to generate a random password on user creation/update....
r11226
user = User.find(2)
assert_equal 'changed', user.firstname
assert user.check_password?('jsmith')
end
Jean-Philippe Lang
Additional tests for UsersController....
r9111 def test_update_user_switchin_from_auth_source_to_password_authentication
Eric Davis
Allow user password changes when changing to Internal authentication. #6267...
r3952 # Configure as auth source
u = User.find(2)
u.auth_source = AuthSource.find(1)
u.save!
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => u.id,
:user => {:auth_source_id => '', :password => 'newpass123', :password_confirmation => 'newpass123'}
}
Eric Davis
Allow user password changes when changing to Internal authentication. #6267...
r3952
Jean-Philippe Lang
Use assert_nil instead of assert_equal....
r15678 assert_nil u.reload.auth_source
Jean-Philippe Lang
Use 8+ characters long passwords in tests....
r10659 assert u.check_password?('newpass123')
Eric Davis
Allow user password changes when changing to Internal authentication. #6267...
r3952 end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Toshi MARUYAMA
fix project list is not shown on Email notifications (#11032)...
r9551 def test_update_notified_project
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :edit, :params => {:id => 2}
Toshi MARUYAMA
fix project list is not shown on Email notifications (#11032)...
r9551 assert_response :success
u = User.find(2)
assert_equal [1, 2, 5], u.projects.collect{|p| p.id}.sort
assert_equal [1, 2, 5], u.notified_projects_ids.sort
Jean-Philippe Lang
Update notified_project_ids while saving record....
r11610 assert_select 'input[name=?][value=?]', 'user[notified_project_ids][]', '1'
Toshi MARUYAMA
fix project list is not shown on Email notifications (#11032)...
r9551 assert_equal 'all', u.mail_notification
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => 2,
:user => {
:mail_notification => 'selected',
:notified_project_ids => [1, 2]
}
}
Toshi MARUYAMA
fix project list is not shown on Email notifications (#11032)...
r9551 u = User.find(2)
assert_equal 'selected', u.mail_notification
assert_equal [1, 2], u.notified_projects_ids.sort
end
Jean-Philippe Lang
Fixed that locking and unlocking a user resets the email notification checkbox (#14020)....
r11609 def test_update_status_should_not_update_attributes
user = User.find(2)
user.pref[:no_self_notified] = '1'
user.pref.save
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => 2,
:user => {:status => 3}
}
Jean-Philippe Lang
Fixed that locking and unlocking a user resets the email notification checkbox (#14020)....
r11609 assert_response 302
user = User.find(2)
assert_equal 3, user.status
assert_equal '1', user.pref[:no_self_notified]
end
Jean-Philippe Lang
Send a security notification when users gain or loose admin (#21421)....
r14883 def test_update_assign_admin_should_send_security_notification
ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => 2,
:user => {:admin => 1}
Jean-Philippe Lang
Send a security notification when users gain or loose admin (#21421)....
r14883 }
assert_not_nil (mail = ActionMailer::Base.deliveries.last)
assert_mail_body_match I18n.t(:mail_body_security_notification_add, field: I18n.t(:field_admin), value: User.find(2).login), mail
# All admins should receive this
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin|
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| [mail.bcc, mail.cc].flatten.include?(admin.mail) }
end
end
def test_update_unassign_admin_should_send_security_notification
user = User.find(2)
user.admin = true
user.save!
ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => user.id,
:user => {:admin => 0}
Jean-Philippe Lang
Send a security notification when users gain or loose admin (#21421)....
r14883 }
assert_not_nil (mail = ActionMailer::Base.deliveries.last)
assert_mail_body_match I18n.t(:mail_body_security_notification_remove, field: I18n.t(:field_admin), value: user.login), mail
# All admins should receive this
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin|
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| [mail.bcc, mail.cc].flatten.include?(admin.mail) }
end
end
def test_update_lock_admin_should_send_security_notification
user = User.find(2)
user.admin = true
user.save!
ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => 2,
:user => {:status => Principal::STATUS_LOCKED}
Jean-Philippe Lang
Send a security notification when users gain or loose admin (#21421)....
r14883 }
assert_not_nil (mail = ActionMailer::Base.deliveries.last)
assert_mail_body_match I18n.t(:mail_body_security_notification_remove, field: I18n.t(:field_admin), value: User.find(2).login), mail
# All admins should receive this
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin|
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| [mail.bcc, mail.cc].flatten.include?(admin.mail) }
end
# if user is already locked, destroying should not send a second mail
# (for active admins see furtherbelow)
ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 delete :destroy, :params => {:id => 1}
Jean-Philippe Lang
Send a security notification when users gain or loose admin (#21421)....
r14883 assert_nil ActionMailer::Base.deliveries.last
end
def test_update_unlock_admin_should_send_security_notification
user = User.find(5) # already locked
user.admin = true
user.save!
ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => user.id,
:user => {:status => Principal::STATUS_ACTIVE}
Jean-Philippe Lang
Send a security notification when users gain or loose admin (#21421)....
r14883 }
assert_not_nil (mail = ActionMailer::Base.deliveries.last)
assert_mail_body_match I18n.t(:mail_body_security_notification_add, field: I18n.t(:field_admin), value: user.login), mail
# All admins should receive this
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin|
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| [mail.bcc, mail.cc].flatten.include?(admin.mail) }
end
end
def test_update_admin_unrelated_property_should_not_send_security_notification
ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 put :update, :params => {
:id => 1,
:user => {:firstname => 'Jimmy'}
Jean-Philippe Lang
Send a security notification when users gain or loose admin (#21421)....
r14883 }
assert_nil ActionMailer::Base.deliveries.last
end
Jean-Philippe Lang
Enable ability for administrators to delete users (#7296)....
r4609 def test_destroy
assert_difference 'User.count', -1 do
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 delete :destroy, :params => {:id => 2}
Jean-Philippe Lang
Enable ability for administrators to delete users (#7296)....
r4609 end
assert_redirected_to '/users'
assert_nil User.find_by_id(2)
end
def test_destroy_should_be_denied_for_non_admin_users
@request.session[:user_id] = 3
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Enable ability for administrators to delete users (#7296)....
r4609 assert_no_difference 'User.count' do
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 get :destroy, :params => {:id => 2}
Jean-Philippe Lang
Enable ability for administrators to delete users (#7296)....
r4609 end
assert_response 403
end
Toshi MARUYAMA
remove trailing white-spaces from test/functional/users_controller_test.rb....
r6508
Jean-Philippe Lang
Fixed that destroying a user from the edit page returns a 404 response (#11691)....
r10057 def test_destroy_should_redirect_to_back_url_param
assert_difference 'User.count', -1 do
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 delete :destroy, :params => {:id => 2, :back_url => '/users?name=foo'}
Jean-Philippe Lang
Fixed that destroying a user from the edit page returns a 404 response (#11691)....
r10057 end
assert_redirected_to '/users?name=foo'
end
Jean-Philippe Lang
Send a security notification when users gain or loose admin (#21421)....
r14883
def test_destroy_active_admin_should_send_security_notification
user = User.find(2)
user.admin = true
user.save!
ActionMailer::Base.deliveries.clear
Jean-Philippe Lang
Pass parameters with :params in controller tests....
r15282 delete :destroy, :params => {:id => user.id}
Jean-Philippe Lang
Send a security notification when users gain or loose admin (#21421)....
r14883
assert_not_nil (mail = ActionMailer::Base.deliveries.last)
assert_mail_body_match I18n.t(:mail_body_security_notification_remove, field: I18n.t(:field_admin), value: user.login), mail
# All admins should receive this
User.where(admin: true, status: Principal::STATUS_ACTIVE).each do |admin|
assert_not_nil ActionMailer::Base.deliveries.detect{|mail| [mail.bcc, mail.cc].flatten.include?(admin.mail) }
end
end
Jean-Philippe Lang
Added some functional tests and a CVS test repository....
r974 end