import { filterStyleValues } from "../lib/filter-style-values";
describe("filterStyleValues", () => {
it("returns an empty object if passed nothing", () => {
expect(filterStyleValues()).toEqual({});
});
it("returns an empty object if passed an empty object", () => {
expect(filterStyleValues({})).toEqual({});
});
it("prevents hexadecimal statements", () => {
const result = filterStyleValues({
color: "\\6a\\61\\76\\61\\73\\63\\72\\69\\70\\74",
fontWeight: "500",
fontStyle: "\\4a\\41\\56\\41\\53\\43\\52\\49\\50\\54",
});
const expected = {
fontWeight: "500",
};
expect(result).toEqual(expected);
});
it("prevents at-rule statements", () => {
const result = filterStyleValues({
color: "@import",
fontWeight: "500",
fontStyle: "@IMPORT",
});
const expected = {
fontWeight: "500",
};
expect(result).toEqual(expected);
});
it("prevents javascript statements", () => {
const result = filterStyleValues({
color: "javascript",
fontWeight: "500",
fontStyle: "JAVASCRIPT",
});
const expected = {
fontWeight: "500",
};
expect(result).toEqual(expected);
});
it("prevents expression() statements", () => {
const result = filterStyleValues({
color: "expression(alert(1))",
fontWeight: "500",
fontStyle: "expression(alert(1))",
});
const expected = {
fontWeight: "500",
};
expect(result).toEqual(expected);
});
it("prevents url() statements", () => {
const result = filterStyleValues({
backgroundImage: 'url("foo")',
fontWeight: "500",
color: 'url("bar")',
});
const expected = {
fontWeight: "500",
};
expect(result).toEqual(expected);
});
it("prevents URL() statements", () => {
const result = filterStyleValues({
backgroundImage: 'URL("foo")',
fontWeight: "500",
color: 'URL("bar")',
});
const expected = {
fontWeight: "500",
};
expect(result).toEqual(expected);
});
it("prevents -moz-binding declarations", () => {
const result = filterStyleValues({
MozBinding: 'url("foo")',
fontWeight: "500",
});
const expected = {
fontWeight: "500",
};
expect(result).toEqual(expected);
});
it("prevents < or >", () => {
const result = filterStyleValues({
color: '"/>