UNPKG

@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.

84 lines 4.4 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const index_1 = require("../index"); const uuid_1 = require("uuid"); const error_1 = require("../error"); const { FIREBASE_API_KEY, FIREBASE_PROJECT_ID, FIREBASE_ADMIN_CLIENT_EMAIL, FIREBASE_ADMIN_PRIVATE_KEY, } = process.env; describe("verify token integration test", () => { const { handleTokenRefresh, createCustomToken, verifyAndRefreshExpiredIdToken, verifyIdToken, deleteUser, } = (0, index_1.getFirebaseAuth)({ clientEmail: FIREBASE_ADMIN_CLIENT_EMAIL, privateKey: FIREBASE_ADMIN_PRIVATE_KEY.replace(/\\n/g, "\n"), projectId: FIREBASE_PROJECT_ID, }, FIREBASE_API_KEY); it("should create and verify custom token", async () => { const userId = (0, uuid_1.v4)(); const customToken = await createCustomToken(userId, { customClaim: "customClaimValue", }); const { idToken } = await (0, index_1.customTokenToIdAndRefreshTokens)(customToken, FIREBASE_API_KEY); const tenant = await verifyIdToken(idToken); expect(tenant.uid).toEqual(userId); expect(tenant.customClaim).toEqual("customClaimValue"); }); it("should verify and refresh token", async () => { const userId = (0, uuid_1.v4)(); const customToken = await createCustomToken(userId, { customClaim: "customClaimValue", }); const { idToken, refreshToken } = await (0, index_1.customTokenToIdAndRefreshTokens)(customToken, FIREBASE_API_KEY); const tokens = await verifyAndRefreshExpiredIdToken(idToken, refreshToken); expect(tokens === null || tokens === void 0 ? void 0 : tokens.decodedToken.uid).toEqual(userId); expect(tokens === null || tokens === void 0 ? void 0 : tokens.decodedToken.customClaim).toEqual("customClaimValue"); }); it("should checked revoked token", async () => { const userId = (0, uuid_1.v4)(); const customToken = await createCustomToken(userId, { customClaim: "customClaimValue", }); const { idToken } = await (0, index_1.customTokenToIdAndRefreshTokens)(customToken, FIREBASE_API_KEY); const tenant = await verifyIdToken(idToken, true); expect(tenant.uid).toEqual(userId); expect(tenant.customClaim).toEqual("customClaimValue"); }); it("should refresh token", async () => { const userId = (0, uuid_1.v4)(); const customToken = await createCustomToken(userId, { customClaim: "customClaimValue", }); const { idToken, refreshToken } = await (0, index_1.customTokenToIdAndRefreshTokens)(customToken, FIREBASE_API_KEY); const { decodedToken } = await handleTokenRefresh(refreshToken, FIREBASE_API_KEY); expect(decodedToken.uid).toEqual(userId); expect(decodedToken.customClaim).toEqual("customClaimValue"); expect(decodedToken.token).not.toEqual(idToken); }); it("should throw firebase auth error when user is not found during token refresh", async () => { const userId = (0, uuid_1.v4)(); const customToken = await createCustomToken(userId, { customClaim: "customClaimValue", }); const { refreshToken } = await (0, index_1.customTokenToIdAndRefreshTokens)(customToken, FIREBASE_API_KEY); await deleteUser(userId); return expect(() => handleTokenRefresh(refreshToken, FIREBASE_API_KEY)).rejects.toEqual(new error_1.FirebaseAuthError(error_1.AuthClientErrorCode.USER_NOT_FOUND)); }); it('should be able to catch "user not found" error and return null', async () => { const userId = (0, uuid_1.v4)(); const customToken = await createCustomToken(userId, { customClaim: "customClaimValue", }); async function customGetToken() { try { return await handleTokenRefresh(refreshToken, FIREBASE_API_KEY); } catch (e) { if ((0, index_1.isUserNotFoundError)(e)) { return null; } throw e; } } const { refreshToken } = await (0, index_1.customTokenToIdAndRefreshTokens)(customToken, FIREBASE_API_KEY); await deleteUser(userId); expect(await customGetToken()).toEqual(null); }); }); //# sourceMappingURL=verify-token.integration.test.js.map