44 lines · 1.4 KB · TypeScript
RawDownload
import { describe, expect, it } from "@effect/vitest"; import { oauthCallbackSignInRedirectLocation } from "./oauth-callback-login"; const auth = (session: unknown | null) => ({  api: {    getSession: async () => session,  },}); describe("oauthCallbackSignInRedirectLocation", () => {  it("redirects a signed-out OAuth callback to login with returnTo", async () => {    await expect(      oauthCallbackSignInRedirectLocation(        new Request("http://selfhost.test/api/oauth/callback?state=s1&code=c1"),        auth(null),      ),    ).resolves.toBe("/login?returnTo=%2Fapi%2Foauth%2Fcallback%3Fstate%3Ds1%26code%3Dc1");  });   it("does not redirect a signed-in OAuth callback", async () => {    await expect(      oauthCallbackSignInRedirectLocation(        new Request("http://selfhost.test/api/oauth/callback?state=s1&code=c1"),        auth({ user: { id: "user_1" } }),      ),    ).resolves.toBeNull();  });   it("ignores other paths and non-browser methods", async () => {    await expect(      oauthCallbackSignInRedirectLocation(        new Request("http://selfhost.test/api/oauth/callback?state=s1", { method: "POST" }),        auth(null),      ),    ).resolves.toBeNull();    await expect(      oauthCallbackSignInRedirectLocation(        new Request("http://selfhost.test/api/oauth/callback/extra?state=s1"),        auth(null),      ),    ).resolves.toBeNull();  });});