foodsoft/spec/lib/token_verifier_spec.rb
Philipp Rothmann fb2b4d8a8a chore: rubocop
chore: fix api test conventions

chore: rubocop -A spec/

chore: more rubocop -A

fix failing test

rubocop fixes

removes helper methods that are in my opinion dead code

more rubocop fixes

rubocop -a --auto-gen-config
2023-06-09 17:35:05 +02:00

45 lines
1.2 KiB
Ruby

require_relative '../spec_helper'
describe TokenVerifier do
let(:prefix) { 'xyz' }
let(:v) { TokenVerifier.new(prefix) }
let(:msg) { v.generate }
it 'validates' do
expect { v.verify(msg) }.not_to raise_error
end
it 'validates when recreated' do
v2 = TokenVerifier.new(prefix)
expect { v2.verify(msg) }.not_to raise_error
end
it 'does not validate with a different prefix' do
v2 = TokenVerifier.new('abc')
expect { v2.verify(msg) }.to raise_error(TokenVerifier::InvalidPrefix)
end
it 'does not validate in a different foodcoop scope' do
msg
oldscope = FoodsoftConfig.scope
begin
FoodsoftConfig.scope = Faker::Lorem.words(number: 1)
v2 = TokenVerifier.new(prefix)
expect { v2.verify(msg) }.to raise_error(TokenVerifier::InvalidScope)
ensure
FoodsoftConfig.scope = oldscope
end
end
it 'does not validate a random string' do
expect do
v.verify(Faker::Lorem.characters(number: 100))
end.to raise_error(ActiveSupport::MessageVerifier::InvalidSignature)
end
it 'returns the message' do
data = [5, { 'hi' => :there }, 'bye', []]
msg = v.generate(data)
expect(v.verify(msg)).to eq data
end
end