Edit node magic tests to be less fragile

This commit is contained in:
d98762625 2020-02-21 11:03:54 +00:00
parent d6bc8c8005
commit 09bfb129ea

View file

@ -1078,292 +1078,54 @@ ExifImageHeight: 57`);
it("performs MAGIC", async () => {
const input = "WUagwsiae6mP8gNtCCLUFpCpCB26RmBDoDD8PacdAmzAzBVjkK2QstFXaKhpC6iUS7RHqXrJtFisoRSgoJ4whjm1arm864qaNq4RcfUmLHrcsAaZc5TXCYifNdgS83gDeejGX46gaiMyuBV6EskHt1scgJ88x2tNSotQDwbGY1mmCob2ARGFvCKYNqiN9ipMq1ZU1mgkdbNuGcb76aRtYWhCGUc8g93UJudhb8htsheZnwTpgqhx83SVJSZXMXUjJT2zmpC7uXWtumqokbdSi88YtkWDAc1Toouh2oH4D4ddmNKJWUDpMwmngUmK14xwmomccPQE9hM172APnSqwxdKQ172RkcAsysnmj5gGtRmVNNh2s359wr6mS2QRP";
const output = [
{
recipe: [
{ op: "From Base58", args: ["123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz", false] },
{ op: "Zlib Inflate", args: [0, 0, "Adaptive", false, false] },
{ op: "From Hex", args: ["Space"] }
],
data: "The last ever dolphin message was misinterpreted as a surprisingly sophisticated attempt to do a dou",
languageScores: [
{ lang: "en", score: 125.2242215463834, probability: 0.9999999999995666 },
{ lang: "de", score: 139.07214598442948, probability: 0.9999999996948968 },
{ lang: "da", score: 163.5912872923829, probability: 0.9999982307179437 },
{ lang: "nn", score: 184.87781010323778, probability: 0.9996824311001093 },
{ lang: "nl", score: 186.65400017962355, probability: 0.9995478923448857 },
{ lang: "id", score: 195.10783158286532, probability: 0.9979061805092018 },
{ lang: "no", score: 195.9426356809362, probability: 0.9975948291599267 },
{ lang: "cs", score: 198.6413087683924, probability: 0.9962906782769531 },
{ lang: "ro", score: 210.86139006654741, probability: 0.979830327546602 },
{ lang: "pl", score: 239.0004171307482, probability: 0.7562182144228224 },
{ lang: "tr", score: 242.98185937693376, probability: 0.6953741146251353 },
{ lang: "sv", score: 255.14597866546873, probability: 0.4856581623250311 },
{ lang: "et", score: 263.34457729011217, probability: 0.34642367921615513 },
{ lang: "fr", score: 296.13887840675034, probability: 0.03910697796810625 },
{ lang: "sk", score: 328.80097683234993, probability: 0.00123907684578628 },
{ lang: "hu", score: 343.0914264767343, probability: 0.0001900103812403353 },
{ lang: "it", score: 363.228683918485, probability: 0.00000962963279593776 },
{ lang: "pt", score: 371.9006025110216, probability: 0.00000237778274370104 },
{ lang: "ca", score: 371.95107438550946, probability: 0.0000023580510432053003 },
{ lang: "hr", score: 399.73398118377037, probability: 1.744982047746646e-8 },
{ lang: "es", score: 400.84646089553183, probability: 1.4156720240521281e-8 },
{ lang: "vi", score: 402.10107920399264, probability: 1.1169764224661094e-8 },
{ lang: "sl", score: 405.5457655647606, probability: 5.792252788516805e-9 },
{ lang: "lt", score: 596.5783206516687, probability: 0 },
{ lang: "lv", score: 655.561080051702, probability: 0 },
{ lang: "fi", score: 1680.5988867104547, probability: 0 },
{ lang: "sr", score: 3852.241870759605, probability: 0 },
{ lang: "zh", score: 5599.531932355281, probability: 0 },
{ lang: "el", score: 6315.400534582482, probability: 0 },
{ lang: "ko", score: 7277.2489575276995, probability: 0 },
{ lang: "bg", score: 9247.807749861991, probability: 0 },
{ lang: "th", score: 9491.8009000258, probability: 0 },
{ lang: "ja", score: 10449.51313154949, probability: 0 },
{ lang: "he", score: 11347.28346104089, probability: 0 },
{ lang: "ru", score: 11814.689579434824, probability: 0 },
{ lang: "uk", score: 12174.95110880415, probability: 0 },
{ lang: "fa", score: 13260.658274652691, probability: 0 },
{ lang: "ar", score: 14716.3920118038, probability: 0 },
{ lang: "hi", score: 15391.252264306175, probability: 0 }
],
fileType: null,
isUTF8: true,
entropy: 4.359286179828585,
matchingOps: [],
useful: false,
matchesCrib: null
},
{
recipe: [{ op: "From Base58", args: ["123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz", false] }],
data: "xœ’ÑqÃ0\fCWá\b‰cKò8mâì?B\u001eAŠUûÕ»œOb@\u0010€xìֆµÃ¶›µ§µ»õ‡õ]×ÃzÓwÓ\u0015äÛ13-§µKõ—0t=¼½õdë\u001c˘S\u0000uÁ\u001f´Pñõ³*ŒppuÝÅ\u0003",
languageScores: [
{ lang: "zh", score: 215110.97112616687, probability: 0 },
{ lang: "tr", score: 220681.60597877944, probability: 0 },
{ lang: "vi", score: 222456.65881904965, probability: 0 },
{ lang: "id", score: 224044.62863298706, probability: 0 },
{ lang: "ko", score: 224251.7770504099, probability: 0 },
{ lang: "ca", score: 226341.0410197607, probability: 0 },
{ lang: "et", score: 228065.41105887358, probability: 0 },
{ lang: "pt", score: 229721.1668924617, probability: 0 },
{ lang: "hr", score: 231653.8278878275, probability: 0 },
{ lang: "nn", score: 232634.26616193476, probability: 0 },
{ lang: "ro", score: 237315.86995651436, probability: 0 },
{ lang: "uk", score: 238647.09334894008, probability: 0 },
{ lang: "ja", score: 240068.05259944845, probability: 0 },
{ lang: "no", score: 241300.63523473177, probability: 0 },
{ lang: "hu", score: 242303.62403450147, probability: 0 },
{ lang: "pl", score: 242419.22474038566, probability: 0 },
{ lang: "lt", score: 242433.7049552153, probability: 0 },
{ lang: "bg", score: 242693.77923288214, probability: 0 },
{ lang: "cs", score: 243439.71687130767, probability: 0 },
{ lang: "sl", score: 244783.8516143228, probability: 0 },
{ lang: "sr", score: 245641.447561803, probability: 0 },
{ lang: "el", score: 245869.9941369833, probability: 0 },
{ lang: "th", score: 245932.33916414433, probability: 0 },
{ lang: "ru", score: 246782.7072075852, probability: 0 },
{ lang: "ar", score: 247312.3407109036, probability: 0 },
{ lang: "fr", score: 253209.2034747157, probability: 0 },
{ lang: "en", score: 253317.63072843806, probability: 0 },
{ lang: "da", score: 253653.71939518297, probability: 0 },
{ lang: "es", score: 253945.01214035793, probability: 0 },
{ lang: "nl", score: 254511.98408778434, probability: 0 },
{ lang: "sv", score: 256230.51131455088, probability: 0 },
{ lang: "fa", score: 256413.26329932833, probability: 0 },
{ lang: "sk", score: 259674.11030614204, probability: 0 },
{ lang: "lv", score: 262504.9549152398, probability: 0 },
{ lang: "he", score: 264875.43235331005, probability: 0 },
{ lang: "it", score: 274601.6513992457, probability: 0 },
{ lang: "de", score: 277043.4679615947, probability: 0 },
{ lang: "fi", score: 281253.27398870926, probability: 0 },
{ lang: "hi", score: 288881.45337660616, probability: 0 }
],
fileType: {
name: "Zlib Deflate",
ext: "zlib",
mime: "application/x-deflate",
desc: ""
},
isUTF8: false,
entropy: 7.195097600311693,
matchingOps: [
{
op: "Zlib Inflate",
match: "^\\x78(\\x01|\\x9c|\\xda|\\x5e)",
flags: "",
args: [0, 0, "Adaptive", false, false],
useful: false
}
],
useful: false,
matchesCrib: null
},
{
recipe: [
{ op: "From Base58", args: ["123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz", false] },
{ op: "Zlib Inflate", args: [0, 0, "Adaptive", false, false] }
],
data: "54 68 65 20 6c 61 73 74 20 65 76 65 72 20 64 6f 6c 70 68 69 6e 20 6d 65 73 73 61 67 65 20 77 61 73 2",
languageScores: [
{ lang: "lt", score: 4020.942783100774, probability: 0 },
{ lang: "et", score: 4037.782493918477, probability: 0 },
{ lang: "pl", score: 4071.733116138693, probability: 0 },
{ lang: "ca", score: 4239.945529560806, probability: 0 },
{ lang: "da", score: 4275.663552658962, probability: 0 },
{ lang: "nn", score: 4307.015160080877, probability: 0 },
{ lang: "no", score: 4379.829861046261, probability: 0 },
{ lang: "sk", score: 4633.456180672558, probability: 0 },
{ lang: "de", score: 4719.603246008054, probability: 0 },
{ lang: "sl", score: 4726.246618156058, probability: 0 },
{ lang: "fi", score: 4794.237435613583, probability: 0 },
{ lang: "lv", score: 4806.998921950214, probability: 0 },
{ lang: "cs", score: 4868.721721210801, probability: 0 },
{ lang: "en", score: 4950.0684965334995, probability: 0 },
{ lang: "hu", score: 4995.323898913292, probability: 0 },
{ lang: "nl", score: 4999.432835113283, probability: 0 },
{ lang: "ro", score: 5162.242153914779, probability: 0 },
{ lang: "tr", score: 5265.836504599617, probability: 0 },
{ lang: "pt", score: 5312.023757903025, probability: 0 },
{ lang: "hr", score: 5345.380617593091, probability: 0 },
{ lang: "ko", score: 5381.6478783926905, probability: 0 },
{ lang: "vi", score: 5718.828322653147, probability: 0 },
{ lang: "it", score: 5875.9231271621875, probability: 0 },
{ lang: "es", score: 5983.873285673707, probability: 0 },
{ lang: "fr", score: 6262.080912550161, probability: 0 },
{ lang: "id", score: 6601.300797911038, probability: 0 },
{ lang: "sr", score: 6654.144639340762, probability: 0 },
{ lang: "uk", score: 7782.677033025678, probability: 0 },
{ lang: "ru", score: 8053.479010942278, probability: 0 },
{ lang: "sv", score: 8090.580294809194, probability: 0 },
{ lang: "zh", score: 8177.896267663754, probability: 0 },
{ lang: "bg", score: 8236.236191303162, probability: 0 },
{ lang: "he", score: 9635.83876515383, probability: 0 },
{ lang: "ar", score: 9828.272236809067, probability: 0 },
{ lang: "ja", score: 9872.065475623614, probability: 0 },
{ lang: "el", score: 10153.124281359962, probability: 0 },
{ lang: "th", score: 16395.75614813131, probability: 0 },
{ lang: "hi", score: 27382.573660336377, probability: 0 },
{ lang: "fa", score: 170691.27147588678, probability: 0 }
],
fileType: null,
isUTF8: true,
entropy: 3.1498667149804396,
matchingOps: [
{ op: "From Hex",
match: "^[\\dA-F]{2}(?: [\\dA-F]{2})*$",
flags: "i",
args: ["Space"],
useful: false
},
{ op: "From Hexdump",
match: "^(?:(?:[\\dA-F]{4,16}h?:?)?[ \\t]*((?:[\\dA-F]{2} ){1,8}(?:[ \\t]|[\\dA-F]{2}-)(?:[\\dA-F]{2} ){1,8}|(?:[\\dA-F]{4} )*[\\dA-F]{4}|(?:[\\dA-F]{2} )*[\\dA-F]{2})[^\\n]*\\n?){2,}$",
flags: "i",
args: [],
useful: false
}
],
useful: false,
matchesCrib: null
},
{
recipe: [],
data: "WUagwsiae6mP8gNtCCLUFpCpCB26RmBDoDD8PacdAmzAzBVjkK2QstFXaKhpC6iUS7RHqXrJtFisoRSgoJ4whjm1arm864qaNq4R",
languageScores: [
{ lang: "en", score: 1322.88712942794, probability: 0 },
{ lang: "pt", score: 1328.9071778467946, probability: 0 },
{ lang: "es", score: 1499.8082245346486, probability: 0 },
{ lang: "ca", score: 1563.0091696371378, probability: 0 },
{ lang: "it", score: 1570.1642147427024, probability: 0 },
{ lang: "vi", score: 1618.2318632861754, probability: 0 },
{ lang: "fr", score: 1749.7489968143416, probability: 0 },
{ lang: "de", score: 1770.6756390171297, probability: 0 },
{ lang: "id", score: 1784.9300193685633, probability: 0 },
{ lang: "sv", score: 2099.0743314846904, probability: 0 },
{ lang: "nl", score: 2144.1470604048636, probability: 0 },
{ lang: "pl", score: 2194.198150325025, probability: 0 },
{ lang: "nn", score: 2268.3275668395354, probability: 0 },
{ lang: "ro", score: 2276.237691757556, probability: 0 },
{ lang: "no", score: 2293.9213133644007, probability: 0 },
{ lang: "hr", score: 2565.2302900308428, probability: 0 },
{ lang: "da", score: 2617.902713714368, probability: 0 },
{ lang: "tr", score: 2723.61992089351, probability: 0 },
{ lang: "fi", score: 2758.0636034887684, probability: 0 },
{ lang: "sk", score: 2850.6382152940587, probability: 0 },
{ lang: "sl", score: 2884.394383865182, probability: 0 },
{ lang: "cs", score: 3012.2448524304577, probability: 0 },
{ lang: "et", score: 3109.3957721509546, probability: 0 },
{ lang: "hu", score: 3116.6065874254855, probability: 0 },
{ lang: "lt", score: 4030.1831236307294, probability: 0 },
{ lang: "lv", score: 4891.534029615823, probability: 0 },
{ lang: "zh", score: 10308.630736378773, probability: 0 },
{ lang: "ja", score: 14512.600885650681, probability: 0 },
{ lang: "ko", score: 14746.71957673977, probability: 0 },
{ lang: "el", score: 17825.432781080377, probability: 0 },
{ lang: "sr", score: 18718.151933023175, probability: 0 },
{ lang: "bg", score: 25514.40356919307, probability: 0 },
{ lang: "ru", score: 27069.357131947643, probability: 0 },
{ lang: "he", score: 27192.837699276748, probability: 0 },
{ lang: "uk", score: 27436.685419942954, probability: 0 },
{ lang: "th", score: 28783.84766499238, probability: 0 },
{ lang: "ar", score: 36435.92420598504, probability: 0 },
{ lang: "fa", score: 42141.35472527937, probability: 0 },
{ lang: "hi", score: 58009.58379895255, probability: 0 }
],
fileType: null,
isUTF8: true,
entropy: 5.6887987925007035,
matchingOps: [
{
op: "From Base58",
match: "^[1-9A-HJ-NP-Za-km-z]{20,}$",
flags: "",
args: ["123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz", false],
useful: false
},
{
op: "From Base58",
match: "^[1-9A-HJ-NP-Za-km-z]{20,}$",
flags: "",
args: ["rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz", false],
useful: false
},
{
op: "From Base64",
match: "^\\s*[A-Z\\d\\-_]{20,}\\s*$",
flags: "i",
args: ["A-Za-z0-9-_", true],
useful: false
},
{
op: "From Base64",
match: "^\\s*[A-Z\\d_.]{20,}\\s*$",
flags: "i",
args: ["A-Za-z0-9_.", true],
useful: false
},
{
op: "From Base64",
match: "^\\s*[A-Z\\d+\\-]{20,}\\s*$",
flags: "i",
args: ["+\\-0-9A-Za-z", true],
useful: false
},
{
op: "From Base64",
match: "^\\s*[A-Z\\d./]{20,}\\s*$",
flags: "i",
args: ["./0-9A-Za-z", true],
useful: false
}
],
useful: false,
matchesCrib: null
}
];
const depth = 3;
const res = await chef.magic(input);
const res = await chef.magic(input, {
depth: 3
});
// assert against the structure of the output, rather than the values.
assert.strictEqual(res.value.length, depth + 1);
res.value.forEach(row => {
assert.ok(row.recipe);
assert.ok(row.data);
assert.ok(row.languageScores);
assert.ok(Object.prototype.hasOwnProperty.call(row, "fileType")); // Can be null, so cannot just use ok
assert.ok(row.entropy);
assert.ok(row.matchingOps);
assert.ok(Object.prototype.hasOwnProperty.call(row, "useful"));
assert.ok(Object.prototype.hasOwnProperty.call(row, "matchesCrib"));
row.recipe.forEach(item => {
assert.ok(Object.prototype.hasOwnProperty.call(item, "op"));
assert.strictEqual(typeof item.op, "string");
assert.ok(Object.prototype.hasOwnProperty.call(item, "args"));
assert.ok(Array.isArray(item.args));
});
row.languageScores.forEach(score => {
assert.ok(Object.prototype.hasOwnProperty.call(score, "lang"));
assert.strictEqual(typeof score.lang, "string");
assert.ok(Object.prototype.hasOwnProperty.call(score, "score"));
assert.strictEqual(typeof score.score, "number");
assert.ok(Object.prototype.hasOwnProperty.call(score, "probability"));
assert.strictEqual(typeof score.probability, "number");
});
row.matchingOps.forEach(op => {
assert.ok(Object.prototype.hasOwnProperty.call(op, "op"));
assert.strictEqual(typeof op.op, "string");
assert.ok(Object.prototype.hasOwnProperty.call(op, "match"));
assert.strictEqual(typeof op.match, "string");
assert.ok(Object.prototype.hasOwnProperty.call(op, "flags"));
assert.strictEqual(typeof op.flags, "string");
assert.ok(Object.prototype.hasOwnProperty.call(op, "args"));
assert.ok(Array.isArray(op.args));
assert.ok(Object.prototype.hasOwnProperty.call(op, "useful"));
assert.strictEqual(typeof op.useful, "boolean");
});
});
assert.deepStrictEqual(output, res.value);
}),