cjwt
Version:
Casstime jwt middleware
93 lines (81 loc) • 2.07 kB
JavaScript
const { expect } = require('chai');
const CJWT = require('../index');
const jwt = require('jsonwebtoken');
describe('cjwt.sign', () => {
it('string secret sign', (done) => {
const ctx = { key: 'value' };
const secret = 'secret_code';
const cjwt = new CJWT({
secret,
signOptions: {},
verifyOptions: {}
});
cjwt.sign('type', 'id', ctx)
.then((token) => {
jwt.verify(token, secret, {
subject: 'type:id',
}, (error, result) => {
if (error) {
return done(error)
}
expect(result.ctx.key).to.eql(ctx.key);
done();
});
})
.catch(done);
});
it('function secret sign', (done) => {
const ctx = { key: 'value' };
const secretCode = 'secret_code';
const secret = () => Promise.resolve(secretCode);
const cjwt = new CJWT({
secret,
signOptions: {},
verifyOptions: {}
});
cjwt.sign('type', 'id', ctx)
.then((token) => {
jwt.verify(token, secretCode, {
subject: 'type:id',
}, (error, result) => {
if (error) {
return done(error)
}
expect(result.ctx.key).to.eql(ctx.key);
done();
});
})
.catch(done);
});
it('complex sign', (done) => {
const ctx = { key: 'value' };
const secretCode = 'secret_code';
const secret = () => Promise.resolve(secretCode);
const options = {
audience: 'abc',
issuer: 'test',
jwtid: '123'
};
const cjwt = new CJWT({
secret,
signOptions: options,
verifyOptions: {}
});
cjwt.sign('type', 'id', ctx)
.then((token) => {
jwt.verify(token, secretCode, {
subject: 'type:id',
audience: 'abc',
issuer: 'test',
jwtid: '123'
}, (error, result) => {
if (error) {
return done(error)
}
expect(result.ctx.key).to.eql(ctx.key);
done();
});
})
.catch(done);
});
});