mirror of
https://github.com/wallabag/wallabag.git
synced 2024-09-28 22:32:03 +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;
|
namespace Wallabag\CoreBundle\Helper;
|
||||||
|
|
||||||
use Symfony\Component\Routing\Router;
|
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;
|
use Wallabag\CoreBundle\Entity\Config;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -12,12 +12,13 @@ use Wallabag\CoreBundle\Entity\Config;
|
||||||
class Redirect
|
class Redirect
|
||||||
{
|
{
|
||||||
private $router;
|
private $router;
|
||||||
|
private $tokenStorage;
|
||||||
private $actionMarkAsRead;
|
private $actionMarkAsRead;
|
||||||
|
|
||||||
public function __construct(Router $router, TokenStorage $token)
|
public function __construct(Router $router, TokenStorageInterface $tokenStorage)
|
||||||
{
|
{
|
||||||
$this->router = $router;
|
$this->router = $router;
|
||||||
$this->actionMarkAsRead = $token->getToken()->getUser()->getConfig()->getActionMarkAsRead();
|
$this->tokenStorage = $tokenStorage;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,7 +29,13 @@ class Redirect
|
||||||
*/
|
*/
|
||||||
public function to($url, $fallback = '')
|
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');
|
return $this->router->generate('homepage');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
namespace Tests\Wallabag\CoreBundle\Controller;
|
namespace Tests\Wallabag\CoreBundle\Controller;
|
||||||
|
|
||||||
use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
|
use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
|
||||||
|
use Wallabag\CoreBundle\Entity\Config;
|
||||||
use Wallabag\CoreBundle\Entity\Entry;
|
use Wallabag\CoreBundle\Entity\Entry;
|
||||||
|
|
||||||
class EntryControllerTest extends WallabagCoreTestCase
|
class EntryControllerTest extends WallabagCoreTestCase
|
||||||
|
@ -896,4 +897,68 @@ class EntryControllerTest extends WallabagCoreTestCase
|
||||||
|
|
||||||
$client->getContainer()->get('craue_config')->set('download_images_enabled', 0);
|
$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');
|
$redirectUrl = $this->redirect->to(null, 'fallback');
|
||||||
|
|
||||||
$this->assertEquals('fallback', $redirectUrl);
|
$this->assertEquals(null, $redirectUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRedirectToNullWithoutFallback()
|
public function testRedirectToNullWithoutFallback()
|
||||||
{
|
{
|
||||||
$redirectUrl = $this->redirect->to(null);
|
$redirectUrl = $this->redirect->to(null);
|
||||||
|
|
||||||
$this->assertEquals($this->routerMock->generate('homepage'), $redirectUrl);
|
$this->assertEquals(null, $redirectUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testRedirectToValidUrl()
|
public function testRedirectToValidUrl()
|
||||||
|
|
Loading…
Reference in a new issue