diff --git a/lib/tools/Config.js b/lib/tools/Config.js index 952e74076..98876adab 100644 --- a/lib/tools/Config.js +++ b/lib/tools/Config.js @@ -201,7 +201,7 @@ Config._valid = function(key, value, sch){ if(scht.length > 1 && type != scht[0] && type == '[object String]'){ if(scht[0] == '[object Array]') { // unfortunately, js does not support lookahead RegExp (/(? { + const chai = await import('chai') + expect = chai.expect +}) + + +describe('ReDos Test', function () { + it('should done in 1 s', function () { + // 构造 schema,期望值为数组或者字符串 + const schemaEntry = { + type: ['array', 'string'] + } + // 构造测试用的长字符串 + const value = "a".repeat(100000) + "=" + + const startTime = performance.now() + const result = config._valid('dummyKey', value, schemaEntry) + const endTime = performance.now() + const timeTaken = endTime - startTime + + // 输出匹配结果和耗时(调试用) + console.log(`Time taken: ${timeTaken.toFixed(3)} ms`) + + + // 并断言耗时在合理范围内(比如小于1000毫秒) + expect(timeTaken).to.be.lessThan(1000) + }) +}) diff --git a/test/unit.sh b/test/unit.sh index 127b4b277..99b231aff 100644 --- a/test/unit.sh +++ b/test/unit.sh @@ -100,5 +100,7 @@ runUnitTest $D/bus.spec.mocha.js runUnitTest $D/bus.fork.spec.mocha.js runUnitTest $D/utility.mocha.js +runUnitTest $D/redos.mocha.js + echo "============== unit test finished ==============" cat unit_time