Files
jose/test/util/decode_protected_header.test.ts
Filip Skokan eebee55a01 refactor: restructure src/lib and src/runtime now that runtime is fixed
BREAKING CHANGE: createRemoteJWKSet now uses fetch, because of that its Node.js only options.agent property has been removed and new fetch-related options were added
2025-02-22 15:16:04 +01:00

85 lines
2.5 KiB
TypeScript

import test from 'ava'
import { decodeProtectedHeader } from '../../src/index.js'
test('invalid inputs', (t) => {
t.throws(() => decodeProtectedHeader(null), {
instanceOf: TypeError,
message: 'Invalid Token or Protected Header formatting',
})
t.throws(() => decodeProtectedHeader('.'), {
instanceOf: TypeError,
message: 'Invalid Token or Protected Header formatting',
})
t.throws(() => decodeProtectedHeader('ew..'), {
instanceOf: TypeError,
message: 'Invalid Token or Protected Header formatting',
})
t.throws(() => decodeProtectedHeader('bnVsbA..'), {
instanceOf: TypeError,
message: 'Invalid Token or Protected Header formatting',
})
t.throws(() => decodeProtectedHeader('W10..'), {
instanceOf: TypeError,
message: 'Invalid Token or Protected Header formatting',
})
t.throws(() => decodeProtectedHeader('...'), {
instanceOf: TypeError,
message: 'Invalid Token or Protected Header formatting',
})
t.throws(() => decodeProtectedHeader('ew....'), {
instanceOf: TypeError,
message: 'Invalid Token or Protected Header formatting',
})
t.throws(() => decodeProtectedHeader('bnVsbA....'), {
instanceOf: TypeError,
message: 'Invalid Token or Protected Header formatting',
})
t.throws(() => decodeProtectedHeader('W10....'), {
instanceOf: TypeError,
message: 'Invalid Token or Protected Header formatting',
})
t.throws(() => decodeProtectedHeader('.....'), {
instanceOf: TypeError,
message: 'Invalid Token or Protected Header formatting',
})
t.throws(() => decodeProtectedHeader({ protected: null }), {
instanceOf: TypeError,
message: 'Invalid Token or Protected Header formatting',
})
t.throws(() => decodeProtectedHeader({ protected: 'ew' }), {
instanceOf: TypeError,
message: 'Invalid Token or Protected Header formatting',
})
t.throws(() => decodeProtectedHeader({ protected: 'bnVsbA' }), {
instanceOf: TypeError,
message: 'Invalid Token or Protected Header formatting',
})
t.throws(() => decodeProtectedHeader({ protected: 'W10' }), {
instanceOf: TypeError,
message: 'Invalid Token or Protected Header formatting',
})
t.throws(() => decodeProtectedHeader({}), {
instanceOf: TypeError,
message: 'Token does not contain a Protected Header',
})
t.deepEqual(decodeProtectedHeader('eyJhbGciOiJIUzI1NiJ9..'), { alg: 'HS256' })
t.deepEqual(decodeProtectedHeader('eyJhbGciOiJIUzI1NiJ9....'), { alg: 'HS256' })
t.deepEqual(decodeProtectedHeader({ protected: 'eyJhbGciOiJIUzI1NiJ9' }), { alg: 'HS256' })
})