@pedwise/next-firebase-auth-edge
Version:
Next.js 13 Firebase Authentication for Edge and server runtimes. Dedicated for Next 13 server components. Compatible with Next.js middleware.
52 lines • 2.15 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const sign_1 = require("./sign");
describe("sign", () => {
const globalOriginal = Object.assign({}, global);
let globalAny = global;
beforeAll(() => {
globalAny.crypto = {
subtle: {
importKey: jest.fn(),
sign: jest.fn(),
},
};
});
afterAll(() => {
globalAny = globalOriginal;
});
beforeEach(() => {
const cryptoKey = {
algorithm: {
name: "RSASSA-PKCS1-v1_5",
hash: "SHA-256",
},
extractable: false,
type: "JWT",
usages: ["sign"],
};
const signature = new Uint8Array("secret".split("").map((character) => character.charCodeAt(0))).buffer;
globalAny.crypto.subtle.importKey.mockReturnValue(cryptoKey);
globalAny.crypto.subtle.sign.mockReturnValue(signature);
});
it("provides expected JWT with privateKey", async () => {
expect.assertions(1);
const payload = { exp: 946688400 };
const privateKey = "-----BEGIN PRIVATE KEY-----\nexample\n-----END PRIVATE KEY-----\n";
expect(await (0, sign_1.sign)({ payload, privateKey })).toBe("eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJleHAiOjk0NjY4ODQwMH0.c2VjcmV0");
});
it("provides expected JWT with secret", async () => {
expect.assertions(1);
const payload = { exp: 946688400 };
const secret = "secret";
expect(await (0, sign_1.sign)({ payload, secret })).toBe("eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJ9.eyJleHAiOjk0NjY4ODQwMH0.c2VjcmV0");
});
it("adds keyId to ecnoded JWT header", async () => {
expect.assertions(1);
const payload = { exp: 946688400 };
const privateKey = "-----BEGIN PRIVATE KEY-----\nexample\n-----END PRIVATE KEY-----\n";
const keyId = "key123";
expect(await (0, sign_1.sign)({ payload, privateKey, keyId })).toBe("eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6ImtleTEyMyJ9.eyJleHAiOjk0NjY4ODQwMH0.c2VjcmV0");
});
});
//# sourceMappingURL=sign.test.js.map