Rocket.Chat/packages/message-parser/tests/abuse.test.ts

259 lines
16 KiB
TypeScript

import { parse } from '../src';
import { paragraph, plain, bold, italic, strike } from '../src/utils';
test.each([
[
`This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&*()_+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok~, from now on we repeat some. , REPEATx2 This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&*()_+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok~, from now on we repeat some. REPEAT x3 This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&*()_+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok~, from now on we repeat some. REPEAT x4 This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&*()_+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok~, from now on we repeat some. REPEATx 5 This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&*()_+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok~, from now on we repeat some. , REPEAT x6 This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&*()_+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok~, from now on we repeat some. this can go long for some time, repeat x7 This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&*()_+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok~, from now on we repeat some. ,repeat x8 This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&*()_+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok~, from now on we repeat some.`,
[
paragraph([
plain(
'This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&',
),
bold([
plain('()'),
italic([
plain(`+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok`),
strike([
plain(
`, from now on we repeat some. , REPEATx2 This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&*()_+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok`,
),
]),
plain(
', from now on we repeat some. REPEAT x3 This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&*()',
),
]),
plain(`+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok`),
strike([
plain(
', from now on we repeat some. REPEAT x4 This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&*()',
),
italic([
plain(
`+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok~, from now on we repeat some. REPEATx 5 This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&*()`,
),
]),
plain(`+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok`),
]),
plain(
`, from now on we repeat some. , REPEAT x6 This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&`,
),
]),
plain(`()_+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok`),
strike([
plain(
`, from now on we repeat some. this can go long for some time, repeat x7 This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&*()`,
),
italic([
plain(
`+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok~, from now on we repeat some. ,repeat x8 This a message designed to stress test the message parser, trying to force several rules to stack at the same time !!@#$%^&*()`,
),
]),
plain(`+, overloading the symbols {}:"|<>?, some more text ,./;'\\[], numbers too 1234567890-= let it call s o s ok`),
]),
plain(', from now on we repeat some.'),
]),
],
],
[
'**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__**_**__',
[
paragraph([
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
italic([bold([plain('_')])]),
bold([italic([plain('**')]), italic([plain('**')])]),
plain('__'),
]),
],
],
])('parses %p', (input, output) => {
expect(parse(input)).toMatchObject(output);
});