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'));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user