diff --git a/packages/core/test/actions/callback/stateless.test.ts b/packages/core/test/actions/callback/stateless.test.ts index f79d08f2..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,14 +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) -}) - -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..7f13fc1a 100644 --- a/packages/core/test/actions/csrfToken/stateless.test.ts +++ b/packages/core/test/actions/csrfToken/stateless.test.ts @@ -1,15 +1,7 @@ -import { describe, test, expect, vi, beforeEach, afterEach } 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) -}) - -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..67764118 100644 --- a/packages/core/test/actions/providers/connected/stateless.test.ts +++ b/packages/core/test/actions/providers/connected/stateless.test.ts @@ -1,40 +1,7 @@ -import { describe, test, expect, vi, afterEach, 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) -}) - -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("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 3b097c0d..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,41 +1,8 @@ -import { describe, test, expect, vi, afterEach, 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) -}) - -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..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,20 +1,10 @@ -import { describe, test, expect, vi, afterEach, 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) -}) - -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..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,20 +1,10 @@ -import { describe, test, expect, vi, afterEach, 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) -}) - -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - 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 faa630fc..cf23c684 100644 --- a/packages/core/test/actions/session/session/stateful.test.ts +++ b/packages/core/test/actions/session/session/stateful.test.ts @@ -1,17 +1,7 @@ -import { describe, test, expect, vi, afterEach, 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) -}) - -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..1fac2548 100644 --- a/packages/core/test/actions/session/session/stateless.test.ts +++ b/packages/core/test/actions/session/session/stateless.test.ts @@ -1,19 +1,9 @@ -import { describe, test, expect, vi, afterEach, 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) -}) - -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..f7b77b00 100644 --- a/packages/core/test/actions/signIn/signIn/stateless.test.ts +++ b/packages/core/test/actions/signIn/signIn/stateless.test.ts @@ -1,41 +1,8 @@ -import { describe, test, expect, vi, beforeEach, afterEach } 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) -}) - -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..d9b16bb0 100644 --- a/packages/core/test/actions/signIn/signInCredentials/stateful.test.ts +++ b/packages/core/test/actions/signIn/signInCredentials/stateful.test.ts @@ -1,41 +1,8 @@ -import { describe, test, expect, beforeEach, vi, afterEach } 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) -}) - -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..69d88e2c 100644 --- a/packages/core/test/actions/signIn/signInCredentials/stateless.test.ts +++ b/packages/core/test/actions/signIn/signInCredentials/stateless.test.ts @@ -1,42 +1,9 @@ -import { describe, test, expect, beforeEach, vi, afterEach } 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) -}) - -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..2c74fe45 100644 --- a/packages/core/test/actions/signOut/stateless.test.ts +++ b/packages/core/test/actions/signOut/stateless.test.ts @@ -1,15 +1,7 @@ -import { describe, test, expect, vi, beforeEach, afterEach } 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) -}) - -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..389c8266 100644 --- a/packages/core/test/actions/signUp/stateful.test.ts +++ b/packages/core/test/actions/signUp/stateful.test.ts @@ -1,43 +1,10 @@ -import { describe, test, expect, beforeEach, vi, afterEach } 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) -}) - -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..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, afterEach } 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,16 +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) -}) - -afterEach(() => { - vi.unstubAllEnvs() - vi.restoreAllMocks() - vi.unstubAllGlobals() -}) - const payload = { name: "johndoe", email: "john@example.com", @@ -23,29 +13,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..5ce0fa4d 100644 --- a/packages/core/test/api/stateful/getProviderTokens.test.ts +++ b/packages/core/test/api/stateful/getProviderTokens.test.ts @@ -1,43 +1,10 @@ -import { describe, test, expect, vi, beforeEach, afterEach } 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) -}) - -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..b76f7804 100644 --- a/packages/core/test/api/stateful/signInCredentials.test.ts +++ b/packages/core/test/api/stateful/signInCredentials.test.ts @@ -1,41 +1,8 @@ -import { describe, test, expect, beforeEach, afterEach, 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) -}) - -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..6ccd0b0b 100644 --- a/packages/core/test/api/stateful/signOut.test.ts +++ b/packages/core/test/api/stateful/signOut.test.ts @@ -1,40 +1,7 @@ -import { afterEach, 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) -}) - -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..86534739 100644 --- a/packages/core/test/api/stateful/signUp.test.ts +++ b/packages/core/test/api/stateful/signUp.test.ts @@ -1,42 +1,9 @@ -import { describe, test, expect, beforeEach, vi, afterEach } 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) -}) - -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..728d5b6d 100644 --- a/packages/core/test/api/stateful/updateSession.test.ts +++ b/packages/core/test/api/stateful/updateSession.test.ts @@ -1,43 +1,10 @@ -import { describe, test, expect, beforeEach, vi, afterEach } 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) -}) - -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 98% rename from packages/core/test/api/getAccessToken.test.ts rename to packages/core/test/api/stateless/getAccessToken.test.ts index 71d3e81b..3ecfc6d0 100644 --- a/packages/core/test/api/getAccessToken.test.ts +++ b/packages/core/test/api/stateless/getAccessToken.test.ts @@ -1,18 +1,10 @@ -import { describe, test, expect, vi, beforeEach, afterEach } 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) -}) - -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..d683d383 100644 --- a/packages/core/test/api/getProviderTokens.test.ts +++ b/packages/core/test/api/stateless/getProviderTokens.test.ts @@ -1,20 +1,10 @@ -import { describe, test, expect, vi, beforeEach, afterEach } 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) -}) - -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..c221fd53 100644 --- a/packages/core/test/api/isProviderConnected.test.ts +++ b/packages/core/test/api/stateless/isProviderConnected.test.ts @@ -1,15 +1,7 @@ -import { describe, test, expect, vi, beforeEach, afterEach } 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) -}) - -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..83e94a20 100644 --- a/packages/core/test/api/refreshUserInfo.test.ts +++ b/packages/core/test/api/stateless/refreshUserInfo.test.ts @@ -1,41 +1,9 @@ -import { describe, test, expect, vi, beforeEach, afterEach } 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) -}) - -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..61b52678 100644 --- a/packages/core/test/api/revokeToken.test.ts +++ b/packages/core/test/api/stateless/revokeToken.test.ts @@ -1,41 +1,8 @@ -import { describe, test, expect, vi, beforeEach, afterEach } 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) -}) - -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 85% rename from packages/core/test/api/signIn.test.ts rename to packages/core/test/api/stateless/signIn.test.ts index 85ccd759..1ccbf944 100644 --- a/packages/core/test/api/signIn.test.ts +++ b/packages/core/test/api/stateless/signIn.test.ts @@ -1,39 +1,8 @@ -import { describe, test, expect, vi, beforeEach, afterEach } 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) -}) - -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 87% rename from packages/core/test/api/signInCredentials.test.ts rename to packages/core/test/api/stateless/signInCredentials.test.ts index 691b1b16..b85ad99e 100644 --- a/packages/core/test/api/signInCredentials.test.ts +++ b/packages/core/test/api/stateless/signInCredentials.test.ts @@ -1,40 +1,9 @@ -import { describe, test, expect, beforeEach, afterEach, 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) -}) - -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 95% rename from packages/core/test/api/signOut.test.ts rename to packages/core/test/api/stateless/signOut.test.ts index 3e614e2f..f19816bb 100644 --- a/packages/core/test/api/signOut.test.ts +++ b/packages/core/test/api/stateless/signOut.test.ts @@ -1,16 +1,8 @@ -import { afterEach, 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) -}) - -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 86% rename from packages/core/test/api/signUp.test.ts rename to packages/core/test/api/stateless/signUp.test.ts index ec36fcb9..a6c4af64 100644 --- a/packages/core/test/api/signUp.test.ts +++ b/packages/core/test/api/stateless/signUp.test.ts @@ -1,17 +1,9 @@ -import { describe, test, expect, beforeEach, vi, afterEach } 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 type { User } from "@/index.ts" import { createCSRF } from "@/shared/crypto.ts" - -beforeEach(() => { - vi.stubEnv("BASE_URL", undefined) -}) - -afterEach(() => { - vi.unstubAllEnvs() -}) +import type { User } from "@/index.ts" const payload = { name: "johndoe", @@ -20,29 +12,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..41b377b3 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, vi } from "vitest" import { z } from "zod/v4" import { createAuth } from "@/createAuth.ts" import { api, jose, sessionPayload } from "@test/presets.ts" @@ -6,37 +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) -}) - -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..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" @@ -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/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/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..2b40b403 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", "./test/setup/actions.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"), + }, + }, + }, + ], }, })