Files
codeocean/spec/lib/nonce_store_spec.rb
2015-02-16 17:04:28 +01:00

42 lines
1.1 KiB
Ruby

require 'rails_helper'
describe NonceStore do
let(:nonce) { SecureRandom.hex }
describe '.add' do
it 'stores a nonce in the cache' do
expect(Rails.cache).to receive(:write)
described_class.add(nonce)
end
end
describe '.delete' do
it 'deletes a nonce from the cache' do
expect(Rails.cache).to receive(:write)
described_class.add(nonce)
described_class.delete(nonce)
expect(described_class.has?(nonce)).to be false
end
end
describe '.has?' do
it 'returns true for present nonces' do
described_class.add(nonce)
expect(described_class.has?(nonce)).to be true
end
it 'returns false for expired nonces' do
Lti.send(:remove_const, 'MAXIMUM_SESSION_AGE')
Lti::MAXIMUM_SESSION_AGE = 1
described_class.add(nonce)
expect(described_class.has?(nonce)).to be true
sleep(Lti::MAXIMUM_SESSION_AGE)
expect(described_class.has?(nonce)).to be false
end
it 'returns false for absent nonces' do
expect(described_class.has?(nonce)).to be false
end
end
end