mirror of
https://github.com/danbulant/jose
synced 2026-05-19 12:29:04 +00:00
54 lines
1.6 KiB
JavaScript
54 lines
1.6 KiB
JavaScript
import test from 'ava'
|
|
import { root } from '../dist.mjs'
|
|
|
|
const { decodeJwt, errors, base64url } = await import(root)
|
|
|
|
test('invalid inputs', (t) => {
|
|
const jwt =
|
|
'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c'
|
|
|
|
const parts = jwt.split('.')
|
|
|
|
t.throws(() => decodeJwt(null), {
|
|
instanceOf: errors.JWTInvalid,
|
|
message: 'JWTs must use Compact JWS serialization, JWT must be a string',
|
|
})
|
|
|
|
t.throws(() => decodeJwt('....'), {
|
|
instanceOf: errors.JWTInvalid,
|
|
message: 'Only JWTs using Compact JWS serialization can be decoded',
|
|
})
|
|
|
|
t.throws(() => decodeJwt('.'), {
|
|
instanceOf: errors.JWTInvalid,
|
|
message: 'Invalid JWT',
|
|
})
|
|
|
|
t.throws(() => decodeJwt([parts[0], '', parts[2]].join('.')), {
|
|
instanceOf: errors.JWTInvalid,
|
|
message: 'JWTs must contain a payload',
|
|
})
|
|
|
|
t.throws(() => decodeJwt([parts[0], base64url.encode('null'), parts[2]].join('.')), {
|
|
instanceOf: errors.JWTInvalid,
|
|
message: 'Invalid JWT Claims Set',
|
|
})
|
|
|
|
t.throws(() => decodeJwt([parts[0], base64url.encode('[]'), parts[2]].join('.')), {
|
|
instanceOf: errors.JWTInvalid,
|
|
message: 'Invalid JWT Claims Set',
|
|
})
|
|
|
|
t.throws(() => decodeJwt([parts[0], base64url.encode('{"notajson'), parts[2]].join('.')), {
|
|
instanceOf: errors.JWTInvalid,
|
|
message: 'Failed to parse the decoded payload as JSON',
|
|
})
|
|
|
|
t.deepEqual(decodeJwt([parts[0], base64url.encode('{}'), parts[2]].join('.')), {})
|
|
|
|
t.deepEqual(decodeJwt(jwt), {
|
|
sub: '1234567890',
|
|
name: 'John Doe',
|
|
iat: 1516239022,
|
|
})
|
|
})
|