rea/tests/boundary/captures/packetOutput.test.ts

42 lines
1.3 KiB
TypeScript

import { expect, it } from "vitest";
import { parsePacketOutput } from "../../../src/captures/parsePacketOutput.js";
it("preserves repeated field values and missing fields while discarding export index metadata", () => {
const output = JSON.stringify([
{
_index: "packets-2026",
_score: null,
_source: {
layers: {
"frame.number": ["2"],
"ip.addr": ["192.0.2.1", "192.0.2.2"],
},
},
},
{ _source: { layers: { "frame.number": ["7"] } } },
]);
expect(parsePacketOutput(output, ["ip.addr"])).toEqual([
{ "frame.number": ["2"], "ip.addr": ["192.0.2.1", "192.0.2.2"] },
{ "frame.number": ["7"] },
]);
});
it.each(
[
[{ "ip.addr": ["192.0.2.1"] }],
[{ "frame.number": ["1"], "ip.addr": "192.0.2.1" }],
[{ "frame.number": ["0"] }],
[{ "frame.number": ["1", "2"] }],
[{ "frame.number": ["1"], "unselected.field": ["hidden"] }],
[{ "frame.number": ["2"] }, { "frame.number": ["2"] }],
[{ "frame.number": ["2"] }, { "frame.number": ["1"] }],
].map((layers) => [layers]),
)("rejects malformed, repeated or reordered producer frames: %j", (layers) => {
expect(() =>
parsePacketOutput(
JSON.stringify(layers.map((value) => ({ _source: { layers: value } }))),
["ip.addr"],
),
).toThrow();
});