mirror of
https://github.com/wallabag/wallabag.git
synced 2024-12-22 23:56:29 +00:00
Added tests
This commit is contained in:
parent
f052f1fd57
commit
65cd8a4a9a
3 changed files with 78 additions and 6 deletions
|
@ -3,7 +3,7 @@
|
|||
namespace Wallabag\CoreBundle\Helper;
|
||||
|
||||
use Symfony\Component\Routing\Router;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorage;
|
||||
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
|
||||
use Wallabag\CoreBundle\Entity\Config;
|
||||
|
||||
/**
|
||||
|
@ -12,12 +12,13 @@ use Wallabag\CoreBundle\Entity\Config;
|
|||
class Redirect
|
||||
{
|
||||
private $router;
|
||||
private $tokenStorage;
|
||||
private $actionMarkAsRead;
|
||||
|
||||
public function __construct(Router $router, TokenStorage $token)
|
||||
public function __construct(Router $router, TokenStorageInterface $tokenStorage)
|
||||
{
|
||||
$this->router = $router;
|
||||
$this->actionMarkAsRead = $token->getToken()->getUser()->getConfig()->getActionMarkAsRead();
|
||||
$this->tokenStorage = $tokenStorage;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -28,7 +29,13 @@ class Redirect
|
|||
*/
|
||||
public function to($url, $fallback = '')
|
||||
{
|
||||
if (Config::REDIRECT_TO_HOMEPAGE === $this->actionMarkAsRead) {
|
||||
$user = $this->tokenStorage->getToken() ? $this->tokenStorage->getToken()->getUser() : null;
|
||||
|
||||
if (null === $user || !is_object($user)) {
|
||||
return $url;
|
||||
}
|
||||
|
||||
if (Config::REDIRECT_TO_HOMEPAGE === $user->getConfig()->getActionMarkAsRead()) {
|
||||
return $this->router->generate('homepage');
|
||||
}
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
namespace Tests\Wallabag\CoreBundle\Controller;
|
||||
|
||||
use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
|
||||
use Wallabag\CoreBundle\Entity\Config;
|
||||
use Wallabag\CoreBundle\Entity\Entry;
|
||||
|
||||
class EntryControllerTest extends WallabagCoreTestCase
|
||||
|
@ -896,4 +897,68 @@ class EntryControllerTest extends WallabagCoreTestCase
|
|||
|
||||
$client->getContainer()->get('craue_config')->set('download_images_enabled', 0);
|
||||
}
|
||||
|
||||
public function testRedirectToHomepage()
|
||||
{
|
||||
$this->logInAs('empty');
|
||||
$client = $this->getClient();
|
||||
|
||||
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$user = $em
|
||||
->getRepository('WallabagUserBundle:User')
|
||||
->find($this->getLoggedInUserId());
|
||||
|
||||
if (!$user) {
|
||||
$this->markTestSkipped('No user found in db.');
|
||||
}
|
||||
|
||||
// Redirect to homepage
|
||||
$config = $user->getConfig();
|
||||
$config->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE);
|
||||
$em->persist($config);
|
||||
$em->flush();
|
||||
|
||||
$content = $client->getContainer()
|
||||
->get('doctrine.orm.entity_manager')
|
||||
->getRepository('WallabagCoreBundle:Entry')
|
||||
->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
|
||||
|
||||
$client->request('GET', '/view/'.$content->getId());
|
||||
$client->request('GET', '/archive/'.$content->getId());
|
||||
|
||||
$this->assertEquals(302, $client->getResponse()->getStatusCode());
|
||||
$this->assertEquals('/', $client->getResponse()->headers->get('location'));
|
||||
}
|
||||
|
||||
public function testRedirectToCurrentPage()
|
||||
{
|
||||
$this->logInAs('empty');
|
||||
$client = $this->getClient();
|
||||
|
||||
$em = $client->getContainer()->get('doctrine.orm.entity_manager');
|
||||
$user = $em
|
||||
->getRepository('WallabagUserBundle:User')
|
||||
->find($this->getLoggedInUserId());
|
||||
|
||||
if (!$user) {
|
||||
$this->markTestSkipped('No user found in db.');
|
||||
}
|
||||
|
||||
// Redirect to current page
|
||||
$config = $user->getConfig();
|
||||
$config->setActionMarkAsRead(Config::REDIRECT_TO_CURRENT_PAGE);
|
||||
$em->persist($config);
|
||||
$em->flush();
|
||||
|
||||
$content = $client->getContainer()
|
||||
->get('doctrine.orm.entity_manager')
|
||||
->getRepository('WallabagCoreBundle:Entry')
|
||||
->findByUrlAndUserId($this->url, $this->getLoggedInUserId());
|
||||
|
||||
$client->request('GET', '/view/'.$content->getId());
|
||||
$client->request('GET', '/archive/'.$content->getId());
|
||||
|
||||
$this->assertEquals(302, $client->getResponse()->getStatusCode());
|
||||
$this->assertContains('/view/'.$content->getId(), $client->getResponse()->headers->get('location'));
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,14 +25,14 @@ class RedirectTest extends \PHPUnit_Framework_TestCase
|
|||
{
|
||||
$redirectUrl = $this->redirect->to(null, 'fallback');
|
||||
|
||||
$this->assertEquals('fallback', $redirectUrl);
|
||||
$this->assertEquals(null, $redirectUrl);
|
||||
}
|
||||
|
||||
public function testRedirectToNullWithoutFallback()
|
||||
{
|
||||
$redirectUrl = $this->redirect->to(null);
|
||||
|
||||
$this->assertEquals($this->routerMock->generate('homepage'), $redirectUrl);
|
||||
$this->assertEquals(null, $redirectUrl);
|
||||
}
|
||||
|
||||
public function testRedirectToValidUrl()
|
||||
|
|
Loading…
Reference in a new issue