]> git.immae.eu Git - github/wallabag/wallabag.git/blob - tests/Wallabag/CoreBundle/Helper/RedirectTest.php
04e1a59c83fe1ca4371013e400db4aa1b5c71755
[github/wallabag/wallabag.git] / tests / Wallabag / CoreBundle / Helper / RedirectTest.php
1 <?php
2
3 namespace Tests\Wallabag\CoreBundle\Helper;
4
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;
11
12 class RedirectTest extends TestCase
13 {
14 /** @var \PHPUnit_Framework_MockObject_MockObject */
15 private $routerMock;
16
17 /** @var Redirect */
18 private $redirect;
19
20 public function setUp()
21 {
22 $this->routerMock = $this->getMockBuilder('Symfony\Component\Routing\Router')
23 ->disableOriginalConstructor()
24 ->getMock();
25
26 $this->routerMock->expects($this->any())
27 ->method('generate')
28 ->with('homepage')
29 ->willReturn('homepage');
30
31 $user = new User();
32 $user->setName('youpi');
33 $user->setEmail('youpi@youpi.org');
34 $user->setUsername('youpi');
35 $user->setPlainPassword('youpi');
36 $user->setEnabled(true);
37 $user->addRole('ROLE_SUPER_ADMIN');
38
39 $config = new Config($user);
40 $config->setTheme('material');
41 $config->setItemsPerPage(30);
42 $config->setReadingSpeed(1);
43 $config->setLanguage('en');
44 $config->setPocketConsumerKey('xxxxx');
45 $config->setActionMarkAsRead(Config::REDIRECT_TO_CURRENT_PAGE);
46
47 $user->setConfig($config);
48
49 $this->token = new UsernamePasswordToken($user, 'password', 'key');
50 $tokenStorage = new TokenStorage();
51 $tokenStorage->setToken($this->token);
52
53 $this->redirect = new Redirect($this->routerMock, $tokenStorage);
54 }
55
56 public function testRedirectToNullWithFallback()
57 {
58 $redirectUrl = $this->redirect->to(null, 'fallback');
59
60 $this->assertSame('fallback', $redirectUrl);
61 }
62
63 public function testRedirectToNullWithoutFallback()
64 {
65 $redirectUrl = $this->redirect->to(null);
66
67 $this->assertSame($this->routerMock->generate('homepage'), $redirectUrl);
68 }
69
70 public function testRedirectToValidUrl()
71 {
72 $redirectUrl = $this->redirect->to('/unread/list');
73
74 $this->assertSame('/unread/list', $redirectUrl);
75 }
76
77 public function testWithNotLoggedUser()
78 {
79 $redirect = new Redirect($this->routerMock, new TokenStorage());
80 $redirectUrl = $redirect->to('/unread/list');
81
82 $this->assertSame('/unread/list', $redirectUrl);
83 }
84
85 public function testUserForRedirectToHomepage()
86 {
87 $this->token->getUser()->getConfig()->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE);
88
89 $redirectUrl = $this->redirect->to('/unread/list');
90
91 $this->assertSame($this->routerMock->generate('homepage'), $redirectUrl);
92 }
93
94 public function testUserForRedirectWithIgnoreActionMarkAsRead()
95 {
96 $this->token->getUser()->getConfig()->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE);
97
98 $redirectUrl = $this->redirect->to('/unread/list', '', true);
99
100 $this->assertSame('/unread/list', $redirectUrl);
101 }
102
103 public function testUserForRedirectNullWithFallbackWithIgnoreActionMarkAsRead()
104 {
105 $this->token->getUser()->getConfig()->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE);
106
107 $redirectUrl = $this->redirect->to(null, 'fallback', true);
108
109 $this->assertSame('fallback', $redirectUrl);
110 }
111 }