123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- const jwt = require("jsonwebtoken");
- const assert = require("assert");
- const koajwt = require("../lib");
- const UnauthorizedError = require("../lib/errors/UnauthorizedError");
- const mockContext = require("./context");
- describe("revoked jwts", function() {
- const secret = "shhhhhh";
- const revoked_id = "1234";
- let ctx;
- beforeEach(() => {
- ctx = mockContext();
- });
- const middleware = koajwt({
- secret: secret,
- isRevoked: async function(ctx, payload) {
- return payload.jti && payload.jti === revoked_id;
- }
- });
- it("should throw if token is revoked", async () => {
- const token = jwt.sign({ jti: revoked_id, foo: "bar" }, secret);
- ctx.headers.authorization = "Bearer " + token;
- try {
- await middleware(ctx, () => {});
- } catch (err) {
- assert.ok(err);
- assert.equal(err.code, "revoked_token");
- assert.equal(err.message, "The token has been revoked.");
- }
- });
- it("should work if token is not revoked", async () => {
- const token = jwt.sign({ jti: "1233", foo: "bar" }, secret);
- ctx.headers.authorization = "Bearer " + token;
- await middleware(ctx, () => {});
- assert.equal("bar", ctx.state.user.foo);
- });
- it("should throw if error occurs checking if token is revoked", async () => {
- const token = jwt.sign({ jti: revoked_id, foo: "bar" }, secret);
- ctx.headers.authorization = "Bearer " + token;
- try {
- await koajwt({
- secret,
- isRevoked: async (ctx, payload) => {
- throw new Error("An error ocurred");
- }
- })(ctx, () => {});
- } catch (err) {
- assert.ok(err);
- assert.equal(err.message, "An error ocurred");
- }
- });
- });
|