summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorJean-Philippe Lang <jp_lang@yahoo.fr>2013-02-23 16:50:07 +0000
committerJean-Philippe Lang <jp_lang@yahoo.fr>2013-02-23 16:50:07 +0000
commitfac4a79d4c2dbf3c7045770d3d4e3310e04439d2 (patch)
tree2aa8955ba91abb43bd337f25a694d7f019305ada /test
parent78997eea16884f63d7a0c655c63ed34142eec3de (diff)
downloadredmine-fac4a79d4c2dbf3c7045770d3d4e3310e04439d2.tar.gz
redmine-fac4a79d4c2dbf3c7045770d3d4e3310e04439d2.zip
Option to generate a random password on user creation/update.
git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@11456 e93f8b46-1217-0410-a6f0-8f06a7374b81
Diffstat (limited to 'test')
-rw-r--r--test/functional/users_controller_test.rb55
-rw-r--r--test/unit/user_test.rb21
2 files changed, 76 insertions, 0 deletions
diff --git a/test/functional/users_controller_test.rb b/test/functional/users_controller_test.rb
index 37e58d500..65aa2d7c0 100644
--- a/test/functional/users_controller_test.rb
+++ b/test/functional/users_controller_test.rb
@@ -218,6 +218,30 @@ class UsersControllerTest < ActionController::TestCase
assert_equal '0', user.pref[:warn_on_leaving_unsaved]
end
+ def test_create_with_generate_password_should_email_the_password
+ assert_difference 'User.count' do
+ post :create, :user => {
+ :login => 'randompass',
+ :firstname => 'Random',
+ :lastname => 'Pass',
+ :mail => 'randompass@example.net',
+ :language => 'en',
+ :generate_password => '1',
+ :password => '',
+ :password_confirmation => ''
+ }, :send_information => 1
+ 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
+
def test_create_with_failure
assert_no_difference 'User.count' do
post :create, :user => {}
@@ -290,6 +314,37 @@ class UsersControllerTest < ActionController::TestCase
assert_mail_body_match 'newpass123', mail
end
+ def test_update_with_generate_password_should_email_the_password
+ ActionMailer::Base.deliveries.clear
+ Setting.bcc_recipients = '1'
+
+ put :update, :id => 2, :user => {
+ :generate_password => '1',
+ :password => '',
+ :password_confirmation => ''
+ }, :send_information => '1'
+
+ 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
+ put :update, :id => 2, :user => {
+ :firstname => 'changed',
+ :generate_password => '0',
+ :password => '',
+ :password_confirmation => ''
+ }, :send_information => '1'
+
+ user = User.find(2)
+ assert_equal 'changed', user.firstname
+ assert user.check_password?('jsmith')
+ end
+
def test_update_user_switchin_from_auth_source_to_password_authentication
# Configure as auth source
u = User.find(2)
diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb
index 28d09518e..9ea57c722 100644
--- a/test/unit/user_test.rb
+++ b/test/unit/user_test.rb
@@ -70,6 +70,27 @@ class UserTest < ActiveSupport::TestCase
assert user.save
end
+ def test_generate_password_on_create_should_set_password
+ user = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")
+ user.login = "newuser"
+ user.generate_password = true
+ assert user.save
+
+ password = user.password
+ assert user.check_password?(password)
+ end
+
+ def test_generate_password_on_update_should_update_password
+ user = User.find(2)
+ hash = user.hashed_password
+ user.generate_password = true
+ assert user.save
+
+ password = user.password
+ assert user.check_password?(password)
+ assert_not_equal hash, user.reload.hashed_password
+ end
+
def test_create
user = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo")