import { getDomainFromEmail } from "../../src/utils/sanitizer.utils"; import { removeNonNumeric } from "../../src/utils/sanitizer.utils"; import { removeNonAlpha } from "../../src/utils/sanitizer.utils"; import { removeNonAlphanumeric } from "../../src/utils/sanitizer.utils"; describe("Sanitize Email", () => { const inputs = [ "this+is+an-_email@example.com", '"unusual email"@example.com', "(brackets)addr@example.com", "I%Have{Special}%Characters@example.com", "Basic.address@example.com", `"very.(),:;<>[]\".VERY.\"very\ \"very\".unusual"@example.com`, "THIS_EMAIL_CONTAINS_CAPITALISED_DOMAIN@EXAMPLE.COM", ]; const expectedOutput = "example.com"; for (const addr of inputs) { test(`Should return only domain: ${addr}`, () => { expect(getDomainFromEmail(addr)).toEqual(expectedOutput); }); } }); describe("Remove non-numeric", () => { const inputs = ["abc123", "<%43)($£@:}jfkd4"]; const expectedOutputs = ["123", "434"]; for (const key in inputs) { const input = inputs[key]; const desired = expectedOutputs[key]; test(`Should return only numbers: ${key}`, () => { expect(removeNonNumeric(input)).toEqual(desired); }); } }); describe("Remove non-Alpha", () => { const inputs = ["DROP/*comment*/sampletable", "10; DROP TABLE members /*"]; const outputs = ["DROPcommentsampletable", "DROPTABLEmembers"]; for (const key in inputs) { const input = inputs[key]; const desired = outputs[key]; test(`Should return with only letters: ${key}`, () => { expect(removeNonAlpha(input)).toEqual(desired); }) } }) describe("Remove non-alphanumeric", () => { const inputs = ["DROP/*comment*/sampletable", "10; DROP TABLE members /*", "1F44"]; const outputs = ["DROPcommentsampletable", "10DROPTABLEmembers", "1F44"]; for (const key in inputs) { const input = inputs[key]; const desired = outputs[key]; test(`Should return with only alphanumeric: ${key}`, () => { expect(removeNonAlphanumeric(input)).toEqual(desired); }) } })