From e9d6a508a6f578eb83d7d6ac1dc770ede85ac4df Mon Sep 17 00:00:00 2001 From: Hernan Alvarado Date: Thu, 23 Jul 2026 12:10:44 -0500 Subject: [PATCH 1/2] test(core): configure shared vitest setup --- .../test/actions/callback/stateless.test.ts | 4 -- .../test/actions/csrfToken/stateless.test.ts | 6 +-- .../providers/connected/stateless.test.ts | 8 +--- .../providers/tokens/revoke/stateless.test.ts | 31 +------------ .../providers/tokens/tokens/stateful.test.ts | 8 +--- .../providers/tokens/tokens/stateless.test.ts | 8 +--- .../actions/session/session/stateful.test.ts | 8 +--- .../actions/session/session/stateless.test.ts | 8 +--- .../session/updateSession/stateless.test.ts | 27 +---------- .../actions/signIn/signIn/stateless.test.ts | 31 +------------ .../signIn/signInCredentials/stateful.test.ts | 31 +------------ .../signInCredentials/stateless.test.ts | 31 +------------ .../test/actions/signOut/stateless.test.ts | 6 +-- .../core/test/actions/signUp/stateful.test.ts | 31 +------------ .../test/actions/signUp/stateless.test.ts | 31 +------------ .../api/stateful/getProviderTokens.test.ts | 31 +------------ .../core/test/api/stateful/getSession.test.ts | 31 +------------ .../api/stateful/signInCredentials.test.ts | 31 +------------ .../core/test/api/stateful/signOut.test.ts | 31 +------------ .../core/test/api/stateful/signUp.test.ts | 31 +------------ .../test/api/stateful/updateSession.test.ts | 31 +------------ .../{ => stateless}/getAccessToken.test.ts | 6 +-- .../{ => stateless}/getProviderTokens.test.ts | 8 +--- .../api/{ => stateless}/getSession.test.ts | 0 .../isProviderConnected.test.ts | 6 +-- .../{ => stateless}/refreshUserInfo.test.ts | 30 +----------- .../api/{ => stateless}/revokeToken.test.ts | 31 +------------ .../test/api/{ => stateless}/signIn.test.ts | 29 +----------- .../{ => stateless}/signInCredentials.test.ts | 29 +----------- .../test/api/{ => stateless}/signOut.test.ts | 6 +-- .../test/api/{ => stateless}/signUp.test.ts | 31 +------------ .../api/{ => stateless}/updateSession.test.ts | 29 +----------- packages/core/test/client/client.test.ts | 5 -- packages/core/test/env.test.ts | 6 +-- packages/core/test/identity.test.ts | 22 ++++----- packages/core/test/instance.test.ts | 6 +-- packages/core/test/jose.test.ts | 4 -- packages/core/test/setup/vitest.setup.ts | 31 +++++++++++++ packages/core/vitest.config.ts | 46 +++++++++++++++---- 39 files changed, 110 insertions(+), 670 deletions(-) rename packages/core/test/api/{ => stateless}/getAccessToken.test.ts (99%) rename packages/core/test/api/{ => stateless}/getProviderTokens.test.ts (98%) rename packages/core/test/api/{ => stateless}/getSession.test.ts (100%) rename packages/core/test/api/{ => stateless}/isProviderConnected.test.ts (98%) rename packages/core/test/api/{ => stateless}/refreshUserInfo.test.ts (95%) rename packages/core/test/api/{ => stateless}/revokeToken.test.ts (94%) rename packages/core/test/api/{ => stateless}/signIn.test.ts (86%) rename packages/core/test/api/{ => stateless}/signInCredentials.test.ts (88%) rename packages/core/test/api/{ => stateless}/signOut.test.ts (96%) rename packages/core/test/api/{ => stateless}/signUp.test.ts (87%) rename packages/core/test/api/{ => stateless}/updateSession.test.ts (93%) create mode 100644 packages/core/test/setup/vitest.setup.ts diff --git a/packages/core/test/actions/callback/stateless.test.ts b/packages/core/test/actions/callback/stateless.test.ts index f79d08f2..809d453d 100644 --- a/packages/core/test/actions/callback/stateless.test.ts +++ b/packages/core/test/actions/callback/stateless.test.ts @@ -12,10 +12,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() -}) - describe("callbackAction", () => { test("invalid endpoint", async () => { const response = await GET(new Request("https://example.com/callback/invalid")) diff --git a/packages/core/test/actions/csrfToken/stateless.test.ts b/packages/core/test/actions/csrfToken/stateless.test.ts index 6118a810..85863e33 100644 --- a/packages/core/test/actions/csrfToken/stateless.test.ts +++ b/packages/core/test/actions/csrfToken/stateless.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, beforeEach, afterEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { GET } from "@test/presets.ts" import { setCookie } from "@/cookie.ts" @@ -6,10 +6,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() -}) - describe("csrfTokenAction", () => { test("generates a CSRF token and sets it in a cookie", async () => { const response = await GET(new Request("https://example.com/auth/csrfToken")) diff --git a/packages/core/test/actions/providers/connected/stateless.test.ts b/packages/core/test/actions/providers/connected/stateless.test.ts index 1b63d2f3..a1af6ba5 100644 --- a/packages/core/test/actions/providers/connected/stateless.test.ts +++ b/packages/core/test/actions/providers/connected/stateless.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, afterEach, beforeEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { createCSRF } from "@/shared/crypto.ts" import { GET, jose, oauthTokens, sessionPayload } from "@test/presets.ts" @@ -6,12 +6,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - vi.mock("@aura-stack/rate-limiter", async () => { const actual = await vi.importActual("@aura-stack/rate-limiter") return { diff --git a/packages/core/test/actions/providers/tokens/revoke/stateless.test.ts b/packages/core/test/actions/providers/tokens/revoke/stateless.test.ts index 3b097c0d..e2c1958c 100644 --- a/packages/core/test/actions/providers/tokens/revoke/stateless.test.ts +++ b/packages/core/test/actions/providers/tokens/revoke/stateless.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, afterEach, beforeEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { createAuth } from "@/createAuth.ts" import { createCSRF } from "@/shared/crypto.ts" import { jose, oauthCustomService, oauthTokens, POST, sessionPayload } from "@test/presets.ts" @@ -7,35 +7,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("Revoke Action", () => { test("throws error when provider is not configured", async () => { const response = await POST( diff --git a/packages/core/test/actions/providers/tokens/tokens/stateful.test.ts b/packages/core/test/actions/providers/tokens/tokens/stateful.test.ts index 384f1696..ed9ae7d1 100644 --- a/packages/core/test/actions/providers/tokens/tokens/stateful.test.ts +++ b/packages/core/test/actions/providers/tokens/tokens/stateful.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, afterEach, beforeEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { authInstance, jose, oauthCustomService, sessionEntityWithUser } from "@test/presets.ts" import { createAuth } from "@/createAuth.ts" import { createBasicAuthHeader } from "@/shared/utils.ts" @@ -9,12 +9,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - describe("tokensAction (Stateful)", async () => { test("should return 422 if the provider is not supported", async () => { const getSessionByTokenMock = vi.fn() diff --git a/packages/core/test/actions/providers/tokens/tokens/stateless.test.ts b/packages/core/test/actions/providers/tokens/tokens/stateless.test.ts index 6b500575..d86117dd 100644 --- a/packages/core/test/actions/providers/tokens/tokens/stateless.test.ts +++ b/packages/core/test/actions/providers/tokens/tokens/stateless.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, afterEach, beforeEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { createAuth } from "@/createAuth.ts" import { createCSRF } from "@/shared/crypto.ts" import { GET, jose, oauthCustomService, oauthTokens, sessionPayload } from "@test/presets.ts" @@ -9,12 +9,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - describe("tokensAction", async () => { const { encodeJWT } = jose diff --git a/packages/core/test/actions/session/session/stateful.test.ts b/packages/core/test/actions/session/session/stateful.test.ts index faa630fc..82832bff 100644 --- a/packages/core/test/actions/session/session/stateful.test.ts +++ b/packages/core/test/actions/session/session/stateful.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, afterEach, beforeEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { authInstance, jose, sessionEntityWithUser, sessionPayload, userEntity } from "@test/presets.ts" import { createSchemaRegistry } from "@/validator/registry.ts" @@ -6,12 +6,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - describe("sessionAction", () => { const { encodeJWT } = jose diff --git a/packages/core/test/actions/session/session/stateless.test.ts b/packages/core/test/actions/session/session/stateless.test.ts index 57e6899e..f4e531de 100644 --- a/packages/core/test/actions/session/session/stateless.test.ts +++ b/packages/core/test/actions/session/session/stateless.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, afterEach, beforeEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { createPKCE } from "@/shared/crypto.ts" import { AURA_AUTH_VERSION } from "@/shared/utils.ts" import { GET, jose, sessionPayload } from "@test/presets.ts" @@ -8,12 +8,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - describe("sessionAction", () => { const { encodeJWT } = jose diff --git a/packages/core/test/actions/session/updateSession/stateless.test.ts b/packages/core/test/actions/session/updateSession/stateless.test.ts index cbaa76d5..bf8d71b8 100644 --- a/packages/core/test/actions/session/updateSession/stateless.test.ts +++ b/packages/core/test/actions/session/updateSession/stateless.test.ts @@ -1,33 +1,10 @@ +import { describe, test, expect } from "vitest" import { getSetCookie } from "@/cookie.ts" import { createAuth } from "@/createAuth.ts" import { createCSRF } from "@/shared/crypto.ts" +import { jose, PATCH, sessionPayload } from "@test/presets.ts" import { identitySchema as UserIdentityArkType } from "@/identity/arktype.ts" import { identitySchema as UserIdentityValibot } from "@/identity/valibot.ts" -import { jose, PATCH, sessionPayload } from "@test/presets.ts" -import { describe, test, expect, vi } from "vitest" - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) describe("updateSession action", () => { test("invalid session", async () => { diff --git a/packages/core/test/actions/signIn/signIn/stateless.test.ts b/packages/core/test/actions/signIn/signIn/stateless.test.ts index f938de79..8094fd3c 100644 --- a/packages/core/test/actions/signIn/signIn/stateless.test.ts +++ b/packages/core/test/actions/signIn/signIn/stateless.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, beforeEach, afterEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { createAuth } from "@/createAuth.ts" import { getSetCookie } from "@/cookie.ts" import { GET, oauthCustomService } from "@test/presets.ts" @@ -7,35 +7,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("signIn action", () => { test("default signIn", async () => { const signIn = await GET(new Request("https://example.com/auth/signIn/oauth-provider")) diff --git a/packages/core/test/actions/signIn/signInCredentials/stateful.test.ts b/packages/core/test/actions/signIn/signInCredentials/stateful.test.ts index 485d3990..d2d1ab47 100644 --- a/packages/core/test/actions/signIn/signInCredentials/stateful.test.ts +++ b/packages/core/test/actions/signIn/signInCredentials/stateful.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, beforeEach, vi, afterEach } from "vitest" +import { describe, test, expect, beforeEach, vi } from "vitest" import { authInstance, jose, sessionEntityWithUser, userEntity } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" import { createSchemaRegistry } from "@/validator/registry.ts" @@ -7,35 +7,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("signInCredentials action", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/actions/signIn/signInCredentials/stateless.test.ts b/packages/core/test/actions/signIn/signInCredentials/stateless.test.ts index 34b745b1..6d75f199 100644 --- a/packages/core/test/actions/signIn/signInCredentials/stateless.test.ts +++ b/packages/core/test/actions/signIn/signInCredentials/stateless.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, beforeEach, vi, afterEach } from "vitest" +import { describe, test, expect, beforeEach, vi } from "vitest" import { jose, POST } from "@test/presets.ts" import { getSetCookie } from "@/cookie.ts" import { createAuth } from "@/createAuth.ts" @@ -8,35 +8,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("signInCredentials action", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/actions/signOut/stateless.test.ts b/packages/core/test/actions/signOut/stateless.test.ts index e683d7cf..16da3681 100644 --- a/packages/core/test/actions/signOut/stateless.test.ts +++ b/packages/core/test/actions/signOut/stateless.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, beforeEach, afterEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { createCSRF } from "@/shared/crypto.ts" import { POST, jose, sessionPayload } from "@test/presets.ts" @@ -6,10 +6,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() -}) - describe("signOut action", async () => { const csrf = await createCSRF(jose) const { encodeJWT } = jose diff --git a/packages/core/test/actions/signUp/stateful.test.ts b/packages/core/test/actions/signUp/stateful.test.ts index c93672ab..f4beff7f 100644 --- a/packages/core/test/actions/signUp/stateful.test.ts +++ b/packages/core/test/actions/signUp/stateful.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, beforeEach, vi, afterEach } from "vitest" +import { describe, test, expect, beforeEach, vi } from "vitest" import { z } from "zod/v4" import { createCSRF } from "@/shared/crypto.ts" import { identitySchema } from "@/identity/zod.ts" @@ -9,35 +9,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("signUp API", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/actions/signUp/stateless.test.ts b/packages/core/test/actions/signUp/stateless.test.ts index 764b3194..8ea338fa 100644 --- a/packages/core/test/actions/signUp/stateless.test.ts +++ b/packages/core/test/actions/signUp/stateless.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, beforeEach, vi, afterEach } from "vitest" +import { describe, test, expect, beforeEach, vi } from "vitest" import { z } from "zod/v4" import { jose, POST } from "@test/presets.ts" import { createAuth } from "@/createAuth.ts" @@ -10,12 +10,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - const payload = { name: "johndoe", email: "john@example.com", @@ -23,29 +17,6 @@ const payload = { password: "1234567890", } -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("signUp API", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/api/stateful/getProviderTokens.test.ts b/packages/core/test/api/stateful/getProviderTokens.test.ts index e1ab01cf..1b601a44 100644 --- a/packages/core/test/api/stateful/getProviderTokens.test.ts +++ b/packages/core/test/api/stateful/getProviderTokens.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, beforeEach, afterEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { authInstance, jose, oauthCustomService, sessionEntityWithUser } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" import { createAuth } from "@/createAuth.ts" @@ -9,35 +9,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("getProviderTokens API (Stateful)", () => { test("throws error when provider is missing", async () => { const getSessionByTokenMock = vi.fn() diff --git a/packages/core/test/api/stateful/getSession.test.ts b/packages/core/test/api/stateful/getSession.test.ts index 74878d0a..505ff28a 100644 --- a/packages/core/test/api/stateful/getSession.test.ts +++ b/packages/core/test/api/stateful/getSession.test.ts @@ -1,37 +1,8 @@ -import { describe, test, expect, vi, afterEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { getSetCookie } from "@/cookie.ts" import { authInstance, sessionEntityWithUser, userEntity } from "@test/presets.ts" import { createSchemaRegistry } from "@/validator/registry.ts" -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("getSession", () => { test("getSession with no session token", async () => { const { api } = authInstance({}) diff --git a/packages/core/test/api/stateful/signInCredentials.test.ts b/packages/core/test/api/stateful/signInCredentials.test.ts index 00663f4d..dffce13c 100644 --- a/packages/core/test/api/stateful/signInCredentials.test.ts +++ b/packages/core/test/api/stateful/signInCredentials.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, beforeEach, afterEach, vi } from "vitest" +import { describe, test, expect, beforeEach, vi } from "vitest" import { createCSRF } from "@/shared/crypto.ts" import { authInstance, jose, sessionEntityWithUser, userEntity } from "@test/presets.ts" import { createSchemaRegistry } from "@/validator/registry.ts" @@ -7,35 +7,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("signInCredentials API", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/api/stateful/signOut.test.ts b/packages/core/test/api/stateful/signOut.test.ts index 6ad708d2..9d64cc73 100644 --- a/packages/core/test/api/stateful/signOut.test.ts +++ b/packages/core/test/api/stateful/signOut.test.ts @@ -1,4 +1,4 @@ -import { afterEach, beforeEach, describe, expect, test, vi } from "vitest" +import { beforeEach, describe, expect, test, vi } from "vitest" import { createCSRF } from "@/shared/crypto.ts" import { authInstance, jose, sessionEntityWithUser } from "@test/presets.ts" @@ -6,35 +6,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("signOut API", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/api/stateful/signUp.test.ts b/packages/core/test/api/stateful/signUp.test.ts index 5d7ad871..22a5f144 100644 --- a/packages/core/test/api/stateful/signUp.test.ts +++ b/packages/core/test/api/stateful/signUp.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, beforeEach, vi, afterEach } from "vitest" +import { describe, test, expect, beforeEach, vi } from "vitest" import { createCSRF } from "@/shared/crypto.ts" import { createSchemaRegistry } from "@/validator/registry.ts" import { authInstance, jose, sessionEntityWithUser, sessionPayload, userEntity } from "@test/presets.ts" @@ -8,35 +8,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("signUp API", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/api/stateful/updateSession.test.ts b/packages/core/test/api/stateful/updateSession.test.ts index 2d0356c8..6c19954f 100644 --- a/packages/core/test/api/stateful/updateSession.test.ts +++ b/packages/core/test/api/stateful/updateSession.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, beforeEach, vi, afterEach } from "vitest" +import { describe, test, expect, beforeEach, vi } from "vitest" import { z } from "zod/v4" import { createCSRF } from "@/shared/crypto.ts" import { createSchemaRegistry } from "@/validator/registry.ts" @@ -9,35 +9,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("updateSession API", () => { test("invalid session", async () => { vi.stubEnv("BASE_URL", "http://localhost:3000") diff --git a/packages/core/test/api/getAccessToken.test.ts b/packages/core/test/api/stateless/getAccessToken.test.ts similarity index 99% rename from packages/core/test/api/getAccessToken.test.ts rename to packages/core/test/api/stateless/getAccessToken.test.ts index 71d3e81b..b82644c3 100644 --- a/packages/core/test/api/getAccessToken.test.ts +++ b/packages/core/test/api/stateless/getAccessToken.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, beforeEach, afterEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { api, jose, oauthCustomService, oauthTokens, sessionPayload } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" import { createAuth } from "@/createAuth.ts" @@ -9,10 +9,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() -}) - describe("getAccessToken API", () => { test("throws error when provider is missing", async () => { const output = await api.getAccessToken("unsuppported", { headers: new Headers() }) diff --git a/packages/core/test/api/getProviderTokens.test.ts b/packages/core/test/api/stateless/getProviderTokens.test.ts similarity index 98% rename from packages/core/test/api/getProviderTokens.test.ts rename to packages/core/test/api/stateless/getProviderTokens.test.ts index 33c530e8..bb5ac12c 100644 --- a/packages/core/test/api/getProviderTokens.test.ts +++ b/packages/core/test/api/stateless/getProviderTokens.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, beforeEach, afterEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { api, jose, oauthCustomService, oauthTokens, sessionPayload } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" import { createAuth } from "@/createAuth.ts" @@ -9,12 +9,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - describe("getProviderTokens API", () => { test("throws error when provider is missing", async () => { const output = await api.getProviderTokens("unsuppported", { headers: new Headers() }) diff --git a/packages/core/test/api/getSession.test.ts b/packages/core/test/api/stateless/getSession.test.ts similarity index 100% rename from packages/core/test/api/getSession.test.ts rename to packages/core/test/api/stateless/getSession.test.ts diff --git a/packages/core/test/api/isProviderConnected.test.ts b/packages/core/test/api/stateless/isProviderConnected.test.ts similarity index 98% rename from packages/core/test/api/isProviderConnected.test.ts rename to packages/core/test/api/stateless/isProviderConnected.test.ts index 111b9cf3..a560540b 100644 --- a/packages/core/test/api/isProviderConnected.test.ts +++ b/packages/core/test/api/stateless/isProviderConnected.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, beforeEach, afterEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { api, jose, oauthTokens, sessionPayload } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" @@ -6,10 +6,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() -}) - describe("isProviderConnected", () => { test("throws error when provider is not configured", async () => { const output = await api.isProviderConnected("unsupported", { headers: new Headers() }) diff --git a/packages/core/test/api/refreshUserInfo.test.ts b/packages/core/test/api/stateless/refreshUserInfo.test.ts similarity index 95% rename from packages/core/test/api/refreshUserInfo.test.ts rename to packages/core/test/api/stateless/refreshUserInfo.test.ts index c7ecae33..1501a6f6 100644 --- a/packages/core/test/api/refreshUserInfo.test.ts +++ b/packages/core/test/api/stateless/refreshUserInfo.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, beforeEach, afterEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { api, jose, oauthCustomService, oauthTokens, sessionPayload } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" import { createAuth } from "@/createAuth.ts" @@ -8,34 +8,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.unstubAllGlobals() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("refreshUserInfo", () => { test("unsupported oauth provider", async () => { const output = await api.refreshUserInfo("unsupported") diff --git a/packages/core/test/api/revokeToken.test.ts b/packages/core/test/api/stateless/revokeToken.test.ts similarity index 94% rename from packages/core/test/api/revokeToken.test.ts rename to packages/core/test/api/stateless/revokeToken.test.ts index 24edc76d..2bc3e119 100644 --- a/packages/core/test/api/revokeToken.test.ts +++ b/packages/core/test/api/stateless/revokeToken.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, beforeEach, afterEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { api, jose, oauthCustomService, oauthTokens, sessionPayload } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" import { createAuth } from "@/createAuth.ts" @@ -7,35 +7,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("revokeToken", () => { test("throws error when provider is not configured", async () => { const output = await api.revokeToken("unsupported", { headers: new Headers() }) diff --git a/packages/core/test/api/signIn.test.ts b/packages/core/test/api/stateless/signIn.test.ts similarity index 86% rename from packages/core/test/api/signIn.test.ts rename to packages/core/test/api/stateless/signIn.test.ts index 85ccd759..6aef0f15 100644 --- a/packages/core/test/api/signIn.test.ts +++ b/packages/core/test/api/stateless/signIn.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, beforeEach, afterEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { getSetCookie } from "@/cookie.ts" import { createAuth } from "@/createAuth.ts" import { api, oauthCustomService, openIDMetadata } from "@test/presets.ts" @@ -7,33 +7,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("signIn API", () => { test("throws error when provider is missing", async () => { expect(await api.signIn("unsupported", { headers: new Headers() })).toMatchObject({ diff --git a/packages/core/test/api/signInCredentials.test.ts b/packages/core/test/api/stateless/signInCredentials.test.ts similarity index 88% rename from packages/core/test/api/signInCredentials.test.ts rename to packages/core/test/api/stateless/signInCredentials.test.ts index 691b1b16..4c62d60e 100644 --- a/packages/core/test/api/signInCredentials.test.ts +++ b/packages/core/test/api/stateless/signInCredentials.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, beforeEach, afterEach, vi } from "vitest" +import { describe, test, expect, beforeEach, vi } from "vitest" import { createAuth } from "@/createAuth.ts" import { getSetCookie } from "@/cookie.ts" import { api, jose } from "@test/presets.ts" @@ -8,33 +8,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("signInCredentials API", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/api/signOut.test.ts b/packages/core/test/api/stateless/signOut.test.ts similarity index 96% rename from packages/core/test/api/signOut.test.ts rename to packages/core/test/api/stateless/signOut.test.ts index 3e614e2f..5e737fd7 100644 --- a/packages/core/test/api/signOut.test.ts +++ b/packages/core/test/api/stateless/signOut.test.ts @@ -1,4 +1,4 @@ -import { afterEach, beforeEach, describe, expect, test, vi } from "vitest" +import { beforeEach, describe, expect, test, vi } from "vitest" import { createAuth } from "@/createAuth.ts" import { api, jose } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" @@ -7,10 +7,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() -}) - describe("signOut API", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/api/signUp.test.ts b/packages/core/test/api/stateless/signUp.test.ts similarity index 87% rename from packages/core/test/api/signUp.test.ts rename to packages/core/test/api/stateless/signUp.test.ts index ec36fcb9..c0b164bf 100644 --- a/packages/core/test/api/signUp.test.ts +++ b/packages/core/test/api/stateless/signUp.test.ts @@ -1,18 +1,14 @@ -import { describe, test, expect, beforeEach, vi, afterEach } from "vitest" +import { describe, test, expect, beforeEach, vi } from "vitest" import { getSetCookie } from "@/cookie.ts" import { api, jose } from "@test/presets.ts" import { createAuth } from "@/createAuth.ts" -import type { User } from "@/index.ts" import { createCSRF } from "@/shared/crypto.ts" +import type { User } from "@/index.ts" beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() -}) - const payload = { name: "johndoe", email: "john@example.com", @@ -20,29 +16,6 @@ const payload = { password: "1234567890", } -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("signUp API", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/api/updateSession.test.ts b/packages/core/test/api/stateless/updateSession.test.ts similarity index 93% rename from packages/core/test/api/updateSession.test.ts rename to packages/core/test/api/stateless/updateSession.test.ts index 5dfa0f5d..28421f13 100644 --- a/packages/core/test/api/updateSession.test.ts +++ b/packages/core/test/api/stateless/updateSession.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, beforeEach, vi, afterEach } from "vitest" +import { describe, test, expect, beforeEach, vi } from "vitest" import { z } from "zod/v4" import { createAuth } from "@/createAuth.ts" import { api, jose, sessionPayload } from "@test/presets.ts" @@ -10,33 +10,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("updateSession API", () => { test("invalid session", async () => { vi.stubEnv("BASE_URL", "http://localhost:3000") diff --git a/packages/core/test/client/client.test.ts b/packages/core/test/client/client.test.ts index 69f23b81..f7201b80 100644 --- a/packages/core/test/client/client.test.ts +++ b/packages/core/test/client/client.test.ts @@ -22,11 +22,6 @@ const createJSONResponse = (body: unknown, status = 200) => { }) } -beforeEach(() => { - vi.clearAllMocks() - vi.unstubAllGlobals() -}) - describe("createAuthClient", () => { beforeEach(() => { vi.clearAllMocks() diff --git a/packages/core/test/env.test.ts b/packages/core/test/env.test.ts index 7efb65af..06b36dc3 100644 --- a/packages/core/test/env.test.ts +++ b/packages/core/test/env.test.ts @@ -1,13 +1,9 @@ -import { afterEach, describe, expect, test, vi } from "vitest" +import { describe, expect, test, vi } from "vitest" import { env } from "@/shared/env.ts" import { createSecretValue } from "@/shared/crypto.ts" import { exportPKCS8, exportSPKI, generateKeyPair } from "@aura-stack/jose/jose" describe("env", () => { - afterEach(() => { - vi.unstubAllEnvs() - }) - test("read AURA_AUTH_SECRET from environment", () => { const secret = createSecretValue() vi.stubEnv("AURA_AUTH_SECRET", secret!) diff --git a/packages/core/test/identity.test.ts b/packages/core/test/identity.test.ts index aa93a64b..ad92ed8a 100644 --- a/packages/core/test/identity.test.ts +++ b/packages/core/test/identity.test.ts @@ -1,20 +1,16 @@ -import { describe, test, expect, expectTypeOf, vi, afterEach } from "vitest" -import { createIdentity, type InferUser, type UserFrom } from "@/identity/index.ts" -import { identitySchema as UserIdentity } from "@/identity/zod.ts" -import { identitySchema as UserIdentityArkType } from "@/identity/arktype.ts" -import { identitySchema as UserIdentityTypeBox } from "@/identity/typebox.ts" -import { identitySchema as UserIdentityValibot } from "@/identity/valibot.ts" +import { describe, test, expect, expectTypeOf } from "vitest" import { z } from "zod/v4" import * as valibot from "valibot" -import { createAuth } from "@/createAuth.ts" -import { createSchemaRegistry, deriveSchema } from "@/validator/registry.ts" +import { Value } from "typebox/value" import { ArkErrors, type } from "arktype" +import { createAuth } from "@/createAuth.ts" import { type Static, Type as Typebox } from "typebox" -import { Value } from "typebox/value" - -afterEach(() => { - vi.unstubAllEnvs() -}) +import { identitySchema as UserIdentity } from "@/identity/zod.ts" +import { createSchemaRegistry, deriveSchema } from "@/validator/registry.ts" +import { identitySchema as UserIdentityArkType } from "@/identity/arktype.ts" +import { identitySchema as UserIdentityTypeBox } from "@/identity/typebox.ts" +import { identitySchema as UserIdentityValibot } from "@/identity/valibot.ts" +import { createIdentity, type InferUser, type UserFrom } from "@/identity/index.ts" describe("createIdentity", () => { test("createIdentity with Zod schema", () => { diff --git a/packages/core/test/instance.test.ts b/packages/core/test/instance.test.ts index b107e910..97863c40 100644 --- a/packages/core/test/instance.test.ts +++ b/packages/core/test/instance.test.ts @@ -1,14 +1,10 @@ -import { describe, test, expect, vi, beforeEach, afterEach } from "vitest" +import { describe, test, expect, vi, beforeEach } from "vitest" import { createAuth } from "@/createAuth.ts" beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() -}) - describe("createAuth", () => { describe("handlers.ALL", () => { const auth = createAuth({ diff --git a/packages/core/test/jose.test.ts b/packages/core/test/jose.test.ts index fadf90ea..47d5bdd0 100644 --- a/packages/core/test/jose.test.ts +++ b/packages/core/test/jose.test.ts @@ -22,10 +22,6 @@ beforeEach(() => { vi.stubEnv("BASE_URL", undefined) }) -afterEach(() => { - vi.unstubAllEnvs() -}) - describe("createJoseInstance", () => { test("createJoseInstance with default options", async () => { vi.stubEnv("AURA_AUTH_SALT", createSecretValue()) diff --git a/packages/core/test/setup/vitest.setup.ts b/packages/core/test/setup/vitest.setup.ts new file mode 100644 index 00000000..fb98fc3a --- /dev/null +++ b/packages/core/test/setup/vitest.setup.ts @@ -0,0 +1,31 @@ +import { vi, afterEach } from "vitest" + +afterEach(() => { + vi.clearAllMocks() + vi.unstubAllEnvs() + vi.restoreAllMocks() + vi.unstubAllGlobals() +}) + +vi.mock("@aura-stack/rate-limiter", async () => { + const actual = await vi.importActual("@aura-stack/rate-limiter") + return { + ...actual, + createRateLimiter: (...args: Parameters) => { + const limiters = actual.createRateLimiter(...args) + + for (const limiter of Object.values(limiters)) { + limiter.check = vi.fn().mockResolvedValue({ + ok: true, + limit: Number.MAX_SAFE_INTEGER, + remaining: Number.MAX_SAFE_INTEGER, + resetAt: Date.now() + 60000, + retryAfter: 0, + toResponse: () => new Response(), + }) + } + + return limiters + }, + } +}) diff --git a/packages/core/vitest.config.ts b/packages/core/vitest.config.ts index 1bf5d575..16235ef3 100644 --- a/packages/core/vitest.config.ts +++ b/packages/core/vitest.config.ts @@ -6,13 +6,17 @@ import { base64url } from "@aura-stack/jose/jose" const SECRET_KEY = getRandomBytes(44) const SALT_KEY = getRandomBytes(44) +/** + * Vitest configuration for the Aura Auth core package. + * + * @example + * pnpm test + * pnpm test --project core + * pnpm test --project rate-limiter + */ export default defineConfig({ test: { include: ["test/**/*.test.ts"], - coverage: { - provider: "v8", - enabled: true, - }, unstubEnvs: true, env: { AURA_AUTH_SECRET: base64url.encode(SECRET_KEY), @@ -31,11 +35,33 @@ export default defineConfig({ include: ["test/**/*.test-d.ts"], enabled: false, }, - }, - resolve: { - alias: { - "@": path.resolve(__dirname, "./src"), - "@test": path.resolve(__dirname, "./test"), - }, + projects: [ + { + test: { + name: "core", + include: ["test/**/*.test.ts"], + exclude: ["test/rate-limiter.test.ts"], + setupFiles: ["./test/setup/vitest.setup.ts"], + }, + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + "@test": path.resolve(__dirname, "./test"), + }, + }, + }, + { + test: { + name: "rate-limiter", + include: ["test/rate-limiter.test.ts"], + }, + resolve: { + alias: { + "@": path.resolve(__dirname, "./src"), + "@test": path.resolve(__dirname, "./test"), + }, + }, + }, + ], }, }) From 8dce34d1fbb05ff50de4b2a2507abb3f61ad6adf Mon Sep 17 00:00:00 2001 From: Hernan Alvarado Date: Thu, 23 Jul 2026 13:02:36 -0500 Subject: [PATCH 2/2] chore: clean up tests --- .../test/actions/callback/stateless.test.ts | 6 +--- .../test/actions/csrfToken/stateless.test.ts | 6 +--- .../providers/connected/stateless.test.ts | 29 +--------------- .../providers/tokens/revoke/stateless.test.ts | 6 +--- .../providers/tokens/tokens/stateful.test.ts | 6 +--- .../providers/tokens/tokens/stateless.test.ts | 6 +--- .../actions/providers/user/stateless.test.ts | 34 +------------------ .../actions/session/session/stateful.test.ts | 6 +--- .../actions/session/session/stateless.test.ts | 6 +--- .../actions/signIn/signIn/stateless.test.ts | 6 +--- .../signIn/signInCredentials/stateful.test.ts | 6 +--- .../signInCredentials/stateless.test.ts | 6 +--- .../test/actions/signOut/stateless.test.ts | 6 +--- .../core/test/actions/signUp/stateful.test.ts | 6 +--- .../test/actions/signUp/stateless.test.ts | 6 +--- .../api/stateful/getProviderTokens.test.ts | 6 +--- .../api/stateful/signInCredentials.test.ts | 6 +--- .../core/test/api/stateful/signOut.test.ts | 6 +--- .../core/test/api/stateful/signUp.test.ts | 6 +--- .../test/api/stateful/updateSession.test.ts | 6 +--- .../test/api/stateless/getAccessToken.test.ts | 6 +--- .../api/stateless/getProviderTokens.test.ts | 6 +--- .../api/stateless/isProviderConnected.test.ts | 6 +--- .../api/stateless/refreshUserInfo.test.ts | 6 +--- .../test/api/stateless/revokeToken.test.ts | 6 +--- .../core/test/api/stateless/signIn.test.ts | 6 +--- .../api/stateless/signInCredentials.test.ts | 6 +--- .../core/test/api/stateless/signOut.test.ts | 6 +--- .../core/test/api/stateless/signUp.test.ts | 6 +--- .../test/api/stateless/updateSession.test.ts | 6 +--- packages/core/test/jose.test.ts | 2 +- packages/core/test/setup/actions.setup.ts | 5 +++ packages/core/vitest.config.ts | 2 +- 33 files changed, 37 insertions(+), 203 deletions(-) create mode 100644 packages/core/test/setup/actions.setup.ts diff --git a/packages/core/test/actions/callback/stateless.test.ts b/packages/core/test/actions/callback/stateless.test.ts index 809d453d..c48a55cd 100644 --- a/packages/core/test/actions/callback/stateless.test.ts +++ b/packages/core/test/actions/callback/stateless.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, vi, beforeEach, afterEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { GET, jose, oauthCustomService, openIDCustomProvider, openIDMetadata, RS256PEMFormat } from "@test/presets.ts" import { clearResolvedProviderCache } from "@/shared/oidc/resolve-provider.ts" import { clearJWKSCache } from "@/shared/oidc/jwks.ts" @@ -8,10 +8,6 @@ import { setCookie, getSetCookie } from "@/cookie.ts" import { AURA_AUTH_VERSION } from "@/shared/utils.ts" import { createAuth } from "@/createAuth.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("callbackAction", () => { test("invalid endpoint", async () => { const response = await GET(new Request("https://example.com/callback/invalid")) diff --git a/packages/core/test/actions/csrfToken/stateless.test.ts b/packages/core/test/actions/csrfToken/stateless.test.ts index 85863e33..7f13fc1a 100644 --- a/packages/core/test/actions/csrfToken/stateless.test.ts +++ b/packages/core/test/actions/csrfToken/stateless.test.ts @@ -1,11 +1,7 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect } from "vitest" import { GET } from "@test/presets.ts" import { setCookie } from "@/cookie.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("csrfTokenAction", () => { test("generates a CSRF token and sets it in a cookie", async () => { const response = await GET(new Request("https://example.com/auth/csrfToken")) diff --git a/packages/core/test/actions/providers/connected/stateless.test.ts b/packages/core/test/actions/providers/connected/stateless.test.ts index a1af6ba5..67764118 100644 --- a/packages/core/test/actions/providers/connected/stateless.test.ts +++ b/packages/core/test/actions/providers/connected/stateless.test.ts @@ -1,34 +1,7 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { createCSRF } from "@/shared/crypto.ts" import { GET, jose, oauthTokens, sessionPayload } from "@test/presets.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("connectedAction", () => { test("throws error when provider is not configured", async () => { const response = await GET(new Request("https://example.com/auth/providers/unsupported", { headers: new Headers() })) diff --git a/packages/core/test/actions/providers/tokens/revoke/stateless.test.ts b/packages/core/test/actions/providers/tokens/revoke/stateless.test.ts index e2c1958c..352d6d4a 100644 --- a/packages/core/test/actions/providers/tokens/revoke/stateless.test.ts +++ b/packages/core/test/actions/providers/tokens/revoke/stateless.test.ts @@ -1,12 +1,8 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { createAuth } from "@/createAuth.ts" import { createCSRF } from "@/shared/crypto.ts" import { jose, oauthCustomService, oauthTokens, POST, sessionPayload } from "@test/presets.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("Revoke Action", () => { test("throws error when provider is not configured", async () => { const response = await POST( diff --git a/packages/core/test/actions/providers/tokens/tokens/stateful.test.ts b/packages/core/test/actions/providers/tokens/tokens/stateful.test.ts index ed9ae7d1..96618d12 100644 --- a/packages/core/test/actions/providers/tokens/tokens/stateful.test.ts +++ b/packages/core/test/actions/providers/tokens/tokens/stateful.test.ts @@ -1,14 +1,10 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { authInstance, jose, oauthCustomService, sessionEntityWithUser } from "@test/presets.ts" import { createAuth } from "@/createAuth.ts" import { createBasicAuthHeader } from "@/shared/utils.ts" import type { OAuthProviderConfig } from "@/@types/oauth.ts" import { createCSRF } from "@/shared/crypto.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("tokensAction (Stateful)", async () => { test("should return 422 if the provider is not supported", async () => { const getSessionByTokenMock = vi.fn() diff --git a/packages/core/test/actions/providers/tokens/tokens/stateless.test.ts b/packages/core/test/actions/providers/tokens/tokens/stateless.test.ts index d86117dd..e6a8479a 100644 --- a/packages/core/test/actions/providers/tokens/tokens/stateless.test.ts +++ b/packages/core/test/actions/providers/tokens/tokens/stateless.test.ts @@ -1,14 +1,10 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { createAuth } from "@/createAuth.ts" import { createCSRF } from "@/shared/crypto.ts" import { GET, jose, oauthCustomService, oauthTokens, sessionPayload } from "@test/presets.ts" import { createBasicAuthHeader } from "@/shared/utils.ts" import type { OAuthProviderConfig } from "@/@types/oauth.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("tokensAction", async () => { const { encodeJWT } = jose diff --git a/packages/core/test/actions/providers/user/stateless.test.ts b/packages/core/test/actions/providers/user/stateless.test.ts index d0e1c08d..ab0373e7 100644 --- a/packages/core/test/actions/providers/user/stateless.test.ts +++ b/packages/core/test/actions/providers/user/stateless.test.ts @@ -1,41 +1,9 @@ -import { describe, test, expect, vi, beforeEach, afterEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { jose, oauthCustomService, oauthTokens, POST, sessionPayload } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" import { createAuth } from "@/createAuth.ts" import { AURA_AUTH_VERSION } from "@/shared/utils.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - -afterEach(() => { - vi.unstubAllEnvs() - vi.unstubAllGlobals() -}) - -vi.mock("@aura-stack/rate-limiter", async () => { - const actual = await vi.importActual("@aura-stack/rate-limiter") - return { - ...actual, - createRateLimiter: (...args: Parameters) => { - const limiters = actual.createRateLimiter(...args) - - for (const limiter of Object.values(limiters)) { - limiter.check = vi.fn().mockResolvedValue({ - ok: true, - limit: Number.MAX_SAFE_INTEGER, - remaining: Number.MAX_SAFE_INTEGER, - resetAt: Date.now() + 60000, - retryAfter: 0, - toResponse: () => new Response(), - }) - } - - return limiters - }, - } -}) - describe("refreshUserInfo action", () => { test("unsupported oauth provider", async () => { const response = await POST(new Request("https://example.com/auth/unsupported/user/refresh", { method: "POST" })) diff --git a/packages/core/test/actions/session/session/stateful.test.ts b/packages/core/test/actions/session/session/stateful.test.ts index 82832bff..cf23c684 100644 --- a/packages/core/test/actions/session/session/stateful.test.ts +++ b/packages/core/test/actions/session/session/stateful.test.ts @@ -1,11 +1,7 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { authInstance, jose, sessionEntityWithUser, sessionPayload, userEntity } from "@test/presets.ts" import { createSchemaRegistry } from "@/validator/registry.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("sessionAction", () => { const { encodeJWT } = jose diff --git a/packages/core/test/actions/session/session/stateless.test.ts b/packages/core/test/actions/session/session/stateless.test.ts index f4e531de..1fac2548 100644 --- a/packages/core/test/actions/session/session/stateless.test.ts +++ b/packages/core/test/actions/session/session/stateless.test.ts @@ -1,13 +1,9 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { createPKCE } from "@/shared/crypto.ts" import { AURA_AUTH_VERSION } from "@/shared/utils.ts" import { GET, jose, sessionPayload } from "@test/presets.ts" import { setCookie, getSetCookie, createCookieStore, getCookie } from "@/cookie.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("sessionAction", () => { const { encodeJWT } = jose diff --git a/packages/core/test/actions/signIn/signIn/stateless.test.ts b/packages/core/test/actions/signIn/signIn/stateless.test.ts index 8094fd3c..f7b77b00 100644 --- a/packages/core/test/actions/signIn/signIn/stateless.test.ts +++ b/packages/core/test/actions/signIn/signIn/stateless.test.ts @@ -1,12 +1,8 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect } from "vitest" import { createAuth } from "@/createAuth.ts" import { getSetCookie } from "@/cookie.ts" import { GET, oauthCustomService } from "@test/presets.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("signIn action", () => { test("default signIn", async () => { const signIn = await GET(new Request("https://example.com/auth/signIn/oauth-provider")) diff --git a/packages/core/test/actions/signIn/signInCredentials/stateful.test.ts b/packages/core/test/actions/signIn/signInCredentials/stateful.test.ts index d2d1ab47..d9b16bb0 100644 --- a/packages/core/test/actions/signIn/signInCredentials/stateful.test.ts +++ b/packages/core/test/actions/signIn/signInCredentials/stateful.test.ts @@ -1,12 +1,8 @@ -import { describe, test, expect, beforeEach, vi } from "vitest" +import { describe, test, expect, vi } from "vitest" import { authInstance, jose, sessionEntityWithUser, userEntity } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" import { createSchemaRegistry } from "@/validator/registry.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("signInCredentials action", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/actions/signIn/signInCredentials/stateless.test.ts b/packages/core/test/actions/signIn/signInCredentials/stateless.test.ts index 6d75f199..69d88e2c 100644 --- a/packages/core/test/actions/signIn/signInCredentials/stateless.test.ts +++ b/packages/core/test/actions/signIn/signInCredentials/stateless.test.ts @@ -1,13 +1,9 @@ -import { describe, test, expect, beforeEach, vi } from "vitest" +import { describe, test, expect } from "vitest" import { jose, POST } from "@test/presets.ts" import { getSetCookie } from "@/cookie.ts" import { createAuth } from "@/createAuth.ts" import { createCSRF } from "@/shared/crypto.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("signInCredentials action", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/actions/signOut/stateless.test.ts b/packages/core/test/actions/signOut/stateless.test.ts index 16da3681..2c74fe45 100644 --- a/packages/core/test/actions/signOut/stateless.test.ts +++ b/packages/core/test/actions/signOut/stateless.test.ts @@ -1,11 +1,7 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { createCSRF } from "@/shared/crypto.ts" import { POST, jose, sessionPayload } from "@test/presets.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("signOut action", async () => { const csrf = await createCSRF(jose) const { encodeJWT } = jose diff --git a/packages/core/test/actions/signUp/stateful.test.ts b/packages/core/test/actions/signUp/stateful.test.ts index f4beff7f..389c8266 100644 --- a/packages/core/test/actions/signUp/stateful.test.ts +++ b/packages/core/test/actions/signUp/stateful.test.ts @@ -1,14 +1,10 @@ -import { describe, test, expect, beforeEach, vi } from "vitest" +import { describe, test, expect, vi } from "vitest" import { z } from "zod/v4" import { createCSRF } from "@/shared/crypto.ts" import { identitySchema } from "@/identity/zod.ts" import { authInstance, jose, sessionEntityWithUser, sessionPayload, userEntity } from "@test/presets.ts" import { createSchemaRegistry } from "@/validator/registry.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("signUp API", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/actions/signUp/stateless.test.ts b/packages/core/test/actions/signUp/stateless.test.ts index 8ea338fa..56744aeb 100644 --- a/packages/core/test/actions/signUp/stateless.test.ts +++ b/packages/core/test/actions/signUp/stateless.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, beforeEach, vi } from "vitest" +import { describe, test, expect } from "vitest" import { z } from "zod/v4" import { jose, POST } from "@test/presets.ts" import { createAuth } from "@/createAuth.ts" @@ -6,10 +6,6 @@ import { createCSRF } from "@/shared/crypto.ts" import { getSetCookie } from "@/cookie.ts" import { identitySchema } from "@/identity/zod.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - const payload = { name: "johndoe", email: "john@example.com", diff --git a/packages/core/test/api/stateful/getProviderTokens.test.ts b/packages/core/test/api/stateful/getProviderTokens.test.ts index 1b601a44..5ce0fa4d 100644 --- a/packages/core/test/api/stateful/getProviderTokens.test.ts +++ b/packages/core/test/api/stateful/getProviderTokens.test.ts @@ -1,14 +1,10 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { authInstance, jose, oauthCustomService, sessionEntityWithUser } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" import { createAuth } from "@/createAuth.ts" import { createBasicAuthHeader } from "@/shared/utils.ts" import type { OAuthProviderConfig } from "@/@types/oauth.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("getProviderTokens API (Stateful)", () => { test("throws error when provider is missing", async () => { const getSessionByTokenMock = vi.fn() diff --git a/packages/core/test/api/stateful/signInCredentials.test.ts b/packages/core/test/api/stateful/signInCredentials.test.ts index dffce13c..b76f7804 100644 --- a/packages/core/test/api/stateful/signInCredentials.test.ts +++ b/packages/core/test/api/stateful/signInCredentials.test.ts @@ -1,12 +1,8 @@ -import { describe, test, expect, beforeEach, vi } from "vitest" +import { describe, test, expect, vi } from "vitest" import { createCSRF } from "@/shared/crypto.ts" import { authInstance, jose, sessionEntityWithUser, userEntity } from "@test/presets.ts" import { createSchemaRegistry } from "@/validator/registry.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("signInCredentials API", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/api/stateful/signOut.test.ts b/packages/core/test/api/stateful/signOut.test.ts index 9d64cc73..6ccd0b0b 100644 --- a/packages/core/test/api/stateful/signOut.test.ts +++ b/packages/core/test/api/stateful/signOut.test.ts @@ -1,11 +1,7 @@ -import { beforeEach, describe, expect, test, vi } from "vitest" +import { describe, expect, test, vi } from "vitest" import { createCSRF } from "@/shared/crypto.ts" import { authInstance, jose, sessionEntityWithUser } from "@test/presets.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("signOut API", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/api/stateful/signUp.test.ts b/packages/core/test/api/stateful/signUp.test.ts index 22a5f144..86534739 100644 --- a/packages/core/test/api/stateful/signUp.test.ts +++ b/packages/core/test/api/stateful/signUp.test.ts @@ -1,13 +1,9 @@ -import { describe, test, expect, beforeEach, vi } from "vitest" +import { describe, test, expect, vi } from "vitest" import { createCSRF } from "@/shared/crypto.ts" import { createSchemaRegistry } from "@/validator/registry.ts" import { authInstance, jose, sessionEntityWithUser, sessionPayload, userEntity } from "@test/presets.ts" import type { User } from "@/index.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("signUp API", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/api/stateful/updateSession.test.ts b/packages/core/test/api/stateful/updateSession.test.ts index 6c19954f..728d5b6d 100644 --- a/packages/core/test/api/stateful/updateSession.test.ts +++ b/packages/core/test/api/stateful/updateSession.test.ts @@ -1,14 +1,10 @@ -import { describe, test, expect, beforeEach, vi } from "vitest" +import { describe, test, expect, vi } from "vitest" import { z } from "zod/v4" import { createCSRF } from "@/shared/crypto.ts" import { createSchemaRegistry } from "@/validator/registry.ts" import { identitySchema as UserIdentity } from "@/identity/zod.ts" import { authInstance, jose, sessionEntityWithUser, userEntity } from "@test/presets.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("updateSession API", () => { test("invalid session", async () => { vi.stubEnv("BASE_URL", "http://localhost:3000") diff --git a/packages/core/test/api/stateless/getAccessToken.test.ts b/packages/core/test/api/stateless/getAccessToken.test.ts index b82644c3..3ecfc6d0 100644 --- a/packages/core/test/api/stateless/getAccessToken.test.ts +++ b/packages/core/test/api/stateless/getAccessToken.test.ts @@ -1,14 +1,10 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { api, jose, oauthCustomService, oauthTokens, sessionPayload } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" import { createAuth } from "@/createAuth.ts" import { createBasicAuthHeader } from "@/shared/utils.ts" import type { OAuthProviderConfig } from "@/@types/oauth.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("getAccessToken API", () => { test("throws error when provider is missing", async () => { const output = await api.getAccessToken("unsuppported", { headers: new Headers() }) diff --git a/packages/core/test/api/stateless/getProviderTokens.test.ts b/packages/core/test/api/stateless/getProviderTokens.test.ts index bb5ac12c..d683d383 100644 --- a/packages/core/test/api/stateless/getProviderTokens.test.ts +++ b/packages/core/test/api/stateless/getProviderTokens.test.ts @@ -1,14 +1,10 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { api, jose, oauthCustomService, oauthTokens, sessionPayload } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" import { createAuth } from "@/createAuth.ts" import { createBasicAuthHeader } from "@/shared/utils.ts" import type { OAuthProviderConfig } from "@/@types/oauth.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("getProviderTokens API", () => { test("throws error when provider is missing", async () => { const output = await api.getProviderTokens("unsuppported", { headers: new Headers() }) diff --git a/packages/core/test/api/stateless/isProviderConnected.test.ts b/packages/core/test/api/stateless/isProviderConnected.test.ts index a560540b..c221fd53 100644 --- a/packages/core/test/api/stateless/isProviderConnected.test.ts +++ b/packages/core/test/api/stateless/isProviderConnected.test.ts @@ -1,11 +1,7 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { api, jose, oauthTokens, sessionPayload } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("isProviderConnected", () => { test("throws error when provider is not configured", async () => { const output = await api.isProviderConnected("unsupported", { headers: new Headers() }) diff --git a/packages/core/test/api/stateless/refreshUserInfo.test.ts b/packages/core/test/api/stateless/refreshUserInfo.test.ts index 1501a6f6..83e94a20 100644 --- a/packages/core/test/api/stateless/refreshUserInfo.test.ts +++ b/packages/core/test/api/stateless/refreshUserInfo.test.ts @@ -1,13 +1,9 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { api, jose, oauthCustomService, oauthTokens, sessionPayload } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" import { createAuth } from "@/createAuth.ts" import { AURA_AUTH_VERSION } from "@/shared/utils.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("refreshUserInfo", () => { test("unsupported oauth provider", async () => { const output = await api.refreshUserInfo("unsupported") diff --git a/packages/core/test/api/stateless/revokeToken.test.ts b/packages/core/test/api/stateless/revokeToken.test.ts index 2bc3e119..61b52678 100644 --- a/packages/core/test/api/stateless/revokeToken.test.ts +++ b/packages/core/test/api/stateless/revokeToken.test.ts @@ -1,12 +1,8 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { api, jose, oauthCustomService, oauthTokens, sessionPayload } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" import { createAuth } from "@/createAuth.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("revokeToken", () => { test("throws error when provider is not configured", async () => { const output = await api.revokeToken("unsupported", { headers: new Headers() }) diff --git a/packages/core/test/api/stateless/signIn.test.ts b/packages/core/test/api/stateless/signIn.test.ts index 6aef0f15..1ccbf944 100644 --- a/packages/core/test/api/stateless/signIn.test.ts +++ b/packages/core/test/api/stateless/signIn.test.ts @@ -1,12 +1,8 @@ -import { describe, test, expect, vi, beforeEach } from "vitest" +import { describe, test, expect, vi } from "vitest" import { getSetCookie } from "@/cookie.ts" import { createAuth } from "@/createAuth.ts" import { api, oauthCustomService, openIDMetadata } from "@test/presets.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("signIn API", () => { test("throws error when provider is missing", async () => { expect(await api.signIn("unsupported", { headers: new Headers() })).toMatchObject({ diff --git a/packages/core/test/api/stateless/signInCredentials.test.ts b/packages/core/test/api/stateless/signInCredentials.test.ts index 4c62d60e..b85ad99e 100644 --- a/packages/core/test/api/stateless/signInCredentials.test.ts +++ b/packages/core/test/api/stateless/signInCredentials.test.ts @@ -1,13 +1,9 @@ -import { describe, test, expect, beforeEach, vi } from "vitest" +import { describe, test, expect, vi } from "vitest" import { createAuth } from "@/createAuth.ts" import { getSetCookie } from "@/cookie.ts" import { api, jose } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("signInCredentials API", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/api/stateless/signOut.test.ts b/packages/core/test/api/stateless/signOut.test.ts index 5e737fd7..f19816bb 100644 --- a/packages/core/test/api/stateless/signOut.test.ts +++ b/packages/core/test/api/stateless/signOut.test.ts @@ -1,12 +1,8 @@ -import { beforeEach, describe, expect, test, vi } from "vitest" +import { describe, expect, test, vi } from "vitest" import { createAuth } from "@/createAuth.ts" import { api, jose } from "@test/presets.ts" import { createCSRF } from "@/shared/crypto.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("signOut API", async () => { const csrfToken = await createCSRF(jose) diff --git a/packages/core/test/api/stateless/signUp.test.ts b/packages/core/test/api/stateless/signUp.test.ts index c0b164bf..a6c4af64 100644 --- a/packages/core/test/api/stateless/signUp.test.ts +++ b/packages/core/test/api/stateless/signUp.test.ts @@ -1,14 +1,10 @@ -import { describe, test, expect, beforeEach, vi } from "vitest" +import { describe, test, expect, vi } from "vitest" import { getSetCookie } from "@/cookie.ts" import { api, jose } from "@test/presets.ts" import { createAuth } from "@/createAuth.ts" import { createCSRF } from "@/shared/crypto.ts" import type { User } from "@/index.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - const payload = { name: "johndoe", email: "john@example.com", diff --git a/packages/core/test/api/stateless/updateSession.test.ts b/packages/core/test/api/stateless/updateSession.test.ts index 28421f13..41b377b3 100644 --- a/packages/core/test/api/stateless/updateSession.test.ts +++ b/packages/core/test/api/stateless/updateSession.test.ts @@ -1,4 +1,4 @@ -import { describe, test, expect, beforeEach, vi } from "vitest" +import { describe, test, expect, vi } from "vitest" import { z } from "zod/v4" import { createAuth } from "@/createAuth.ts" import { api, jose, sessionPayload } from "@test/presets.ts" @@ -6,10 +6,6 @@ import { createCSRF } from "@/shared/crypto.ts" import { identitySchema as UserIdentity } from "@/identity/zod.ts" import { getSetCookie } from "@/cookie.ts" -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - describe("updateSession API", () => { test("invalid session", async () => { vi.stubEnv("BASE_URL", "http://localhost:3000") diff --git a/packages/core/test/jose.test.ts b/packages/core/test/jose.test.ts index 47d5bdd0..07066d03 100644 --- a/packages/core/test/jose.test.ts +++ b/packages/core/test/jose.test.ts @@ -1,4 +1,4 @@ -import { afterEach, beforeEach, describe, expect, test, vi } from "vitest" +import { beforeEach, describe, expect, test, vi } from "vitest" import { createJoseInstance, encoder } from "@/jose.ts" import { createSecretValue, exportJWKKeyPair } from "@/shared/crypto.ts" import { createAuth } from "@/createAuth.ts" diff --git a/packages/core/test/setup/actions.setup.ts b/packages/core/test/setup/actions.setup.ts new file mode 100644 index 00000000..2165f578 --- /dev/null +++ b/packages/core/test/setup/actions.setup.ts @@ -0,0 +1,5 @@ +import { beforeEach, vi } from "vitest" + +beforeEach(() => { + vi.stubEnv("BASE_URL", undefined) +}) diff --git a/packages/core/vitest.config.ts b/packages/core/vitest.config.ts index 16235ef3..2b40b403 100644 --- a/packages/core/vitest.config.ts +++ b/packages/core/vitest.config.ts @@ -41,7 +41,7 @@ export default defineConfig({ name: "core", include: ["test/**/*.test.ts"], exclude: ["test/rate-limiter.test.ts"], - setupFiles: ["./test/setup/vitest.setup.ts"], + setupFiles: ["./test/setup/vitest.setup.ts", "./test/setup/actions.setup.ts"], }, resolve: { alias: {