diff --git a/package.json b/package.json index 7f240c7139..c6ee223185 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "db-up": "docker-compose up -d", "db-migrate": "yarn prisma migrate dev", "db-deploy": "yarn prisma migrate deploy", - "db-seed": "ts-node scripts/seed.ts", + "db-seed": "yarn prisma db seed", "db-nuke": "docker-compose down --volumes --remove-orphans", "db-setup": "run-s db-up db-migrate db-seed", "db-reset": "run-s db-nuke db-setup", @@ -154,5 +154,8 @@ "./prisma/schema.prisma": [ "prisma format" ] + }, + "prisma": { + "seed": "ts-node ./prisma/seed.ts" } } diff --git a/playwright/login.oauth.test.ts b/playwright/login.oauth.test.ts index 637804fedf..665961ba4d 100644 --- a/playwright/login.oauth.test.ts +++ b/playwright/login.oauth.test.ts @@ -1,28 +1,19 @@ -import { test } from "@playwright/test"; +import { expect, test } from "@playwright/test"; -test("Test OAuth login buttons", async ({ page }) => { - await page.goto(`${process.env.PLAYWRIGHT_TEST_BASE_URL}/auth/login`); +import { IS_GOOGLE_LOGIN_ENABLED, IS_SAML_LOGIN_ENABLED } from "../server/lib/constants"; - // Check for Google login button, then click through and check for email field - await page.waitForSelector("[data-testid=google]"); - - await page.click("[data-testid=google]"); - - await page.waitForNavigation({ - waitUntil: "domcontentloaded", - }); - await page.waitForSelector('input[type="email"]'); +test("Should display Google Login button", async ({ page }) => { + test.skip(!IS_GOOGLE_LOGIN_ENABLED, "It should only run if Google Login is installed"); await page.goto(`${process.env.PLAYWRIGHT_TEST_BASE_URL}/auth/login`); - await page.waitForSelector("[data-testid=saml]"); - - // Check for SAML login button, then click through - await page.click("[data-testid=saml]"); - - await page.waitForNavigation({ - waitUntil: "domcontentloaded", - }); - - await page.context().close(); + await expect(page.locator(`[data-testid=google]`)).toBeVisible(); +}); + +test("Should display SAML Login button", async ({ page }) => { + test.skip(!IS_SAML_LOGIN_ENABLED, "It should only run if SAML Login is installed"); + + await page.goto(`${process.env.PLAYWRIGHT_TEST_BASE_URL}/auth/login`); + + await expect(page.locator(`[data-testid=saml]`)).toBeVisible(); }); diff --git a/scripts/seed.ts b/prisma/seed.ts similarity index 100% rename from scripts/seed.ts rename to prisma/seed.ts diff --git a/server/lib/constants.ts b/server/lib/constants.ts index 443f89e4b7..e7fb46925e 100644 --- a/server/lib/constants.ts +++ b/server/lib/constants.ts @@ -3,3 +3,4 @@ export const { client_id: GOOGLE_CLIENT_ID, client_secret: GOOGLE_CLIENT_SECRET JSON.parse(GOOGLE_API_CREDENTIALS)?.web; export const GOOGLE_LOGIN_ENABLED = process.env.GOOGLE_LOGIN_ENABLED === "true"; export const IS_GOOGLE_LOGIN_ENABLED = !!(GOOGLE_CLIENT_ID && GOOGLE_CLIENT_SECRET && GOOGLE_LOGIN_ENABLED); +export const IS_SAML_LOGIN_ENABLED = !!(process.env.SAML_DATABASE_URL && process.env.SAML_ADMINS);