@@ -636,6 +636,33 @@ Deno.test("getEnhancedHandler with a faulty ctx.request.body", async () => {
636636 spyParseOakRequestBody . restore ( ) ;
637637} ) ;
638638
639+ Deno . test ( "getEnhancedHandler with a faulty request method and content-type combination" , async ( ) => {
640+ const spyParseOakRequestBody = spy ( _internal , "parseOakReqBody" ) ;
641+ function testHandler ( ) {
642+ return "weird.method.content-type.combination.handled" ;
643+ }
644+ // deno-lint-ignore ban-types
645+ const enhancedHandler : Function = _internal . getEnhancedHandler ( testHandler ) ;
646+ const ctx = createMockContext ( {
647+ method : "GET" ,
648+ headers : [ [ "Content-Type" , "application/json" ] ] ,
649+ } ) ;
650+ Object . defineProperty ( ctx . request , "body" , {
651+ get : ( ) => createMockRequestBody ( "json" , "Unexpected end of JSON input" ) ,
652+ } ) ;
653+ const spyCtxThrow = spy ( ) ;
654+ Object . defineProperty ( ctx , "throw" , {
655+ value : ( errorStatus : unknown , message ?: string , props ?: unknown ) => {
656+ spyCtxThrow ( errorStatus , message , props ) ;
657+ } ,
658+ } ) ;
659+ const retVal = await enhancedHandler ( ctx ) ;
660+ assertSpyCalls ( spyCtxThrow , 0 ) ;
661+ assertSpyCalls ( spyParseOakRequestBody , 1 ) ;
662+ assertEquals ( retVal , "weird.method.content-type.combination.handled" ) ;
663+ spyParseOakRequestBody . restore ( ) ;
664+ } ) ;
665+
639666Deno . test ( "getEnhancedHandler with a faulty ctx.request.url.searchParams" , async ( ) => {
640667 const spyParseOakRequestBody = spy ( _internal , "parseOakReqBody" ) ;
641668 function testHandler ( ) {
@@ -669,7 +696,8 @@ Deno.test("getEnhancedHandler with a faulty ctx.request.url.searchParams", async
669696} ) ;
670697
671698Deno . test ( "getEnhancedHandler - declaring 4 desirable params in order A" , async ( ) => {
672- const testHandler = spy ( ( ..._rest ) => 42 ) ;
699+ // deno-lint-ignore no-explicit-any
700+ const testHandler = spy ( ( ..._rest : any [ ] ) => 42 ) ;
673701 // deno-lint-ignore ban-types
674702 const enhancedHandler : Function = _internal . getEnhancedHandler (
675703 testHandler ,
@@ -699,7 +727,8 @@ Deno.test("getEnhancedHandler - declaring 4 desirable params in order A", async
699727} ) ;
700728
701729Deno . test ( "getEnhancedHandler - declaring 4 desirable params in order B" , async ( ) => {
702- const testHandler = spy ( ( ..._rest ) => 43 ) ;
730+ // deno-lint-ignore no-explicit-any
731+ const testHandler = spy ( ( ..._rest : any [ ] ) => 43 ) ;
703732 // deno-lint-ignore ban-types
704733 const enhancedHandler : Function = _internal . getEnhancedHandler (
705734 testHandler ,
@@ -730,7 +759,8 @@ Deno.test("getEnhancedHandler - declaring 4 desirable params in order B", async
730759
731760Deno . test ( "getEnhancedHandler - declaring 5 desirable params" , async ( ) => {
732761 const spyParseOakRequestBody = spy ( _internal , "parseOakReqBody" ) ;
733- const testHandler = spy ( ( ..._rest ) => 44 ) ;
762+ // deno-lint-ignore no-explicit-any
763+ const testHandler = spy ( ( ..._rest : any [ ] ) => 44 ) ;
734764 // deno-lint-ignore ban-types
735765 const enhancedHandler : Function = _internal . getEnhancedHandler (
736766 testHandler ,
@@ -765,7 +795,8 @@ Deno.test("getEnhancedHandler - declaring 5 desirable params", async () => {
765795} ) ;
766796
767797Deno . test ( "getEnhancedHandler - declaring 3 desirable params in order A" , async ( ) => {
768- const testHandler = spy ( ( ..._rest ) => 45 ) ;
798+ // deno-lint-ignore no-explicit-any
799+ const testHandler = spy ( ( ..._rest : any [ ] ) => 45 ) ;
769800 // deno-lint-ignore ban-types
770801 const enhancedHandler : Function = _internal . getEnhancedHandler (
771802 testHandler ,
@@ -794,7 +825,8 @@ Deno.test("getEnhancedHandler - declaring 3 desirable params in order A", async
794825} ) ;
795826
796827Deno . test ( "getEnhancedHandler - declaring 3 desirable params in order B" , async ( ) => {
797- const testHandler = spy ( ( ..._rest ) => 46 ) ;
828+ // deno-lint-ignore no-explicit-any
829+ const testHandler = spy ( ( ..._rest : any [ ] ) => 46 ) ;
798830 // deno-lint-ignore ban-types
799831 const enhancedHandler : Function = _internal . getEnhancedHandler (
800832 testHandler ,
@@ -847,7 +879,10 @@ Deno.test("getEnhancedHandler - not declaring any param", async () => {
847879/**
848880 * @NOTE if/when `oak` supports such a method, better import from there instead
849881 */
850- function createMockRequestBody ( type : BodyType ) : Body {
882+ function createMockRequestBody (
883+ type : BodyType ,
884+ thrownMsgWhenParsed ?: string ,
885+ ) : Body {
851886 const buf = new Buffer ( ) ;
852887 const rs = new ReadableStream ( ) ;
853888 const retVal = new Body ( {
@@ -865,22 +900,40 @@ function createMockRequestBody(type: BodyType): Body {
865900 value : ( ) => type ,
866901 } ,
867902 json : {
868- value : ( ) => Promise . resolve ( { mock : "mock" } ) ,
903+ value : ( ) =>
904+ ! thrownMsgWhenParsed
905+ ? Promise . resolve ( { mock : "mock" } )
906+ : Promise . reject ( new Error ( thrownMsgWhenParsed ) ) ,
869907 } ,
870908 text : {
871- value : ( ) => Promise . resolve ( "mock" ) ,
909+ value : ( ) =>
910+ ! thrownMsgWhenParsed
911+ ? Promise . resolve ( "mock" )
912+ : Promise . reject ( new Error ( thrownMsgWhenParsed ) ) ,
872913 } ,
873914 blob : {
874- value : ( ) => Promise . resolve ( buf ) ,
915+ value : ( ) =>
916+ ! thrownMsgWhenParsed
917+ ? Promise . resolve ( buf )
918+ : Promise . reject ( new Error ( thrownMsgWhenParsed ) ) ,
875919 } ,
876920 form : {
877- value : ( ) => Promise . resolve ( new URLSearchParams ( { mock : "mock" } ) ) ,
921+ value : ( ) =>
922+ ! thrownMsgWhenParsed
923+ ? Promise . resolve ( new URLSearchParams ( { mock : "mock" } ) )
924+ : Promise . reject ( new Error ( thrownMsgWhenParsed ) ) ,
878925 } ,
879926 formData : {
880- value : ( ) => Promise . resolve ( new FormData ( ) ) ,
927+ value : ( ) =>
928+ ! thrownMsgWhenParsed
929+ ? Promise . resolve ( new FormData ( ) )
930+ : Promise . reject ( new Error ( thrownMsgWhenParsed ) ) ,
881931 } ,
882932 arrayBuffer : {
883- value : ( ) => Promise . resolve ( buf ) ,
933+ value : ( ) =>
934+ ! thrownMsgWhenParsed
935+ ? Promise . resolve ( buf )
936+ : Promise . reject ( new Error ( thrownMsgWhenParsed ) ) ,
884937 } ,
885938 } ) ;
886939 return retVal ;
0 commit comments