UNPKG

11.6 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3const ava_1 = require("ava");
4const index_1 = require("../index");
5const 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});
17function 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