Ensure language is valid

- Do not override locale if user has choosen a locale from the login screen.
- Add some tests about locale url
This commit is contained in:
Jeremy Benoist
2018-10-13 09:24:39 +02:00
parent be417ef236
commit 4d4147b228
6 changed files with 76 additions and 9 deletions

View File

@ -965,4 +965,39 @@ class ConfigControllerTest extends WallabagCoreTestCase
$client->request('GET', '/config/view-mode');
}
public function testChangeLocaleWithoutReferer()
{
$client = $this->getClient();
$client->request('GET', '/locale/de');
$client->followRedirect();
$this->assertSame('de', $client->getRequest()->getLocale());
$this->assertSame('de', $client->getContainer()->get('session')->get('_locale'));
}
public function testChangeLocaleWithReferer()
{
$client = $this->getClient();
$client->request('GET', '/login');
$client->request('GET', '/locale/de');
$client->followRedirect();
$this->assertSame('de', $client->getRequest()->getLocale());
$this->assertSame('de', $client->getContainer()->get('session')->get('_locale'));
}
public function testChangeLocaleToBadLocale()
{
$client = $this->getClient();
$client->request('GET', '/login');
$client->request('GET', '/locale/yuyuyuyu');
$client->followRedirect();
$this->assertNotSame('yuyuyuyu', $client->getRequest()->getLocale());
$this->assertNotSame('yuyuyuyu', $client->getContainer()->get('session')->get('_locale'));
}
}

View File

@ -56,4 +56,27 @@ class UserLocaleListenerTest extends TestCase
$this->assertNull($session->get('_locale'));
}
public function testWithLanguageFromSession()
{
$session = new Session(new MockArraySessionStorage());
$listener = new UserLocaleListener($session);
$session->set('_locale', 'de');
$user = new User();
$user->setEnabled(true);
$config = new Config($user);
$config->setLanguage('fr');
$user->setConfig($config);
$userToken = new UsernamePasswordToken($user, '', 'test');
$request = Request::create('/');
$event = new InteractiveLoginEvent($request, $userToken);
$listener->onInteractiveLogin($event);
$this->assertSame('de', $session->get('_locale'));
}
}

View File

@ -8,6 +8,8 @@ use PHPUnit\Framework\TestCase;
use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
use Wallabag\CoreBundle\Entity\Config;
use Wallabag\UserBundle\Entity\User;
use Wallabag\UserBundle\EventListener\CreateConfigListener;
@ -22,6 +24,7 @@ class CreateConfigListenerTest extends TestCase
protected function setUp()
{
$session = new Session(new MockArraySessionStorage());
$this->em = $this->getMockBuilder('Doctrine\ORM\EntityManager')
->disableOriginalConstructor()
->getMock();
@ -34,7 +37,8 @@ class CreateConfigListenerTest extends TestCase
'fr',
1,
1,
1
1,
$session
);
$this->dispatcher = new EventDispatcher();