From ff9da0bab038ea118b839dd2d9e93a4d1a37e274 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Lang Date: Thu, 12 Feb 2009 21:25:50 +0000 Subject: Removes the fat ruby-openid gem. Simply use 'gem install ruby-openid' to enable openid support. git-svn-id: svn+ssh://rubyforge.org/var/svn/redmine/trunk@2458 e93f8b46-1217-0410-a6f0-8f06a7374b81 --- test/unit/user_test.rb | 382 +++++++++++++++++++++++++------------------------ 1 file changed, 194 insertions(+), 188 deletions(-) (limited to 'test/unit') diff --git a/test/unit/user_test.rb b/test/unit/user_test.rb index 515927ff2..6bf0e41fd 100644 --- a/test/unit/user_test.rb +++ b/test/unit/user_test.rb @@ -1,34 +1,34 @@ -# redMine - project management software -# Copyright (C) 2006 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. - -require File.dirname(__FILE__) + '/../test_helper' - -class UserTest < Test::Unit::TestCase - fixtures :users, :members, :projects - - def setup - @admin = User.find(1) - @jsmith = User.find(2) - @dlopper = User.find(3) - end - - def test_truth - assert_kind_of User, @jsmith - end +# redMine - project management software +# Copyright (C) 2006 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. + +require File.dirname(__FILE__) + '/../test_helper' + +class UserTest < Test::Unit::TestCase + fixtures :users, :members, :projects + + def setup + @admin = User.find(1) + @jsmith = User.find(2) + @dlopper = User.find(3) + end + + def test_truth + assert_kind_of User, @jsmith + end def test_create user = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo") @@ -47,160 +47,166 @@ class UserTest < Test::Unit::TestCase user.password, user.password_confirmation = "password", "password" assert user.save - end - - def test_mail_uniqueness_should_not_be_case_sensitive - u = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo") - u.login = 'newuser1' - u.password, u.password_confirmation = "password", "password" - assert u.save - - u = User.new(:firstname => "new", :lastname => "user", :mail => "newUser@Somenet.foo") - u.login = 'newuser2' - u.password, u.password_confirmation = "password", "password" - assert !u.save - assert_equal 'activerecord_error_taken', u.errors.on(:mail) - end - - def test_update - assert_equal "admin", @admin.login - @admin.login = "john" - assert @admin.save, @admin.errors.full_messages.join("; ") - @admin.reload - assert_equal "john", @admin.login - end - - def test_destroy - User.find(2).destroy - assert_nil User.find_by_id(2) - assert Member.find_all_by_user_id(2).empty? - end - - def test_validate - @admin.login = "" - assert !@admin.save - assert_equal 1, @admin.errors.count - end - - def test_password - user = User.try_to_login("admin", "admin") - assert_kind_of User, user - assert_equal "admin", user.login - user.password = "hello" - assert user.save - - user = User.try_to_login("admin", "hello") - assert_kind_of User, user - assert_equal "admin", user.login - assert_equal User.hash_password("hello"), user.hashed_password - end - - def test_name_format - assert_equal 'Smith, John', @jsmith.name(:lastname_coma_firstname) - Setting.user_format = :firstname_lastname - assert_equal 'John Smith', @jsmith.reload.name - Setting.user_format = :username - assert_equal 'jsmith', @jsmith.reload.name - end - - def test_lock - user = User.try_to_login("jsmith", "jsmith") - assert_equal @jsmith, user - - @jsmith.status = User::STATUS_LOCKED - assert @jsmith.save - - user = User.try_to_login("jsmith", "jsmith") - assert_equal nil, user - end - - def test_create_anonymous - AnonymousUser.delete_all - anon = User.anonymous - assert !anon.new_record? - assert_kind_of AnonymousUser, anon - end - - def test_rss_key - assert_nil @jsmith.rss_token - key = @jsmith.rss_key - assert_equal 40, key.length - - @jsmith.reload - assert_equal key, @jsmith.rss_key - end - - def test_role_for_project - # user with a role - role = @jsmith.role_for_project(Project.find(1)) - assert_kind_of Role, role - assert_equal "Manager", role.name - - # user with no role - assert !@dlopper.role_for_project(Project.find(2)).member? - end - - def test_mail_notification_all - @jsmith.mail_notification = true - @jsmith.notified_project_ids = [] - @jsmith.save - @jsmith.reload - assert @jsmith.projects.first.recipients.include?(@jsmith.mail) - end - - def test_mail_notification_selected - @jsmith.mail_notification = false - @jsmith.notified_project_ids = [1] - @jsmith.save - @jsmith.reload - assert Project.find(1).recipients.include?(@jsmith.mail) - end - - def test_mail_notification_none - @jsmith.mail_notification = false - @jsmith.notified_project_ids = [] - @jsmith.save - @jsmith.reload - assert !@jsmith.projects.first.recipients.include?(@jsmith.mail) - end - - def test_comments_sorting_preference - assert !@jsmith.wants_comments_in_reverse_order? - @jsmith.pref.comments_sorting = 'asc' - assert !@jsmith.wants_comments_in_reverse_order? - @jsmith.pref.comments_sorting = 'desc' - assert @jsmith.wants_comments_in_reverse_order? - end - - def test_find_by_mail_should_be_case_insensitive - u = User.find_by_mail('JSmith@somenet.foo') - assert_not_nil u - assert_equal 'jsmith@somenet.foo', u.mail - end - - def test_random_password - u = User.new - u.random_password - assert !u.password.blank? - assert !u.password_confirmation.blank? - end - - def test_setting_identity_url - normalized_open_id_url = 'http://example.com/' - u = User.new( :identity_url => 'http://example.com/' ) - assert_equal normalized_open_id_url, u.identity_url - end - - def test_setting_identity_url_without_trailing_slash - normalized_open_id_url = 'http://example.com/' - u = User.new( :identity_url => 'http://example.com' ) - assert_equal normalized_open_id_url, u.identity_url - end - - def test_setting_identity_url_without_protocol - normalized_open_id_url = 'http://example.com/' - u = User.new( :identity_url => 'example.com' ) - assert_equal normalized_open_id_url, u.identity_url - end - -end + end + + def test_mail_uniqueness_should_not_be_case_sensitive + u = User.new(:firstname => "new", :lastname => "user", :mail => "newuser@somenet.foo") + u.login = 'newuser1' + u.password, u.password_confirmation = "password", "password" + assert u.save + + u = User.new(:firstname => "new", :lastname => "user", :mail => "newUser@Somenet.foo") + u.login = 'newuser2' + u.password, u.password_confirmation = "password", "password" + assert !u.save + assert_equal 'activerecord_error_taken', u.errors.on(:mail) + end + + def test_update + assert_equal "admin", @admin.login + @admin.login = "john" + assert @admin.save, @admin.errors.full_messages.join("; ") + @admin.reload + assert_equal "john", @admin.login + end + + def test_destroy + User.find(2).destroy + assert_nil User.find_by_id(2) + assert Member.find_all_by_user_id(2).empty? + end + + def test_validate + @admin.login = "" + assert !@admin.save + assert_equal 1, @admin.errors.count + end + + def test_password + user = User.try_to_login("admin", "admin") + assert_kind_of User, user + assert_equal "admin", user.login + user.password = "hello" + assert user.save + + user = User.try_to_login("admin", "hello") + assert_kind_of User, user + assert_equal "admin", user.login + assert_equal User.hash_password("hello"), user.hashed_password + end + + def test_name_format + assert_equal 'Smith, John', @jsmith.name(:lastname_coma_firstname) + Setting.user_format = :firstname_lastname + assert_equal 'John Smith', @jsmith.reload.name + Setting.user_format = :username + assert_equal 'jsmith', @jsmith.reload.name + end + + def test_lock + user = User.try_to_login("jsmith", "jsmith") + assert_equal @jsmith, user + + @jsmith.status = User::STATUS_LOCKED + assert @jsmith.save + + user = User.try_to_login("jsmith", "jsmith") + assert_equal nil, user + end + + def test_create_anonymous + AnonymousUser.delete_all + anon = User.anonymous + assert !anon.new_record? + assert_kind_of AnonymousUser, anon + end + + def test_rss_key + assert_nil @jsmith.rss_token + key = @jsmith.rss_key + assert_equal 40, key.length + + @jsmith.reload + assert_equal key, @jsmith.rss_key + end + + def test_role_for_project + # user with a role + role = @jsmith.role_for_project(Project.find(1)) + assert_kind_of Role, role + assert_equal "Manager", role.name + + # user with no role + assert !@dlopper.role_for_project(Project.find(2)).member? + end + + def test_mail_notification_all + @jsmith.mail_notification = true + @jsmith.notified_project_ids = [] + @jsmith.save + @jsmith.reload + assert @jsmith.projects.first.recipients.include?(@jsmith.mail) + end + + def test_mail_notification_selected + @jsmith.mail_notification = false + @jsmith.notified_project_ids = [1] + @jsmith.save + @jsmith.reload + assert Project.find(1).recipients.include?(@jsmith.mail) + end + + def test_mail_notification_none + @jsmith.mail_notification = false + @jsmith.notified_project_ids = [] + @jsmith.save + @jsmith.reload + assert !@jsmith.projects.first.recipients.include?(@jsmith.mail) + end + + def test_comments_sorting_preference + assert !@jsmith.wants_comments_in_reverse_order? + @jsmith.pref.comments_sorting = 'asc' + assert !@jsmith.wants_comments_in_reverse_order? + @jsmith.pref.comments_sorting = 'desc' + assert @jsmith.wants_comments_in_reverse_order? + end + + def test_find_by_mail_should_be_case_insensitive + u = User.find_by_mail('JSmith@somenet.foo') + assert_not_nil u + assert_equal 'jsmith@somenet.foo', u.mail + end + + def test_random_password + u = User.new + u.random_password + assert !u.password.blank? + assert !u.password_confirmation.blank? + end + + if Object.const_defined?(:OpenID) + + def test_setting_identity_url + normalized_open_id_url = 'http://example.com/' + u = User.new( :identity_url => 'http://example.com/' ) + assert_equal normalized_open_id_url, u.identity_url + end + + def test_setting_identity_url_without_trailing_slash + normalized_open_id_url = 'http://example.com/' + u = User.new( :identity_url => 'http://example.com' ) + assert_equal normalized_open_id_url, u.identity_url + end + + def test_setting_identity_url_without_protocol + normalized_open_id_url = 'http://example.com/' + u = User.new( :identity_url => 'example.com' ) + assert_equal normalized_open_id_url, u.identity_url + end + + else + puts "Skipping openid tests." + end + +end -- cgit v1.2.3