diff --git a/tests/Alchemy/Tests/Phrasea/Authentication/Phrasea/FailureManagerTest.php b/tests/Alchemy/Tests/Phrasea/Authentication/Phrasea/FailureManagerTest.php index bba5c5ba3c..fb385e688c 100644 --- a/tests/Alchemy/Tests/Phrasea/Authentication/Phrasea/FailureManagerTest.php +++ b/tests/Alchemy/Tests/Phrasea/Authentication/Phrasea/FailureManagerTest.php @@ -4,6 +4,7 @@ namespace Alchemy\Tests\Phrasea\Authentication\Phrasea; use Alchemy\Phrasea\Authentication\Phrasea\FailureManager; use Alchemy\Phrasea\Model\Entities\AuthFailure; +use Alchemy\Phrasea\Model\Repositories\AuthFailureRepository; use Gedmo\Timestampable\TimestampableListener; use Symfony\Component\HttpFoundation\Request; @@ -18,7 +19,7 @@ class FailureManagerTest extends \PhraseanetTestCase */ public function testSaveFailure() { - $repo = $this->getRepo(); + $repo = $this->createAuthFailureRepositoryMock(); $em = $this->createEntityManagerMock(); $recaptcha = $this->getReCaptchaMock(null); @@ -31,8 +32,8 @@ class FailureManagerTest extends \PhraseanetTestCase ->will($this->returnValue($ip)); $oldFailures = [ - $this->getMock('Alchemy\Phrasea\Model\Entities\AuthFailure'), - $this->getMock('Alchemy\Phrasea\Model\Entities\AuthFailure') + $this->getMock(AuthFailure::class), + $this->getMock(AuthFailure::class) ]; $repo->expects($this->once()) @@ -41,12 +42,12 @@ class FailureManagerTest extends \PhraseanetTestCase $em->expects($this->exactly(count($oldFailures))) ->method('remove') - ->with($this->isInstanceOf('Alchemy\Phrasea\Model\Entities\AuthFailure')); + ->with($this->isInstanceOf(AuthFailure::class)); $catchFailure = null; $em->expects($this->once()) ->method('persist') - ->with($this->isInstanceOf('Alchemy\Phrasea\Model\Entities\AuthFailure')) + ->with($this->isInstanceOf(AuthFailure::class)) ->will($this->returnCallback(function ($failure) use (&$catchFailure) { $catchFailure = $failure; })); @@ -54,6 +55,8 @@ class FailureManagerTest extends \PhraseanetTestCase $manager = new FailureManager($repo, $em, $recaptcha, 9); $manager->saveFailure($username, $request); + /** @var null|AuthFailure $catchFailure */ + $this->assertInstanceOf(AuthFailure::class, $catchFailure); $this->assertEquals($ip, $catchFailure->getIp()); $this->assertEquals(true, $catchFailure->getLocked()); $this->assertEquals($username, $catchFailure->getUsername()); @@ -64,7 +67,7 @@ class FailureManagerTest extends \PhraseanetTestCase */ public function testCheckFailures() { - $repo = $this->getRepo(); + $repo = $this->createAuthFailureRepositoryMock(); $em = $this->createEntityManagerMock(); $recaptcha = $this->getReCaptchaMock(null); $request = $this->getRequestMock(); @@ -86,7 +89,7 @@ class FailureManagerTest extends \PhraseanetTestCase */ public function testCheckFailuresLessThan9() { - $repo = $this->getRepo(); + $repo = $this->createAuthFailureRepositoryMock(); $em = $this->createEntityManagerMock(); $recaptcha = $this->getReCaptchaMock(null); $request = $this->getRequestMock(); @@ -94,7 +97,7 @@ class FailureManagerTest extends \PhraseanetTestCase $username = 'romainneutron'; $oldFailures = $this->ArrayIze(function () { - return $this->getMock('Alchemy\Phrasea\Model\Entities\AuthFailure'); + return $this->getMock(AuthFailure::class); }, 8); $repo->expects($this->once()) @@ -110,7 +113,7 @@ class FailureManagerTest extends \PhraseanetTestCase */ public function testCheckFailuresMoreThan9WithoutCaptcha() { - $repo = $this->getRepo(); + $repo = $this->createAuthFailureRepositoryMock(); $em = $this->createEntityManagerMock(); $recaptcha = $this->getReCaptchaMock(false); $request = $this->getRequestMock(); @@ -118,7 +121,7 @@ class FailureManagerTest extends \PhraseanetTestCase $username = 'romainneutron'; $oldFailures = $this->ArrayIze(function () { - return $this->getMock('Alchemy\Phrasea\Model\Entities\AuthFailure'); + return $this->getMock(AuthFailure::class); }, 10); $repo->expects($this->once()) @@ -134,7 +137,7 @@ class FailureManagerTest extends \PhraseanetTestCase */ public function testCheckFailuresMoreThan9WithCorrectCaptcha() { - $repo = $this->getRepo(); + $repo = $this->createAuthFailureRepositoryMock(); $em = $this->createEntityManagerMock(); $request = $this->getRequestMock(); $recaptcha = $this->getReCaptchaMock(true, $request, true); @@ -142,7 +145,7 @@ class FailureManagerTest extends \PhraseanetTestCase $username = 'romainneutron'; $oldFailures = $this->ArrayIze(function () { - $failure = $this->getMock('Alchemy\Phrasea\Model\Entities\AuthFailure'); + $failure = $this->getMock(AuthFailure::class); $failure->expects($this->once()) ->method('setLocked') ->with($this->equalTo(false)); @@ -164,7 +167,7 @@ class FailureManagerTest extends \PhraseanetTestCase */ public function testCheckFailuresMoreThan9WithIncorrectCaptcha() { - $repo = $this->getRepo(); + $repo = $this->createAuthFailureRepositoryMock(); $em = $this->createEntityManagerMock(); $request = $this->getRequestMock(); $recaptcha = $this->getReCaptchaMock(true, $request, false); @@ -172,7 +175,7 @@ class FailureManagerTest extends \PhraseanetTestCase $username = 'romainneutron'; $oldFailures = $this->ArrayIze(function () { - return $this->getMock('Alchemy\Phrasea\Model\Entities\AuthFailure'); + return $this->getMock(AuthFailure::class); }, 10); $repo->expects($this->once()) @@ -185,7 +188,7 @@ class FailureManagerTest extends \PhraseanetTestCase public function testCheckFailuresTrialsIsConfigurableUnderThreshold() { - $repo = $this->getRepo(); + $repo = $this->createAuthFailureRepositoryMock(); $em = $this->createEntityManagerMock(); $recaptcha = $this->getReCaptchaMock(null); $request = $this->getRequestMock(); @@ -193,7 +196,7 @@ class FailureManagerTest extends \PhraseanetTestCase $username = 'romainneutron'; $oldFailures = $this->ArrayIze(function () { - return $this->getMock('Alchemy\Phrasea\Model\Entities\AuthFailure'); + return $this->getMock(AuthFailure::class); }, 2); $repo->expects($this->once()) @@ -207,10 +210,9 @@ class FailureManagerTest extends \PhraseanetTestCase public function testTrialsIsConfigurable() { $em = $this->createEntityManagerMock(); - $recaptcha = $this->getReCaptchaMock(null); - $manager = new FailureManager($this->createEntityRepositoryMock(), $em, $recaptcha, 2); + $manager = new FailureManager($this->createAuthFailureRepositoryMock(), $em, $recaptcha, 2); $this->assertEquals(2, $manager->getTrials()); } @@ -220,7 +222,7 @@ class FailureManagerTest extends \PhraseanetTestCase */ public function testCheckFailuresTrialsIsConfigurableOverThreshold() { - $repo = $this->getRepo(); + $repo = $this->createAuthFailureRepositoryMock(); $em = $this->createEntityManagerMock(); $request = $this->getRequestMock(); $recaptcha = $this->getReCaptchaMock(true, $request, false); @@ -228,7 +230,7 @@ class FailureManagerTest extends \PhraseanetTestCase $username = 'romainneutron'; $oldFailures = $this->ArrayIze(function () { - return $this->getMock('Alchemy\Phrasea\Model\Entities\AuthFailure'); + return $this->getMock(AuthFailure::class); }, 3); $repo->expects($this->once()) @@ -311,14 +313,17 @@ class FailureManagerTest extends \PhraseanetTestCase private function getRequestMock() { - return $this->getMockBuilder('Symfony\Component\HttpFoundation\Request') + return $this->getMockBuilder(Request::class) ->disableOriginalConstructor() ->getMock(); } - private function getRepo() + /** + * @return AuthFailureRepository|\PHPUnit_Framework_MockObject_MockObject + */ + private function createAuthFailureRepositoryMock() { - return $this->getMockBuilder('Alchemy\Phrasea\Model\Repositories\AuthFailureRepository') + return $this->getMockBuilder(AuthFailureRepository::class) ->disableOriginalConstructor() ->getMock(); } diff --git a/tests/Alchemy/Tests/Phrasea/Core/Provider/AuthenticationManagerServiceProviderTest.php b/tests/Alchemy/Tests/Phrasea/Core/Provider/AuthenticationManagerServiceProviderTest.php index 765dfbbc2c..fb128260f8 100644 --- a/tests/Alchemy/Tests/Phrasea/Core/Provider/AuthenticationManagerServiceProviderTest.php +++ b/tests/Alchemy/Tests/Phrasea/Core/Provider/AuthenticationManagerServiceProviderTest.php @@ -2,11 +2,26 @@ namespace Alchemy\Tests\Phrasea\Core\Provider; +use Alchemy\Phrasea\Authentication\AccountCreator; +use Alchemy\Phrasea\Authentication\Authenticator; +use Alchemy\Phrasea\Authentication\Manager as AuthenticationManager; +use Alchemy\Phrasea\Authentication\PersistentCookie\Manager as PersistentCookieManager; +use Alchemy\Phrasea\Authentication\Phrasea\FailureHandledNativeAuthentication; +use Alchemy\Phrasea\Authentication\Phrasea\FailureManager; +use Alchemy\Phrasea\Authentication\Phrasea\NativeAuthentication; +use Alchemy\Phrasea\Authentication\Phrasea\OldPasswordEncoder; +use Alchemy\Phrasea\Authentication\Phrasea\PasswordAuthenticationInterface; +use Alchemy\Phrasea\Authentication\Phrasea\PasswordEncoder; +use Alchemy\Phrasea\Authentication\Provider\Factory; +use Alchemy\Phrasea\Authentication\ProvidersCollection; +use Alchemy\Phrasea\Authentication\SuggestionFinder; use Alchemy\Phrasea\Core\Provider\RepositoriesServiceProvider; -use Alchemy\Phrasea\Core\Provider\TokensServiceProvider; use Alchemy\Phrasea\Core\Provider\AuthenticationManagerServiceProvider; use Alchemy\Phrasea\Core\Provider\ConfigurationServiceProvider; +use Alchemy\Phrasea\Model\Entities\User; +use Alchemy\Phrasea\Model\Repositories\AuthFailureRepository; use Alchemy\Phrasea\Model\Repositories\UserRepository; +use Neutron\ReCaptcha\ReCaptcha; /** * @group functional @@ -19,59 +34,59 @@ class AuthenticationManagerServiceProviderTest extends ServiceProviderTestCase { return [ [ - 'Alchemy\Phrasea\Core\Provider\AuthenticationManagerServiceProvider', + AuthenticationManagerServiceProvider::class, 'authentication', - 'Alchemy\\Phrasea\\Authentication\\Authenticator', + Authenticator::class, ], [ - 'Alchemy\Phrasea\Core\Provider\AuthenticationManagerServiceProvider', + AuthenticationManagerServiceProvider::class, 'authentication.persistent-manager', - 'Alchemy\Phrasea\Authentication\PersistentCookie\Manager' + PersistentCookieManager::class ], [ - 'Alchemy\Phrasea\Core\Provider\AuthenticationManagerServiceProvider', + AuthenticationManagerServiceProvider::class, 'authentication.suggestion-finder', - 'Alchemy\Phrasea\Authentication\SuggestionFinder' + SuggestionFinder::class ], [ - 'Alchemy\Phrasea\Core\Provider\AuthenticationManagerServiceProvider', + AuthenticationManagerServiceProvider::class, 'authentication.providers.factory', - 'Alchemy\Phrasea\Authentication\Provider\Factory' + Factory::class ], [ - 'Alchemy\Phrasea\Core\Provider\AuthenticationManagerServiceProvider', + AuthenticationManagerServiceProvider::class, 'authentication.providers', - 'Alchemy\Phrasea\Authentication\ProvidersCollection' + ProvidersCollection::class ], [ - 'Alchemy\Phrasea\Core\Provider\AuthenticationManagerServiceProvider', + AuthenticationManagerServiceProvider::class, 'authentication.manager', - 'Alchemy\Phrasea\Authentication\Manager' + AuthenticationManager::class ], [ - 'Alchemy\Phrasea\Core\Provider\AuthenticationManagerServiceProvider', + AuthenticationManagerServiceProvider::class, 'auth.password-encoder', - 'Alchemy\Phrasea\Authentication\Phrasea\PasswordEncoder' + PasswordEncoder::class ], [ - 'Alchemy\Phrasea\Core\Provider\AuthenticationManagerServiceProvider', + AuthenticationManagerServiceProvider::class, 'auth.old-password-encoder', - 'Alchemy\Phrasea\Authentication\Phrasea\OldPasswordEncoder' + OldPasswordEncoder::class ], [ - 'Alchemy\Phrasea\Core\Provider\AuthenticationManagerServiceProvider', + AuthenticationManagerServiceProvider::class, 'auth.native.failure-manager', - 'Alchemy\Phrasea\Authentication\Phrasea\FailureManager' + FailureManager::class ], [ - 'Alchemy\Phrasea\Core\Provider\AuthenticationManagerServiceProvider', + AuthenticationManagerServiceProvider::class, 'auth.native', - 'Alchemy\Phrasea\Authentication\Phrasea\PasswordAuthenticationInterface' + PasswordAuthenticationInterface::class ], [ - 'Alchemy\Phrasea\Core\Provider\AuthenticationManagerServiceProvider', + AuthenticationManagerServiceProvider::class, 'authentication.providers.account-creator', - 'Alchemy\Phrasea\Authentication\AccountCreator' + AccountCreator::class ], ]; } @@ -83,9 +98,7 @@ class AuthenticationManagerServiceProviderTest extends ServiceProviderTestCase $app['conf']->set(['authentication', 'captcha', 'trials-before-display'], 42); //$app['orm.em'] = $this->createEntityManagerMock(); - $app['recaptcha'] = $this->getMockBuilder('Neutron\ReCaptcha\ReCaptcha') - ->disableOriginalConstructor() - ->getMock(); + $app['recaptcha'] = $this->createReCaptchaMock(); $manager = $app['auth.native.failure-manager']; $this->assertEquals(42, $manager->getTrials()); @@ -93,9 +106,10 @@ class AuthenticationManagerServiceProviderTest extends ServiceProviderTestCase public function testFailureAccountCreator() { - self::$DI['app']->register(new ConfigurationServiceProvider()); - self::$DI['app']['conf']->set(['authentication', 'auto-create'], ['templates' => []]); - self::$DI['app']['authentication.providers.account-creator']; + $app = $this->getApplication(); + $app->register(new ConfigurationServiceProvider()); + $app['conf']->set(['authentication', 'auto-create'], ['templates' => []]); + $app['authentication.providers.account-creator']; } public function testAuthNativeWithCaptchaEnabled() @@ -111,12 +125,12 @@ class AuthenticationManagerServiceProviderTest extends ServiceProviderTestCase $app['orm.em'] = $this->createEntityManagerMock(); $app['repo.users'] = $this->createUserRepositoryMock(); - $app['repo.auth-failures'] = $this->createEntityRepositoryMock(); - $app['recaptcha'] = $this->getMockBuilder('Neutron\ReCaptcha\ReCaptcha') + $app['repo.auth-failures'] = $this->getMockBuilder(AuthFailureRepository::class) ->disableOriginalConstructor() ->getMock(); + $app['recaptcha'] = $this->createReCaptchaMock(); - $this->assertInstanceOf('Alchemy\Phrasea\Authentication\Phrasea\FailureHandledNativeAuthentication', $app['auth.native']); + $this->assertInstanceOf(FailureHandledNativeAuthentication::class, $app['auth.native']); } public function testAuthNativeWithCaptchaDisabled() @@ -131,26 +145,25 @@ class AuthenticationManagerServiceProviderTest extends ServiceProviderTestCase $app['orm.em'] = $this->createEntityManagerMock(); $app['repo.users'] = $this->createUserRepositoryMock(); - $app['recaptcha'] = $this->getMockBuilder('Neutron\ReCaptcha\ReCaptcha') - ->disableOriginalConstructor() - ->getMock(); + $app['recaptcha'] = $this->createReCaptchaMock(); - $this->assertInstanceOf('Alchemy\Phrasea\Authentication\Phrasea\NativeAuthentication', $app['auth.native']); + $this->assertInstanceOf(NativeAuthentication::class, $app['auth.native']); } public function testAccountCreator() { - $template1 = $user = self::$DI['app']['manipulator.user']->createTemplate('template1', self::$DI['user']); - $template2 = $user = self::$DI['app']['manipulator.user']->createTemplate('template2', self::$DI['user']); + $app = $this->getApplication(); + $template1 = $user = $app['manipulator.user']->createTemplate('template1', self::$DI['user']); + $template2 = $user = $app['manipulator.user']->createTemplate('template2', self::$DI['user']); - self::$DI['app']['conf']->set(['authentication', 'auto-create'], ['templates' => [$template1->getId(), $template2->getId()]]); + $app['conf']->set(['authentication', 'auto-create'], ['templates' => [$template1->getId(), $template2->getId()]]); - $this->assertEquals([$template1->getLogin(), $template2->getLogin()], array_map(function ($u) { - return $u->getLogin(); - }, self::$DI['app']['authentication.providers.account-creator']->getTemplates())); + $this->assertEquals([$template1->getLogin(), $template2->getLogin()], array_map(function (User $user) { + return $user->getLogin(); + }, $app['authentication.providers.account-creator']->getTemplates())); - $this->removeUser(self::$DI['app'], $template1); - $this->removeUser(self::$DI['app'], $template2); + $this->removeUser($app, $template1); + $this->removeUser($app, $template2); } private function createUserRepositoryMock() @@ -159,4 +172,14 @@ class AuthenticationManagerServiceProviderTest extends ServiceProviderTestCase ->disableOriginalConstructor() ->getMock(); } + + /** + * @return ReCaptcha|\PHPUnit_Framework_MockObject_MockObject + */ + protected function createReCaptchaMock() + { + return $this->getMockBuilder(ReCaptcha::class) + ->disableOriginalConstructor() + ->getMock(); + } } diff --git a/tests/classes/PhraseanetTestCase.php b/tests/classes/PhraseanetTestCase.php index 3a57ad97f7..207cec250f 100644 --- a/tests/classes/PhraseanetTestCase.php +++ b/tests/classes/PhraseanetTestCase.php @@ -336,6 +336,11 @@ abstract class PhraseanetTestCase extends WebTestCase return $cli; } + /** + * @param null|string $path + * @param string $environment + * @return Application + */ protected function loadApp($path = null, $environment = Application::ENV_TEST) { if (null !== $path) {