summaryrefslogtreecommitdiffstats
path: root/Core/Tests/Validator/Constraints
diff options
context:
space:
mode:
authorBernhard Schussek <bschussek@gmail.com>2013-09-16 10:03:00 +0200
committerFabien Potencier <fabien.potencier@gmail.com>2013-09-18 09:16:41 +0200
commit5a6aaab2c35213f5ca7e57f061fbb2675e2ece35 (patch)
tree461816fef8160401dc113d3fef190fb437d01cc7 /Core/Tests/Validator/Constraints
parent513a354be10f0ed87933adcb788e48660f8e6ed4 (diff)
downloadsymfony-security-5a6aaab2c35213f5ca7e57f061fbb2675e2ece35.zip
symfony-security-5a6aaab2c35213f5ca7e57f061fbb2675e2ece35.tar.gz
symfony-security-5a6aaab2c35213f5ca7e57f061fbb2675e2ece35.tar.bz2
[Security] Split the component into 3 sub-components Core, ACL, HTTP
Diffstat (limited to 'Core/Tests/Validator/Constraints')
-rw-r--r--Core/Tests/Validator/Constraints/UserPasswordValidatorTest.php157
1 files changed, 157 insertions, 0 deletions
diff --git a/Core/Tests/Validator/Constraints/UserPasswordValidatorTest.php b/Core/Tests/Validator/Constraints/UserPasswordValidatorTest.php
new file mode 100644
index 0000000..53eeb5f
--- /dev/null
+++ b/Core/Tests/Validator/Constraints/UserPasswordValidatorTest.php
@@ -0,0 +1,157 @@
+<?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\Core\Tests\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()
+ {
+ $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;
+ }
+}