Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit b0d6278

Browse filesBrowse files
Fix by check for native session variable
1 parent 0a85358 commit b0d6278
Copy full SHA for b0d6278

File tree

Expand file treeCollapse file tree

1 file changed

+68
-4
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+68
-4
lines changed

‎src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php
+68-4Lines changed: 68 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -218,8 +218,6 @@ public function testSessionCookieNotWrittenCookieGiven()
218218
public function testSessionCookieClearedWhenInvalidated()
219219
{
220220
$session = new Session();
221-
$session->set('hello', 'world');
222-
$sessionId = $session->getId();
223221

224222
$container = new Container();
225223
$container->set('initialized_session', $session);
@@ -228,10 +226,14 @@ public function testSessionCookieClearedWhenInvalidated()
228226
$kernel = $this->createMock(HttpKernelInterface::class);
229227

230228
$request = new Request();
231-
$request->cookies->set('PHPSESSID', $sessionId);
232229
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
233230

234-
$session->remove('hello');
231+
$session->start();
232+
$sessionId = $session->getId();
233+
$this->assertNotEmpty($sessionId);
234+
$request->cookies->set($session->getName(), $sessionId);
235+
$_SESSION['hello'] = 'world';
236+
235237
$session->invalidate();
236238

237239
$response = new Response();
@@ -245,6 +247,68 @@ public function testSessionCookieClearedWhenInvalidated()
245247
$this->assertTrue($sessionCookie->isCleared());
246248
}
247249

250+
/**
251+
* @runInSeparateProcess
252+
*/
253+
public function testSessionCookieNotClearedWhenOtherVariablesSet()
254+
{
255+
$session = new Session();
256+
257+
$container = new Container();
258+
$container->set('initialized_session', $session);
259+
260+
$listener = new SessionListener($container);
261+
$kernel = $this->createMock(HttpKernelInterface::class);
262+
263+
$request = new Request();
264+
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
265+
266+
$session->start();
267+
$sessionId = $session->getId();
268+
$this->assertNotEmpty($sessionId);
269+
$request->cookies->set($session->getName(), $sessionId);
270+
$_SESSION['hello'] = 'world';
271+
272+
$response = new Response();
273+
$listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, $response));
274+
275+
$cookies = $response->headers->getCookies();
276+
$this->assertCount(0, $cookies);
277+
}
278+
279+
/**
280+
* @runInSeparateProcess
281+
*/
282+
public function testSessionCookieSetWhenOtherNativeVariablesSet()
283+
{
284+
$session = new Session();
285+
286+
$container = new Container();
287+
$container->set('initialized_session', $session);
288+
289+
$listener = new SessionListener($container);
290+
$kernel = $this->createMock(HttpKernelInterface::class);
291+
292+
$request = new Request();
293+
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
294+
295+
$session->start();
296+
$sessionId = $session->getId();
297+
$this->assertNotEmpty($sessionId);
298+
$_SESSION['hello'] = 'world';
299+
300+
$response = new Response();
301+
$listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, $response));
302+
303+
$cookies = $response->headers->getCookies();
304+
$this->assertCount(1, $cookies);
305+
$sessionCookie = $cookies[0];
306+
307+
$this->assertSame('PHPSESSID', $sessionCookie->getName());
308+
$this->assertNotEmpty($sessionCookie->getValue());
309+
$this->assertFalse($sessionCookie->isCleared());
310+
}
311+
248312
public function testOnlyTriggeredOnMainRequest()
249313
{
250314
$listener = $this->getMockForAbstractClass(AbstractSessionListener::class);

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.