Allow basic auth in url.

Improve regex. Add tests.
This commit is contained in:
Benjamin Laugueux 2014-08-07 11:43:44 +02:00 committed by Fabien Potencier
parent 7b3bd56f77
commit f1ea987f35
2 changed files with 7 additions and 0 deletions

View File

@ -24,6 +24,7 @@ class UrlValidator extends ConstraintValidator
{ {
const PATTERN = '~^ const PATTERN = '~^
(%s):// # protocol (%s):// # protocol
(([\pL\pN-]+:)?([\pL\pN-]+)@)? # basic auth
( (
([\pL\pN\pS-\.])+(\.?([\pL]|xn\-\-[\pL\pN-]+)+\.?) # a domain name ([\pL\pN\pS-\.])+(\.?([\pL]|xn\-\-[\pL\pN-]+)+\.?) # a domain name
| # or | # or

View File

@ -116,6 +116,8 @@ class UrlValidatorTest extends \PHPUnit_Framework_TestCase
array('http://xn--espaa-rta.xn--ca-ol-fsay5a/'), array('http://xn--espaa-rta.xn--ca-ol-fsay5a/'),
array('http://xn--d1abbgf6aiiy.xn--p1ai/'), array('http://xn--d1abbgf6aiiy.xn--p1ai/'),
array('http://☎.com/'), array('http://☎.com/'),
array('http://username:password@symfony.com'),
array('http://user-name@symfony.com'),
); );
} }
@ -155,6 +157,10 @@ class UrlValidatorTest extends \PHPUnit_Framework_TestCase
array('ftp://[::1]/'), array('ftp://[::1]/'),
array('http://[::1'), array('http://[::1'),
array('http://hello.☎/'), array('http://hello.☎/'),
array('http://:password@symfony.com'),
array('http://:password@@symfony.com'),
array('http://username:passwordsymfony.com'),
array('http://usern@me:password@symfony.com'),
); );
} }