UNPKG

faastjs

Version:

Serverless batch computing made simple.

77 lines 11.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const ava_1 = require("ava"); const index_1 = require("../index"); const error_1 = require("../src/error"); (0, ava_1.default)("FaastError basic error", t => { const error = new index_1.FaastError("bad error"); const { name, stack, message, ...rest } = error; const _exhaustiveCheck = {}; t.is(name, error_1.FaastErrorNames.EGENERIC); t.regex(stack, /unit-error.test/); t.is(index_1.FaastError.fullStack(error), stack); t.deepEqual(index_1.FaastError.info(error), {}); t.is(message, "bad error"); t.is(error.cause(), undefined); }); function foo() { throw new Error("underlying error"); } (0, ava_1.default)("FaastError nested error", t => { let nested; try { foo(); } catch (err) { nested = err; } const error = new index_1.FaastError(nested, "bad error"); const { name, stack, message, ...rest } = error; const _exhaustiveCheck = {}; t.is(name, error_1.FaastErrorNames.EGENERIC); t.regex(stack, /unit-error.test/); t.regex(index_1.FaastError.fullStack(error), /at foo /); t.deepEqual(index_1.FaastError.info(error), {}); t.is(message, "bad error: underlying error"); t.is(error.cause(), nested); }); (0, ava_1.default)("FaastError synthesized error", t => { const errObj = { message: "remote message", stack: "remote stack trace", name: "RemoteErrorName", custom: "remote custom property" }; const logUrlString = "https://cloud.com/logs"; const error = (0, error_1.synthesizeFaastError)({ errObj, logUrl: logUrlString, functionName: "functionName", args: ["arg"] }); const { name, stack, message, ...rest } = error; const _exhaustiveCheck = {}; t.is(name, errObj.name); t.true(stack.indexOf(errObj.stack) >= 0); t.true(index_1.FaastError.fullStack(error).indexOf(errObj.stack) >= 0); const info = index_1.FaastError.info(error); for (const key of Object.keys(errObj)) { t.is(info[key], errObj[key]); } t.true(index_1.FaastError.info(error).logUrl.trim() === logUrlString); t.true(message.indexOf(errObj.message) >= 0); const cause = error.cause(); t.is(cause.message, logUrlString); t.is(info.functionName, "functionName"); t.deepEqual(info.args, ["arg"]); t.true(cause.stack.indexOf("faast.js cloud function invocation") >= 0); t.is(index_1.FaastError.fullStack(cause), cause.stack); t.true(index_1.FaastError.fullStack(cause).indexOf(logUrlString) >= 0); }); (0, ava_1.default)("FaastError using option constructor", t => { const error = new index_1.FaastError({ name: error_1.FaastErrorNames.ETIMEOUT }, "message"); const { name, stack, message, ...rest } = error; const _exhaustiveCheck = {}; t.is(name, error_1.FaastErrorNames.ETIMEOUT); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pdC1lcnJvci50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vdGVzdC91bml0LWVycm9yLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSw2QkFBdUI7QUFDdkIsb0NBQXNDO0FBQ3RDLHdDQUFxRTtBQUVyRSxJQUFBLGFBQUksRUFBQyx3QkFBd0IsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUMvQixNQUFNLEtBQUssR0FBRyxJQUFJLGtCQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDMUMsTUFBTSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDO0lBQ2hELE1BQU0sZ0JBQWdCLEdBQTBCLEVBQUUsQ0FBQztJQUNuRCxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSx1QkFBZSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBTSxFQUFFLGlCQUFpQixDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQkFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN6QyxDQUFDLENBQUMsU0FBUyxDQUFDLGtCQUFVLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUMsQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFDO0lBQzNCLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLFNBQVMsQ0FBQyxDQUFDO0FBQ25DLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxHQUFHO0lBQ1IsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO0FBQ3hDLENBQUM7QUFFRCxJQUFBLGFBQUksRUFBQyx5QkFBeUIsRUFBRSxDQUFDLENBQUMsRUFBRTtJQUNo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aW1wb3J0IHsgRmFhc3RFcnJvciB9IGZyb20gXCIuLi9pbmRleFwiO1xuaW1wb3J0IHsgc3ludGhlc2l6ZUZhYXN0RXJyb3IsIEZhYXN0RXJyb3JOYW1lcyB9IGZyb20gXCIuLi9zcmMvZXJyb3JcIjtcblxudGVzdChcIkZhYXN0RXJyb3IgYmFzaWMgZXJyb3JcIiwgdCA9PiB7XG4gICAgY29uc3QgZXJyb3IgPSBuZXcgRmFhc3RFcnJvcihcImJhZCBlcnJvclwiKTtcbiAgICBjb25zdCB7IG5hbWUsIHN0YWNrLCBtZXNzYWdlLCAuLi5yZXN0IH0gPSBlcnJvcjtcbiAgICBjb25zdCBfZXhoYXVzdGl2ZUNoZWNrOiBSZXF1aXJlZDx0eXBlb2YgcmVzdD4gPSB7fTtcbiAgICB0LmlzKG5hbWUsIEZhYXN0RXJyb3JOYW1lcy5FR0VORVJJQyk7XG4gICAgdC5yZWdleChzdGFjayEsIC91bml0LWVycm9yLnRlc3QvKTtcbiAgICB0LmlzKEZhYXN0RXJyb3IuZnVsbFN0YWNrKGVycm9yKSwgc3RhY2spO1xuICAgIHQuZGVlcEVxdWFsKEZhYXN0RXJyb3IuaW5mbyhlcnJvciksIHt9KTtcbiAgICB0LmlzKG1lc3NhZ2UsIFwiYmFkIGVycm9yXCIpO1xuICAgIHQuaXMoZXJyb3IuY2F1c2UoKSwgdW5kZWZpbmVkKTtcbn0pO1xuXG5mdW5jdGlvbiBmb28oKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidW5kZXJseWluZyBlcnJvclwiKTtcbn1cblxudGVzdChcIkZhYXN0RXJyb3IgbmVzdGVkIGVycm9yXCIsIHQgPT4ge1xuICAgIGxldCBuZXN0ZWQ7XG4gICAgdHJ5IHtcbiAgICAgICAgZm9vKCk7XG4gICAgfSBjYXRjaCAoZXJyOiBhbnkpIHtcbiAgICAgICAgbmVzdGVkID0gZXJyO1xuICAgIH1cbiAgICBjb25zdCBlcnJvciA9IG5ldyBGYWFzdEVycm9yKG5lc3RlZCwgXCJiYWQgZXJyb3JcIik7XG4gICAgY29uc3QgeyBuYW1lLCBzdGFjaywgbWVzc2FnZSwgLi4ucmVzdCB9ID0gZXJyb3I7XG4gICAgY29uc3QgX2V4aGF1c3RpdmVDaGVjazogUmVxdWlyZWQ8dHlwZW9mIHJlc3Q+ID0ge307XG4gICAgdC5pcyhuYW1lLCBGYWFzdEVycm9yTmFtZXMuRUdFTkVSSUMpO1xuICAgIHQucmVnZXgoc3RhY2shLCAvdW5pdC1lcnJvci50ZXN0Lyk7XG4gICAgdC5yZWdleChGYWFzdEVycm9yLmZ1bGxTdGFjayhlcnJvciksIC9hdCBmb28gLyk7XG4gICAgdC5kZWVwRXF1YWwoRmFhc3RFcnJvci5pbmZvKGVycm9yKSwge30pO1xuICAgIHQuaXMobWVzc2FnZSwgXCJiYWQgZXJyb3I6IHVuZGVybHlpbmcgZXJyb3JcIik7XG4gICAgdC5pcyhlcnJvci5jYXVzZSgpLCBuZXN0ZWQpO1xufSk7XG5cbnRlc3QoXCJGYWFzdEVycm9yIHN5bnRoZXNpemVkIGVycm9yXCIsIHQgPT4ge1xuICAgIGNvbnN0IGVyck9iaiA9IHtcbiAgICAgICAgbWVzc2FnZTogXCJyZW1vdGUgbWVzc2FnZVwiLFxuICAgICAgICBzdGFjazogXCJyZW1vdGUgc3RhY2sgdHJhY2VcIixcbiAgICAgICAgbmFtZTogXCJSZW1vdGVFcnJvck5hbWVcIixcbiAgICAgICAgY3VzdG9tOiBcInJlbW90ZSBjdXN0b20gcHJvcGVydHlcIlxuICAgIH07XG4gICAgY29uc3QgbG9nVXJsU3RyaW5nID0gXCJodHRwczovL2Nsb3VkLmNvbS9sb2dzXCI7XG4gICAgY29uc3QgZXJyb3IgPSBzeW50aGVzaXplRmFhc3RFcnJvcih7XG4gICAgICAgIGVyck9iaixcbiAgICAgICAgbG9nVXJsOiBsb2dVcmxTdHJpbmcsXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogXCJmdW5jdGlvbk5hbWVcIixcbiAgICAgICAgYXJnczogW1wiYXJnXCJdXG4gICAgfSk7XG4gICAgY29uc3QgeyBuYW1lLCBzdGFjaywgbWVzc2FnZSwgLi4ucmVzdCB9ID0gZXJyb3I7XG4gICAgY29uc3QgX2V4aGF1c3RpdmVDaGVjazogUmVxdWlyZWQ8dHlwZW9mIHJlc3Q+ID0ge307XG5cbiAgICB0LmlzKG5hbWUsIGVyck9iai5uYW1lKTtcbiAgICB0LnRydWUoc3RhY2shLmluZGV4T2YoZXJyT2JqLnN0YWNrKSA+PSAwKTtcbiAgICB0LnRydWUoRmFhc3RFcnJvci5mdWxsU3RhY2soZXJyb3IpLmluZGV4T2YoZXJyT2JqLnN0YWNrKSA+PSAwKTtcbiAgICBjb25zdCBpbmZvID0gRmFhc3RFcnJvci5pbmZvKGVycm9yKTtcbiAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhlcnJPYmopKSB7XG4gICAgICAgIHQuaXMoaW5mb1trZXldLCAoZXJyT2JqIGFzIGFueSlba2V5XSk7XG4gICAgfVxuICAgIHQudHJ1ZShGYWFzdEVycm9yLmluZm8oZXJyb3IpLmxvZ1VybC50cmltKCkgPT09IGxvZ1VybFN0cmluZyk7XG4gICAgdC50cnVlKG1lc3NhZ2UuaW5kZXhPZihlcnJPYmoubWVzc2FnZSkgPj0gMCk7XG4gICAgY29uc3QgY2F1c2UgPSBlcnJvci5jYXVzZSgpISBhcyBGYWFzdEVycm9yO1xuICAgIHQuaXMoY2F1c2UubWVzc2FnZSwgbG9nVXJsU3RyaW5nKTtcbiAgICB0LmlzKGluZm8uZnVuY3Rpb25OYW1lLCBcImZ1bmN0aW9uTmFtZVwiKTtcbiAgICB0LmRlZXBFcXVhbChpbmZvLmFyZ3MsIFtcImFyZ1wiXSk7XG4gICAgdC50cnVlKGNhdXNlLnN0YWNrIS5pbmRleE9mKFwiZmFhc3QuanMgY2xvdWQgZnVuY3Rpb24gaW52b2NhdGlvblwiKSA+PSAwKTtcbiAgICB0LmlzKEZhYXN0RXJyb3IuZnVsbFN0YWNrKGNhdXNlKSwgY2F1c2Uuc3RhY2spO1xuICAgIHQudHJ1ZShGYWFzdEVycm9yLmZ1bGxTdGFjayhjYXVzZSkuaW5kZXhPZihsb2dVcmxTdHJpbmcpID49IDApO1xufSk7XG5cbnRlc3QoXCJGYWFzdEVycm9yIHVzaW5nIG9wdGlvbiBjb25zdHJ1Y3RvclwiLCB0ID0+IHtcbiAgICBjb25zdCBlcnJvciA9IG5ldyBGYWFzdEVycm9yKHsgbmFtZTogRmFhc3RFcnJvck5hbWVzLkVUSU1FT1VUIH0sIFwibWVzc2FnZVwiKTtcbiAgICBjb25zdCB7IG5hbWUsIHN0YWNrLCBtZXNzYWdlLCAuLi5yZXN0IH0gPSBlcnJvcjtcbiAgICBjb25zdCBfZXhoYXVzdGl2ZUNoZWNrOiBSZXF1aXJlZDx0eXBlb2YgcmVzdD4gPSB7fTtcbiAgICB0LmlzKG5hbWUsIEZhYXN0RXJyb3JOYW1lcy5FVElNRU9VVCk7XG59KTtcbiJdfQ==