3 namespace Tests\Wallabag\CoreBundle\Helper
;
5 use PHPUnit\Framework\TestCase
;
6 use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage
;
7 use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken
;
8 use Wallabag\CoreBundle\Entity\Config
;
9 use Wallabag\CoreBundle\Helper\Redirect
;
10 use Wallabag\UserBundle\Entity\User
;
12 class RedirectTest
extends TestCase
14 /** @var \PHPUnit_Framework_MockObject_MockObject */
20 /** @var UsernamePasswordToken */
23 public function setUp()
25 $this->routerMock
= $this->getMockBuilder('Symfony\Component\Routing\Router')
26 ->disableOriginalConstructor()
29 $this->routerMock
->expects($this->any())
32 ->willReturn('homepage');
35 $user->setName('youpi');
36 $user->setEmail('youpi@youpi.org');
37 $user->setUsername('youpi');
38 $user->setPlainPassword('youpi');
39 $user->setEnabled(true);
40 $user->addRole('ROLE_SUPER_ADMIN');
42 $config = new Config($user);
43 $config->setTheme('material');
44 $config->setItemsPerPage(30);
45 $config->setReadingSpeed(1);
46 $config->setLanguage('en');
47 $config->setPocketConsumerKey('xxxxx');
48 $config->setActionMarkAsRead(Config
::REDIRECT_TO_CURRENT_PAGE
);
50 $user->setConfig($config);
52 $this->token
= new UsernamePasswordToken($user, 'password', 'key');
53 $tokenStorage = new TokenStorage();
54 $tokenStorage->setToken($this->token
);
56 $this->redirect
= new Redirect($this->routerMock
, $tokenStorage);
59 public function testRedirectToNullWithFallback()
61 $redirectUrl = $this->redirect
->to(null, 'fallback');
63 $this->assertSame('fallback', $redirectUrl);
66 public function testRedirectToNullWithoutFallback()
68 $redirectUrl = $this->redirect
->to(null);
70 $this->assertSame($this->routerMock
->generate('homepage'), $redirectUrl);
73 public function testRedirectToValidUrl()
75 $redirectUrl = $this->redirect
->to('/unread/list');
77 $this->assertSame('/unread/list', $redirectUrl);
80 public function testWithNotLoggedUser()
82 $redirect = new Redirect($this->routerMock
, new TokenStorage());
83 $redirectUrl = $redirect->to('/unread/list');
85 $this->assertSame('/unread/list', $redirectUrl);
88 public function testUserForRedirectToHomepage()
90 $this->token
->getUser()->getConfig()->setActionMarkAsRead(Config
::REDIRECT_TO_HOMEPAGE
);
92 $redirectUrl = $this->redirect
->to('/unread/list');
94 $this->assertSame($this->routerMock
->generate('homepage'), $redirectUrl);
97 public function testUserForRedirectWithIgnoreActionMarkAsRead()
99 $this->token
->getUser()->getConfig()->setActionMarkAsRead(Config
::REDIRECT_TO_HOMEPAGE
);
101 $redirectUrl = $this->redirect
->to('/unread/list', '', true);
103 $this->assertSame('/unread/list', $redirectUrl);
106 public function testUserForRedirectNullWithFallbackWithIgnoreActionMarkAsRead()
108 $this->token
->getUser()->getConfig()->setActionMarkAsRead(Config
::REDIRECT_TO_HOMEPAGE
);
110 $redirectUrl = $this->redirect
->to(null, 'fallback', true);
112 $this->assertSame('fallback', $redirectUrl);