BasePasswordEncoderTest.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. <?php
  2. /*
  3. * This file is part of the Symfony package.
  4. *
  5. * (c) Fabien Potencier <fabien.potencier@symfony-project.com>
  6. *
  7. * For the full copyright and license information, please view the LICENSE
  8. * file that was distributed with this source code.
  9. */
  10. namespace Symfony\Tests\Component\Security\Encoder;
  11. use Symfony\Component\Security\Encoder\BasePasswordEncoder;
  12. class PasswordEncoder extends BasePasswordEncoder
  13. {
  14. public function encodePassword($raw, $salt)
  15. {
  16. }
  17. public function isPasswordValid($encoded, $raw, $salt)
  18. {
  19. }
  20. }
  21. class BasePasswordEncoderTest extends \PHPUnit_Framework_TestCase
  22. {
  23. public function testComparePassword()
  24. {
  25. $this->assertTrue($this->invokeComparePasswords('password', 'password'));
  26. $this->assertFalse($this->invokeComparePasswords('password', 'foo'));
  27. }
  28. public function testDemergePasswordAndSalt()
  29. {
  30. $this->assertEquals(array('password', 'salt'), $this->invokeDemergePasswordAndSalt('password{salt}'));
  31. $this->assertEquals(array('password', ''), $this->invokeDemergePasswordAndSalt('password'));
  32. $this->assertEquals(array('', ''), $this->invokeDemergePasswordAndSalt(''));
  33. }
  34. public function testMergePasswordAndSalt()
  35. {
  36. $this->assertEquals('password{salt}', $this->invokeMergePasswordAndSalt('password', 'salt'));
  37. $this->assertEquals('password', $this->invokeMergePasswordAndSalt('password', ''));
  38. }
  39. /**
  40. * @expectedException InvalidArgumentException
  41. */
  42. public function testMergePasswordAndSaltWithException()
  43. {
  44. $this->invokeMergePasswordAndSalt('password', '{foo}');
  45. }
  46. protected function invokeDemergePasswordAndSalt($password)
  47. {
  48. $encoder = new PasswordEncoder();
  49. $r = new \ReflectionObject($encoder);
  50. $m = $r->getMethod('demergePasswordAndSalt');
  51. $m->setAccessible(true);
  52. return $m->invoke($encoder, $password);
  53. }
  54. protected function invokeMergePasswordAndSalt($password, $salt)
  55. {
  56. $encoder = new PasswordEncoder();
  57. $r = new \ReflectionObject($encoder);
  58. $m = $r->getMethod('mergePasswordAndSalt');
  59. $m->setAccessible(true);
  60. return $m->invoke($encoder, $password, $salt);
  61. }
  62. protected function invokeComparePasswords($p1, $p2)
  63. {
  64. $encoder = new PasswordEncoder();
  65. $r = new \ReflectionObject($encoder);
  66. $m = $r->getMethod('comparePasswords');
  67. $m->setAccessible(true);
  68. return $m->invoke($encoder, $p1, $p2);
  69. }
  70. }