12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- # Copyright (C) 2012-2024 Zammad Foundation, https://zammad-foundation.org/
- require 'rails_helper'
- RSpec.describe Auth::User do
- let(:user) { create(:user) }
- let(:instance) { described_class.new(user.login) }
- describe '.can_login?' do
- it 'responds to can_login?' do
- expect(instance).to respond_to(:can_login?)
- end
- shared_examples 'check loginable' do
- it 'checks if users can login' do
- expect(instance.can_login?).to be true
- end
- end
- shared_examples 'check not loginable' do
- it 'check that user can not login' do
- expect(instance.can_login?).to be false
- end
- end
- context 'with valid user login' do
- include_examples 'check loginable'
- end
- context 'with to many failed logins' do
- let(:user) { create(:user, login_failed: 999) }
- include_examples 'check not loginable'
- end
- context 'with not active user' do
- let(:user) { create(:user, active: false) }
- include_examples 'check not loginable'
- end
- context 'with invalid instance username parameter' do
- let(:instance) { described_class.new('not_existing') }
- include_examples 'check not loginable'
- end
- context 'with empty instance username parameter' do
- let(:instance) { described_class.new('') }
- include_examples 'check not loginable'
- end
- context 'with given default password_max_login_failed' do
- context 'with 5 attempts' do
- let(:user) { create(:user, login_failed: 5) }
- include_examples 'check loginable'
- end
- context 'with 6 attempts' do
- let(:user) { create(:user, login_failed: 6) }
- include_examples 'check not loginable'
- end
- end
- context 'when "password_max_login_failed" Setting is changed' do
- context 'when changed to lower value' do
- before do
- Setting.set('password_max_login_failed', 5)
- user.update(login_failed: 6)
- end
- include_examples 'check not loginable'
- end
- context 'when changed to nil' do
- before do
- Setting.set('password_max_login_failed', nil)
- end
- include_examples 'check loginable'
- context 'when User login failed once' do
- before do
- user.update(login_failed: 1)
- end
- include_examples 'check not loginable'
- end
- end
- end
- end
- end
|