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 b047a2d

Browse filesBrowse files
alexander-schranznicolas-grekas
authored andcommitted
[HttpKernel] Fix session test cases for symfony
1 parent 111459e commit b047a2d
Copy full SHA for b047a2d

File tree

1 file changed

+64
-52
lines changed
Filter options

1 file changed

+64
-52
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
+64-52Lines changed: 64 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222
use Symfony\Component\HttpFoundation\Session\Session;
2323
use Symfony\Component\HttpFoundation\Session\SessionFactory;
2424
use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage;
25-
use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorage;
25+
use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorageFactory;
26+
use Symfony\Component\HttpFoundation\Session\Storage\PhpBridgeSessionStorageFactory;
27+
use Symfony\Component\HttpFoundation\Session\Storage\SessionStorageFactoryInterface;
2628
use Symfony\Component\HttpKernel\DataCollector\RequestDataCollector;
2729
use Symfony\Component\HttpKernel\Event\FinishRequestEvent;
2830
use Symfony\Component\HttpKernel\Event\RequestEvent;
@@ -134,20 +136,8 @@ public function testPhpBridgeAlreadyStartedSession()
134136
session_start();
135137
$sessionId = session_id();
136138

137-
$requestStack = new RequestStack();
138139
$request = new Request();
139-
$requestStack->push($request);
140-
141-
$session = new Session();
142-
$sessionStorage = new PhpBridgeSessionStorage();
143-
144-
$container = new Container();
145-
$container->set('request_stack', $requestStack);
146-
$container->set('session', $session);
147-
$container->set('session_storage', $sessionStorage);
148-
149-
$request = new Request();
150-
$listener = new SessionListener($container);
140+
$listener = $this->createListener($request, new PhpBridgeSessionStorageFactory());
151141

152142
$event = new RequestEvent($this->createMock(HttpKernelInterface::class), $request, HttpKernelInterface::MAIN_REQUEST);
153143

@@ -162,17 +152,14 @@ public function testPhpBridgeAlreadyStartedSession()
162152
*/
163153
public function testSessionCookieWrittenNoCookieGiven()
164154
{
165-
$session = new Session();
166-
$session->set('hello', 'world');
167-
168-
$container = new Container();
169-
$container->set('initialized_session', $session);
155+
$request = new Request();
156+
$listener = $this->createListener($request, new NativeSessionStorageFactory());
170157

171-
$listener = new SessionListener($container);
172158
$kernel = $this->createMock(HttpKernelInterface::class);
173159

174-
$request = new Request();
175160
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
161+
$session = $request->getSession();
162+
$session->set('hello', 'world');
176163

177164
$response = new Response();
178165
$listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, $response));
@@ -191,22 +178,25 @@ public function testSessionCookieWrittenNoCookieGiven()
191178
*/
192179
public function testSessionCookieNotWrittenCookieGiven()
193180
{
194-
$session = new Session();
195-
$session->set('hello', 'world');
196-
$sessionId = $session->getId();
197-
198-
$container = new Container();
199-
$container->set('initialized_session', $session);
181+
$sessionId = $this->createValidSessionId();
200182

201-
$listener = new SessionListener($container);
202-
$kernel = $this->createMock(HttpKernelInterface::class);
183+
$this->assertNotEmpty($sessionId);
203184

204185
$request = new Request();
205186
$request->cookies->set('PHPSESSID', $sessionId);
187+
188+
$listener = $this->createListener($request, new NativeSessionStorageFactory());
189+
190+
$kernel = $this->createMock(HttpKernelInterface::class);
206191
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
207192

193+
$session = $request->getSession();
194+
$this->assertSame($sessionId, $session->getId());
195+
$session->set('hello', 'world');
196+
208197
$response = new Response();
209198
$listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST, $response));
199+
$this->assertSame($sessionId, $session->getId());
210200

211201
$cookies = $response->headers->getCookies();
212202
$this->assertCount(0, $cookies);
@@ -217,21 +207,18 @@ public function testSessionCookieNotWrittenCookieGiven()
217207
*/
218208
public function testSessionCookieClearedWhenInvalidated()
219209
{
220-
$session = new Session();
221-
222-
$container = new Container();
223-
$container->set('initialized_session', $session);
224-
225-
$listener = new SessionListener($container);
210+
$sessionId = $this->createValidSessionId();
211+
$request = new Request();
212+
$request->cookies->set('PHPSESSID', $sessionId);
213+
$listener = $this->createListener($request, new NativeSessionStorageFactory());
226214
$kernel = $this->createMock(HttpKernelInterface::class);
227215

228-
$request = new Request();
229216
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
230217

218+
$session = $request->getSession();
231219
$session->start();
232220
$sessionId = $session->getId();
233221
$this->assertNotEmpty($sessionId);
234-
$request->cookies->set($session->getName(), $sessionId);
235222
$_SESSION['hello'] = 'world'; // check compatibility to php session bridge
236223

237224
$session->invalidate();
@@ -252,21 +239,18 @@ public function testSessionCookieClearedWhenInvalidated()
252239
*/
253240
public function testSessionCookieNotClearedWhenOtherVariablesSet()
254241
{
255-
$session = new Session();
256-
257-
$container = new Container();
258-
$container->set('initialized_session', $session);
259-
260-
$listener = new SessionListener($container);
242+
$sessionId = $this->createValidSessionId();
243+
$request = new Request();
244+
$request->cookies->set('PHPSESSID', $sessionId);
245+
$listener = $this->createListener($request, new NativeSessionStorageFactory());
261246
$kernel = $this->createMock(HttpKernelInterface::class);
262247

263-
$request = new Request();
264248
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
265249

250+
$session = $request->getSession();
266251
$session->start();
267252
$sessionId = $session->getId();
268253
$this->assertNotEmpty($sessionId);
269-
$request->cookies->set($session->getName(), $sessionId);
270254
$_SESSION['hello'] = 'world';
271255

272256
$response = new Response();
@@ -281,17 +265,13 @@ public function testSessionCookieNotClearedWhenOtherVariablesSet()
281265
*/
282266
public function testSessionCookieSetWhenOtherNativeVariablesSet()
283267
{
284-
$session = new Session();
285-
286-
$container = new Container();
287-
$container->set('initialized_session', $session);
288-
289-
$listener = new SessionListener($container);
268+
$request = new Request();
269+
$listener = $this->createListener($request, new NativeSessionStorageFactory());
290270
$kernel = $this->createMock(HttpKernelInterface::class);
291271

292-
$request = new Request();
293272
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MAIN_REQUEST));
294273

274+
$session = $request->getSession();
295275
$session->start();
296276
$sessionId = $session->getId();
297277
$this->assertNotEmpty($sessionId);
@@ -756,4 +736,36 @@ public function testResetUnclosedSession()
756736
$this->assertEmpty(session_id());
757737
$this->assertSame(\PHP_SESSION_NONE, session_status());
758738
}
739+
740+
private function createListener(Request $request, SessionStorageFactoryInterface $sessionFactory)
741+
{
742+
$requestStack = new RequestStack();
743+
$request = new Request();
744+
$requestStack->push($request);
745+
746+
$sessionFactory = new SessionFactory(
747+
$requestStack,
748+
$sessionFactory,
749+
);
750+
751+
$container = new Container();
752+
$container->set('request_stack', $requestStack);
753+
$container->set('session_factory', $sessionFactory);
754+
755+
$listener = new SessionListener($container);
756+
757+
return new SessionListener($container);
758+
}
759+
760+
private function createValidSessionId(): string
761+
{
762+
session_start();
763+
$sessionId = session_id();
764+
$_SESSION['some'] = 'value';
765+
session_write_close();
766+
$_SESSION = [];
767+
session_abort();
768+
769+
return $sessionId;
770+
}
759771
}

0 commit comments

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