53 lines
1.5 KiB
Ruby
53 lines
1.5 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
describe Vault::TOTP do
|
|
let(:uid) { 'uid' }
|
|
let(:email) { 'email' }
|
|
|
|
describe '.with_human_error' do
|
|
it 'renders human error when vault is down' do
|
|
expect do
|
|
described_class.with_human_error do
|
|
raise Vault::VaultError, 'Message connection refused message'
|
|
end
|
|
end.to raise_error(described_class::Error, '2FA server is under maintenance')
|
|
end
|
|
|
|
it 'renders human error when code was used twice' do
|
|
expect do
|
|
described_class.with_human_error do
|
|
raise Vault::VaultError, 'Message code already used message'
|
|
end
|
|
end.to raise_error(described_class::Error,
|
|
'This code was already used. Wait until the next time period')
|
|
end
|
|
|
|
it 'renders error when called without block' do
|
|
expect do
|
|
described_class.with_human_error
|
|
end.to raise_error(ArgumentError, 'Block is required')
|
|
end
|
|
end
|
|
|
|
describe '.validate?' do
|
|
before do
|
|
described_class.stubs(:write_data).returns( OpenStruct.new({data: data}) )
|
|
described_class.stubs(:read_data).returns( OpenStruct.new({data: data}) )
|
|
end
|
|
let(:data) { { valid: true } }
|
|
|
|
subject { described_class.validate?(uid, 'code') }
|
|
|
|
context 'when valid' do
|
|
before { described_class.stubs(:exist?).returns( true ) }
|
|
it { is_expected.to eq true }
|
|
end
|
|
|
|
context 'when invalid' do
|
|
before { described_class.stubs(:exist?).returns( true ) }
|
|
let(:data) { { valid: false } }
|
|
it { is_expected.to eq false }
|
|
end
|
|
end
|
|
end
|