From 5144e6ab3dbdc2138bc185de603db5c7d7a9ba46 Mon Sep 17 00:00:00 2001 From: Joakim Antman Date: Wed, 2 Oct 2024 23:41:56 +0300 Subject: [PATCH] More advanced test --- spec/jwt/claims_spec.rb | 45 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) diff --git a/spec/jwt/claims_spec.rb b/spec/jwt/claims_spec.rb index 0f62ee2a..f6c96c9e 100644 --- a/spec/jwt/claims_spec.rb +++ b/spec/jwt/claims_spec.rb @@ -54,6 +54,34 @@ end end end + + context 'various types of params' do + context 'when payload is missing most of the claims' do + it 'raises an error' do + expect do + described_class.verify_payload!(payload, + :nbf, + iss: ['www.host.com', 'https://other.host.com'].freeze, + aud: 'aud', + exp: { leeway: 10 }) + end.to raise_error(JWT::InvalidIssuerError) + end + end + + context 'when payload has everything that is expected of it' do + let(:payload) { { 'iss' => 'www.host.com', 'aud' => 'audience', 'exp' => Time.now.to_i - 10, 'pay' => 'load' } } + + it 'does not raise' do + expect do + described_class.verify_payload!(payload, + :nbf, + iss: ['www.host.com', 'https://other.host.com'].freeze, + aud: 'audience', + exp: { leeway: 11 }) + end.not_to raise_error + end + end + end end describe '.payload_errors' do @@ -72,5 +100,22 @@ end end end + + context 'various types of params' do + let(:payload) { { 'exp' => Time.now.to_i - 10, 'pay' => 'load' } } + + context 'when payload is most of the claims' do + it 'raises an error' do + messages = described_class.payload_errors(payload, + :nbf, + iss: ['www.host.com', 'https://other.host.com'].freeze, + aud: 'aud', + exp: { leeway: 10 }).map(&:message) + expect(messages).to eq(['Invalid issuer. Expected ["www.host.com", "https://other.host.com"], received ', + 'Invalid audience. Expected aud, received ', + 'Signature has expired']) + end + end + end end end