trabajo-afectivo/spec/lib/auth/user_spec.rb

98 lines
2.3 KiB
Ruby

# Copyright (C) 2012-2021 Zammad Foundation, http://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