diff --git a/node-runtime/spec/rest/rest.spec.ts b/node-runtime/spec/rest/rest.spec.ts index b9b7b2d26..1c90b53e9 100644 --- a/node-runtime/spec/rest/rest.spec.ts +++ b/node-runtime/spec/rest/rest.spec.ts @@ -246,7 +246,7 @@ describe("Rest API", () => { data: `{"val":0}`, method: "POST", path: "/obj", - result: `{"message":"Error: Value is zero ~ spec error","type":"Fatal"}`, + result: `{"message":"Value is zero ~ spec error","type":"Fatal"}`, resultHeaders: { "content-type": "application/json", }, diff --git a/node-runtime/spec/simple/api.sdkgen b/node-runtime/spec/simple/api.sdkgen index f808d2e0b..72d94b42e 100644 --- a/node-runtime/spec/simple/api.sdkgen +++ b/node-runtime/spec/simple/api.sdkgen @@ -30,3 +30,6 @@ type AllTypes { date: date datetime: datetime } + +error SomeError +fn throwsError(): void diff --git a/node-runtime/spec/simple/simple.spec.ts b/node-runtime/spec/simple/simple.spec.ts index 55338ebd0..40e154cba 100644 --- a/node-runtime/spec/simple/simple.spec.ts +++ b/node-runtime/spec/simple/simple.spec.ts @@ -27,6 +27,10 @@ api.fn.identity = async (ctx: Context & { aaa: boolean }, { types }: { types: an return types; }; +api.fn.throwsError = async (ctx: Context) => { + throw api.err.SomeError("Some message"); +}; + // ExecSync(`../../cubos/sdkgen/sdkgen ${__dirname + "/api.sdkgen"} -o ${__dirname + "/legacyNodeClient.ts"} -t typescript_nodeclient`); const { ApiClient: NodeLegacyApiClient } = require(`${__dirname}/legacyNodeClient.ts`); const nodeLegacyClient = new NodeLegacyApiClient("http://localhost:8000"); @@ -99,4 +103,11 @@ describe("Simple API", () => { expect(await nodeClient.identity(null, { types })).toEqual(types); }); + + test("Errors are passed correctly", async () => { + await expect(nodeClient.throwsError(null, {})).rejects.toMatchObject({ + message: "Some message", + type: "SomeError", + }); + }); }); diff --git a/node-runtime/src/http-server.ts b/node-runtime/src/http-server.ts index 28ccfba32..f2af229cb 100644 --- a/node-runtime/src/http-server.ts +++ b/node-runtime/src/http-server.ts @@ -887,7 +887,7 @@ export class SdkgenHttpServer { private makeResponseError(err: any): { message: string; type: string } { return { - message: err.message || err instanceof Error ? err.toString() : typeof err === "object" ? JSON.stringify(err) : `${err}`, + message: err.message || (err instanceof Error ? err.toString() : typeof err === "object" ? JSON.stringify(err) : `${err}`), type: err.type || "Fatal", }; }