*
* For the full copyright and license information, please view the LICENSE
* file that was distributed with this source code.
*/
namespace League\CommonMark\Tests\Functional\Extension\Autolink;
use League\CommonMark\Environment\Environment;
use League\CommonMark\Extension\Autolink\AutolinkExtension;
use League\CommonMark\Extension\CommonMark\CommonMarkCoreExtension;
use League\CommonMark\Extension\Strikethrough\StrikethroughExtension;
use League\CommonMark\MarkdownConverter;
use PHPUnit\Framework\TestCase;
final class UrlAutolinkParserTest extends TestCase
{
/**
* @dataProvider dataProviderForAutolinkTests
*/
public function testUrlAutolinks(string $input, string $expected): void
{
$environment = new Environment();
$environment->addExtension(new CommonMarkCoreExtension());
$environment->addExtension(new AutolinkExtension());
$converter = new MarkdownConverter($environment);
$this->assertEquals($expected, \trim((string) $converter->convert($input)));
}
/**
* @return iterable You can search on http://google.com for stuff. https://sub_domain.example.com http://leadingwhitespace.example.com http://trailingwhitespace.example.com google.com is missing www and/or a protocol http:/google.com is missing a slash javascript:alert(0); doesn\'t match the supported protocols Maybe you\'re interested in https://www.google.com/search?q=php+commonmark! Or perhaps you\'re looking for my personal website https://www.colinodell.com...? Check https://www.stackoverflow.com: they have all the answers Visit www.commonmark.org. Visit www.commonmark.org/a.b. www.google.com/search?q=Markup+(business) www.google.com/search?q=Markup+(business))) (www.google.com/search?q=Markup+(business)) (www.google.com/search?q=Markup+(business) www.google.com/search?q=(business))+ok (https://www.example.com/test). www.google.com/search?q=commonmark&hl=en www.google.com/search?q=commonmark&hl;\n
"];
// Tests of "incomplete" URLs
yield ['google.com is missing www and/or a protocol', '
https://eventum.example.net/history.php?iss_id=107092\nhttps://gitlab.example.net/group/project/merge_requests/39#note_150630
"]; // Regression: CommonMark autolinks should not be double-linked yield ['http://wiki/Puncutation_in_links:_why_its_bad_(and_should_be_avoided)
']; } public function testUrlAutolinksWithStrikethrough(): void { $markdown = '~~Prefix i link: https://aws.amazon.com/emr/features/hadoop/~~'; $environment = new Environment(); $environment->addExtension(new CommonMarkCoreExtension()); $environment->addExtension(new AutolinkExtension()); $environment->addExtension(new StrikethroughExtension()); $converter = new MarkdownConverter($environment); $html = $converter->convert($markdown)->getContent(); $this->assertSame( 'Prefix i link: https://aws.amazon.com/emr/features/hadoop/