15
15
use Symfony \Component \HttpFoundation \Exception \SessionNotFoundException ;
16
16
use Symfony \Component \HttpFoundation \Request ;
17
17
use Symfony \Component \HttpFoundation \RequestStack ;
18
+ use Symfony \Component \HttpFoundation \Session \Session ;
18
19
use Symfony \Component \Security \Csrf \TokenStorage \SessionTokenStorage ;
19
20
use Symfony \Component \Security \Http \Event \LogoutEvent ;
20
21
use Symfony \Component \Security \Http \EventListener \CsrfTokenClearingLogoutListener ;
21
22
22
23
class CsrfTokenClearingLogoutListenerTest extends TestCase
23
24
{
24
- public function testSkipsClearingSessionTokenStorageOnStatelessRequest ()
25
+ public function testSkipsClearingSessionTokenStorageOnRequestWithoutSession ()
25
26
{
26
27
try {
27
28
(new CsrfTokenClearingLogoutListener (
@@ -33,4 +34,25 @@ public function testSkipsClearingSessionTokenStorageOnStatelessRequest()
33
34
34
35
$ this ->addToAssertionCount (1 );
35
36
}
37
+
38
+ public function testSkipsClearingSessionTokenStorageOnStatelessRequest ()
39
+ {
40
+ $ session = new Session ();
41
+
42
+ // Create a stateless request with a previous session
43
+ $ request = new Request ();
44
+ $ request ->setSession ($ session );
45
+ $ request ->cookies ->set ($ session ->getName (), 'previous_session ' );
46
+ $ request ->attributes ->set ('_stateless ' , true );
47
+
48
+ try {
49
+ (new CsrfTokenClearingLogoutListener (
50
+ new SessionTokenStorage (new RequestStack ())
51
+ ))->onLogout (new LogoutEvent ($ request , null ));
52
+ } catch (SessionNotFoundException ) {
53
+ $ this ->fail ('clear() must not be called if the request is stateless ' );
54
+ }
55
+
56
+ $ this ->addToAssertionCount (1 );
57
+ }
36
58
}
0 commit comments