@@ -25,6 +25,49 @@ Deno.test('Handler addMiddleware path prefix only applies to matching routes', a
2525 assertEquals ( await resOther . text ( ) , 'no' )
2626} )
2727
28+ Deno . test ( 'Handler maxRouteParamLength returns 414 when exceeded' , async ( ) => {
29+ const handler = new Routing . Handler ( { maxRouteParamLength : 10 } )
30+ ; (
31+ handler as unknown as { routerInstance : { add : ( m : string , p : string , d : unknown ) => void } }
32+ ) . routerInstance . add ( 'GET' , '/items/:id' , {
33+ handler : ( ctx : Core . Context ) => new Response ( ctx . param ( 'id' ) ?? '' )
34+ } )
35+ const longId = 'a' . repeat ( 50 )
36+ const res = await handler . createHandler ( ) ( new Request ( `http://localhost/items/${ longId } ` ) )
37+ assertEquals ( res . status , 414 )
38+ } )
39+
40+ Deno . test ( 'Handler maxUrlLength returns 414 when exceeded' , async ( ) => {
41+ const handler = new Routing . Handler ( { maxUrlLength : 50 } )
42+ const longPath = 'a' . repeat ( 200 )
43+ const res = await handler . createHandler ( ) ( new Request ( `http://localhost/${ longPath } ` ) )
44+ assertEquals ( res . status , 414 )
45+ } )
46+
47+ Deno . test ( 'Handler requestTimeoutMs returns 503 when exceeded' , async ( ) => {
48+ const handler = new Routing . Handler ( { requestTimeoutMs : 5 } )
49+ handler . addMiddleware ( '' , async ( ) => {
50+ await new Promise ( r => setTimeout ( r , 20 ) )
51+ return new Response ( 'late' )
52+ } )
53+ const res = await handler . createHandler ( ) ( new Request ( 'http://localhost/' ) )
54+ assertEquals ( res . status , 503 )
55+ await res . body ?. cancel ( )
56+ await new Promise ( r => setTimeout ( r , 30 ) )
57+ } )
58+
59+ Deno . test ( 'Handler viewsDir sets ctx.state.view and can render' , async ( ) => {
60+ const viewsDir = new URL ( '../fixtures/views/' , import . meta. url ) . pathname . replace ( / \/ $ / , '' )
61+ const handler = new Routing . Handler ( { viewsDir } )
62+ handler . addMiddleware ( '' , async ctx => {
63+ const engine = ctx . state [ 'view' ] as { render : ( p : string , d ?: unknown ) => Promise < string > }
64+ const html = await engine . render ( 'hello.dve' , { name : 'DX' } as Record < string , unknown > )
65+ return new Response ( html )
66+ } )
67+ const res = await handler . createHandler ( ) ( new Request ( 'http://localhost/' ) )
68+ assertEquals ( await res . text ( ) , 'Hello DX.\n' )
69+ } )
70+
2871Deno . test ( 'Handler#createHandler with worker option sets ctx.state.worker' , async ( ) => {
2972 const handler = new Routing . Handler ( {
3073 worker : { scriptURL : echoWorkerUrl , poolSize : 1 }
@@ -134,18 +177,6 @@ Deno.test(
134177 }
135178)
136179
137- Deno . test ( 'Handler requestTimeoutMs returns 503 when exceeded' , async ( ) => {
138- const handler = new Routing . Handler ( { requestTimeoutMs : 5 } )
139- handler . addMiddleware ( '' , async ( ) => {
140- await new Promise ( r => setTimeout ( r , 20 ) )
141- return new Response ( 'late' )
142- } )
143- const res = await handler . createHandler ( ) ( new Request ( 'http://localhost/' ) )
144- assertEquals ( res . status , 503 )
145- await res . body ?. cancel ( )
146- await new Promise ( r => setTimeout ( r , 30 ) )
147- } )
148-
149180Deno . test ( 'Handler#validateModule throws when method is not function' , ( ) => {
150181 const handler = new Routing . Handler ( )
151182 let thrown = false
@@ -169,15 +200,3 @@ Deno.test('Handler#validateModule throws when no HTTP method exported', () => {
169200 }
170201 assertEquals ( thrown , true )
171202} )
172-
173- Deno . test ( 'Handler viewsDir sets ctx.state.view and can render' , async ( ) => {
174- const viewsDir = new URL ( '../fixtures/views/' , import . meta. url ) . pathname . replace ( / \/ $ / , '' )
175- const handler = new Routing . Handler ( { viewsDir } )
176- handler . addMiddleware ( '' , async ctx => {
177- const engine = ctx . state [ 'view' ] as { render : ( p : string , d ?: unknown ) => Promise < string > }
178- const html = await engine . render ( 'hello.dve' , { name : 'DX' } as Record < string , unknown > )
179- return new Response ( html )
180- } )
181- const res = await handler . createHandler ( ) ( new Request ( 'http://localhost/' ) )
182- assertEquals ( await res . text ( ) , 'Hello DX.\n' )
183- } )
0 commit comments