From 4f9bb1dd8eeb16212936820e859e67e3c1316960 Mon Sep 17 00:00:00 2001 From: Jonathan Haines Date: Fri, 28 Mar 2025 20:50:19 +1100 Subject: [PATCH] test: move tests to src directory (#1075) * test(react-renderer): move tests to src directory * test: move tests to src directory * test: ensure vitest-pool-workers is installed at the root --- package.json | 1 + .../ajv-validator/{test => src}/index.test.ts | 4 +- packages/auth-js/{test => src}/index.test.ts | 4 +- packages/casbin/{test => src}/index.test.ts | 4 +- .../{test => src}/index.test.ts | 2 +- packages/cloudflare-access/src/index.test.ts | 2 +- .../{test => src}/common.test.ts | 2 +- .../{test => src}/hook.test.ts | 2 +- .../{test => src}/valibot.test.ts | 2 +- .../{test => src}/yup.test.ts | 2 +- .../{test => src}/zod.test.ts | 2 +- .../{test => src}/index.test.ts | 2 +- .../{test => src/transpilers}/node.test.ts | 2 +- .../firebase-auth/{test => src}/index.test.ts | 4 +- packages/hello/src/index.test.ts | 2 +- packages/medley-router/src/index.test.ts | 2 +- .../{test/handlers.ts => mocks.ts} | 41 ++++++---- .../{test => src}/index.test.ts | 74 +++++++++---------- packages/oidc-auth/src/index.test.ts | 25 ++++--- packages/otel/src/index.test.ts | 2 +- .../{test => src}/react-renderer.test.tsx | 2 +- .../{test => src}/__schemas__/arktype.ts | 0 .../{test => src}/__schemas__/valibot.ts | 0 .../{test => src}/__schemas__/zod.ts | 0 .../{test => src}/index.test.ts | 2 +- .../{test => src}/index.test.ts | 2 +- .../swagger-ui/{test => src}/index.test.ts | 2 +- .../{test => src}/option-renderer.test.ts | 30 +++----- .../{test => src}/remote-assets.test.ts | 2 +- packages/trpc-server/src/context.test.ts | 2 +- packages/trpc-server/src/index.test.ts | 2 +- packages/tsyringe/src/index.test.ts | 2 +- .../{test => src}/createRoute.test.ts | 2 +- .../{test => src}/handler.test-d.ts | 4 +- .../zod-openapi/{test => src}/index.test-d.ts | 4 +- .../zod-openapi/{test => src}/index.test.ts | 9 +-- .../zod-validator/{test => src}/index.test.ts | 2 +- yarn.lock | 1 + 38 files changed, 129 insertions(+), 120 deletions(-) rename packages/ajv-validator/{test => src}/index.test.ts (98%) rename packages/auth-js/{test => src}/index.test.ts (99%) rename packages/casbin/{test => src}/index.test.ts (99%) rename packages/class-validator/{test => src}/index.test.ts (99%) rename packages/conform-validator/{test => src}/common.test.ts (96%) rename packages/conform-validator/{test => src}/hook.test.ts (98%) rename packages/conform-validator/{test => src}/valibot.test.ts (98%) rename packages/conform-validator/{test => src}/yup.test.ts (98%) rename packages/conform-validator/{test => src}/zod.test.ts (98%) rename packages/effect-validator/{test => src}/index.test.ts (98%) rename packages/esbuild-transpiler/{test => src/transpilers}/node.test.ts (97%) rename packages/firebase-auth/{test => src}/index.test.ts (99%) rename packages/oauth-providers/{test/handlers.ts => mocks.ts} (95%) rename packages/oauth-providers/{test => src}/index.test.ts (95%) rename packages/react-renderer/{test => src}/react-renderer.test.tsx (98%) rename packages/standard-validator/{test => src}/__schemas__/arktype.ts (100%) rename packages/standard-validator/{test => src}/__schemas__/valibot.ts (100%) rename packages/standard-validator/{test => src}/__schemas__/zod.ts (100%) rename packages/standard-validator/{test => src}/index.test.ts (99%) rename packages/swagger-editor/{test => src}/index.test.ts (95%) rename packages/swagger-ui/{test => src}/index.test.ts (99%) rename packages/swagger-ui/{test => src}/option-renderer.test.ts (92%) rename packages/swagger-ui/{test => src}/remote-assets.test.ts (93%) rename packages/zod-openapi/{test => src}/createRoute.test.ts (96%) rename packages/zod-openapi/{test => src}/handler.test-d.ts (98%) rename packages/zod-openapi/{test => src}/index.test-d.ts (98%) rename packages/zod-openapi/{test => src}/index.test.ts (99%) rename packages/zod-validator/{test => src}/index.test.ts (99%) diff --git a/package.json b/package.json index b2d954e0..0d792a25 100644 --- a/package.json +++ b/package.json @@ -60,6 +60,7 @@ "devDependencies": { "@changesets/changelog-github": "^0.4.8", "@changesets/cli": "^2.26.0", + "@cloudflare/vitest-pool-workers": "^0.7.8", "@cloudflare/workers-types": "^4.20230307.0", "@ryoppippi/unplugin-typia": "^1.2.0", "@types/node": "^20.14.8", diff --git a/packages/ajv-validator/test/index.test.ts b/packages/ajv-validator/src/index.test.ts similarity index 98% rename from packages/ajv-validator/test/index.test.ts rename to packages/ajv-validator/src/index.test.ts index 9ca834b9..81af94a1 100644 --- a/packages/ajv-validator/test/index.test.ts +++ b/packages/ajv-validator/src/index.test.ts @@ -1,7 +1,7 @@ import type { JSONSchemaType, type ErrorObject } from 'ajv' import { Hono } from 'hono' import type { Equal, Expect } from 'hono/utils/types' -import { ajvValidator } from '../src' +import { ajvValidator } from '.' type ExtractSchema = T extends Hono ? S : never @@ -193,7 +193,7 @@ describe('With Hook', () => { { keyword: 'required', instancePath: '', - message: 'must have required property \'title\'', + message: "must have required property 'title'", }, ]) }) diff --git a/packages/auth-js/test/index.test.ts b/packages/auth-js/src/index.test.ts similarity index 99% rename from packages/auth-js/test/index.test.ts rename to packages/auth-js/src/index.test.ts index a343d2d3..cfd82224 100644 --- a/packages/auth-js/test/index.test.ts +++ b/packages/auth-js/src/index.test.ts @@ -3,8 +3,8 @@ import type { Adapter } from '@auth/core/adapters' import Credentials from '@auth/core/providers/credentials' import { Hono } from 'hono' import { describe, expect, it, vi } from 'vitest' -import type { AuthConfig } from '../src' -import { authHandler, verifyAuth, initAuthConfig, reqWithEnvUrl } from '../src' +import type { AuthConfig } from '.' +import { authHandler, verifyAuth, initAuthConfig, reqWithEnvUrl } from '.' describe('Config', () => { it('Should return 500 if AUTH_SECRET is missing', async () => { diff --git a/packages/casbin/test/index.test.ts b/packages/casbin/src/index.test.ts similarity index 99% rename from packages/casbin/test/index.test.ts rename to packages/casbin/src/index.test.ts index b3841192..22bf1683 100644 --- a/packages/casbin/test/index.test.ts +++ b/packages/casbin/src/index.test.ts @@ -3,8 +3,8 @@ import { Hono } from 'hono' import { basicAuth } from 'hono/basic-auth' import { jwt, sign } from 'hono/jwt' import { describe, it, expect } from 'vitest' -import { casbin } from '../src' -import { basicAuthorizer, jwtAuthorizer } from '../src/helper' +import { basicAuthorizer, jwtAuthorizer } from './helper' +import { casbin } from '.' describe('Casbin Middleware Tests', () => { describe('BasicAuthorizer', () => { diff --git a/packages/class-validator/test/index.test.ts b/packages/class-validator/src/index.test.ts similarity index 99% rename from packages/class-validator/test/index.test.ts rename to packages/class-validator/src/index.test.ts index 4fce5b1c..9025fc3c 100644 --- a/packages/class-validator/test/index.test.ts +++ b/packages/class-validator/src/index.test.ts @@ -4,7 +4,7 @@ import { IsInt, IsString, ValidateNested } from 'class-validator' import { Hono } from 'hono' import type { ExtractSchema } from 'hono/types' import type { Equal, Expect } from 'hono/utils/types' -import { classValidator } from '../src' +import { classValidator } from '.' describe('Basic', () => { const app = new Hono() diff --git a/packages/cloudflare-access/src/index.test.ts b/packages/cloudflare-access/src/index.test.ts index 80264d3c..c51e65d4 100644 --- a/packages/cloudflare-access/src/index.test.ts +++ b/packages/cloudflare-access/src/index.test.ts @@ -3,7 +3,7 @@ import { describe, expect, it, vi } from 'vitest' import crypto from 'crypto' import { promisify } from 'util' -import { cloudflareAccess } from '../src' +import { cloudflareAccess } from '.' const generateKeyPair = promisify(crypto.generateKeyPair) diff --git a/packages/conform-validator/test/common.test.ts b/packages/conform-validator/src/common.test.ts similarity index 96% rename from packages/conform-validator/test/common.test.ts rename to packages/conform-validator/src/common.test.ts index a41b184d..149c19b6 100644 --- a/packages/conform-validator/test/common.test.ts +++ b/packages/conform-validator/src/common.test.ts @@ -1,7 +1,7 @@ import { parseWithZod } from '@conform-to/zod' import { Hono } from 'hono' import { z } from 'zod' -import { conformValidator } from '../src' +import { conformValidator } from '.' describe('Validate common processing', () => { const app = new Hono() diff --git a/packages/conform-validator/test/hook.test.ts b/packages/conform-validator/src/hook.test.ts similarity index 98% rename from packages/conform-validator/test/hook.test.ts rename to packages/conform-validator/src/hook.test.ts index 4dfcc915..459f96d2 100644 --- a/packages/conform-validator/test/hook.test.ts +++ b/packages/conform-validator/src/hook.test.ts @@ -3,7 +3,7 @@ import { Hono } from 'hono' import { hc } from 'hono/client' import { vi } from 'vitest' import * as z from 'zod' -import { conformValidator } from '../src' +import { conformValidator } from '.' describe('Validate the hook option processing', () => { const app = new Hono() diff --git a/packages/conform-validator/test/valibot.test.ts b/packages/conform-validator/src/valibot.test.ts similarity index 98% rename from packages/conform-validator/test/valibot.test.ts rename to packages/conform-validator/src/valibot.test.ts index 324cb15e..faed1f74 100644 --- a/packages/conform-validator/test/valibot.test.ts +++ b/packages/conform-validator/src/valibot.test.ts @@ -5,7 +5,7 @@ import type { ExtractSchema, ParsedFormValue } from 'hono/types' import type { StatusCode } from 'hono/utils/http-status' import type { Equal, Expect } from 'hono/utils/types' import * as v from 'valibot' -import { conformValidator } from '../src' +import { conformValidator } from '.' describe('Validate requests using a Valibot schema', () => { const app = new Hono() diff --git a/packages/conform-validator/test/yup.test.ts b/packages/conform-validator/src/yup.test.ts similarity index 98% rename from packages/conform-validator/test/yup.test.ts rename to packages/conform-validator/src/yup.test.ts index e83f9c8a..e17243b3 100644 --- a/packages/conform-validator/test/yup.test.ts +++ b/packages/conform-validator/src/yup.test.ts @@ -5,7 +5,7 @@ import type { ExtractSchema, ParsedFormValue } from 'hono/types' import type { StatusCode } from 'hono/utils/http-status' import type { Equal, Expect } from 'hono/utils/types' import * as y from 'yup' -import { conformValidator } from '../src' +import { conformValidator } from '.' describe('Validate requests using a Yup schema', () => { const app = new Hono() diff --git a/packages/conform-validator/test/zod.test.ts b/packages/conform-validator/src/zod.test.ts similarity index 98% rename from packages/conform-validator/test/zod.test.ts rename to packages/conform-validator/src/zod.test.ts index f46d536d..d8a0ee5b 100644 --- a/packages/conform-validator/test/zod.test.ts +++ b/packages/conform-validator/src/zod.test.ts @@ -5,7 +5,7 @@ import type { ExtractSchema, ParsedFormValue } from 'hono/types' import type { StatusCode } from 'hono/utils/http-status' import type { Equal, Expect } from 'hono/utils/types' import * as z from 'zod' -import { conformValidator } from '../src' +import { conformValidator } from '.' describe('Validate requests using a Zod schema', () => { const app = new Hono() diff --git a/packages/effect-validator/test/index.test.ts b/packages/effect-validator/src/index.test.ts similarity index 98% rename from packages/effect-validator/test/index.test.ts rename to packages/effect-validator/src/index.test.ts index fd762264..d2e3bedd 100644 --- a/packages/effect-validator/test/index.test.ts +++ b/packages/effect-validator/src/index.test.ts @@ -2,7 +2,7 @@ import { Schema as S } from 'effect' import { Hono } from 'hono' import type { StatusCode } from 'hono/utils/http-status' import type { Equal, Expect } from 'hono/utils/types' -import { effectValidator } from '../src' +import { effectValidator } from '.' // eslint-disable-next-line @typescript-eslint/no-unused-vars type ExtractSchema = T extends Hono ? S : never diff --git a/packages/esbuild-transpiler/test/node.test.ts b/packages/esbuild-transpiler/src/transpilers/node.test.ts similarity index 97% rename from packages/esbuild-transpiler/test/node.test.ts rename to packages/esbuild-transpiler/src/transpilers/node.test.ts index df883cbe..90356f6f 100644 --- a/packages/esbuild-transpiler/test/node.test.ts +++ b/packages/esbuild-transpiler/src/transpilers/node.test.ts @@ -1,6 +1,6 @@ import { Hono } from 'hono' import { describe, it, expect } from 'vitest' -import { esbuildTranspiler } from '../src/transpilers/node' +import { esbuildTranspiler } from './node' const TS = 'function add(a: number, b: number) { return a + b; }' const BAD = 'function { !!! !@#$ add(a: INT) return a + b + c; }' diff --git a/packages/firebase-auth/test/index.test.ts b/packages/firebase-auth/src/index.test.ts similarity index 99% rename from packages/firebase-auth/test/index.test.ts rename to packages/firebase-auth/src/index.test.ts index 79267de7..d2e7a94c 100644 --- a/packages/firebase-auth/test/index.test.ts +++ b/packages/firebase-auth/src/index.test.ts @@ -6,8 +6,8 @@ import { setCookie } from 'hono/cookie' import { HTTPException } from 'hono/http-exception' import { Miniflare } from 'miniflare' import { describe, it, expect, beforeAll, vi } from 'vitest' -import type { VerifyFirebaseAuthEnv } from '../src' -import { verifyFirebaseAuth, getFirebaseToken, verifySessionCookieFirebaseAuth } from '../src' +import type { VerifyFirebaseAuthEnv } from '.' +import { verifyFirebaseAuth, getFirebaseToken, verifySessionCookieFirebaseAuth } from '.' describe('verifyFirebaseAuth middleware', () => { const emulatorHost = '127.0.0.1:9099' diff --git a/packages/hello/src/index.test.ts b/packages/hello/src/index.test.ts index f831779e..f4dd1ae4 100644 --- a/packages/hello/src/index.test.ts +++ b/packages/hello/src/index.test.ts @@ -1,5 +1,5 @@ import { Hono } from 'hono' -import { hello } from '../src' +import { hello } from '.' describe('Hello middleware', () => { const app = new Hono() diff --git a/packages/medley-router/src/index.test.ts b/packages/medley-router/src/index.test.ts index 98486c49..0c2d0abe 100644 --- a/packages/medley-router/src/index.test.ts +++ b/packages/medley-router/src/index.test.ts @@ -1,5 +1,5 @@ import { Hono } from 'hono' -import { MedleyRouter } from '../src' +import { MedleyRouter } from '.' describe('Basic', () => { const app = new Hono({ router: new MedleyRouter() }) diff --git a/packages/oauth-providers/test/handlers.ts b/packages/oauth-providers/mocks.ts similarity index 95% rename from packages/oauth-providers/test/handlers.ts rename to packages/oauth-providers/mocks.ts index bcde2b98..34873182 100644 --- a/packages/oauth-providers/test/handlers.ts +++ b/packages/oauth-providers/mocks.ts @@ -1,17 +1,21 @@ import type { DefaultBodyType, StrictResponse } from 'msw' import { HttpResponse, http } from 'msw' -import type { DiscordErrorResponse, DiscordTokenResponse } from '../src/providers/discord' +import type { DiscordErrorResponse, DiscordTokenResponse } from './src/providers/discord' import type { FacebookErrorResponse, FacebookTokenResponse, FacebookUser, -} from '../src/providers/facebook' -import type { GitHubErrorResponse, GitHubTokenResponse } from '../src/providers/github' -import type { GoogleErrorResponse, GoogleTokenResponse, GoogleUser } from '../src/providers/google' -import type { LinkedInErrorResponse, LinkedInTokenResponse } from '../src/providers/linkedin' -import type { TwitchErrorResponse, TwitchTokenResponse, TwitchTokenSuccess } from '../src/providers/twitch' -import type { XErrorResponse, XRevokeResponse, XTokenResponse } from '../src/providers/x' +} from './src/providers/facebook' +import type { GitHubErrorResponse, GitHubTokenResponse } from './src/providers/github' +import type { GoogleErrorResponse, GoogleTokenResponse, GoogleUser } from './src/providers/google' +import type { LinkedInErrorResponse, LinkedInTokenResponse } from './src/providers/linkedin' +import type { + TwitchErrorResponse, + TwitchTokenResponse, + TwitchTokenSuccess, +} from './src/providers/twitch' +import type { XErrorResponse, XRevokeResponse, XTokenResponse } from './src/providers/x' export const handlers = [ // Google @@ -150,7 +154,9 @@ export const handlers = [ // Twitch http.post( 'https://id.twitch.tv/oauth2/token', - async ({ request }): Promise | TwitchErrorResponse>> => { + async ({ + request, + }): Promise | TwitchErrorResponse>> => { const params = new URLSearchParams(await request.text()) const code = params.get('code') const grant_type = params.get('grant_type') @@ -174,7 +180,9 @@ export const handlers = [ const params = new URLSearchParams(await request.text()) const token = params.get('token') if (token === 'wrong-token') { - return HttpResponse.json<{ status: number; message?: string }>(twitchRevokeTokenError, { status: 400 }) + return HttpResponse.json<{ status: number; message?: string }>(twitchRevokeTokenError, { + status: 400, + }) } return HttpResponse.json(null, { status: 200 }) // Return 200 with empty body } @@ -182,17 +190,19 @@ export const handlers = [ // Twitch validate token handler http.get( 'https://id.twitch.tv/oauth2/validate', - async ({ request }): Promise> => { + async ({ + request, + }): Promise> => { const authHeader = request.headers.get('authorization') if (!authHeader || !authHeader.startsWith('Bearer ')) { return HttpResponse.json(twitchValidateError, { status: 401 }) } - + const token = authHeader.split(' ')[1] if (token === 'twitchr4nd0m4cc3sst0k3n') { return HttpResponse.json(twitchValidateSuccess) } - + return HttpResponse.json(twitchValidateError, { status: 401 }) } ), @@ -509,7 +519,8 @@ export const twitchUser = { type: '', broadcaster_type: 'partner', description: 'Supporting third-party developers building Twitch integrations', - profile_image_url: 'https://static-cdn.jtvnw.net/jtv_user_pictures/example-profile-picture.png', + profile_image_url: + 'https://static-cdn.jtvnw.net/jtv_user_pictures/example-profile-picture.png', offline_image_url: 'https://static-cdn.jtvnw.net/jtv_user_pictures/example-offline-image.png', view_count: 5980557, email: 'example@twitch.tv', @@ -540,10 +551,10 @@ export const twitchValidateSuccess = { login: 'younis', scopes: ['user:read:email', 'channel:read:subscriptions', 'bits:read'], user_id: '12345678', - expires_in: 14400 + expires_in: 14400, } export const twitchValidateError = { status: 401, - message: 'invalid access token' + message: 'invalid access token', } diff --git a/packages/oauth-providers/test/index.test.ts b/packages/oauth-providers/src/index.test.ts similarity index 95% rename from packages/oauth-providers/test/index.test.ts rename to packages/oauth-providers/src/index.test.ts index 88da9391..b63c7ce5 100644 --- a/packages/oauth-providers/test/index.test.ts +++ b/packages/oauth-providers/src/index.test.ts @@ -1,29 +1,5 @@ import { Hono } from 'hono' import { setupServer } from 'msw/node' -import type { DiscordUser } from '../src/providers/discord' -import { - discordAuth, - refreshToken as discordRefresh, - revokeToken as discordRevoke, -} from '../src/providers/discord' -import { facebookAuth } from '../src/providers/facebook' -import type { FacebookUser } from '../src/providers/facebook' -import { githubAuth } from '../src/providers/github' -import type { GitHubUser } from '../src/providers/github' -import { googleAuth } from '../src/providers/google' -import type { GoogleUser } from '../src/providers/google' -import { linkedinAuth } from '../src/providers/linkedin' -import type { LinkedInUser } from '../src/providers/linkedin' -import type { TwitchUser } from '../src/providers/twitch' -import { - twitchAuth, - refreshToken as twitchRefresh, - revokeToken as twitchRevoke, - validateToken as twitchValidate -} from '../src/providers/twitch' -import type { XUser } from '../src/providers/x' -import { refreshToken, revokeToken, xAuth } from '../src/providers/x' -import type { Token } from '../src/types' import { discordCodeError, discordRefreshToken, @@ -57,7 +33,31 @@ import { twitchUser, twitchValidateSuccess, twitchValidateError, -} from './handlers' +} from '../mocks' +import type { DiscordUser } from './providers/discord' +import { + discordAuth, + refreshToken as discordRefresh, + revokeToken as discordRevoke, +} from './providers/discord' +import { facebookAuth } from './providers/facebook' +import type { FacebookUser } from './providers/facebook' +import { githubAuth } from './providers/github' +import type { GitHubUser } from './providers/github' +import { googleAuth } from './providers/google' +import type { GoogleUser } from './providers/google' +import { linkedinAuth } from './providers/linkedin' +import type { LinkedInUser } from './providers/linkedin' +import type { TwitchUser } from './providers/twitch' +import { + twitchAuth, + refreshToken as twitchRefresh, + revokeToken as twitchRevoke, + validateToken as twitchValidate, +} from './providers/twitch' +import type { XUser } from './providers/x' +import { refreshToken, revokeToken, xAuth } from './providers/x' +import type { Token } from './types' const server = setupServer(...handlers) server.listen() @@ -405,11 +405,7 @@ describe('OAuth Middleware', () => { }) }) app.get('/twitch/refresh', async (c) => { - const response = await twitchRefresh( - client_id, - client_secret, - 'twitchr4nd0mr3fr3sht0k3n' - ) + const response = await twitchRefresh(client_id, client_secret, 'twitchr4nd0mr3fr3sht0k3n') return c.json(response) }) app.get('/twitch/refresh/error', async (c) => { @@ -858,14 +854,14 @@ describe('OAuth Middleware', () => { }) describe('twitchAuth middleware', () => { - it('Should work with custom state', async () => { - const res = await app.request('/twitch-custom-state') - expect(res).not.toBeNull() - expect(res.status).toBe(302) - const redirectLocation = res.headers.get('location')! - const redirectUrl = new URL(redirectLocation) - expect(redirectUrl.searchParams.get('state')).toBe('test-state') - }) + it('Should work with custom state', async () => { + const res = await app.request('/twitch-custom-state') + expect(res).not.toBeNull() + expect(res.status).toBe(302) + const redirectLocation = res.headers.get('location')! + const redirectUrl = new URL(redirectLocation) + expect(redirectUrl.searchParams.get('state')).toBe('test-state') + }) }) describe('twitchAuth middleware', () => { @@ -970,7 +966,7 @@ describe('OAuth Middleware', () => { const res = await twitchValidate('twitchr4nd0m4cc3sst0k3n') expect(res).toEqual(twitchValidateSuccess) }) - + it('Should throw error for invalid token', async () => { const res = twitchValidate('invalid-token') await expect(res).rejects.toThrow(twitchValidateError.message) diff --git a/packages/oidc-auth/src/index.test.ts b/packages/oidc-auth/src/index.test.ts index 6573cb7d..a8875216 100644 --- a/packages/oidc-auth/src/index.test.ts +++ b/packages/oidc-auth/src/index.test.ts @@ -157,7 +157,14 @@ vi.mock(import('oauth4webapi'), async (importOriginal) => { } }) -const { oidcAuthMiddleware, getAuth, processOAuthCallback, revokeSession, initOidcAuthMiddleware, getClient } = await import('../src') +const { + oidcAuthMiddleware, + getAuth, + processOAuthCallback, + revokeSession, + initOidcAuthMiddleware, + getClient, +} = await import('.') const app = new Hono() app.get('/logout', async (c) => { @@ -516,9 +523,7 @@ describe('processOAuthCallback()', () => { expect(res).not.toBeNull() expect(res.status).toBe(302) expect(res.headers.get('set-cookie')).toMatch( - new RegExp( - `${MOCK_COOKIE_NAME}=[^;]+; Path=${defaultOidcAuthCookiePath}; HttpOnly; Secure` - ) + new RegExp(`${MOCK_COOKIE_NAME}=[^;]+; Path=${defaultOidcAuthCookiePath}; HttpOnly; Secure`) ) }) test('Should return an error if the state parameter does not match', async () => { @@ -600,16 +605,18 @@ describe('initOidcAuthMiddleware()', () => { const CUSTOM_OIDC_CLIENT_ID = 'custom-client-id' const CUSTOM_OIDC_CLIENT_SECRET = 'custom-client-secret' const app = new Hono() - app.use(initOidcAuthMiddleware({ - OIDC_CLIENT_ID: CUSTOM_OIDC_CLIENT_ID, - OIDC_CLIENT_SECRET: CUSTOM_OIDC_CLIENT_SECRET - })) + app.use( + initOidcAuthMiddleware({ + OIDC_CLIENT_ID: CUSTOM_OIDC_CLIENT_ID, + OIDC_CLIENT_SECRET: CUSTOM_OIDC_CLIENT_SECRET, + }) + ) app.use(async (c) => { client = getClient(c) return c.text('finished') }) const req = new Request('http://localhost/', { - method: 'GET' + method: 'GET', }) const res = await app.request(req, {}, {}) expect(res).not.toBeNull() diff --git a/packages/otel/src/index.test.ts b/packages/otel/src/index.test.ts index 52123d30..7f73cbab 100644 --- a/packages/otel/src/index.test.ts +++ b/packages/otel/src/index.test.ts @@ -9,7 +9,7 @@ import { ATTR_HTTP_ROUTE, } from '@opentelemetry/semantic-conventions' import { Hono } from 'hono' -import { otel } from '../src' +import { otel } from '.' describe('OpenTelemetry middleware', () => { const app = new Hono() diff --git a/packages/react-renderer/test/react-renderer.test.tsx b/packages/react-renderer/src/react-renderer.test.tsx similarity index 98% rename from packages/react-renderer/test/react-renderer.test.tsx rename to packages/react-renderer/src/react-renderer.test.tsx index 81a649bb..bafa7768 100644 --- a/packages/react-renderer/test/react-renderer.test.tsx +++ b/packages/react-renderer/src/react-renderer.test.tsx @@ -1,6 +1,6 @@ import { Hono } from 'hono' -import { reactRenderer, useRequestContext } from '../src/react-renderer' +import { reactRenderer, useRequestContext } from '.' const RequestUrl = () => { const c = useRequestContext() diff --git a/packages/standard-validator/test/__schemas__/arktype.ts b/packages/standard-validator/src/__schemas__/arktype.ts similarity index 100% rename from packages/standard-validator/test/__schemas__/arktype.ts rename to packages/standard-validator/src/__schemas__/arktype.ts diff --git a/packages/standard-validator/test/__schemas__/valibot.ts b/packages/standard-validator/src/__schemas__/valibot.ts similarity index 100% rename from packages/standard-validator/test/__schemas__/valibot.ts rename to packages/standard-validator/src/__schemas__/valibot.ts diff --git a/packages/standard-validator/test/__schemas__/zod.ts b/packages/standard-validator/src/__schemas__/zod.ts similarity index 100% rename from packages/standard-validator/test/__schemas__/zod.ts rename to packages/standard-validator/src/__schemas__/zod.ts diff --git a/packages/standard-validator/test/index.test.ts b/packages/standard-validator/src/index.test.ts similarity index 99% rename from packages/standard-validator/test/index.test.ts rename to packages/standard-validator/src/index.test.ts index f6849540..5cee33ff 100644 --- a/packages/standard-validator/test/index.test.ts +++ b/packages/standard-validator/src/index.test.ts @@ -2,11 +2,11 @@ import type { StandardSchemaV1 } from '@standard-schema/spec' import { Hono } from 'hono' import type { Equal, Expect, UnionToIntersection } from 'hono/utils/types' import { vi } from 'vitest' -import { sValidator } from '../src' import * as arktypeSchemas from './__schemas__/arktype' import * as valibotSchemas from './__schemas__/valibot' import * as zodSchemas from './__schemas__/zod' +import { sValidator } from '.' type ExtractSchema = T extends Hono ? S : never type MergeDiscriminatedUnion = UnionToIntersection extends infer O diff --git a/packages/swagger-editor/test/index.test.ts b/packages/swagger-editor/src/index.test.ts similarity index 95% rename from packages/swagger-editor/test/index.test.ts rename to packages/swagger-editor/src/index.test.ts index c9f79910..0c062da5 100644 --- a/packages/swagger-editor/test/index.test.ts +++ b/packages/swagger-editor/src/index.test.ts @@ -1,5 +1,5 @@ import { Hono } from 'hono' -import { swaggerEditor } from '../src' +import { swaggerEditor } from '.' describe('Swagger Editor Middleware', () => { let app: Hono diff --git a/packages/swagger-ui/test/index.test.ts b/packages/swagger-ui/src/index.test.ts similarity index 99% rename from packages/swagger-ui/test/index.test.ts rename to packages/swagger-ui/src/index.test.ts index 0549b0aa..3852e281 100644 --- a/packages/swagger-ui/test/index.test.ts +++ b/packages/swagger-ui/src/index.test.ts @@ -1,5 +1,5 @@ import { Hono } from 'hono' -import { SwaggerUI, swaggerUI } from '../src' +import { SwaggerUI, swaggerUI } from '.' describe('SwaggerUI Rendering', () => { const url = 'https://petstore3.swagger.io/api/v3/openapi.json' diff --git a/packages/swagger-ui/test/option-renderer.test.ts b/packages/swagger-ui/src/option-renderer.test.ts similarity index 92% rename from packages/swagger-ui/test/option-renderer.test.ts rename to packages/swagger-ui/src/option-renderer.test.ts index 0af5341d..abb9422e 100644 --- a/packages/swagger-ui/test/option-renderer.test.ts +++ b/packages/swagger-ui/src/option-renderer.test.ts @@ -1,7 +1,7 @@ /*eslint quotes: ["off", "single"]*/ -import type { DistSwaggerUIOptions } from '../src/swagger/renderer' -import { renderSwaggerUIOptions } from '../src/swagger/renderer' +import type { DistSwaggerUIOptions } from './swagger/renderer' +import { renderSwaggerUIOptions } from './swagger/renderer' type TestCase = [description: string, config: DistSwaggerUIOptions, expected: string] @@ -189,29 +189,23 @@ describe('SwaggerUIOption Rendering', () => { ], [ 'filters out properties not in RENDER_TYPE_MAP', - { url: baseUrl, title: 'My API', customProperty: 'value' } as DistSwaggerUIOptions & { title: string }, - `url: '${baseUrl}'` - ], - [ - 'filters out undefined values', - { url: baseUrl, layout: undefined }, - `url: '${baseUrl}'` + { url: baseUrl, title: 'My API', customProperty: 'value' } as DistSwaggerUIOptions & { + title: string + }, + `url: '${baseUrl}'`, ], + ['filters out undefined values', { url: baseUrl, layout: undefined }, `url: '${baseUrl}'`], [ 'handles multiple invalid properties gracefully', - { - url: baseUrl, + { + url: baseUrl, title: 'My API', // Not in RENDER_TYPE_MAP but used in HTML presets: null as unknown, // Invalid type - withCredentials: true + withCredentials: true, } as DistSwaggerUIOptions & { title: string }, - `url: '${baseUrl}',withCredentials: true` + `url: '${baseUrl}',withCredentials: true`, ], - [ - 'handles empty input gracefully', - { url: '' }, - `url: ''` - ] + ['handles empty input gracefully', { url: '' }, `url: ''`], ] it.each(commonTests)('renders correctly with %s', (_, input, expected) => { diff --git a/packages/swagger-ui/test/remote-assets.test.ts b/packages/swagger-ui/src/remote-assets.test.ts similarity index 93% rename from packages/swagger-ui/test/remote-assets.test.ts rename to packages/swagger-ui/src/remote-assets.test.ts index 5daddd33..d091b8d4 100644 --- a/packages/swagger-ui/test/remote-assets.test.ts +++ b/packages/swagger-ui/src/remote-assets.test.ts @@ -1,4 +1,4 @@ -import { remoteAssets } from '../src/swagger/resource' +import { remoteAssets } from './swagger/resource' describe('remoteAssets', () => { it('should return default assets when no version is provided', () => { diff --git a/packages/trpc-server/src/context.test.ts b/packages/trpc-server/src/context.test.ts index c556db97..02911133 100644 --- a/packages/trpc-server/src/context.test.ts +++ b/packages/trpc-server/src/context.test.ts @@ -1,6 +1,6 @@ import { initTRPC } from '@trpc/server' import { Hono } from 'hono' -import { trpcServer } from '../src' +import { trpcServer } from '.' describe('tRPC Adapter Middleware passing synchronous Context', () => { type Env = { diff --git a/packages/trpc-server/src/index.test.ts b/packages/trpc-server/src/index.test.ts index 99e7f276..89e64612 100644 --- a/packages/trpc-server/src/index.test.ts +++ b/packages/trpc-server/src/index.test.ts @@ -1,7 +1,7 @@ import { initTRPC } from '@trpc/server' import { Hono } from 'hono' import { z } from 'zod' -import { trpcServer } from '../src' +import { trpcServer } from '.' describe('tRPC Adapter Middleware', () => { const t = initTRPC.create() diff --git a/packages/tsyringe/src/index.test.ts b/packages/tsyringe/src/index.test.ts index 0bea2687..9c7ba53b 100644 --- a/packages/tsyringe/src/index.test.ts +++ b/packages/tsyringe/src/index.test.ts @@ -1,7 +1,7 @@ import 'reflect-metadata' import { Hono } from 'hono' import { injectable, inject } from 'tsyringe' -import { tsyringe } from '../src' +import { tsyringe } from '.' class Config { constructor(public readonly tenantName: string) {} diff --git a/packages/zod-openapi/test/createRoute.test.ts b/packages/zod-openapi/src/createRoute.test.ts similarity index 96% rename from packages/zod-openapi/test/createRoute.test.ts rename to packages/zod-openapi/src/createRoute.test.ts index a0445232..d54dd4b8 100644 --- a/packages/zod-openapi/test/createRoute.test.ts +++ b/packages/zod-openapi/src/createRoute.test.ts @@ -1,5 +1,5 @@ import { describe, it, expect, expectTypeOf } from 'vitest' -import { createRoute, z } from '../src/index' +import { createRoute, z } from '.' describe('createRoute', () => { it.each([ diff --git a/packages/zod-openapi/test/handler.test-d.ts b/packages/zod-openapi/src/handler.test-d.ts similarity index 98% rename from packages/zod-openapi/test/handler.test-d.ts rename to packages/zod-openapi/src/handler.test-d.ts index c79843e3..4ab7bef4 100644 --- a/packages/zod-openapi/test/handler.test-d.ts +++ b/packages/zod-openapi/src/handler.test-d.ts @@ -1,8 +1,8 @@ import type { MiddlewareHandler } from 'hono' import type { Equal, Expect } from 'hono/utils/types' -import type { MiddlewareToHandlerType, OfHandlerType, RouteHandler } from '../src' +import type { MiddlewareToHandlerType, OfHandlerType, RouteHandler } from '.' -import { OpenAPIHono, createRoute, z } from '../src' +import { OpenAPIHono, createRoute, z } from '.' describe('supports async handler', () => { const route = createRoute({ diff --git a/packages/zod-openapi/test/index.test-d.ts b/packages/zod-openapi/src/index.test-d.ts similarity index 98% rename from packages/zod-openapi/test/index.test-d.ts rename to packages/zod-openapi/src/index.test-d.ts index ec9354ef..349ed13e 100644 --- a/packages/zod-openapi/test/index.test-d.ts +++ b/packages/zod-openapi/src/index.test-d.ts @@ -2,8 +2,8 @@ import { createMiddleware } from 'hono/factory' import type { ExtractSchema } from 'hono/types' import type { Equal, Expect } from 'hono/utils/types' import { assertType, describe, it } from 'vitest' -import { OpenAPIHono, createRoute, z } from '../src/index' -import type { MiddlewareToHandlerType, OfHandlerType } from '../src/index' +import { OpenAPIHono, createRoute, z } from './index' +import type { MiddlewareToHandlerType, OfHandlerType } from './index' describe('Types', () => { const RequestSchema = z.object({ diff --git a/packages/zod-openapi/test/index.test.ts b/packages/zod-openapi/src/index.test.ts similarity index 99% rename from packages/zod-openapi/test/index.test.ts rename to packages/zod-openapi/src/index.test.ts index 3d056832..67dd3ad3 100644 --- a/packages/zod-openapi/test/index.test.ts +++ b/packages/zod-openapi/src/index.test.ts @@ -7,8 +7,8 @@ import type { ServerErrorStatusCode } from 'hono/utils/http-status' import type { Equal, Expect } from 'hono/utils/types' import { describe, expect, expectTypeOf, it, vi } from 'vitest' import { stringify } from 'yaml' -import type { RouteConfigToTypedResponse } from '../src/index' -import { OpenAPIHono, createRoute, z } from '../src/index' +import type { RouteConfigToTypedResponse } from './index' +import { OpenAPIHono, createRoute, z } from './index' describe('Constructor', () => { it('Should not require init object', () => { @@ -1073,7 +1073,6 @@ describe('Multi params', () => { }, responses: { 200: { - // eslint-disable-next-line quotes description: "Get the user's tag", }, }, @@ -1293,7 +1292,7 @@ describe('basePath()', () => { return c.json({ param1: c.req.param('param1'), param2: c.req.param('param2'), - param3: c.req.param('param3') + param3: c.req.param('param3'), }) } ) @@ -1318,7 +1317,7 @@ describe('basePath()', () => { expect(await res.json()).toEqual({ param1: 'foo', param2: 'bar', - param3: 'baz' + param3: 'baz', }) }) }) diff --git a/packages/zod-validator/test/index.test.ts b/packages/zod-validator/src/index.test.ts similarity index 99% rename from packages/zod-validator/test/index.test.ts rename to packages/zod-validator/src/index.test.ts index 390862dd..5ab21389 100644 --- a/packages/zod-validator/test/index.test.ts +++ b/packages/zod-validator/src/index.test.ts @@ -2,7 +2,7 @@ import { Hono } from 'hono' import type { Equal, Expect } from 'hono/utils/types' import { vi } from 'vitest' import { z } from 'zod' -import { zValidator } from '../src' +import { zValidator } from '.' // eslint-disable-next-line @typescript-eslint/no-unused-vars type ExtractSchema<T> = T extends Hono<infer _, infer S> ? S : never diff --git a/yarn.lock b/yarn.lock index 19a699c9..3bd2bbe4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8612,6 +8612,7 @@ __metadata: dependencies: "@changesets/changelog-github": "npm:^0.4.8" "@changesets/cli": "npm:^2.26.0" + "@cloudflare/vitest-pool-workers": "npm:^0.7.8" "@cloudflare/workers-types": "npm:^4.20230307.0" "@ryoppippi/unplugin-typia": "npm:^1.2.0" "@types/node": "npm:^20.14.8"