get_html();
$this->assertSame($output, $html);
}
/**
* Data for test_text2html()
*/
public static function provide_text2html_cases(): iterable
{
$options = [
'begin' => '',
'end' => '',
'break' => '
',
'links' => false,
'flowed' => false,
'delsp' => false,
'wrap' => false,
'space' => '_', // replace UTF-8 non-breaking space for simpler testing
'nobr_start' => '>',
'nobr_end' => '<',
];
$data = [];
$data[] = [' aaaa', '>_aaaa<', $options];
$data[] = ['aa>aa', '>aa>aa<', $options];
$data[] = ['aaaa aaaa', '>aaaa_aaaa<', $options];
$data[] = ['aaaa aaaa', '>aaaa__aaaa<', $options];
$data[] = ['aaaa aaaa', '>aaaa___aaaa<', $options];
$data[] = ["aaaa\taaaa", '>aaaa____aaaa<', $options];
$data[] = ["aaaa\naaaa", 'aaaa
aaaa', $options];
$data[] = ["aaaa\n aaaa", 'aaaa
>_aaaa<', $options];
$data[] = ["aaaa\n aaaa", 'aaaa
>__aaaa<', $options];
$data[] = ["aaaa\n aaaa", 'aaaa
>___aaaa<', $options];
$data[] = ["\n", '
', $options];
$data[] = ["\taaaa", '>____aaaa<', $options];
$data[] = ["\naaaa", '
aaaa', $options];
$data[] = ["\n aaaa", '
>_aaaa<', $options];
$data[] = ["\n aaaa", '
>__aaaa<', $options];
$data[] = ["\n aaaa", '
>___aaaa<', $options];
$data[] = ["aaaa\n\nbbbb", 'aaaa
bbbb', $options];
$data[] = [">aaaa \n>aaaa", '
>aaaa_<', $options]; $data[] = [">aaaa\n>aaaa", '
aaaa
aaaa', $options]; $data[] = [">aaaa \n>bbbb\ncccc dddd", '
aaaa
>aaaa_<>cccc_dddd<', $options]; $data[] = ['aaaa-bbbb/cccc', '>aaaa-bbbb/cccc<', $options]; $data[] = ["aaaa-bbbb\r\tcccc", '>aaaa-bbbb____cccc<', $options]; $options['flowed'] = true; $data[] = [' aaaa', 'aaaa', $options]; $data[] = ['aaaa aaaa', 'aaaa aaaa', $options]; $data[] = ['aaaa aaaa', 'aaaa _aaaa', $options]; $data[] = ['aaaa aaaa', 'aaaa _ aaaa', $options]; $data[] = ["aaaa\taaaa", 'aaaa _ _aaaa', $options]; $data[] = ["aaaa\naaaa", 'aaaa
bbbb
aaaa aaaa', $options]; $data[] = [">aaaa\n>aaaa", '
aaaa', $options]; $data[] = [">aaaa \n>bbbb\ncccc dddd", '
aaaa
aaaa bbbbcccc dddd', $options]; $data[] = ["\x02\x03", "\x02\x03", $options]; $options['flowed'] = true; $options['delsp'] = true; $data[] = [' aaaa', 'aaaa', $options]; $data[] = ['aaaa aaaa', 'aaaa aaaa', $options]; $data[] = ['aaaa aaaa', 'aaaa _aaaa', $options]; $data[] = ['aaaa aaaa', 'aaaa _ aaaa', $options]; $data[] = ["aaaa\taaaa", 'aaaa _ _aaaa', $options]; $data[] = ["aaaa\naaaa", 'aaaa
aaaaaaaa', $options]; $data[] = [">aaaa\n>aaaa", '
aaaa', $options]; $data[] = [">aaaa \n>bbbb\ncccc dddd", '
aaaa
aaaabbbbcccc dddd', $options]; $options['flowed'] = false; $options['delsp'] = false; $options['wrap'] = true; $data[] = [">>aaaa bbbb\n>>\n>>>\n>cccc\n\ndddd eeee", '
aaaa bbbbcccc
aaaa
bbbb
cccc
', $options]; return $data; } /** * Test XSS issue */ public function test_text2html_xss() { $input = "\n[]:##str_replacement_0##\n"; $t2h = new \rcube_text2html($input); $html = $t2h->get_html(); $expected = "test
Test2 [1]' . "
\n
\n" . '[1] http://d2.tld