2015-08-17 17:00:26 -07:00
< ? php
/*
* This file is part of the Symfony package .
*
* ( c ) Fabien Potencier < fabien @ symfony . com >
*
* For the full copyright and license information , please view the LICENSE
* file that was distributed with this source code .
*/
namespace Symfony\Component\Validator\Tests\Constraints ;
use Symfony\Component\Validator\Constraints\Email ;
use Symfony\Component\Validator\Constraints\EmailValidator ;
use Symfony\Component\Validator\Validation ;
class EmailValidatorTest extends AbstractConstraintValidatorTest
{
protected function getApiVersion ()
{
return Validation :: API_VERSION_2_5 ;
}
protected function createValidator ()
{
return new EmailValidator ( false );
}
public function testNullIsValid ()
{
$this -> validator -> validate ( null , new Email ());
$this -> assertNoViolation ();
}
public function testEmptyStringIsValid ()
{
$this -> validator -> validate ( '' , new Email ());
$this -> assertNoViolation ();
}
/**
* @ expectedException \Symfony\Component\Validator\Exception\UnexpectedTypeException
*/
public function testExpectsStringCompatibleType ()
{
$this -> validator -> validate ( new \stdClass (), new Email ());
}
/**
* @ dataProvider getValidEmails
*/
public function testValidEmails ( $email )
{
$this -> validator -> validate ( $email , new Email ());
$this -> assertNoViolation ();
}
public function getValidEmails ()
{
return array (
array ( 'fabien@symfony.com' ),
array ( 'example@example.co.uk' ),
array ( 'fabien_potencier@example.fr' ),
);
}
/**
* @ dataProvider getInvalidEmails
*/
public function testInvalidEmails ( $email )
{
$constraint = new Email ( array (
'message' => 'myMessage' ,
));
$this -> validator -> validate ( $email , $constraint );
$this -> buildViolation ( 'myMessage' )
-> setParameter ( '{{ value }}' , '"' . $email . '"' )
-> setCode ( Email :: INVALID_FORMAT_ERROR )
-> assertRaised ();
}
public function getInvalidEmails ()
{
return array (
array ( 'example' ),
array ( 'example@' ),
array ( 'example@localhost' ),
2015-08-27 12:03:05 -07:00
array ( 'foo@example.com bar' ),
2015-08-17 17:00:26 -07:00
);
}
public function testStrict ()
{
$constraint = new Email ( array ( 'strict' => true ));
$this -> validator -> validate ( 'example@localhost' , $constraint );
$this -> assertNoViolation ();
}
}