BasePasswordEncoderTest.php 2.5 KB

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