Skip to content

Commit b68f47d

Browse files
Merge pull request #2605 from kuzzleio/KZLPRD-852-catch-error-trigger-event
fix(funnel): handle errors for trigger event requests
2 parents e979e5e + e5538cf commit b68f47d

File tree

2 files changed

+39
-4
lines changed

2 files changed

+39
-4
lines changed

lib/api/funnel.js

Lines changed: 24 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -753,11 +753,31 @@ class Funnel {
753753
* @returns {Promise}
754754
*/
755755
async executePluginRequest(request) {
756-
try {
757-
if (request.input.triggerEvents) {
758-
const response = await this.processRequest(request);
759-
return { ...response.result };
756+
if (request.input.triggerEvents) {
757+
let error;
758+
let res;
759+
try {
760+
const { result } = await this.processRequest(request);
761+
debug(
762+
"Request %s successfully executed. Result: %a",
763+
request.id,
764+
result,
765+
);
766+
res = result;
767+
return { ...result };
768+
} catch (e) {
769+
error = e;
770+
debug("Error processing request %s: %a", request.id, error);
771+
} finally {
772+
global.kuzzle.pipe("request:afterExecution", {
773+
error: error,
774+
request: request,
775+
result: res,
776+
success: error === undefined ? true : false,
777+
});
760778
}
779+
}
780+
try {
761781
return await doAction(this.getController(request), request);
762782
} catch (e) {
763783
this.handleErrorDump(e);

test/api/funnel/executePluginRequest.test.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,4 +126,19 @@ describe("funnel.executePluginRequest", () => {
126126
should(kuzzle.pipe).not.calledWith("testme:afterSucceed");
127127
});
128128
});
129+
130+
it("should catch an error and trigger error pipe if triggerEvent enabled", async () => {
131+
const request = new Request({
132+
action: "fail",
133+
controller: "testme",
134+
triggerEvents: true,
135+
});
136+
137+
return funnel.executePluginRequest(request).catch((e) => {
138+
should(e.message).be.eql("rejected action");
139+
should(kuzzle.pipe).calledWith("testme:beforeFail");
140+
should(kuzzle.pipe).calledWith("testme:errorFail");
141+
should(kuzzle.pipe).not.calledWith("testme:afterFail");
142+
});
143+
});
129144
});

0 commit comments

Comments
 (0)