Maintenance: Remove while loop user check login.
This commit is contained in:
parent
7a156c5d48
commit
72f39d0d9d
2 changed files with 40 additions and 9 deletions
|
@ -926,17 +926,16 @@ try to find correct name
|
||||||
end
|
end
|
||||||
|
|
||||||
# check if login already exists
|
# check if login already exists
|
||||||
self.login = login.downcase.strip
|
base_login = login.downcase.strip
|
||||||
check = true
|
|
||||||
while check
|
alternatives = [nil] + Array(1..20) + [ SecureRandom.uuid ]
|
||||||
|
alternatives.each do |suffix|
|
||||||
|
self.login = "#{base_login}#{suffix}"
|
||||||
exists = User.find_by(login: login)
|
exists = User.find_by(login: login)
|
||||||
if exists && exists.id != id
|
return true if !exists || exists.id == id
|
||||||
self.login = "#{login}#{rand(999)}" # rubocop:disable Zammad/ForbidRand
|
|
||||||
else
|
|
||||||
check = false
|
|
||||||
end
|
end
|
||||||
end
|
|
||||||
true
|
raise Exceptions::UnprocessableEntity, "Invalid user login generation for login #{login}!"
|
||||||
end
|
end
|
||||||
|
|
||||||
def check_mail_delivery_failed
|
def check_mail_delivery_failed
|
||||||
|
|
|
@ -573,6 +573,38 @@ RSpec.describe User, type: :model do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#check_login' do
|
||||||
|
let(:agent) { create(:agent) }
|
||||||
|
|
||||||
|
it 'does use the origin login' do
|
||||||
|
new_agent = create(:agent)
|
||||||
|
expect(new_agent.login).not_to end_with('1')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does number up agent logins (1)' do
|
||||||
|
new_agent = create(:agent, login: agent.login)
|
||||||
|
expect(new_agent.login).to eq("#{agent.login}1")
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does number up agent logins (5)' do
|
||||||
|
new_agent = create(:agent, login: agent.login)
|
||||||
|
4.times do
|
||||||
|
new_agent = create(:agent, login: agent.login)
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(new_agent.login).to eq("#{agent.login}5")
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does backup with uuid in cases of many duplicates' do
|
||||||
|
new_agent = create(:agent, login: agent.login)
|
||||||
|
20.times do
|
||||||
|
new_agent = create(:agent, login: agent.login)
|
||||||
|
end
|
||||||
|
|
||||||
|
expect(new_agent.login.sub!(agent.login, '')).to be_a_uuid
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe 'Attributes:' do
|
describe 'Attributes:' do
|
||||||
|
|
Loading…
Reference in a new issue