forked from wallabag/wallabag
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:
@ -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'));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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'));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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();
|
||||
|
||||
Reference in New Issue
Block a user