merged branch kriswallsmith/wdt/no-session-fix (PR #3444)

Commits
-------

95ec4eb [WebProfilerBundle] fixed session assumption

Discussion
----------

[WebProfilerBundle] fixed session assumption

```
Bug fix: yes
Feature addition: no
Backwards compatibility break: no
Symfony2 tests pass: yes
Fixes the following tickets: -
Todo: -
```

[![Build Status](https://secure.travis-ci.org/kriswallsmith/symfony.png?branch=wdt/no-session-fix)](http://travis-ci.org/kriswallsmith/symfony)
This commit is contained in:
Fabien Potencier 2012-02-27 10:04:49 +01:00
commit c319ff5939
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;
}