1 | ;
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | const ava_1 = require("ava");
|
4 | const index_1 = require("../index");
|
5 | const error_1 = require("../src/error");
|
6 | (0, ava_1.default)("FaastError basic error", t => {
|
7 | const error = new index_1.FaastError("bad error");
|
8 | const { name, stack, message, ...rest } = error;
|
9 | const _exhaustiveCheck = {};
|
10 | t.is(name, error_1.FaastErrorNames.EGENERIC);
|
11 | t.regex(stack, /unit-error.test/);
|
12 | t.is(index_1.FaastError.fullStack(error), stack);
|
13 | t.deepEqual(index_1.FaastError.info(error), {});
|
14 | t.is(message, "bad error");
|
15 | t.is(error.cause(), undefined);
|
16 | });
|
17 | function foo() {
|
18 | throw new Error("underlying error");
|
19 | }
|
20 | (0, ava_1.default)("FaastError nested error", t => {
|
21 | let nested;
|
22 | try {
|
23 | foo();
|
24 | }
|
25 | catch (err) {
|
26 | nested = err;
|
27 | }
|
28 | const error = new index_1.FaastError(nested, "bad error");
|
29 | const { name, stack, message, ...rest } = error;
|
30 | const _exhaustiveCheck = {};
|
31 | t.is(name, error_1.FaastErrorNames.EGENERIC);
|
32 | t.regex(stack, /unit-error.test/);
|
33 | t.regex(index_1.FaastError.fullStack(error), /at foo /);
|
34 | t.deepEqual(index_1.FaastError.info(error), {});
|
35 | t.is(message, "bad error: underlying error");
|
36 | t.is(error.cause(), nested);
|
37 | });
|
38 | (0, ava_1.default)("FaastError synthesized error", t => {
|
39 | const errObj = {
|
40 | message: "remote message",
|
41 | stack: "remote stack trace",
|
42 | name: "RemoteErrorName",
|
43 | custom: "remote custom property"
|
44 | };
|
45 | const logUrlString = "https://cloud.com/logs";
|
46 | const error = (0, error_1.synthesizeFaastError)({
|
47 | errObj,
|
48 | logUrl: logUrlString,
|
49 | functionName: "functionName",
|
50 | args: ["arg"]
|
51 | });
|
52 | const { name, stack, message, ...rest } = error;
|
53 | const _exhaustiveCheck = {};
|
54 | t.is(name, errObj.name);
|
55 | t.true(stack.indexOf(errObj.stack) >= 0);
|
56 | t.true(index_1.FaastError.fullStack(error).indexOf(errObj.stack) >= 0);
|
57 | const info = index_1.FaastError.info(error);
|
58 | for (const key of Object.keys(errObj)) {
|
59 | t.is(info[key], errObj[key]);
|
60 | }
|
61 | t.true(index_1.FaastError.info(error).logUrl.trim() === logUrlString);
|
62 | t.true(message.indexOf(errObj.message) >= 0);
|
63 | const cause = error.cause();
|
64 | t.is(cause.message, logUrlString);
|
65 | t.is(info.functionName, "functionName");
|
66 | t.deepEqual(info.args, ["arg"]);
|
67 | t.true(cause.stack.indexOf("faast.js cloud function invocation") >= 0);
|
68 | t.is(index_1.FaastError.fullStack(cause), cause.stack);
|
69 | t.true(index_1.FaastError.fullStack(cause).indexOf(logUrlString) >= 0);
|
70 | });
|
71 | (0, ava_1.default)("FaastError using option constructor", t => {
|
72 | const error = new index_1.FaastError({ name: error_1.FaastErrorNames.ETIMEOUT }, "message");
|
73 | const { name, stack, message, ...rest } = error;
|
74 | const _exhaustiveCheck = {};
|
75 | t.is(name, error_1.FaastErrorNames.ETIMEOUT);
|
76 | });
|
77 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdC1lcnJvci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC91bml0LWVycm9yLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2QkFBdUI7QUFDdkIsb0NBQXNDO0FBQ3RDLHdDQUFxRTtBQUVyRSxJQUFBLGFBQUksRUFBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLGtCQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ2hELE1BQU0sZ0JBQWdCLEdBQTBCLEVBQUUsQ0FBQztJQUNuRCxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSx1QkFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBTSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQkFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDLENBQUMsU0FBUyxDQUFDLGtCQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxHQUFHO0lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxJQUFBLGFBQUksRUFBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNo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aW1wb3J0IHsgRmFhc3RFcnJvciB9IGZyb20gXCIuLi9pbmRleFwiO1xuaW1wb3J0IHsgc3ludGhlc2l6ZUZhYXN0RXJyb3IsIEZhYXN0RXJyb3JOYW1lcyB9IGZyb20gXCIuLi9zcmMvZXJyb3JcIjtcblxudGVzdChcIkZhYXN0RXJyb3IgYmFzaWMgZXJyb3JcIiwgdCA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRmFhc3RFcnJvcihcImJhZCBlcnJvclwiKTtcbiAgICBjb25zdCB7IG5hbWUsIHN0YWNrLCBtZXNzYWdlLCAuLi5yZXN0IH0gPSBlcnJvcjtcbiAgICBjb25zdCBfZXhoYXVzdGl2ZUNoZWNrOiBSZXF1aXJlZDx0eXBlb2YgcmVzdD4gPSB7fTtcbiAgICB0LmlzKG5hbWUsIEZhYXN0RXJyb3JOYW1lcy5FR0VORVJJQyk7XG4gICAgdC5yZWdleChzdGFjayEsIC91bml0LWVycm9yLnRlc3QvKTtcbiAgICB0LmlzKEZhYXN0RXJyb3IuZnVsbFN0YWNrKGVycm9yKSwgc3RhY2spO1xuICAgIHQuZGVlcEVxdWFsKEZhYXN0RXJyb3IuaW5mbyhlcnJvciksIHt9KTtcbiAgICB0LmlzKG1lc3NhZ2UsIFwiYmFkIGVycm9yXCIpO1xuICAgIHQuaXMoZXJyb3IuY2F1c2UoKSwgdW5kZWZpbmVkKTtcbn0pO1xuXG5mdW5jdGlvbiBmb28oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidW5kZXJseWluZyBlcnJvclwiKTtcbn1cblxudGVzdChcIkZhYXN0RXJyb3IgbmVzdGVkIGVycm9yXCIsIHQgPT4ge1xuICAgIGxldCBuZXN0ZWQ7XG4gICAgdHJ5IHtcbiAgICAgICAgZm9vKCk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgbmVzdGVkID0gZXJyO1xuICAgIH1cbiAgICBjb25zdCBlcnJvciA9IG5ldyBGYWFzdEVycm9yKG5lc3RlZCwgXCJiYWQgZXJyb3JcIik7XG4gICAgY29uc3QgeyBuYW1lLCBzdGFjaywgbWVzc2FnZSwgLi4ucmVzdCB9ID0gZXJyb3I7XG4gICAgY29uc3QgX2V4aGF1c3RpdmVDaGVjazogUmVxdWlyZWQ8dHlwZW9mIHJlc3Q+ID0ge307XG4gICAgdC5pcyhuYW1lLCBGYWFzdEVycm9yTmFtZXMuRUdFTkVSSUMpO1xuICAgIHQucmVnZXgoc3RhY2shLCAvdW5pdC1lcnJvci50ZXN0Lyk7XG4gICAgdC5yZWdleChGYWFzdEVycm9yLmZ1bGxTdGFjayhlcnJvciksIC9hdCBmb28gLyk7XG4gICAgdC5kZWVwRXF1YWwoRmFhc3RFcnJvci5pbmZvKGVycm9yKSwge30pO1xuICAgIHQuaXMobWVzc2FnZSwgXCJiYWQgZXJyb3I6IHVuZGVybHlpbmcgZXJyb3JcIik7XG4gICAgdC5pcyhlcnJvci5jYXVzZSgpLCBuZXN0ZWQpO1xufSk7XG5cbnRlc3QoXCJGYWFzdEVycm9yIHN5bnRoZXNpemVkIGVycm9yXCIsIHQgPT4ge1xuICAgIGNvbnN0IGVyck9iaiA9IHtcbiAgICAgICAgbWVzc2FnZTogXCJyZW1vdGUgbWVzc2FnZVwiLFxuICAgICAgICBzdGFjazogXCJyZW1vdGUgc3RhY2sgdHJhY2VcIixcbiAgICAgICAgbmFtZTogXCJSZW1vdGVFcnJvck5hbWVcIixcbiAgICAgICAgY3VzdG9tOiBcInJlbW90ZSBjdXN0b20gcHJvcGVydHlcIlxuICAgIH07XG4gICAgY29uc3QgbG9nVXJsU3RyaW5nID0gXCJodHRwczovL2Nsb3VkLmNvbS9sb2dzXCI7XG4gICAgY29uc3QgZXJyb3IgPSBzeW50aGVzaXplRmFhc3RFcnJvcih7XG4gICAgICAgIGVyck9iaixcbiAgICAgICAgbG9nVXJsOiBsb2dVcmxTdHJpbmcsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogXCJmdW5jdGlvbk5hbWVcIixcbiAgICAgICAgYXJnczogW1wiYXJnXCJdXG4gICAgfSk7XG4gICAgY29uc3QgeyBuYW1lLCBzdGFjaywgbWVzc2FnZSwgLi4ucmVzdCB9ID0gZXJyb3I7XG4gICAgY29uc3QgX2V4aGF1c3RpdmVDaGVjazogUmVxdWlyZWQ8dHlwZW9mIHJlc3Q+ID0ge307XG5cbiAgICB0LmlzKG5hbWUsIGVyck9iai5uYW1lKTtcbiAgICB0LnRydWUoc3RhY2shLmluZGV4T2YoZXJyT2JqLnN0YWNrKSA+PSAwKTtcbiAgICB0LnRydWUoRmFhc3RFcnJvci5mdWxsU3RhY2soZXJyb3IpLmluZGV4T2YoZXJyT2JqLnN0YWNrKSA+PSAwKTtcbiAgICBjb25zdCBpbmZvID0gRmFhc3RFcnJvci5pbmZvKGVycm9yKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhlcnJPYmopKSB7XG4gICAgICAgIHQuaXMoaW5mb1trZXldLCAoZXJyT2JqIGFzIGFueSlba2V5XSk7XG4gICAgfVxuICAgIHQudHJ1ZShGYWFzdEVycm9yLmluZm8oZXJyb3IpLmxvZ1VybC50cmltKCkgPT09IGxvZ1VybFN0cmluZyk7XG4gICAgdC50cnVlKG1lc3NhZ2UuaW5kZXhPZihlcnJPYmoubWVzc2FnZSkgPj0gMCk7XG4gICAgY29uc3QgY2F1c2UgPSBlcnJvci5jYXVzZSgpISBhcyBGYWFzdEVycm9yO1xuICAgIHQuaXMoY2F1c2UubWVzc2FnZSwgbG9nVXJsU3RyaW5nKTtcbiAgICB0LmlzKGluZm8uZnVuY3Rpb25OYW1lLCBcImZ1bmN0aW9uTmFtZVwiKTtcbiAgICB0LmRlZXBFcXVhbChpbmZvLmFyZ3MsIFtcImFyZ1wiXSk7XG4gICAgdC50cnVlKGNhdXNlLnN0YWNrIS5pbmRleE9mKFwiZmFhc3QuanMgY2xvdWQgZnVuY3Rpb24gaW52b2NhdGlvblwiKSA+PSAwKTtcbiAgICB0LmlzKEZhYXN0RXJyb3IuZnVsbFN0YWNrKGNhdXNlKSwgY2F1c2Uuc3RhY2spO1xuICAgIHQudHJ1ZShGYWFzdEVycm9yLmZ1bGxTdGFjayhjYXVzZSkuaW5kZXhPZihsb2dVcmxTdHJpbmcpID49IDApO1xufSk7XG5cbnRlc3QoXCJGYWFzdEVycm9yIHVzaW5nIG9wdGlvbiBjb25zdHJ1Y3RvclwiLCB0ID0+IHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBGYWFzdEVycm9yKHsgbmFtZTogRmFhc3RFcnJvck5hbWVzLkVUSU1FT1VUIH0sIFwibWVzc2FnZVwiKTtcbiAgICBjb25zdCB7IG5hbWUsIHN0YWNrLCBtZXNzYWdlLCAuLi5yZXN0IH0gPSBlcnJvcjtcbiAgICBjb25zdCBfZXhoYXVzdGl2ZUNoZWNrOiBSZXF1aXJlZDx0eXBlb2YgcmVzdD4gPSB7fTtcbiAgICB0LmlzKG5hbWUsIEZhYXN0RXJyb3JOYW1lcy5FVElNRU9VVCk7XG59KTtcbiJdfQ== |
\ | No newline at end of file |