diff --git a/capi/napi_fuzz.prg b/capi/napi_fuzz.prg new file mode 100644 index 0000000..f0811bf --- /dev/null +++ b/capi/napi_fuzz.prg @@ -0,0 +1,36 @@ +FUNCTION FN_HANDLE() + LOCAL hReq := hb_jsonDecode( FN_NAPI_REQ() ) + LOCAL cPath := hb_HGetDef( hReq, "path", "" ) + LOCAL oF := FN_REQUIRE( "/Users/charleskwon/fivenode/fivenode/fivenode/napi/test/fuzzmod" ) + LOCAL xR := NIL + LOCAL cErr := "" + LOCAL oErr + IF ! HB_ISOBJECT( oF ) + RETURN hb_jsonEncode( { "err" => FN_LASTERROR() } ) + ENDIF + BEGIN SEQUENCE + DO CASE + CASE cPath == "/big1m" + xR := oF:big( 1000000 ) + CASE cPath == "/big200k" + xR := oF:big( 200000 ) + CASE cPath == "/echo1m" + xR := oF:echo( Replicate( "y", 1000000 ) ) + CASE cPath == "/unicode" + xR := oF:unicode() + CASE cPath == "/binary" + xR := oF:binary() + OTHERWISE + xR := "noop" + ENDCASE + RECOVER USING oErr + cErr := IIF( HB_ISOBJECT( oErr ), oErr:Description, hb_CStr( oErr ) ) + END SEQUENCE + RETURN hb_jsonEncode( { ; + "status" => 200, ; + "headers" => { "Content-Type" => "application/json" }, ; + "body" => hb_jsonEncode( { ; + "type" => ValType( xR ), ; + "len" => IIF( xR == NIL, -1, Len( hb_CStr( xR ) ) ), ; + "head" => Left( hb_CStr( xR ), 30 ), ; + "err" => cErr } ) } )