. * */ namespace Friendica\Test\src\Content\Text; use Friendica\Content\Text\BBCode; use Friendica\DI; use Friendica\Network\HTTPException\InternalServerErrorException; use Friendica\Test\FixtureTest; use Friendica\Util\Strings; class BBCodeTest extends FixtureTest { /** @var \HTMLPurifier */ public $HTMLPurifier; protected function setUp(): void { parent::setUp(); DI::config()->set('system', 'remove_multiplicated_lines', false); DI::config()->set('system', 'allowed_link_protocols', []); DI::config()->set('system', 'url', 'https://friendica.local'); DI::config()->set('system', 'no_smilies', false); DI::config()->set('system', 'big_emojis', false); DI::config()->set('system', 'allowed_oembed', ''); $config = \HTMLPurifier_HTML5Config::createDefault(); $config->set('HTML.Doctype', 'HTML5'); $config->set('Attr.AllowedRel', [ 'noreferrer' => true, 'noopener' => true, ]); $config->set('Attr.AllowedFrameTargets', [ '_blank' => true, ]); $this->HTMLPurifier = new \HTMLPurifier($config); } public function dataLinks() { return [ /** @see https://github.com/friendica/friendica/issues/2487 */ 'bug-2487-1' => [ 'data' => 'https://de.wikipedia.org/wiki/Juha_Sipilä', 'assertHTML' => true, ], 'bug-2487-2' => [ 'data' => 'https://de.wikipedia.org/wiki/Dnepr_(Motorradmarke)', 'assertHTML' => true, ], 'bug-2487-3' => [ 'data' => 'https://friendica.wäckerlin.ch/friendica', 'assertHTML' => true, ], 'bug-2487-4' => [ 'data' => 'https://mastodon.social/@morevnaproject', 'assertHTML' => true, ], /** @see https://github.com/friendica/friendica/issues/5795 */ 'bug-5795' => [ 'data' => 'https://social.nasqueron.org/@liw/100798039015010628', 'assertHTML' => true, ], /** @see https://github.com/friendica/friendica/issues/6095 */ 'bug-6095' => [ 'data' => 'https://en.wikipedia.org/wiki/Solid_(web_decentralization_project)', 'assertHTML' => true, ], 'no-protocol' => [ 'data' => 'example.com/path', 'assertHTML' => false ], 'wrong-protocol' => [ 'data' => 'ftp://example.com', 'assertHTML' => false ], 'wrong-domain-without-path' => [ 'data' => 'http://example', 'assertHTML' => false ], 'wrong-domain-with-path' => [ 'data' => 'http://example/path', 'assertHTML' => false ], 'bug-6857-domain-start' => [ 'data' => "http://\nexample.com", 'assertHTML' => false ], 'bug-6857-domain-end' => [ 'data' => "http://example\n.com", 'assertHTML' => false ], 'bug-6857-tld' => [ 'data' => "http://example.\ncom", 'assertHTML' => false ], 'bug-6857-end' => [ 'data' => "http://example.com\ntest", 'assertHTML' => false ], 'bug-6901' => [ 'data' => "http://example.com