CyberChef/tests/operations/tests/ConditionalJump.mjs

94 lines
2.2 KiB
JavaScript

/**
* Conditional Jump tests
*
* @author tlwr [toby@toby.codes]
*
* @copyright Crown Copyright 2018
* @license Apache-2.0
*/
import TestRegister from "../TestRegister";
TestRegister.addTests([
{
name: "Conditional Jump: Skips 0",
input: [
"should be changed",
].join("\n"),
expectedOutput: [
"YzJodmRXeGtJR0psSUdOb1lXNW5aV1E9"
].join("\n"),
recipeConfig: [
{
op: "Conditional Jump",
args: ["match", false, "", 0],
},
{
op: "To Base64",
args: ["A-Za-z0-9+/="],
},
{
op: "To Base64",
args: ["A-Za-z0-9+/="],
},
],
},
{
name: "Conditional Jump: Skips 1",
input: [
"should be changed",
].join("\n"),
// Expecting base32, not base64 output
expectedOutput: [
"ONUG65LMMQQGEZJAMNUGC3THMVSA====",
].join("\n"),
recipeConfig: [
{
op: "Conditional Jump",
args: ["should", false, "skip match", 10],
},
{
op: "To Base64",
args: ["A-Za-z0-9+/="],
},
{
op: "Label", args: ["skip match"],
},
{
op: "To Base32",
args: ["A-Z2-7="],
},
],
},
{
name: "Conditional Jump: Skips backwards",
input: [
"match",
].join("\n"),
expectedOutput: [
"f7cf556f7f4fc6635db8c314f7a81f2a",
].join("\n"),
recipeConfig: [
{
op: "Label",
args: ["back to the beginning"],
},
{
op: "Jump",
args: ["skip replace"],
},
{
op: "MD2",
args: [],
},
{
op: "Label",
args: ["skip replace"],
},
{
op: "Conditional Jump",
args: ["match", false, "back to the beginning", 10],
},
],
}
]);