sentry-testkit
Version:
Sentry Testkit enables Sentry to work natively in your application while running tests. The report is not really sent but rather logged locally into memory. In this way, the logged reports can be fetched for your own verification or any other purpose in y
76 lines • 3 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createLocalServerApi = void 0;
var express_1 = __importDefault(require("express"));
var body_parser_1 = __importDefault(require("body-parser"));
var http_1 = __importDefault(require("http"));
var parsers_1 = require("./parsers");
var transformers_1 = require("./transformers");
function createLocalServerApi(testkit) {
var runningServer = null;
var localDsn = null;
var start = function (userDsn) {
if (runningServer !== null) {
throw new Error('Local server is already running');
}
var project = (0, parsers_1.parseDsn)(userDsn).project;
var app = (0, express_1.default)();
app.use(function (req, res, next) {
res.header('Access-Control-Allow-Origin', '*');
next();
});
// We accept any content-type as requests come in a variety of
// kinds (with content-type and without, compressed and not, ...).
app.use(body_parser_1.default.text({ type: function () { return true; } }));
app.post("/api/".concat(project, "/store/"), function (req, res) {
testkit.reports().push((0, transformers_1.transformReport)(JSON.parse(req.body)));
res.sendStatus(200);
});
app.post("/api/".concat(project, "/envelope/"), function (req, res) {
(0, parsers_1.handleEnvelopeRequestData)(req.body, testkit);
res.sendStatus(200);
});
runningServer = http_1.default.createServer(app);
return new Promise(function (resolve) {
if (runningServer) {
runningServer.listen(function () {
// @ts-expect-error
var port = runningServer.address().port;
localDsn = "http://acacaeaccacacacabcaacdacdacadaca@localhost:".concat(port, "/").concat(project);
resolve(undefined);
});
}
else {
throw new Error('Local server is not running');
}
});
};
var stop = function () {
if (runningServer === null) {
throw new Error('Local server is not running');
}
return new Promise(function (resolve, reject) {
runningServer.close(function (error) {
return error ? reject(error) : resolve(undefined);
});
runningServer = null;
localDsn = null;
});
};
var getDsn = function () {
if (runningServer === null) {
throw new Error('Local server is not running');
}
return localDsn;
};
return {
start: start,
stop: stop,
getDsn: getDsn,
};
}
exports.createLocalServerApi = createLocalServerApi;
//# sourceMappingURL=localServerApi.js.map