Skip to content

Commit

Permalink
fix circular payload in transit logger
Browse files Browse the repository at this point in the history
  • Loading branch information
icebob committed Jan 15, 2022
1 parent dc5b2f7 commit 93f0df3
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 6 deletions.
21 changes: 15 additions & 6 deletions src/middlewares/debugging/transit-logger.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ const _ = require("lodash");
const kleur = require("kleur");
const fs = require("fs");
const path = require("path");
const { makeDirs } = require("../../utils");
const { makeDirs, safetyObject } = require("../../utils");

module.exports = function TransitLoggerMiddleware(opts) {
opts = _.defaultsDeep(opts, {
Expand All @@ -35,11 +35,20 @@ module.exports = function TransitLoggerMiddleware(opts) {
let targetFolder;

function saveToFile(filename, payload) {
const data = JSON.stringify(
payload,
payload instanceof Error ? Object.getOwnPropertyNames(payload) : null,
4
);
let data;
try {
data = JSON.stringify(
payload,
payload instanceof Error ? Object.getOwnPropertyNames(payload) : null,
4
);
} catch (err) {
data = JSON.stringify(
safetyObject(payload),
payload instanceof Error ? Object.getOwnPropertyNames(payload) : null,
4
);
}
fs.writeFile(path.join(targetFolder, filename), data, () => {
/* Silent error */
});
Expand Down
32 changes: 32 additions & 0 deletions test/unit/middlewares/debugging/transit-logger.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,38 @@ describe("Test ActionLogger", () => {
expect.any(Function)
);
});

it("should log published packet to file with circular payload", async () => {
fs.writeFile.mockClear();
Date.now = jest.fn(() => 123456);
const mw = createMW({
logger,
colors: false,
folder: "./logs",
extension: ".log",
logParams: true
});

const next = jest.fn();
const payload = {
a: 5,
b: {}
};
payload.b.c = payload;
const packet = { type: "REQUEST", target: "server-2", payload };
mw.transitPublish(next)(packet);

expect(next).toBeCalledTimes(1);
expect(next).toBeCalledWith(packet);

expect(fs.writeFile).toBeCalledTimes(1);
expect(fs.writeFile).toHaveBeenNthCalledWith(
1,
path.join("logs", "server-1", "123456-send-REQUEST-to-server-2.log"),
stringify({ a: 5, b: {} }),
expect.any(Function)
);
});
});

describe("Test logging received packets", () => {
Expand Down

0 comments on commit 93f0df3

Please sign in to comment.