spec/slosilo_spec.rb in slosilo-0.0.0 vs spec/slosilo_spec.rb in slosilo-0.1.2
- old
+ new
@@ -1,40 +1,36 @@
require 'spec_helper'
describe Slosilo do
include_context "with mock adapter"
- include_context "with example key"
- before { Slosilo['test'] = key }
+ let(:key) { OpenSSL::PKey::RSA.new 512 }
+ before { adapter['test'] = key.to_der }
describe '[]' do
it "returns a Slosilo::Key" do
- expect(Slosilo[:test]).to be_instance_of Slosilo::Key
+ Slosilo[:test].should be_instance_of Slosilo::Key
end
-
- it "allows looking up by fingerprint" do
- expect(Slosilo[fingerprint: key_fingerprint]).to eq(key)
- end
context "when the requested key does not exist" do
it "returns nil instead of creating a new key" do
- expect(Slosilo[:aether]).not_to be
+ Slosilo[:aether].should_not be
end
end
end
describe '.sign' do
let(:own_key) { double "own key" }
- before { allow(Slosilo).to receive(:[]).with(:own).and_return own_key }
+ before { Slosilo.stub(:[]).with(:own).and_return own_key }
let (:argument) { double "thing to sign" }
it "fetches the own key and signs using that" do
- expect(own_key).to receive(:sign).with(argument)
+ own_key.should_receive(:sign).with(argument)
Slosilo.sign argument
end
end
describe '.token_valid?' do
- before { allow(adapter['test']).to receive_messages token_valid?: false }
+ before { adapter['test'].stub token_valid?: false }
let(:key2) { double "key 2", token_valid?: false }
let(:key3) { double "key 3", token_valid?: false }
before do
adapter[:key2] = key2
adapter[:key3] = key3
@@ -42,83 +38,21 @@
let(:token) { double "token" }
subject { Slosilo.token_valid? token }
context "when no key validates the token" do
- before { allow(Slosilo::Key).to receive_messages new: (double "key", token_valid?: false) }
- it { is_expected.to be_falsey }
+ before { Slosilo::Key.stub new: (double "key", token_valid?: false) }
+ it { should be_false }
end
context "when a key validates the token" do
let(:valid_key) { double token_valid?: true }
let(:invalid_key) { double token_valid?: true }
before do
- allow(Slosilo::Key).to receive_messages new: invalid_key
- adapter[:key2] = valid_key
+ Slosilo::Key.stub new: invalid_key
+ Slosilo::Key.stub(:new).with(key2).and_return(valid_key)
end
- it { is_expected.to be_truthy }
- end
- end
-
- describe '.token_signer' do
-
- context "when token matches a key" do
- let(:token) {{ 'data' => 'foo', 'key' => key.fingerprint, 'signature' => 'XXX' }}
-
- context "and the signature is valid" do
- before { allow(key).to receive(:token_valid?).with(token).and_return true }
-
- it "returns the key id" do
- expect(subject.token_signer(token)).to eq('test')
- end
- end
-
- context "and the signature is invalid" do
- before { allow(key).to receive(:token_valid?).with(token).and_return false }
-
- it "returns nil" do
- expect(subject.token_signer(token)).not_to be
- end
- end
- end
-
- context "when token doesn't match a key" do
- let(:token) {{ 'data' => 'foo', 'key' => "footprint", 'signature' => 'XXX' }}
- it "returns nil" do
- expect(subject.token_signer(token)).not_to be
- end
- end
-
- context "with JWT token" do
- before do
- expect(key).to receive(:validate_jwt) do |jwt|
- expect(jwt.header).to eq 'kid' => key.fingerprint
- expect(jwt.claims).to eq({})
- expect(jwt.signature).to eq 'sig'
- end
- end
-
- it "accepts pre-parsed JSON serialization" do
- expect(Slosilo.token_signer(
- 'protected' => 'eyJraWQiOiIxMDdiZGI4NTAxYzQxOWZhZDJmZGIyMGI0NjdkNGQwYTYyYTE2YTk4YzM1ZjJkYTBlYjNiMWZmOTI5Nzk1YWQ5In0=',
- 'payload' => 'e30=',
- 'signature' => 'c2ln'
- )).to eq 'test'
- end
-
- it "accepts pre-parsed JWT token" do
- expect(Slosilo.token_signer(Slosilo::JWT(
- 'protected' => 'eyJraWQiOiIxMDdiZGI4NTAxYzQxOWZhZDJmZGIyMGI0NjdkNGQwYTYyYTE2YTk4YzM1ZjJkYTBlYjNiMWZmOTI5Nzk1YWQ5In0=',
- 'payload' => 'e30=',
- 'signature' => 'c2ln'
- ))).to eq 'test'
- end
-
- it "accepts compact serialization" do
- expect(Slosilo.token_signer(
- 'eyJraWQiOiIxMDdiZGI4NTAxYzQxOWZhZDJmZGIyMGI0NjdkNGQwYTYyYTE2YTk4YzM1ZjJkYTBlYjNiMWZmOTI5Nzk1YWQ5In0=.e30=.c2ln'
- )).to eq 'test'
- end
+ it { should be_true }
end
end
end