View source
<?php
namespace Drupal\Tests\oembed_providers\Unit;
use Drupal\oembed_providers\OembedProviderForm;
use Drupal\Tests\UnitTestCase;
class UrlIsValidTest extends UnitTestCase {
protected $formObject;
protected function setUp() {
parent::setUp();
$entity_type_manager = $this
->getMockBuilder('Drupal\\Core\\Entity\\EntityTypeManager')
->disableOriginalConstructor()
->getMock();
$messenger = $this
->getMockBuilder('Drupal\\Core\\Messenger\\Messenger')
->disableOriginalConstructor()
->getMock();
$this->formObject = new OembedProviderForm($entity_type_manager, $messenger);
}
public function providerTestValidAbsoluteData() {
$urls = [
'example.com/asset/*',
'www.example.com/asset/*',
'www.example.com/asset/*',
'*.example.com/asset/*',
'*.example.com:8080/asset/*',
'example.com:8080/asset/?id=*',
'*.example.com:8080/asset/?id=*',
'127.0.0.1',
'127.0.0.1:8085',
'127.0.0.1:8085/*',
'[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]/path/*',
'[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:8085/path/*',
];
return $this
->dataEnhanceWithScheme($urls);
}
public function testValidAbsolute($url, $scheme) {
$test_url = $scheme . '://' . $url;
$valid_url = $this->formObject
->urlIsValid($test_url);
$this
->assertTrue($valid_url, $test_url . ' is a valid URL.');
}
public function providerTestInvalidAbsolute() {
$data = [
'',
'ex!ample.com',
'ex%ample.com',
'*.*.example.com',
'sub.*.example.com',
'*.com',
'*.com/path/*',
];
return $this
->dataEnhanceWithScheme($data);
}
public function testInvalidAbsolute($url, $scheme) {
$test_url = $scheme . '://' . $url;
$valid_url = $this->formObject
->urlIsValid($test_url);
$this
->assertFalse($valid_url, $test_url . ' is NOT a valid URL.');
}
protected function dataEnhanceWithScheme(array $urls) {
$url_schemes = [
'http',
'https',
];
$data = [];
foreach ($url_schemes as $scheme) {
foreach ($urls as $url) {
$data[] = [
$url,
$scheme,
];
}
}
return $data;
}
}