From 8c2429736c8684110a1d3341aa8852f9c654cbb8 Mon Sep 17 00:00:00 2001 From: HarelKatz <34490550+HarelKatz@users.noreply.github.com> Date: Fri, 15 May 2026 19:59:24 +0300 Subject: [PATCH] test: unique/sort/URI-literal/edge-case behaviour with Extract IP defang --- tests/operations/tests/ExtractIPAddresses.mjs | 99 +++++++++++++++++++ 1 file changed, 99 insertions(+) diff --git a/tests/operations/tests/ExtractIPAddresses.mjs b/tests/operations/tests/ExtractIPAddresses.mjs index 801e34f6..ab8f9d48 100644 --- a/tests/operations/tests/ExtractIPAddresses.mjs +++ b/tests/operations/tests/ExtractIPAddresses.mjs @@ -250,5 +250,104 @@ TestRegister.addTests([ }, ], }, + { + name: "ExtractIPAddress defang on + unique: plain and defanged kept distinct", + input: "1.1.1.1 1[.]1[.]1[.]1 1.1.1.1", + expectedOutput: "1.1.1.1\n1[.]1[.]1[.]1", + recipeConfig: [ + { + "op": "Extract IP addresses", + "args": [true, true, false, false, false, true, true] + }, + ], + }, + { + name: "ExtractIPAddress defang on + sort: plain group sorts numerically before defanged group sorts lexically", + input: "200.1.1.1 5.5.5.5 100[.]100[.]100[.]100 10[.]0[.]0[.]1", + expectedOutput: "5.5.5.5\n200.1.1.1\n10[.]0[.]0[.]1\n100[.]100[.]100[.]100", + recipeConfig: [ + { + "op": "Extract IP addresses", + "args": [true, true, false, false, true, false, true] + }, + ], + }, + { + name: "ExtractIPAddress defang on: IPv6 URI literal brackets stripped, inner extracted", + input: "Connect to [2001:db8::1]:8080 please", + expectedOutput: "2001:db8::1", + recipeConfig: [ + { + "op": "Extract IP addresses", + "args": [false, true, false, false, false, false, true] + }, + ], + }, + { + name: "ExtractIPAddress defang on: empty input", + input: "", + expectedOutput: "", + recipeConfig: [ + { + "op": "Extract IP addresses", + "args": [true, true, false, false, false, false, true] + }, + ], + }, + { + name: "ExtractIPAddress defang on: trailing-digit trap does not over-extend defanged IP", + input: "abc 192[.]168[.]1[.]1234", + expectedOutput: "", + recipeConfig: [ + { + "op": "Extract IP addresses", + "args": [true, true, false, false, false, false, true] + }, + ], + }, + { + name: "ExtractIPAddress defang on + displayTotal: count line includes defanged matches", + input: "1.1.1.1 2[.]2[.]2[.]2 3[.]3[.]3[.]3", + expectedOutput: "Total found: 3\n\n1.1.1.1\n2[.]2[.]2[.]2\n3[.]3[.]3[.]3", + recipeConfig: [ + { + "op": "Extract IP addresses", + "args": [true, true, false, true, false, false, true] + }, + ], + }, + { + name: "ExtractIPAddress defang on, IPv4 toggle off: defanged IPv4 input matches nothing", + input: "192[.]168[.]1[.]1", + expectedOutput: "", + recipeConfig: [ + { + "op": "Extract IP addresses", + "args": [false, true, false, false, false, false, true] + }, + ], + }, + { + name: "ExtractIPAddress defang on, IPv6 toggle off: defanged IPv6 input matches nothing", + input: "2001[:]db8[:][:]1", + expectedOutput: "", + recipeConfig: [ + { + "op": "Extract IP addresses", + "args": [true, false, false, false, false, false, true] + }, + ], + }, + { + name: "ExtractIPAddress defang on: pure ASCII text with no IPs returns empty", + input: "the quick brown fox jumps over the lazy dog (no addresses here)", + expectedOutput: "", + recipeConfig: [ + { + "op": "Extract IP addresses", + "args": [true, true, false, false, false, false, true] + }, + ], + }, ]);