summaryrefslogtreecommitdiffstats
path: root/Tests
diff options
context:
space:
mode:
Diffstat (limited to 'Tests')
-rw-r--r--Tests/Core/Authentication/Token/AbstractTokenTest.php18
-rw-r--r--Tests/Core/Encoder/BCryptPasswordEncoderTest.php9
-rw-r--r--Tests/Core/Encoder/EncoderFactoryTest.php4
-rw-r--r--Tests/Core/SecurityContextTest.php2
-rw-r--r--Tests/Core/User/UserTest.php31
-rw-r--r--Tests/Core/Util/SecureRandomTest.php201
-rw-r--r--Tests/Http/Firewall/RememberMeListenerTest.php63
-rw-r--r--Tests/Http/RememberMe/PersistentTokenBasedRememberMeServicesTest.php9
-rw-r--r--Tests/Http/RememberMe/TokenBasedRememberMeServicesTest.php3
-rw-r--r--Tests/Resources/TranslationFilesTest.php31
10 files changed, 116 insertions, 255 deletions
diff --git a/Tests/Core/Authentication/Token/AbstractTokenTest.php b/Tests/Core/Authentication/Token/AbstractTokenTest.php
index b8be628..efdad4c 100644
--- a/Tests/Core/Authentication/Token/AbstractTokenTest.php
+++ b/Tests/Core/Authentication/Token/AbstractTokenTest.php
@@ -85,10 +85,6 @@ class AbstractTokenTest extends \PHPUnit_Framework_TestCase
$token->eraseCredentials();
}
- /**
- * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::serialize
- * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::unserialize
- */
public function testSerialize()
{
$token = $this->getToken(array('ROLE_FOO'));
@@ -114,9 +110,6 @@ class AbstractTokenTest extends \PHPUnit_Framework_TestCase
);
}
- /**
- * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::__construct
- */
public function testConstructor()
{
$token = $this->getToken(array('ROLE_FOO'));
@@ -129,10 +122,6 @@ class AbstractTokenTest extends \PHPUnit_Framework_TestCase
$this->assertEquals(array(new Role('ROLE_FOO'), new Role('ROLE_BAR')), $token->getRoles());
}
- /**
- * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::isAuthenticated
- * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::setAuthenticated
- */
public function testAuthenticatedFlag()
{
$token = $this->getToken();
@@ -145,13 +134,6 @@ class AbstractTokenTest extends \PHPUnit_Framework_TestCase
$this->assertFalse($token->isAuthenticated());
}
- /**
- * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::getAttributes
- * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::setAttributes
- * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::hasAttribute
- * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::getAttribute
- * @covers Symfony\Component\Security\Core\Authentication\Token\AbstractToken::setAttribute
- */
public function testAttributes()
{
$attributes = array('foo' => 'bar');
diff --git a/Tests/Core/Encoder/BCryptPasswordEncoderTest.php b/Tests/Core/Encoder/BCryptPasswordEncoderTest.php
index 076d954..9894c6f 100644
--- a/Tests/Core/Encoder/BCryptPasswordEncoderTest.php
+++ b/Tests/Core/Encoder/BCryptPasswordEncoderTest.php
@@ -73,13 +73,18 @@ class BCryptPasswordEncoderTest extends \PHPUnit_Framework_TestCase
{
$encoder = new BCryptPasswordEncoder(self::VALID_COST);
- $encoder->encodePassword(str_repeat('a', 5000), 'salt');
+ $encoder->encodePassword(str_repeat('a', 73), 'salt');
}
+ /**
+ * @requires PHP 5.3.7
+ */
public function testCheckPasswordLength()
{
$encoder = new BCryptPasswordEncoder(self::VALID_COST);
+ $result = $encoder->encodePassword(str_repeat('a', 72), null);
- $this->assertFalse($encoder->isPasswordValid('encoded', str_repeat('a', 5000), 'salt'));
+ $this->assertFalse($encoder->isPasswordValid($result, str_repeat('a', 73), 'salt'));
+ $this->assertTrue($encoder->isPasswordValid($result, str_repeat('a', 72), 'salt'));
}
}
diff --git a/Tests/Core/Encoder/EncoderFactoryTest.php b/Tests/Core/Encoder/EncoderFactoryTest.php
index 85d4e91..4fe60ad 100644
--- a/Tests/Core/Encoder/EncoderFactoryTest.php
+++ b/Tests/Core/Encoder/EncoderFactoryTest.php
@@ -85,15 +85,19 @@ class SomeUser implements UserInterface
public function getRoles()
{
}
+
public function getPassword()
{
}
+
public function getSalt()
{
}
+
public function getUsername()
{
}
+
public function eraseCredentials()
{
}
diff --git a/Tests/Core/SecurityContextTest.php b/Tests/Core/SecurityContextTest.php
index 6695889..3fba8d9 100644
--- a/Tests/Core/SecurityContextTest.php
+++ b/Tests/Core/SecurityContextTest.php
@@ -92,6 +92,6 @@ class SecurityContextTest extends \PHPUnit_Framework_TestCase
public function testTranslationsAreNotInCore()
{
- $this->assertFalse(file_exists(__DIR__.'/../../Core/Resources/translations/'));
+ $this->assertFileNotExists(__DIR__.'/../../Core/Resources/translations/');
}
}
diff --git a/Tests/Core/User/UserTest.php b/Tests/Core/User/UserTest.php
index d05f491..eb21503 100644
--- a/Tests/Core/User/UserTest.php
+++ b/Tests/Core/User/UserTest.php
@@ -16,7 +16,6 @@ use Symfony\Component\Security\Core\User\User;
class UserTest extends \PHPUnit_Framework_TestCase
{
/**
- * @covers Symfony\Component\Security\Core\User\User::__construct
* @expectedException \InvalidArgumentException
*/
public function testConstructorException()
@@ -24,10 +23,6 @@ class UserTest extends \PHPUnit_Framework_TestCase
new User('', 'superpass');
}
- /**
- * @covers Symfony\Component\Security\Core\User\User::__construct
- * @covers Symfony\Component\Security\Core\User\User::getRoles
- */
public function testGetRoles()
{
$user = new User('fabien', 'superpass');
@@ -37,38 +32,24 @@ class UserTest extends \PHPUnit_Framework_TestCase
$this->assertEquals(array('ROLE_ADMIN'), $user->getRoles());
}
- /**
- * @covers Symfony\Component\Security\Core\User\User::__construct
- * @covers Symfony\Component\Security\Core\User\User::getPassword
- */
public function testGetPassword()
{
$user = new User('fabien', 'superpass');
$this->assertEquals('superpass', $user->getPassword());
}
- /**
- * @covers Symfony\Component\Security\Core\User\User::__construct
- * @covers Symfony\Component\Security\Core\User\User::getUsername
- */
public function testGetUsername()
{
$user = new User('fabien', 'superpass');
$this->assertEquals('fabien', $user->getUsername());
}
- /**
- * @covers Symfony\Component\Security\Core\User\User::getSalt
- */
public function testGetSalt()
{
$user = new User('fabien', 'superpass');
$this->assertEquals('', $user->getSalt());
}
- /**
- * @covers Symfony\Component\Security\Core\User\User::isAccountNonExpired
- */
public function testIsAccountNonExpired()
{
$user = new User('fabien', 'superpass');
@@ -78,9 +59,6 @@ class UserTest extends \PHPUnit_Framework_TestCase
$this->assertFalse($user->isAccountNonExpired());
}
- /**
- * @covers Symfony\Component\Security\Core\User\User::isCredentialsNonExpired
- */
public function testIsCredentialsNonExpired()
{
$user = new User('fabien', 'superpass');
@@ -90,9 +68,6 @@ class UserTest extends \PHPUnit_Framework_TestCase
$this->assertFalse($user->isCredentialsNonExpired());
}
- /**
- * @covers Symfony\Component\Security\Core\User\User::isAccountNonLocked
- */
public function testIsAccountNonLocked()
{
$user = new User('fabien', 'superpass');
@@ -102,9 +77,6 @@ class UserTest extends \PHPUnit_Framework_TestCase
$this->assertFalse($user->isAccountNonLocked());
}
- /**
- * @covers Symfony\Component\Security\Core\User\User::isEnabled
- */
public function testIsEnabled()
{
$user = new User('fabien', 'superpass');
@@ -114,9 +86,6 @@ class UserTest extends \PHPUnit_Framework_TestCase
$this->assertFalse($user->isEnabled());
}
- /**
- * @covers Symfony\Component\Security\Core\User\User::eraseCredentials
- */
public function testEraseCredentials()
{
$user = new User('fabien', 'superpass');
diff --git a/Tests/Core/Util/SecureRandomTest.php b/Tests/Core/Util/SecureRandomTest.php
deleted file mode 100644
index 9fd1c16..0000000
--- a/Tests/Core/Util/SecureRandomTest.php
+++ /dev/null
@@ -1,201 +0,0 @@
-<?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\Util;
-
-use Symfony\Component\Security\Core\Util\SecureRandom;
-
-class SecureRandomTest extends \PHPUnit_Framework_TestCase
-{
- /**
- * T1: Monobit test.
- *
- * @dataProvider getSecureRandoms
- */
- public function testMonobit($secureRandom)
- {
- $nbOnBits = substr_count($this->getBitSequence($secureRandom, 20000), '1');
- $this->assertTrue($nbOnBits > 9654 && $nbOnBits < 10346, 'Monobit test failed, number of turned on bits: '.$nbOnBits);
- }
-
- /**
- * T2: Chi-square test with 15 degrees of freedom (chi-Quadrat-Anpassungstest).
- *
- * @dataProvider getSecureRandoms
- */
- public function testPoker($secureRandom)
- {
- $b = $this->getBitSequence($secureRandom, 20000);
- $c = array();
- for ($i = 0; $i <= 15; ++$i) {
- $c[$i] = 0;
- }
-
- for ($j = 1; $j <= 5000; ++$j) {
- $k = 4 * $j - 1;
- ++$c[8 * $b[$k - 3] + 4 * $b[$k - 2] + 2 * $b[$k - 1] + $b[$k]];
- }
-
- $f = 0;
- for ($i = 0; $i <= 15; ++$i) {
- $f += $c[$i] * $c[$i];
- }
-
- $Y = 16 / 5000 * $f - 5000;
-
- $this->assertTrue($Y > 1.03 && $Y < 57.4, 'Poker test failed, Y = '.$Y);
- }
-
- /**
- * Run test.
- *
- * @dataProvider getSecureRandoms
- */
- public function testRun($secureRandom)
- {
- $b = $this->getBitSequence($secureRandom, 20000);
-
- $runs = array();
- for ($i = 1; $i <= 6; ++$i) {
- $runs[$i] = 0;
- }
-
- $addRun = function ($run) use (&$runs) {
- if ($run > 6) {
- $run = 6;
- }
-
- ++$runs[$run];
- };
-
- $currentRun = 0;
- $lastBit = null;
- for ($i = 0; $i < 20000; ++$i) {
- if ($lastBit === $b[$i]) {
- ++$currentRun;
- } else {
- if ($currentRun > 0) {
- $addRun($currentRun);
- }
-
- $lastBit = $b[$i];
- $currentRun = 0;
- }
- }
- if ($currentRun > 0) {
- $addRun($currentRun);
- }
-
- $this->assertTrue($runs[1] > 2267 && $runs[1] < 2733, 'Runs of length 1 outside of defined interval: '.$runs[1]);
- $this->assertTrue($runs[2] > 1079 && $runs[2] < 1421, 'Runs of length 2 outside of defined interval: '.$runs[2]);
- $this->assertTrue($runs[3] > 502 && $runs[3] < 748, 'Runs of length 3 outside of defined interval: '.$runs[3]);
- $this->assertTrue($runs[4] > 233 && $runs[4] < 402, 'Runs of length 4 outside of defined interval: '.$runs[4]);
- $this->assertTrue($runs[5] > 90 && $runs[5] < 223, 'Runs of length 5 outside of defined interval: '.$runs[5]);
- $this->assertTrue($runs[6] > 90 && $runs[6] < 233, 'Runs of length 6 outside of defined interval: '.$runs[6]);
- }
-
- /**
- * Long-run test.
- *
- * @dataProvider getSecureRandoms
- */
- public function testLongRun($secureRandom)
- {
- $b = $this->getBitSequence($secureRandom, 20000);
-
- $longestRun = $currentRun = 0;
- $lastBit = null;
- for ($i = 0; $i < 20000; ++$i) {
- if ($lastBit === $b[$i]) {
- ++$currentRun;
- } else {
- if ($currentRun > $longestRun) {
- $longestRun = $currentRun;
- }
- $lastBit = $b[$i];
- $currentRun = 0;
- }
- }
- if ($currentRun > $longestRun) {
- $longestRun = $currentRun;
- }
-
- $this->assertTrue($longestRun < 34, 'Failed longest run test: '.$longestRun);
- }
-
- /**
- * Serial Correlation (Autokorrelationstest).
- *
- * @dataProvider getSecureRandoms
- */
- public function testSerialCorrelation($secureRandom)
- {
- $shift = rand(1, 5000);
- $b = $this->getBitSequence($secureRandom, 20000);
-
- $Z = 0;
- for ($i = 0; $i < 5000; ++$i) {
- $Z += $b[$i] === $b[$i + $shift] ? 1 : 0;
- }
-
- $this->assertTrue($Z > 2326 && $Z < 2674, 'Failed serial correlation test: '.$Z);
- }
-
- public function getSecureRandoms()
- {
- $secureRandoms = array();
-
- // only add if openssl is indeed present
- $secureRandom = new SecureRandom();
- if ($this->hasOpenSsl($secureRandom)) {
- $secureRandoms[] = array($secureRandom);
- }
-
- // no-openssl with custom seed provider
- $secureRandom = new SecureRandom(sys_get_temp_dir().'/_sf2.seed');
- $this->disableOpenSsl($secureRandom);
- $secureRandoms[] = array($secureRandom);
-
- return $secureRandoms;
- }
-
- protected function disableOpenSsl($secureRandom)
- {
- $ref = new \ReflectionProperty($secureRandom, 'useOpenSsl');
- $ref->setAccessible(true);
- $ref->setValue($secureRandom, false);
- $ref->setAccessible(false);
- }
-
- protected function hasOpenSsl($secureRandom)
- {
- $ref = new \ReflectionProperty($secureRandom, 'useOpenSsl');
- $ref->setAccessible(true);
-
- $ret = $ref->getValue($secureRandom);
-
- $ref->setAccessible(false);
-
- return $ret;
- }
-
- private function getBitSequence($secureRandom, $length)
- {
- $bitSequence = '';
- for ($i = 0; $i < $length; $i += 40) {
- $value = unpack('H*', $secureRandom->nextBytes(5));
- $value = str_pad(base_convert($value[1], 16, 2), 40, '0', STR_PAD_LEFT);
- $bitSequence .= $value;
- }
-
- return substr($bitSequence, 0, $length);
- }
-}
diff --git a/Tests/Http/Firewall/RememberMeListenerTest.php b/Tests/Http/Firewall/RememberMeListenerTest.php
index 067cacb..8316a8c 100644
--- a/Tests/Http/Firewall/RememberMeListenerTest.php
+++ b/Tests/Http/Firewall/RememberMeListenerTest.php
@@ -138,6 +138,69 @@ class RememberMeListenerTest extends \PHPUnit_Framework_TestCase
$listener->handle($event);
}
+ public function testSessionStrategy()
+ {
+ list($listener, $tokenStorage, $service, $manager) = $this->getListener();
+
+ $tokenStorage
+ ->expects($this->once())
+ ->method('getToken')
+ ->will($this->returnValue(null))
+ ;
+
+ $token = $this->getMock('Symfony\Component\Security\Core\Authentication\Token\TokenInterface');
+ $service
+ ->expects($this->once())
+ ->method('autoLogin')
+ ->will($this->returnValue($token))
+ ;
+
+ $tokenStorage
+ ->expects($this->once())
+ ->method('setToken')
+ ->with($this->equalTo($token))
+ ;
+
+ $manager
+ ->expects($this->once())
+ ->method('authenticate')
+ ->will($this->returnValue($token))
+ ;
+
+ $session = $this->getMock('\Symfony\Component\HttpFoundation\Session\SessionInterface');
+ $session
+ ->expects($this->once())
+ ->method('isStarted')
+ ->will($this->returnValue(true))
+ ;
+ $session
+ ->expects($this->once())
+ ->method('migrate')
+ ;
+
+ $request = $this->getMock('\Symfony\Component\HttpFoundation\Request');
+ $request
+ ->expects($this->any())
+ ->method('hasSession')
+ ->will($this->returnValue(true))
+ ;
+
+ $request
+ ->expects($this->any())
+ ->method('getSession')
+ ->will($this->returnValue($session))
+ ;
+
+ $event = $this->getGetResponseEvent();
+ $event
+ ->expects($this->once())
+ ->method('getRequest')
+ ->will($this->returnValue($request))
+ ;
+
+ $listener->handle($event);
+ }
+
protected function getGetResponseEvent()
{
return $this->getMock('Symfony\Component\HttpKernel\Event\GetResponseEvent', array(), array(), '', false);
diff --git a/Tests/Http/RememberMe/PersistentTokenBasedRememberMeServicesTest.php b/Tests/Http/RememberMe/PersistentTokenBasedRememberMeServicesTest.php
index 61c3559..3ba8f99 100644
--- a/Tests/Http/RememberMe/PersistentTokenBasedRememberMeServicesTest.php
+++ b/Tests/Http/RememberMe/PersistentTokenBasedRememberMeServicesTest.php
@@ -24,6 +24,15 @@ use Symfony\Component\Security\Core\Util\SecureRandom;
class PersistentTokenBasedRememberMeServicesTest extends \PHPUnit_Framework_TestCase
{
+ public static function setUpBeforeClass()
+ {
+ try {
+ random_bytes(1);
+ } catch (\Exception $e) {
+ throw new \PHPUnit_Framework_SkippedTestError($e->getMessage());
+ }
+ }
+
public function testAutoLoginReturnsNullWhenNoCookie()
{
$service = $this->getService(null, array('name' => 'foo'));
diff --git a/Tests/Http/RememberMe/TokenBasedRememberMeServicesTest.php b/Tests/Http/RememberMe/TokenBasedRememberMeServicesTest.php
index b988c7d..d1ec9b2 100644
--- a/Tests/Http/RememberMe/TokenBasedRememberMeServicesTest.php
+++ b/Tests/Http/RememberMe/TokenBasedRememberMeServicesTest.php
@@ -172,9 +172,8 @@ class TokenBasedRememberMeServicesTest extends \PHPUnit_Framework_TestCase
{
$service = $this->getService(null, array('name' => 'foo', 'path' => '/foo', 'domain' => 'foodomain.foo'));
$request = new Request();
- $response = new Response();
- $service->loginFail($request, $response);
+ $service->loginFail($request);
$cookie = $request->attributes->get(RememberMeServicesInterface::COOKIE_ATTR_NAME);
$this->assertTrue($cookie->isCleared());
diff --git a/Tests/Resources/TranslationFilesTest.php b/Tests/Resources/TranslationFilesTest.php
new file mode 100644
index 0000000..341ec87
--- /dev/null
+++ b/Tests/Resources/TranslationFilesTest.php
@@ -0,0 +1,31 @@
+<?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\Resources;
+
+class TranslationFilesTest extends \PHPUnit_Framework_TestCase
+{
+ /**
+ * @dataProvider provideTranslationFiles
+ */
+ public function testTranslationFileIsValid($filePath)
+ {
+ \PHPUnit_Util_XML::loadfile($filePath, false, false, true);
+ }
+
+ public function provideTranslationFiles()
+ {
+ return array_map(
+ function ($filePath) { return (array) $filePath; },
+ glob(dirname(dirname(__DIR__)).'/Resources/translations/*.xlf')
+ );
+ }
+}