@@ -2,12 +2,18 @@ import * as SentryCore from '@sentry/core';
22import { SDK_VERSION } from '@sentry/core' ;
33import { Hono } from 'hono' ;
44import { beforeEach , describe , expect , it , type Mock , vi } from 'vitest' ;
5+ import * as middlewareHandlers from '../../src/shared/middlewareHandlers' ;
56import { sentry } from '../../src/node/middleware' ;
67
78vi . mock ( '@sentry/node' , ( ) => ( {
89 init : vi . fn ( ) ,
910} ) ) ;
1011
12+ vi . mock ( '../../src/shared/middlewareHandlers' , ( ) => ( {
13+ requestHandler : vi . fn ( ) ,
14+ responseHandler : vi . fn ( ) ,
15+ } ) ) ;
16+
1117// eslint-disable-next-line @typescript-eslint/consistent-type-imports
1218const { init : initNodeMock } = await vi . importMock < typeof import ( '@sentry/node' ) > ( '@sentry/node' ) ;
1319
@@ -22,6 +28,8 @@ vi.mock('@sentry/core', async () => {
2228} ) ;
2329
2430const applySdkMetadataMock = SentryCore . applySdkMetadata as Mock ;
31+ const requestHandlerMock = middlewareHandlers . requestHandler as Mock ;
32+ const responseHandlerMock = middlewareHandlers . responseHandler as Mock ;
2533
2634describe ( 'Hono Vercel Middleware' , ( ) => {
2735 beforeEach ( ( ) => {
@@ -114,6 +122,18 @@ describe('Hono Vercel Middleware', () => {
114122 expect ( middleware . constructor . name ) . toBe ( 'AsyncFunction' ) ;
115123 } ) ;
116124
125+ it ( 'uses node mechanism type for response errors' , async ( ) => {
126+ const app = new Hono ( ) ;
127+ const middleware = sentry ( app , { } ) ;
128+ const context = { } as Parameters < typeof middleware > [ 0 ] ;
129+ const next = vi . fn ( async ( ) => undefined ) ;
130+
131+ await middleware ( context , next ) ;
132+
133+ expect ( requestHandlerMock ) . toHaveBeenCalledWith ( context ) ;
134+ expect ( responseHandlerMock ) . toHaveBeenCalledWith ( context , 'auto.middleware.hono.error_handler' ) ;
135+ } ) ;
136+
117137 it ( 'includes hono SDK metadata' , ( ) => {
118138 const app = new Hono ( ) ;
119139 const options = {
0 commit comments