UNPKG

log-vault

Version:

A generator of Winston logger instance with pre-defined configurable transports and formats and extra functionality.

100 lines (99 loc) 3.52 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); const express_1 = __importDefault(require("express")); const waitForProcess_1 = require("../../test-files/util/waitForProcess"); const body_parser_1 = __importDefault(require("body-parser")); const TelegramNotificationChannel_1 = require("./TelegramNotificationChannel"); const redisCleanup_1 = require("../../test-files/util/redisCleanup"); let mockServer; const mockPort = 2654; let tgRequestBody; describe("TelegramNotificationChannel class", () => { let telegramChannel; beforeAll(async () => { telegramChannel = new TelegramNotificationChannel_1.TelegramNotificationChannel({ host: `http://localhost:${mockPort}`, token: "111111:HJKFGJKGjhgjhg", chatId: 1, matchPatterns: [], workerOptions: { limiter: { max: 1, duration: 10 } } }); await (0, redisCleanup_1.redisCleanup)(telegramChannel.queueName); await startMockServer(); }); afterAll(async () => { await (0, redisCleanup_1.redisCleanup)(telegramChannel.queueName); await stopMockServer(mockServer); }); it("TelegramNotificationChannel", async () => { // Set up listener BEFORE adding job to avoid race condition const { completed } = await (0, waitForProcess_1.waitForProcess)(telegramChannel.queueName); await telegramChannel.addToQueue({ timestamp: "2024-01-30T11:47:03.633Z", level: "error", message: "An error appear!", meta: { process: "some-service", environment: "test", project: "LogVault" } }); const processed = await completed; expect(processed).toEqual({ meta: { environment: "test", process: "some-service", project: "LogVault" }, level: "error", message: "An error appear!", timestamp: "2024-01-30T11:47:03.633Z" }); expect(tgRequestBody).toEqual({ chat_id: 1, text: "🔴 *error log message* ⏱ _2024\\-01\\-30T11:47:03\\.633Z_\n" + "\n" + "`[process]: some\\-service`\n" + "`[environment]: test`\n" + "`[project]: LogVault`\n" + "\n" + "```json\n" + '"An error appear\\!"\n' + "```", parse_mode: "MarkdownV2" }); await telegramChannel.stop(); }); }); function startMockServer() { return new Promise((resolve) => { const app = (0, express_1.default)(); app.use(body_parser_1.default.json()); app.post("/*/sendMessage", (req, res) => { tgRequestBody = req.body; return res.status(200).end(); }); mockServer = app.listen(mockPort, () => resolve(true)); mockServer.on("error", (e) => { throw new Error(e); }); }); } function stopMockServer(mockServer) { return new Promise((resolve, reject) => { mockServer.close((err) => { if (err) reject(err); else resolve(true); }); }); }