]> git.immae.eu Git - github/wallabag/wallabag.git/blobdiff - tests/Wallabag/CoreBundle/Helper/RedirectTest.php
Enable PHPStan
[github/wallabag/wallabag.git] / tests / Wallabag / CoreBundle / Helper / RedirectTest.php
index 3dcdf8de6cb2ab68278de5e6132a36299bc2d861..29e12cbe5c90832716edea6550fbf09bb171c543 100644 (file)
@@ -2,9 +2,14 @@
 
 namespace Tests\Wallabag\CoreBundle\Helper;
 
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
+use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
+use Wallabag\CoreBundle\Entity\Config;
 use Wallabag\CoreBundle\Helper\Redirect;
+use Wallabag\UserBundle\Entity\User;
 
-class RedirectTest extends \PHPUnit_Framework_TestCase
+class RedirectTest extends TestCase
 {
     /** @var \PHPUnit_Framework_MockObject_MockObject */
     private $routerMock;
@@ -12,14 +17,42 @@ class RedirectTest extends \PHPUnit_Framework_TestCase
     /** @var Redirect */
     private $redirect;
 
-    const PASSWORD = 's3Cr3t';
-    const SALT = '^S4lt$';
+    /** @var UsernamePasswordToken */
+    private $token;
 
     public function setUp()
     {
-        $this->routerMock = $this->getRouterMock();
-        $user = $this->createUser();
-        $tokenStorage = $this->createTokenStorage($user);
+        $this->routerMock = $this->getMockBuilder('Symfony\Component\Routing\Router')
+            ->disableOriginalConstructor()
+            ->getMock();
+
+        $this->routerMock->expects($this->any())
+            ->method('generate')
+            ->with('homepage')
+            ->willReturn('homepage');
+
+        $user = new User();
+        $user->setName('youpi');
+        $user->setEmail('youpi@youpi.org');
+        $user->setUsername('youpi');
+        $user->setPlainPassword('youpi');
+        $user->setEnabled(true);
+        $user->addRole('ROLE_SUPER_ADMIN');
+
+        $config = new Config($user);
+        $config->setTheme('material');
+        $config->setItemsPerPage(30);
+        $config->setReadingSpeed(1);
+        $config->setLanguage('en');
+        $config->setPocketConsumerKey('xxxxx');
+        $config->setActionMarkAsRead(Config::REDIRECT_TO_CURRENT_PAGE);
+
+        $user->setConfig($config);
+
+        $this->token = new UsernamePasswordToken($user, 'password', 'key');
+        $tokenStorage = new TokenStorage();
+        $tokenStorage->setToken($this->token);
+
         $this->redirect = new Redirect($this->routerMock, $tokenStorage);
     }
 
@@ -27,87 +60,55 @@ class RedirectTest extends \PHPUnit_Framework_TestCase
     {
         $redirectUrl = $this->redirect->to(null, 'fallback');
 
-        $this->assertEquals('fallback', $redirectUrl);
+        $this->assertSame('fallback', $redirectUrl);
     }
 
     public function testRedirectToNullWithoutFallback()
     {
         $redirectUrl = $this->redirect->to(null);
 
-        $this->assertEquals($this->routerMock->generate('homepage'), $redirectUrl);
+        $this->assertSame($this->routerMock->generate('homepage'), $redirectUrl);
     }
 
     public function testRedirectToValidUrl()
     {
         $redirectUrl = $this->redirect->to('/unread/list');
 
-        $this->assertEquals('/unread/list', $redirectUrl);
+        $this->assertSame('/unread/list', $redirectUrl);
     }
 
-    private function getRouterMock()
+    public function testWithNotLoggedUser()
     {
-        $mock = $this->getMockBuilder('Symfony\Component\Routing\Router')
-            ->disableOriginalConstructor()
-            ->getMock();
+        $redirect = new Redirect($this->routerMock, new TokenStorage());
+        $redirectUrl = $redirect->to('/unread/list');
 
-        $mock->expects($this->any())
-            ->method('generate')
-            ->with('homepage')
-            ->willReturn('homepage');
-
-        return $mock;
+        $this->assertSame('/unread/list', $redirectUrl);
     }
 
-    protected function createTokenStorage($user = null)
+    public function testUserForRedirectToHomepage()
     {
-        $token = $this->createAuthenticationToken($user);
-
-        $mock = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')
-            ->disableOriginalConstructor()
-            ->getMock();
+        $this->token->getUser()->getConfig()->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE);
 
-        $mock
-            ->expects($this->any())
-            ->method('getToken')
-            ->will($this->returnValue($token))
-        ;
+        $redirectUrl = $this->redirect->to('/unread/list');
 
-        return $mock;
+        $this->assertSame($this->routerMock->generate('homepage'), $redirectUrl);
     }
 
-    protected function createUser()
+    public function testUserForRedirectWithIgnoreActionMarkAsRead()
     {
-        $mock = $this->getMockBuilder('Symfony\Component\Security\Core\User\UserInterface')
-            ->disableOriginalConstructor()
-            ->getMock();
+        $this->token->getUser()->getConfig()->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE);
 
-        $mock
-            ->expects($this->any())
-            ->method('getPassword')
-            ->will($this->returnValue(static::PASSWORD))
-        ;
+        $redirectUrl = $this->redirect->to('/unread/list', '', true);
 
-        $mock
-            ->expects($this->any())
-            ->method('getSalt')
-            ->will($this->returnValue(static::SALT))
-        ;
-
-        return $mock;
+        $this->assertSame('/unread/list', $redirectUrl);
     }
 
-    protected function createAuthenticationToken($user = null)
+    public function testUserForRedirectNullWithFallbackWithIgnoreActionMarkAsRead()
     {
-        $mock = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\TokenInterface')
-            ->disableOriginalConstructor()
-            ->getMock();
+        $this->token->getUser()->getConfig()->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE);
 
-        $mock
-            ->expects($this->any())
-            ->method('getUser')
-            ->will($this->returnValue($user))
-        ;
+        $redirectUrl = $this->redirect->to(null, 'fallback', true);
 
-        return $mock;
+        $this->assertSame('fallback', $redirectUrl);
     }
 }