debian-mirror-gitlab/spec/lib/json_web_token/rsa_token_spec.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

53 lines
1.7 KiB
Ruby
Raw Permalink Normal View History

2019-12-04 20:38:33 +05:30
# frozen_string_literal: true
2020-07-28 23:09:34 +05:30
RSpec.describe JSONWebToken::RSAToken do
2016-06-02 11:05:42 +05:30
let(:rsa_key) do
OpenSSL::PKey::RSA.new <<-eos.strip_heredoc
-----BEGIN RSA PRIVATE KEY-----
MIIBOgIBAAJBAMA5sXIBE0HwgIB40iNidN4PGWzOyLQK0bsdOBNgpEXkDlZBvnak
OUgAPF+rME4PB0Yl415DabUI40T5UNmlwxcCAwEAAQJAZtY2pSwIFm3JAXIh0cZZ
iXcAfiJ+YzuqinUOS+eW2sBCAEzjcARlU/o6sFQgtsOi4FOMczAd1Yx8UDMXMmrw
2QIhAPBgVhJiTF09pdmeFWutCvTJDlFFAQNbrbo2X2x/9WF9AiEAzLgqMKeStSRu
H9N16TuDrUoO8R+DPqriCwkKrSHaWyMCIFzMhE4inuKcSywBaLmiG4m3GQzs++Al
A6PRG/PSTpQtAiBxtBg6zdf+JC3GH3zt/dA0/10tL4OF2wORfYQghRzyYQIhAL2l
0ZQW+yLIZAGrdBFWYEAa52GZosncmzBNlsoTgwE4
-----END RSA PRIVATE KEY-----
eos
end
2020-10-24 23:57:45 +05:30
2016-06-02 11:05:42 +05:30
let(:rsa_token) { described_class.new(nil) }
let(:rsa_encoded) { rsa_token.encoded }
2017-09-10 17:25:29 +05:30
before do
allow_any_instance_of(described_class).to receive(:key).and_return(rsa_key)
end
2016-06-02 11:05:42 +05:30
context 'token' do
context 'for valid key to be validated' do
2017-09-10 17:25:29 +05:30
before do
rsa_token['key'] = 'value'
end
2016-06-02 11:05:42 +05:30
2019-02-15 15:39:39 +05:30
subject { JWT.decode(rsa_encoded, rsa_key, true, { algorithm: 'RS256' }) }
2016-06-02 11:05:42 +05:30
2022-08-27 11:52:29 +05:30
it { expect { subject }.not_to raise_error }
2016-06-02 11:05:42 +05:30
it { expect(subject.first).to include('key' => 'value') }
2022-08-27 11:52:29 +05:30
2016-06-02 11:05:42 +05:30
it do
expect(subject.second).to eq(
"typ" => "JWT",
"alg" => "RS256",
"kid" => "OGXY:4TR7:FAVO:WEM2:XXEW:E4FP:TKL7:7ACK:TZAF:D54P:SUIA:P3B2")
end
end
context 'for invalid key to raise an exception' do
2022-08-13 15:12:31 +05:30
let(:new_key) { OpenSSL::PKey::RSA.generate(3072) }
2020-01-01 13:55:28 +05:30
2019-02-15 15:39:39 +05:30
subject { JWT.decode(rsa_encoded, new_key, true, { algorithm: 'RS256' }) }
2016-06-02 11:05:42 +05:30
2022-08-27 11:52:29 +05:30
it { expect { subject }.to raise_error(JWT::DecodeError) }
2016-06-02 11:05:42 +05:30
end
end
end