mirror of
https://github.com/danbulant/jose
synced 2026-05-24 20:41:46 +00:00
39 lines
1.9 KiB
JavaScript
39 lines
1.9 KiB
JavaScript
const test = require('ava')
|
|
|
|
const { JWKS, JWK: { generateSync }, JWS } = require('../..')
|
|
const Key = require('../../lib/jwk/key/base')
|
|
const key = generateSync('oct')
|
|
const ks = new JWKS.KeyStore(generateSync('EC'), key)
|
|
|
|
const complete = (t, jws, k, ...keys) => {
|
|
if (typeof k === 'string') {
|
|
keys.unshift(k)
|
|
k = key
|
|
}
|
|
const verified = JWS.verify(jws(), k, { complete: true })
|
|
t.is(Object.values(verified).length, keys.length)
|
|
if (k instanceof Key) {
|
|
t.is(verified.key, k)
|
|
} else {
|
|
t.is(verified.key, ks.get(verified.protected))
|
|
}
|
|
if (keys.includes('header')) {
|
|
t.is(typeof verified.header, 'object')
|
|
}
|
|
if (keys.includes('protected')) {
|
|
t.is(typeof verified.protected, 'object')
|
|
}
|
|
t.is(typeof verified.payload, 'object')
|
|
}
|
|
|
|
test('compact', complete, () => JWS.sign({}, key), 'payload', 'protected', 'key')
|
|
test('flattened', complete, () => JWS.sign.flattened({}, key), 'payload', 'protected', 'key')
|
|
test('flattened w/ header', complete, () => JWS.sign.flattened({}, key, undefined, { foo: 'bar' }), 'payload', 'protected', 'header', 'key')
|
|
test('general', complete, () => JWS.sign.general({}, key), 'payload', 'protected', 'key')
|
|
test('general w/ header', complete, () => JWS.sign.general({}, key, undefined, { foo: 'bar' }), 'payload', 'protected', 'header', 'key')
|
|
|
|
test('with keystore > compact', complete, () => JWS.sign({}, key), ks, 'payload', 'protected', 'key')
|
|
test('with keystore > flattened', complete, () => JWS.sign.flattened({}, key), ks, 'payload', 'protected', 'key')
|
|
test('with keystore > flattened w/ header', complete, () => JWS.sign.flattened({}, key, undefined, { foo: 'bar' }), ks, 'payload', 'protected', 'header', 'key')
|
|
test('with keystore > general', complete, () => JWS.sign.general({}, key), ks, 'payload', 'protected', 'key')
|
|
test('with keystore > general w/ header', complete, () => JWS.sign.general({}, key, undefined, { foo: 'bar' }), ks, 'payload', 'protected', 'header', 'key')
|