'use strict';
// npx mocha test-XSS.js
require('should');
const checkXSS = require('../app/src/XSS');
describe('test-XSS', () => {
describe('1. Basic Data Types Handling', () => {
it('should return numbers and booleans unchanged', () => {
checkXSS(42).should.equal(42);
checkXSS(true).should.equal(true);
});
it('should return null and undefined unchanged', () => {
should.not.exist(checkXSS(null));
should.not.exist(checkXSS(undefined));
});
});
describe('2. Simple String Handling', () => {
it('should sanitize strings with XSS injections', () => {
const maliciousString = '';
const sanitizedString = checkXSS(maliciousString);
sanitizedString.should.not.containEql('');
});
it('should sanitize complex XSS injections', () => {
const complexString = '';
const sanitizedSvgXss = checkXSS(svgXss);
sanitizedSvgXss.should.not.containEql('';
const sanitizedDynamicXss = checkXSS(dynamicXss);
sanitizedDynamicXss.should.not.containEql('onerror');
sanitizedDynamicXss.should.containEql('
');
});
});
describe('8. Handling Mixed Content', () => {
it('should sanitize mixed content', () => {
const mixedContent = 'Normal text more text
';
const sanitizedContent = checkXSS(mixedContent);
sanitizedContent.should.not.containEql('