File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -16,11 +16,19 @@ import { HttpResponseFactory } from './response.ts'
1616import type { HttpRequest } from '../src/request.ts'
1717import type { HttpResponse } from '../src/response.ts'
1818import { HttpContext } from '../src/http_context/main.ts'
19+ import { createURL , parseRoute } from '../src/helpers.ts'
20+ import { QsParserFactory } from './qs_parser_factory.ts'
1921
2022type FactoryParameters = {
2123 request : HttpRequest
2224 response : HttpResponse
2325 logger : Logger
26+ url ?: string
27+ method ?: string
28+ route ?: {
29+ pattern : string
30+ params : Record < string , any >
31+ }
2432}
2533
2634/**
@@ -37,7 +45,21 @@ export class HttpContextFactory {
3745 * Returns the request class instance
3846 */
3947 #createRequest( ) {
40- return this . #parameters. request || new HttpRequestFactory ( ) . create ( )
48+ if ( this . #parameters. request ) {
49+ return this . #parameters. request
50+ }
51+
52+ let { url, method, route } = this . #parameters
53+ if ( route ) {
54+ url = createURL (
55+ route . pattern ,
56+ parseRoute ( route . pattern ) ,
57+ new QsParserFactory ( ) . create ( ) . stringify ,
58+ route . params
59+ )
60+ }
61+
62+ return new HttpRequestFactory ( ) . merge ( { url, method } ) . create ( )
4163 }
4264
4365 /**
Original file line number Diff line number Diff line change @@ -1573,4 +1573,24 @@ test.group('Verify signed url', () => {
15731573 hasValidSignature : false ,
15741574 } )
15751575 } )
1576+
1577+ test ( 'return request url set during factory creation' , async ( { assert } ) => {
1578+ const request = new HttpRequestFactory ( ) . merge ( { url : '/packages' } ) . create ( )
1579+ assert . equal ( request . url ( ) , '/packages' )
1580+ assert . equal ( request . request . url , '/packages' )
1581+ } )
1582+
1583+ test ( 'define request url from route' , async ( { assert } ) => {
1584+ const ctx = new HttpContextFactory ( )
1585+ . merge ( {
1586+ route : {
1587+ pattern : '/packages/:category' ,
1588+ params : { category : 'auth' } ,
1589+ } ,
1590+ } )
1591+ . create ( )
1592+
1593+ assert . equal ( ctx . request . url ( ) , '/packages/auth' )
1594+ assert . equal ( ctx . request . request . url , '/packages/auth' )
1595+ } )
15761596} )
You can’t perform that action at this time.
0 commit comments