/**
* sanitizeSkillIcon unit tests: security checks before inline rendering of a
* custom Skill icon (raw icon.svg content) — anything containing ")).toBeNull();
expect(sanitizeSkillIcon('')).toBeNull();
});
it("event attributes (on*=) are rejected", () => {
expect(sanitizeSkillIcon('')).toBeNull();
expect(sanitizeSkillIcon('')).toBeNull();
expect(sanitizeSkillIcon('')).toBeNull();
});
it("foreignObject / xlink:href are rejected", () => {
expect(sanitizeSkillIcon("")).toBeNull();
expect(sanitizeSkillIcon('')).toBeNull();
});
it("any href attribute is rejected (not just xlink:, case-insensitive, single/double/unquoted forms)", () => {
expect(
sanitizeSkillIcon(''),
).toBeNull();
expect(sanitizeSkillIcon('')).toBeNull();
expect(sanitizeSkillIcon("")).toBeNull();
expect(sanitizeSkillIcon("")).toBeNull();
expect(sanitizeSkillIcon('')).toBeNull();
});
it("coordinates in path data are not false positives (stroke=none and d attributes with negatives/decimals still pass)", () => {
const icon =
'';
expect(sanitizeSkillIcon(icon)).toBe(icon);
});
});