@@ -6,12 +6,15 @@ describe('middlewareRunner', () => {
66 test ( 'preserves response returned by a middleware module' , async ( ) => {
77 const app = new Hono ( ) ;
88 app . use (
9- middlewareRunner ( {
10- '/src/middleware/no-trailing-slash.ts' : async ( ) => ( {
11- default : ( ) => async ( c ) =>
12- c . redirect ( new URL ( '/about' , c . req . url ) . toString ( ) , 301 ) ,
13- } ) ,
14- } ) ,
9+ middlewareRunner (
10+ {
11+ '/src/middleware/no-trailing-slash.ts' : async ( ) => ( {
12+ default : ( ) => async ( c ) =>
13+ c . redirect ( new URL ( '/about' , c . req . url ) . toString ( ) , 301 ) ,
14+ } ) ,
15+ } ,
16+ { app } ,
17+ ) ,
1518 ) ;
1619 app . get ( '*' , ( c ) => c . text ( 'ok' ) ) ;
1720
@@ -24,17 +27,20 @@ describe('middlewareRunner', () => {
2427 test ( 'preserves response returned by an inner middleware module' , async ( ) => {
2528 const app = new Hono ( ) ;
2629 app . use (
27- middlewareRunner ( {
28- '/src/middleware/outer.ts' : async ( ) => ( {
29- default : ( ) => async ( _c , next ) => {
30- await next ( ) ;
31- } ,
32- } ) ,
33- '/src/middleware/no-trailing-slash.ts' : async ( ) => ( {
34- default : ( ) => async ( c ) =>
35- c . redirect ( new URL ( '/about' , c . req . url ) . toString ( ) , 301 ) ,
36- } ) ,
37- } ) ,
30+ middlewareRunner (
31+ {
32+ '/src/middleware/outer.ts' : async ( ) => ( {
33+ default : ( ) => async ( _c , next ) => {
34+ await next ( ) ;
35+ } ,
36+ } ) ,
37+ '/src/middleware/no-trailing-slash.ts' : async ( ) => ( {
38+ default : ( ) => async ( c ) =>
39+ c . redirect ( new URL ( '/about' , c . req . url ) . toString ( ) , 301 ) ,
40+ } ) ,
41+ } ,
42+ { app } ,
43+ ) ,
3844 ) ;
3945 app . get ( '*' , ( c ) => c . text ( 'ok' ) ) ;
4046
@@ -47,17 +53,20 @@ describe('middlewareRunner', () => {
4753 test ( 'keeps inner response even if outer middleware returns after next' , async ( ) => {
4854 const app = new Hono ( ) ;
4955 app . use (
50- middlewareRunner ( {
51- '/src/middleware/outer.ts' : async ( ) => ( {
52- default : ( ) => async ( _c , next ) => {
53- await next ( ) ;
54- return new Response ( 'outer' , { status : 202 } ) ;
55- } ,
56- } ) ,
57- '/src/middleware/inner.ts' : async ( ) => ( {
58- default : ( ) => async ( ) => new Response ( 'inner' , { status : 201 } ) ,
59- } ) ,
60- } ) ,
56+ middlewareRunner (
57+ {
58+ '/src/middleware/outer.ts' : async ( ) => ( {
59+ default : ( ) => async ( _c , next ) => {
60+ await next ( ) ;
61+ return new Response ( 'outer' , { status : 202 } ) ;
62+ } ,
63+ } ) ,
64+ '/src/middleware/inner.ts' : async ( ) => ( {
65+ default : ( ) => async ( ) => new Response ( 'inner' , { status : 201 } ) ,
66+ } ) ,
67+ } ,
68+ { app } ,
69+ ) ,
6170 ) ;
6271 app . get ( '*' , ( c ) => c . text ( 'ok' ) ) ;
6372
@@ -66,4 +75,29 @@ describe('middlewareRunner', () => {
6675 expect ( res . status ) . toBe ( 201 ) ;
6776 expect ( await res . text ( ) ) . toBe ( 'inner' ) ;
6877 } ) ;
78+
79+ test ( 'passes { app } to each middleware module factory' , async ( ) => {
80+ const app = new Hono ( ) ;
81+ let receivedApp : unknown ;
82+ app . use (
83+ middlewareRunner (
84+ {
85+ '/src/middleware/probe.ts' : async ( ) => ( {
86+ default : ( { app } ) => {
87+ receivedApp = app ;
88+ return async ( _c , next ) => {
89+ await next ( ) ;
90+ } ;
91+ } ,
92+ } ) ,
93+ } ,
94+ { app } ,
95+ ) ,
96+ ) ;
97+ app . get ( '*' , ( c ) => c . text ( 'ok' ) ) ;
98+
99+ await app . request ( 'http://example.com/' ) ;
100+
101+ expect ( receivedApp ) . toBe ( app ) ;
102+ } ) ;
69103} ) ;
0 commit comments