From 4c2c578311304b73c8019374abc9b4c2bdb8580c Mon Sep 17 00:00:00 2001 From: aronmal Date: Sat, 19 Aug 2023 23:17:14 +0200 Subject: [PATCH] Fix tests --- leaky-ships/.eslintrc.cjs | 1 + leaky-ships/e2e/auth.spec.ts | 8 ++++---- leaky-ships/e2e/email.spec.ts | 8 ++++---- leaky-ships/playwright.config.ts | 2 +- leaky-ships/src/routes/api/auth/check.ts | 10 ++++++++++ 5 files changed, 20 insertions(+), 9 deletions(-) create mode 100644 leaky-ships/src/routes/api/auth/check.ts diff --git a/leaky-ships/.eslintrc.cjs b/leaky-ships/.eslintrc.cjs index 59112f9..7eeaa61 100644 --- a/leaky-ships/.eslintrc.cjs +++ b/leaky-ships/.eslintrc.cjs @@ -10,4 +10,5 @@ module.exports = { "plugin:@typescript-eslint/recommended", "prettier", ], + ignorePatterns: ["dist/**"], } diff --git a/leaky-ships/e2e/auth.spec.ts b/leaky-ships/e2e/auth.spec.ts index 30dc346..bd029ed 100644 --- a/leaky-ships/e2e/auth.spec.ts +++ b/leaky-ships/e2e/auth.spec.ts @@ -1,6 +1,6 @@ import { expect, test, type BrowserContext, type Page } from "@playwright/test" -const callbackUrl = process.env.AUTH_URL + "/" +const callbackUrl = process.env.AUTH_URL as string let context: BrowserContext let page: Page @@ -16,7 +16,7 @@ test.describe.serial("Check Azure AD auth", () => { }) test("Login process...", async () => { - await page.goto(callbackUrl + "signin") + await page.goto(callbackUrl + "/signin") await page.waitForLoadState("domcontentloaded") @@ -45,7 +45,7 @@ test.describe.serial("Check Azure AD auth", () => { }) test("Is logged in", async () => { - await page.goto(callbackUrl + "signin") + await page.goto(callbackUrl + "/api/auth/check") await page.waitForSelector("#start") await page.evaluate(() => document.fonts.ready) @@ -55,7 +55,7 @@ test.describe.serial("Check Azure AD auth", () => { }) test("Is logged out", async () => { - await page.goto(callbackUrl + "signout") + await page.goto(callbackUrl + "/signout") await page.waitForLoadState("domcontentloaded") diff --git a/leaky-ships/e2e/email.spec.ts b/leaky-ships/e2e/email.spec.ts index 65fd39a..28a5aea 100644 --- a/leaky-ships/e2e/email.spec.ts +++ b/leaky-ships/e2e/email.spec.ts @@ -9,7 +9,7 @@ import { and, desc, eq } from "drizzle-orm" import db from "~/drizzle" import { verificationTokens } from "~/drizzle/schemas/Tables" -const callbackUrl = process.env.NEXTAUTH_URL + "/" +const callbackUrl = process.env.AUTH_URL as string const player1Email = (browser: Browser) => browser.browserType().name() + "-player-1@example.com" @@ -27,14 +27,14 @@ test.describe.serial("Check Email auth", () => { }) test("Email login process...", async ({ browser }) => { - await page.goto(callbackUrl + "signin") + await page.goto(callbackUrl + "/signin") await page.waitForSelector("input#email") await page.fill("input#email", player1Email(browser)) await page.click("button#email-submit") await page.waitForURL( - callbackUrl + "api/auth/verify-request?provider=email&type=email", + callbackUrl + "/api/auth/verify-request?provider=email&type=email", ) await page.waitForLoadState("domcontentloaded") @@ -68,7 +68,7 @@ test.describe.serial("Check Email auth", () => { token, email: player1Email(browser), }) - const url = callbackUrl + "api/auth/callback/email?" + params + const url = callbackUrl + "/api/auth/callback/email?" + params await page.goto(url) diff --git a/leaky-ships/playwright.config.ts b/leaky-ships/playwright.config.ts index 63f5b78..5c797d6 100644 --- a/leaky-ships/playwright.config.ts +++ b/leaky-ships/playwright.config.ts @@ -71,7 +71,7 @@ export default defineConfig({ /* Run your local dev server before starting the tests */ webServer: { - command: "pnpm run start", + command: "pnpm start", url: process.env.AUTH_URL, reuseExistingServer: !process.env.CI, }, diff --git a/leaky-ships/src/routes/api/auth/check.ts b/leaky-ships/src/routes/api/auth/check.ts new file mode 100644 index 0000000..eacab82 --- /dev/null +++ b/leaky-ships/src/routes/api/auth/check.ts @@ -0,0 +1,10 @@ +import { getSession } from "@auth/solid-start" +import status from "http-status" +import { APIEvent, redirect } from "solid-start" +import { authOptions } from "~/server/auth" + +export async function GET({ request }: APIEvent) { + const session = await getSession(request, authOptions) + if (session) return redirect("/") + else return new Response(null, { status: status["UNAUTHORIZED"] }) +}