added different protocols to be allowed as asset base_urls

This commit is contained in:
Alexander Schranz 2018-09-15 17:51:40 +02:00
parent 68c869ba8e
commit 2e21834b71
No known key found for this signature in database
GPG Key ID: 99EA1899DE36BDAE
3 changed files with 25 additions and 3 deletions

View File

@ -1,6 +1,11 @@
CHANGELOG
=========
4.2.0
-----
* added different protocols to be allowed as asset base_urls
3.4.0
-----

View File

@ -33,21 +33,28 @@ class UrlPackageTest extends TestCase
array('http://example.net', '', 'http://example.com/foo', 'http://example.com/foo'),
array('http://example.net', '', 'https://example.com/foo', 'https://example.com/foo'),
array('http://example.net', '', '//example.com/foo', '//example.com/foo'),
array('file:///example/net', '', 'file:///example/com/foo', 'file:///example/com/foo'),
array('ftp://example.net', '', 'ftp://example.com', 'ftp://example.com'),
array('http://example.com', '', '/foo', 'http://example.com/foo?v1'),
array('http://example.com', '', 'foo', 'http://example.com/foo?v1'),
array('http://example.com/', '', 'foo', 'http://example.com/foo?v1'),
array('http://example.com/foo', '', 'foo', 'http://example.com/foo/foo?v1'),
array('http://example.com/foo/', '', 'foo', 'http://example.com/foo/foo?v1'),
array('file:///example/com/foo/', '', 'foo', 'file:///example/com/foo/foo?v1'),
array(array('http://example.com'), '', '/foo', 'http://example.com/foo?v1'),
array(array('http://example.com', 'http://example.net'), '', '/foo', 'http://example.com/foo?v1'),
array(array('http://example.com', 'http://example.net'), '', '/fooa', 'http://example.net/fooa?v1'),
array(array('file:///example/com', 'file:///example/net'), '', '/foo', 'file:///example/com/foo?v1'),
array(array('ftp://example.com', 'ftp://example.net'), '', '/fooa', 'ftp://example.net/fooa?v1'),
array('http://example.com', 'version-%2$s/%1$s', '/foo', 'http://example.com/version-v1/foo'),
array('http://example.com', 'version-%2$s/%1$s', 'foo', 'http://example.com/version-v1/foo'),
array('http://example.com', 'version-%2$s/%1$s', 'foo/', 'http://example.com/version-v1/foo/'),
array('http://example.com', 'version-%2$s/%1$s', '/foo/', 'http://example.com/version-v1/foo/'),
array('file:///example/com', 'version-%2$s/%1$s', '/foo/', 'file:///example/com/version-v1/foo/'),
array('ftp://example.com', 'version-%2$s/%1$s', '/foo/', 'ftp://example.com/version-v1/foo/'),
);
}
@ -97,11 +104,21 @@ class UrlPackageTest extends TestCase
}
/**
* @dataProvider getWrongBaseUrlConfig
*
* @expectedException \Symfony\Component\Asset\Exception\InvalidArgumentException
*/
public function testWrongBaseUrl()
public function testWrongBaseUrl($baseUrls)
{
new UrlPackage(array('not-a-url'), new EmptyVersionStrategy());
new UrlPackage($baseUrls, new EmptyVersionStrategy());
}
public function getWrongBaseUrlConfig()
{
return array(
array('not-a-url'),
array('not-a-url-with-query?query=://'),
);
}
private function getContext($secure)

View File

@ -129,7 +129,7 @@ class UrlPackage extends Package
foreach ($urls as $url) {
if ('https://' === substr($url, 0, 8) || '//' === substr($url, 0, 2)) {
$sslUrls[] = $url;
} elseif ('http://' !== substr($url, 0, 7)) {
} elseif (null === parse_url($url, PHP_URL_SCHEME)) {
throw new InvalidArgumentException(sprintf('"%s" is not a valid URL', $url));
}
}