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
JavaScript
;
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);
});
});
}