refactor: simplify ZxcvbnService

This commit is contained in:
simon lehericey 2024-09-17 10:59:58 +02:00 committed by Lisa Durand
parent 214a0daca1
commit c0fe06ceb7
No known key found for this signature in database
GPG key ID: 0DF91F2CA1E8B816
4 changed files with 21 additions and 59 deletions

View file

@ -1,25 +1,11 @@
# frozen_string_literal: true
describe ZxcvbnService do
let(:password) { SECURE_PASSWORD }
subject(:service) { ZxcvbnService.new(password) }
describe '#score' do
describe '.complexity' do
it 'returns the password complexity score' do
expect(service.score).to eq 4
end
end
describe '#complexity for strong password' do
it 'returns the password score and length' do
expect(service.complexity).to eq [4, 20]
end
end
describe '#complexity for not strong password' do
let(:password) { 'motdepassefrançais' }
it 'returns the password score and length' do
expect(service.complexity).to eq [1, 18]
expect(ZxcvbnService.complexity(nil)).to eq 0
expect(ZxcvbnService.complexity('motdepassefrançais')).to eq 1
expect(ZxcvbnService.complexity(SECURE_PASSWORD)).to eq 4
end
end
@ -28,12 +14,8 @@ describe ZxcvbnService do
allow(Zxcvbn::Tester).to receive(:new).and_call_original
allow(YAML).to receive(:safe_load).and_call_original
first_service = ZxcvbnService.new('some-password')
first_service.score
first_service.complexity
other_service = ZxcvbnService.new('other-password')
other_service.score
other_service.complexity
_first_call = ZxcvbnService.complexity('some-password')
_other_call = ZxcvbnService.complexity('other-password')
expect(Zxcvbn::Tester).to have_received(:new).at_most(:once)
expect(YAML).to have_received(:safe_load).at_most(:once)
@ -44,12 +26,12 @@ describe ZxcvbnService do
threads = 1.upto(4).map do
Thread.new do
ZxcvbnService.new(password).score
ZxcvbnService.complexity(SECURE_PASSWORD)
end
end.map(&:join)
scores = threads.map(&:value)
expect(scores).to eq([4, 4, 4, 4])
complexities = threads.map(&:value)
expect(complexities).to eq([4, 4, 4, 4])
expect(Zxcvbn::Tester).to have_received(:new).at_most(:once)
end
end