Explorar o código

merged branch schmittjoh/testSessionListenerFix (PR #1691)

Commits
-------

e94eb0b fixes a bug in the test session listener

Discussion
----------

fixes a bug in the test session listener
Fabien Potencier %!s(int64=14) %!d(string=hai) anos
pai
achega
12b1875b88

+ 1 - 1
src/Symfony/Bundle/FrameworkBundle/EventListener/TestSessionListener.php

@@ -70,7 +70,7 @@ class TestSessionListener
 
             $params = session_get_cookie_params();
 
-            $event->getResponse()->headers->setCookie(new Cookie(session_name(), session_id(), time() + $params['lifetime'], $params['path'], $params['domain'], $params['secure'], $params['httponly']));
+            $event->getResponse()->headers->setCookie(new Cookie(session_name(), session_id(), 0 === $params['lifetime'] ? 0 : time() + $params['lifetime'], $params['path'], $params['domain'], $params['secure'], $params['httponly']));
         }
     }
 }

+ 13 - 0
src/Symfony/Bundle/FrameworkBundle/Tests/EventListener/TestSessionListenerTest.php

@@ -55,6 +55,17 @@ class TestSessionListenerTest extends \PHPUnit_Framework_TestCase
         $this->filterResponse(new Request(), HttpKernelInterface::SUB_REQUEST);
     }
 
+    public function testDoesNotDeleteCookieIfUsingSessionLifetime()
+    {
+        $params = session_get_cookie_params();
+        session_set_cookie_params(0, $params['path'], $params['domain'], $params['secure'], $params['httponly']);
+
+        $response = $this->filterResponse(new Request(), HttpKernelInterface::MASTER_REQUEST);
+        $cookies = $response->headers->getCookies();
+
+        $this->assertEquals(0, reset($cookies)->getExpiresTime());
+    }
+
     private function filterResponse(Request $request, $type = HttpKernelInterface::MASTER_REQUEST)
     {
         $request->setSession($this->session);
@@ -65,6 +76,8 @@ class TestSessionListenerTest extends \PHPUnit_Framework_TestCase
         $this->listener->onKernelResponse($event);
 
         $this->assertSame($response, $event->getResponse());
+
+        return $response;
     }
 
     private function sessionMustNotBeSaved()