X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=tests%2FWallabag%2FCoreBundle%2FHelper%2FRedirectTest.php;h=29e12cbe5c90832716edea6550fbf09bb171c543;hb=1e0d8ad7b728f6fb2cd886526b0fb84ef803e84f;hp=a2d6a5245e9b20a7d556bf6e6f50bb67441d27d1;hpb=65cd8a4a9a1d15d962033f58276005a5f7716f3a;p=github%2Fwallabag%2Fwallabag.git diff --git a/tests/Wallabag/CoreBundle/Helper/RedirectTest.php b/tests/Wallabag/CoreBundle/Helper/RedirectTest.php index a2d6a524..29e12cbe 100644 --- a/tests/Wallabag/CoreBundle/Helper/RedirectTest.php +++ b/tests/Wallabag/CoreBundle/Helper/RedirectTest.php @@ -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,12 +17,42 @@ class RedirectTest extends \PHPUnit_Framework_TestCase /** @var Redirect */ private $redirect; + /** @var UsernamePasswordToken */ + private $token; + public function setUp() { - $this->routerMock = $this->getRouterMock(); - $tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface') + $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); } @@ -25,34 +60,55 @@ class RedirectTest extends \PHPUnit_Framework_TestCase { $redirectUrl = $this->redirect->to(null, 'fallback'); - $this->assertEquals(null, $redirectUrl); + $this->assertSame('fallback', $redirectUrl); } public function testRedirectToNullWithoutFallback() { $redirectUrl = $this->redirect->to(null); - $this->assertEquals(null, $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'); + $this->assertSame('/unread/list', $redirectUrl); + } + + public function testUserForRedirectToHomepage() + { + $this->token->getUser()->getConfig()->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE); + + $redirectUrl = $this->redirect->to('/unread/list'); + + $this->assertSame($this->routerMock->generate('homepage'), $redirectUrl); + } + + public function testUserForRedirectWithIgnoreActionMarkAsRead() + { + $this->token->getUser()->getConfig()->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE); + + $redirectUrl = $this->redirect->to('/unread/list', '', true); + + $this->assertSame('/unread/list', $redirectUrl); + } + + public function testUserForRedirectNullWithFallbackWithIgnoreActionMarkAsRead() + { + $this->token->getUser()->getConfig()->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE); + + $redirectUrl = $this->redirect->to(null, 'fallback', true); - return $mock; + $this->assertSame('fallback', $redirectUrl); } }