summaryrefslogtreecommitdiffstats
path: root/Tests/Core/Validator/Constraints
diff options
context:
space:
mode:
authorHugo Hamon <hugo.hamon@sensio.com>2013-02-04 13:20:14 +0100
committerHugo Hamon <hugo.hamon@sensio.com>2013-02-04 13:20:14 +0100
commitc4fb5a816e5d46b52908a0ff1b84b4ce9d147cba (patch)
tree854f63714f1c4d59db5106af837d75a4700ab5f1 /Tests/Core/Validator/Constraints
parente642286ad42e113e0ed8e3343ad852121d2f467a (diff)
downloadsymfony-security-c4fb5a816e5d46b52908a0ff1b84b4ce9d147cba.zip
symfony-security-c4fb5a816e5d46b52908a0ff1b84b4ce9d147cba.tar.gz
symfony-security-c4fb5a816e5d46b52908a0ff1b84b4ce9d147cba.tar.bz2
[Security] renamed Constraint namespace to Constraints for validator classes in order to be consistent with the whole current validator API.
Diffstat (limited to 'Tests/Core/Validator/Constraints')
-rw-r--r--Tests/Core/Validator/Constraints/UserPasswordValidatorTest.php161
1 files changed, 161 insertions, 0 deletions
diff --git a/Tests/Core/Validator/Constraints/UserPasswordValidatorTest.php b/Tests/Core/Validator/Constraints/UserPasswordValidatorTest.php
new file mode 100644
index 0000000..d9395ba
--- /dev/null
+++ b/Tests/Core/Validator/Constraints/UserPasswordValidatorTest.php
@@ -0,0 +1,161 @@
+<?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\Security\Tests\Core\Validator\Constraints;
+
+use Symfony\Component\Security\Core\Validator\Constraints\UserPassword;
+use Symfony\Component\Security\Core\Validator\Constraints\UserPasswordValidator;
+
+class UserPasswordValidatorTest extends \PHPUnit_Framework_TestCase
+{
+ const PASSWORD_VALID = true;
+ const PASSWORD_INVALID = false;
+
+ protected $context;
+
+ protected function setUp()
+ {
+ if (false === class_exists('Symfony\Component\Validator\Validator')) {
+ $this->markTestSkipped('The Validator component is required for this test.');
+ }
+
+ $this->context = $this->getMock('Symfony\Component\Validator\ExecutionContext', array(), array(), '', false);
+ }
+
+ protected function tearDown()
+ {
+ $this->context = null;
+ }
+
+ public function testPasswordIsValid()
+ {
+ $user = $this->createUser();
+ $securityContext = $this->createSecurityContext($user);
+
+ $encoder = $this->createPasswordEncoder(static::PASSWORD_VALID);
+ $encoderFactory = $this->createEncoderFactory($encoder);
+
+ $validator = new UserPasswordValidator($securityContext, $encoderFactory);
+ $validator->initialize($this->context);
+
+ $this
+ ->context
+ ->expects($this->never())
+ ->method('addViolation')
+ ;
+
+ $validator->validate('secret', new UserPassword());
+ }
+
+ public function testPasswordIsNotValid()
+ {
+ $user = $this->createUser();
+ $securityContext = $this->createSecurityContext($user);
+
+ $encoder = $this->createPasswordEncoder(static::PASSWORD_INVALID);
+ $encoderFactory = $this->createEncoderFactory($encoder);
+
+ $validator = new UserPasswordValidator($securityContext, $encoderFactory);
+ $validator->initialize($this->context);
+
+ $this
+ ->context
+ ->expects($this->once())
+ ->method('addViolation')
+ ;
+
+ $validator->validate('secret', new UserPassword());
+ }
+
+ public function testUserIsNotValid()
+ {
+ $this->setExpectedException('Symfony\Component\Validator\Exception\ConstraintDefinitionException');
+
+ $user = $this->getMock('Foo\Bar\User');
+ $encoderFactory = $this->getMock('Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface');
+ $securityContext = $this->createSecurityContext($user);
+
+ $validator = new UserPasswordValidator($securityContext, $encoderFactory);
+ $validator->initialize($this->context);
+ $validator->validate('secret', new UserPassword());
+ }
+
+ protected function createUser()
+ {
+ $mock = $this->getMock('Symfony\Component\Security\Core\User\UserInterface');
+
+ $mock
+ ->expects($this->once())
+ ->method('getPassword')
+ ->will($this->returnValue('s3Cr3t'))
+ ;
+
+ $mock
+ ->expects($this->once())
+ ->method('getSalt')
+ ->will($this->returnValue('^S4lt$'))
+ ;
+
+ return $mock;
+ }
+
+ protected function createPasswordEncoder($isPasswordValid = true)
+ {
+ $mock = $this->getMock('Symfony\Component\Security\Core\Encoder\PasswordEncoderInterface');
+
+ $mock
+ ->expects($this->once())
+ ->method('isPasswordValid')
+ ->will($this->returnValue($isPasswordValid))
+ ;
+
+ return $mock;
+ }
+
+ protected function createEncoderFactory($encoder = null)
+ {
+ $mock = $this->getMock('Symfony\Component\Security\Core\Encoder\EncoderFactoryInterface');
+
+ $mock
+ ->expects($this->once())
+ ->method('getEncoder')
+ ->will($this->returnValue($encoder))
+ ;
+
+ return $mock;
+ }
+
+ protected function createSecurityContext($user = null)
+ {
+ $token = $this->createAuthenticationToken($user);
+
+ $mock = $this->getMock('Symfony\Component\Security\Core\SecurityContextInterface');
+ $mock
+ ->expects($this->once())
+ ->method('getToken')
+ ->will($this->returnValue($token))
+ ;
+
+ return $mock;
+ }
+
+ protected function createAuthenticationToken($user = null)
+ {
+ $mock = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface');
+ $mock
+ ->expects($this->once())
+ ->method('getUser')
+ ->will($this->returnValue($user))
+ ;
+
+ return $mock;
+ }
+}