[WebProfilerBundle] fixed session assumption

This commit is contained in:
Kris Wallsmith 2012-02-24 05:14:10 -08:00
parent a1370c97d5
commit 95ec4eb5e2
2 changed files with 38 additions and 25 deletions

View File

@ -72,7 +72,7 @@ class WebDebugToolbarListener
if ($response->headers->has('X-Debug-Token') && $response->isRedirect() && $this->interceptRedirects) {
$session = $request->getSession();
if ($session->getFlashBag() instanceof AutoExpireFlashBag) {
if ($session && $session->getFlashBag() instanceof AutoExpireFlashBag) {
// keep current flashes for one more request if using AutoExpireFlashBag
$session->getFlashBag()->setAll($session->getFlashBag()->peekAll());
}

View File

@ -51,19 +51,20 @@ class WebDebugToolbarListenerTest extends \PHPUnit_Framework_TestCase
);
}
public function testRedirectionIsIntercepted()
/**
* @dataProvider provideRedirects
*/
public function testRedirectionIsIntercepted($statusCode, $hasSession)
{
foreach (array(301, 302) as $statusCode) {
$response = new Response('Some content', $statusCode);
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
$event = new FilterResponseEvent($this->getKernelMock(), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response);
$response = new Response('Some content', $statusCode);
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
$event = new FilterResponseEvent($this->getKernelMock(), $this->getRequestMock(false, 'html', $hasSession), HttpKernelInterface::MASTER_REQUEST, $response);
$listener = new WebDebugToolbarListener($this->getTemplatingMock('Redirection'), true);
$listener->onKernelResponse($event);
$listener = new WebDebugToolbarListener($this->getTemplatingMock('Redirection'), true);
$listener->onKernelResponse($event);
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('Redirection', $response->getContent());
}
$this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('Redirection', $response->getContent());
}
public function testToolbarIsInjected()
@ -81,19 +82,28 @@ class WebDebugToolbarListenerTest extends \PHPUnit_Framework_TestCase
/**
* @depends testToolbarIsInjected
* @dataProvider provideRedirects
*/
public function testToolbarIsNotInjectedOnRedirection()
public function testToolbarIsNotInjectedOnRedirection($statusCode, $hasSession)
{
foreach (array(301, 302) as $statusCode) {
$response = new Response('<html><head></head><body></body></html>', $statusCode);
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
$event = new FilterResponseEvent($this->getKernelMock(), $this->getRequestMock(), HttpKernelInterface::MASTER_REQUEST, $response);
$response = new Response('<html><head></head><body></body></html>', $statusCode);
$response->headers->set('X-Debug-Token', 'xxxxxxxx');
$event = new FilterResponseEvent($this->getKernelMock(), $this->getRequestMock(false, 'html', $hasSession), HttpKernelInterface::MASTER_REQUEST, $response);
$listener = new WebDebugToolbarListener($this->getTemplatingMock());
$listener->onKernelResponse($event);
$listener = new WebDebugToolbarListener($this->getTemplatingMock());
$listener->onKernelResponse($event);
$this->assertEquals('<html><head></head><body></body></html>', $response->getContent());
}
$this->assertEquals('<html><head></head><body></body></html>', $response->getContent());
}
public function provideRedirects()
{
return array(
array(301, true),
array(302, true),
array(301, false),
array(302, false),
);
}
/**
@ -175,9 +185,8 @@ class WebDebugToolbarListenerTest extends \PHPUnit_Framework_TestCase
$this->assertEquals('<html><head></head><body></body></html>', $response->getContent());
}
protected function getRequestMock($isXmlHttpRequest = false, $requestFormat = 'html')
protected function getRequestMock($isXmlHttpRequest = false, $requestFormat = 'html', $hasSession = true)
{
$session = $this->getMock('Symfony\Component\HttpFoundation\Session\Session', array(), array(), '', false);
$request = $this->getMock(
'Symfony\Component\HttpFoundation\Request',
array('getSession', 'isXmlHttpRequest', 'getRequestFormat'),
@ -189,9 +198,13 @@ class WebDebugToolbarListenerTest extends \PHPUnit_Framework_TestCase
$request->expects($this->any())
->method('getRequestFormat')
->will($this->returnValue($requestFormat));
$request->expects($this->any())
->method('getSession')
->will($this->returnValue($session));
if ($hasSession) {
$session = $this->getMock('Symfony\Component\HttpFoundation\Session\Session', array(), array(), '', false);
$request->expects($this->any())
->method('getSession')
->will($this->returnValue($session));
}
return $request;
}