127 lines
3.4 KiB
PHP
127 lines
3.4 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the Silex framework.
|
|
*
|
|
* (c) Fabien Potencier <fabien@symfony.com>
|
|
*
|
|
* This source file is subject to the MIT license that is bundled
|
|
* with this source code in the file LICENSE.
|
|
*/
|
|
|
|
namespace Silex\Tests\Provider;
|
|
|
|
use Silex\Application;
|
|
use Silex\WebTestCase;
|
|
use Silex\Provider\SessionServiceProvider;
|
|
use Symfony\Component\HttpKernel\Client;
|
|
use Symfony\Component\HttpFoundation\Session;
|
|
|
|
/**
|
|
* SessionProvider test cases.
|
|
*
|
|
* @author Igor Wiedler <igor@wiedler.ch>
|
|
* @author Fabien Potencier <fabien@symfony.com>
|
|
*/
|
|
class SessionServiceProviderTest extends WebTestCase
|
|
{
|
|
public function testRegister()
|
|
{
|
|
/*
|
|
* Smoke test
|
|
*/
|
|
$defaultStorage = $this->app['session.storage.native'];
|
|
|
|
$client = $this->createClient();
|
|
|
|
$client->request('get', '/login');
|
|
$this->assertEquals('Logged in successfully.', $client->getResponse()->getContent());
|
|
|
|
$client->request('get', '/account');
|
|
$this->assertEquals('This is your account.', $client->getResponse()->getContent());
|
|
|
|
$client->request('get', '/logout');
|
|
$this->assertEquals('Logged out successfully.', $client->getResponse()->getContent());
|
|
|
|
$client->request('get', '/account');
|
|
$this->assertEquals('You are not logged in.', $client->getResponse()->getContent());
|
|
}
|
|
|
|
public function createApplication()
|
|
{
|
|
$app = new Application();
|
|
|
|
$app->register(new SessionServiceProvider(), array(
|
|
'session.test' => true,
|
|
));
|
|
|
|
$app->get('/login', function () use ($app) {
|
|
$app['session']->set('logged_in', true);
|
|
|
|
return 'Logged in successfully.';
|
|
});
|
|
|
|
$app->get('/account', function () use ($app) {
|
|
if (!$app['session']->get('logged_in')) {
|
|
return 'You are not logged in.';
|
|
}
|
|
|
|
return 'This is your account.';
|
|
});
|
|
|
|
$app->get('/logout', function () use ($app) {
|
|
$app['session']->invalidate();
|
|
|
|
return 'Logged out successfully.';
|
|
});
|
|
|
|
return $app;
|
|
}
|
|
|
|
public function testWithRoutesThatDoesNotUseSession()
|
|
{
|
|
$app = new Application();
|
|
|
|
$app->register(new SessionServiceProvider(), array(
|
|
'session.test' => true,
|
|
));
|
|
|
|
$app->get('/', function () {
|
|
return 'A welcome page.';
|
|
});
|
|
|
|
$app->get('/robots.txt', function () {
|
|
return 'Informations for robots.';
|
|
});
|
|
|
|
$app['debug'] = true;
|
|
unset($app['exception_handler']);
|
|
|
|
$client = new Client($app);
|
|
|
|
$client->request('get', '/');
|
|
$this->assertEquals('A welcome page.', $client->getResponse()->getContent());
|
|
|
|
$client->request('get', '/robots.txt');
|
|
$this->assertEquals('Informations for robots.', $client->getResponse()->getContent());
|
|
}
|
|
|
|
public function testSessionRegister()
|
|
{
|
|
$app = new Application();
|
|
|
|
$attrs = new Session\Attribute\AttributeBag();
|
|
$flash = new Session\Flash\FlashBag();
|
|
$app->register(new SessionServiceProvider(), array(
|
|
'session.attribute_bag' => $attrs,
|
|
'session.flash_bag' => $flash,
|
|
'session.test' => true,
|
|
));
|
|
|
|
$session = $app['session'];
|
|
|
|
$this->assertSame($flash, $session->getBag('flashes'));
|
|
$this->assertSame($attrs, $session->getBag('attributes'));
|
|
}
|
|
}
|