jose/test/jws/encoding.test.js
2019-11-05 20:09:34 +01:00

35 lines
1.5 KiB
JavaScript

const test = require('ava')
const { randomBytes } = require('crypto')
const { JWK, JWS } = require('../../lib')
const key = JWK.generateSync('oct')
test('JWS.verify can skip parsing the payload', t => {
let payload = 'foo'
let jws = JWS.sign(payload, key)
t.deepEqual(JWS.verify(jws, key, { parse: false }), Buffer.from(payload))
jws = JWS.sign.flattened(payload, key)
t.deepEqual(JWS.verify(jws, key, { parse: false }), Buffer.from(payload))
t.deepEqual(JWS.verify(jws, key, { parse: false, complete: true }), { key, protected: { alg: 'HS256' }, payload: Buffer.from(payload) })
payload = randomBytes(8)
jws = JWS.sign(payload, key)
t.deepEqual(JWS.verify(jws, key, { parse: false }), payload)
t.deepEqual(JWS.verify(jws, key, { parse: false, complete: true }), { key, protected: { alg: 'HS256' }, payload: payload })
})
test('JWS.verify can parse any valid encoding', t => {
let jws = JWS.sign('foo', key)
t.deepEqual(JWS.verify(jws, key, { encoding: 'hex' }), '666f6f')
t.deepEqual(JWS.verify(jws, key, { encoding: 'base64' }), 'Zm9v')
jws = JWS.sign.flattened('foo', key)
t.deepEqual(JWS.verify(jws, key, { encoding: 'hex' }), '666f6f')
t.deepEqual(JWS.verify(jws, key, { complete: true, encoding: 'hex' }), { key, protected: { alg: 'HS256' }, payload: '666f6f' })
t.deepEqual(JWS.verify(jws, key, { encoding: 'base64' }), 'Zm9v')
t.deepEqual(JWS.verify(jws, key, { complete: true, encoding: 'base64' }), { key, protected: { alg: 'HS256' }, payload: 'Zm9v' })
})