CyberChef/test/tests/nodeApi/nodeApi.mjs

85 lines
2.2 KiB
JavaScript

/* eslint no-console: 0 */
/**
* nodeApi.js
*
* Test node api utilities
*
* @author d98762625 [d98762625@gmail.com]
* @copyright Crown Copyright 2018
* @license Apache-2.0
*/
import assert from "assert";
import it from "../assertionHandler";
import chef from "../../../src/node/index";
import TestRegister from "../../TestRegister";
TestRegister.addApiTests([
it("should have some operations", () => {
assert(chef);
assert(chef.toBase32);
assert(chef.setUnion);
assert(!chef.randomFunction);
}),
it("should have an async/await api", async () => {
try {
const result = await chef.toBase32("input");
assert.notEqual("something", result);
} catch (e) {
// shouldnt reach here
assert(false);
}
try {
const fail = chef.setUnion("1");
// shouldnt get here
assert(!fail || false);
} catch (e) {
assert(true);
}
}),
it("should have a callback API", async () => {
await chef.toBase32("something", (err, result) => {
if (err) {
assert(false);
} else {
assert.equal("ONXW2ZLUNBUW4ZY=", result);
}
});
}),
it("should handle errors in callback API", async () => {
await chef.setUnion("1", (err, result) => {
if (err) {
assert(true);
return;
}
assert(false);
});
}),
it("should accept arguments in object format for operations", async () => {
const result = await chef.setUnion("1 2 3 4:3 4 5 6", {
itemDelimiter: " ",
sampleDelimiter: ":"
});
assert.equal(result, "1 2 3 4 5 6");
}),
it("should accept just some of the optional arguments being overriden", async () => {
const result = await chef.setIntersection("1 2 3 4 5\\n\\n3 4 5", {
itemDelimiter: " ",
});
assert.equal(result, "3 4 5");
}),
it("should accept no override arguments and just use the default values", async () => {
const result = await chef.powerSet("1,2,3");
assert.equal(result, "\n3\n2\n1\n2,3\n1,3\n1,2\n1,2,3\n");
})
]);