mirror of
https://github.com/redmine/redmine.git
synced 2025-10-26 07:46:17 +01:00
Patch by Takenori TAKAKI. git-svn-id: http://svn.redmine.org/redmine/trunk@19799 e93f8b46-1217-0410-a6f0-8f06a7374b81
163 lines
5.1 KiB
Ruby
163 lines
5.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
# Redmine - project management software
|
|
# Copyright (C) 2006-2020 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.expand_path('../../test_helper', __FILE__)
|
|
|
|
class UserImportTest < ActiveSupport::TestCase
|
|
include Redmine::I18n
|
|
|
|
def setup
|
|
set_language_if_valid 'en'
|
|
User.current = nil
|
|
end
|
|
|
|
def test_authorized
|
|
assert UserImport.authorized?(User.find(1)) # admins
|
|
assert !UserImport.authorized?(User.find(2)) # dose not admin
|
|
assert !UserImport.authorized?(User.find(6)) # dows not admin
|
|
end
|
|
|
|
def test_maps_login
|
|
import = generate_import_with_mapping
|
|
first, second, third = new_records(User, 3) { import.run }
|
|
assert_equal 'user1', first.login
|
|
assert_equal 'user2', second.login
|
|
assert_equal 'user3', third.login
|
|
end
|
|
|
|
def test_maps_firstname
|
|
import = generate_import_with_mapping
|
|
first, second, third = new_records(User, 3) { import.run }
|
|
assert_equal 'One', first.firstname
|
|
assert_equal 'Two', second.firstname
|
|
assert_equal 'Three', third.firstname
|
|
end
|
|
|
|
def test_maps_lastname
|
|
import = generate_import_with_mapping
|
|
first, second, third = new_records(User, 3) { import.run }
|
|
assert_equal 'CSV', first.lastname
|
|
assert_equal 'Import', second.lastname
|
|
assert_equal 'User', third.lastname
|
|
end
|
|
|
|
def test_maps_mail
|
|
import = generate_import_with_mapping
|
|
first, second, third = new_records(User, 3) { import.run }
|
|
assert_equal 'user1@somenet.foo', first.mail
|
|
assert_equal 'user2@somenet.foo', second.mail
|
|
assert_equal 'user3@somenet.foo', third.mail
|
|
end
|
|
|
|
def test_maps_language
|
|
default_language = 'fr'
|
|
with_settings :default_language => default_language do
|
|
import = generate_import_with_mapping
|
|
first, second, third = new_records(User, 3) { import.run }
|
|
assert_equal 'en', first.language
|
|
assert_equal 'ja', second.language
|
|
assert_equal default_language, third.language
|
|
end
|
|
end
|
|
|
|
def test_maps_admin
|
|
import = generate_import_with_mapping
|
|
first, second, third = new_records(User, 3) { import.run }
|
|
assert first.admin?
|
|
assert_not second.admin?
|
|
assert_not third.admin?
|
|
end
|
|
|
|
def test_maps_auth_information
|
|
import = generate_import_with_mapping
|
|
first, second, third = new_records(User, 3) { import.run }
|
|
# use password
|
|
assert User.try_to_login(first.login, 'password', false)
|
|
assert User.try_to_login(second.login, 'password', false)
|
|
# use auth_source
|
|
assert_nil first.auth_source
|
|
assert_nil second.auth_source
|
|
assert third.auth_source
|
|
assert_equal 'LDAP test server', third.auth_source.name
|
|
AuthSourceLdap.any_instance.expects(:authenticate).with(third.login, 'ldapassword').returns(true)
|
|
assert User.try_to_login(third.login, 'ldapassword', false)
|
|
end
|
|
|
|
def test_map_must_change_password
|
|
import = generate_import_with_mapping
|
|
first, second, third = new_records(User, 3) { import.run }
|
|
assert first.must_change_password?
|
|
assert_not second.must_change_password?
|
|
assert_not third.must_change_password?
|
|
end
|
|
|
|
def test_maps_status
|
|
import = generate_import_with_mapping
|
|
first, second, third = new_records(User, 3) { import.run }
|
|
assert first.active?
|
|
assert second.locked?
|
|
assert third.registered?
|
|
end
|
|
|
|
def test_maps_custom_fields
|
|
phone_number_cf = UserCustomField.find(4)
|
|
|
|
import = generate_import_with_mapping
|
|
import.mapping["cf_#{phone_number_cf.id}"] = '11'
|
|
import.save!
|
|
first, second, third = new_records(User, 3) { import.run }
|
|
|
|
assert_equal '000-1111-2222', first.custom_field_value(phone_number_cf)
|
|
assert_equal '333-4444-5555', second.custom_field_value(phone_number_cf)
|
|
assert_equal '666-7777-8888', third.custom_field_value(phone_number_cf)
|
|
end
|
|
|
|
protected
|
|
|
|
def generate_import(fixture_name='import_users.csv')
|
|
import = UserImport.new
|
|
import.user_id = 1
|
|
import.file = uploaded_test_file(fixture_name, 'text/csv')
|
|
import.save!
|
|
import
|
|
end
|
|
|
|
def generate_import_with_mapping(fixture_name='import_users.csv')
|
|
import = generate_import(fixture_name)
|
|
|
|
import.settings = {
|
|
'separator' => ';', 'wrapper' => '"', 'encoding' => 'UTF-8',
|
|
'mapping' => {
|
|
'login' => '1',
|
|
'firstname' => '2',
|
|
'lastname' => '3',
|
|
'mail' => '4',
|
|
'language' => '5',
|
|
'admin' => '6',
|
|
'auth_source' => '7',
|
|
'password' => '8',
|
|
'must_change_passwd' => '9',
|
|
'status' => '10',
|
|
}
|
|
}
|
|
import.save!
|
|
import
|
|
end
|
|
end
|