1212namespace Symfony \Component \Security \Http \Tests \Authenticator ;
1313
1414use PHPUnit \Framework \TestCase ;
15- use Symfony \Component \HttpFoundation \Cookie ;
1615use Symfony \Component \HttpFoundation \Request ;
1716use Symfony \Component \Security \Core \Authentication \Token \RememberMeToken ;
1817use Symfony \Component \Security \Core \Authentication \Token \Storage \TokenStorage ;
1918use Symfony \Component \Security \Core \Authentication \Token \TokenInterface ;
2019use Symfony \Component \Security \Core \User \User ;
2120use Symfony \Component \Security \Http \Authenticator \RememberMeAuthenticator ;
22- use Symfony \Component \Security \Http \RememberMe \AbstractRememberMeServices ;
2321use Symfony \Component \Security \Http \RememberMe \RememberMeServicesInterface ;
2422
2523class RememberMeAuthenticatorTest extends TestCase
@@ -37,8 +35,6 @@ protected function setUp(): void
3735 'name ' => '_remember_me_cookie ' ,
3836 ]);
3937 $ this ->request = new Request ();
40- $ this ->request ->cookies ->set ('_remember_me_cookie ' , $ val = $ this ->generateCookieValue ());
41- $ this ->request ->attributes ->set (AbstractRememberMeServices::COOKIE_ATTR_NAME , new Cookie ('_remember_me_cookie ' , $ val ));
4238 }
4339
4440 public function testSupportsTokenStorageWithToken ()
@@ -48,39 +44,34 @@ public function testSupportsTokenStorageWithToken()
4844 $ this ->assertFalse ($ this ->authenticator ->supports ($ this ->request ));
4945 }
5046
51- public function testSupportsRequestWithoutAttribute ()
47+ /**
48+ * @dataProvider provideSupportsData
49+ */
50+ public function testSupports ($ autoLoginResult , $ support )
5251 {
53- $ this ->request -> attributes -> remove (AbstractRememberMeServices:: COOKIE_ATTR_NAME );
52+ $ this ->rememberMeServices -> expects ( $ this -> once ())-> method ( ' autoLogin ' )-> with ( $ this -> request )-> willReturn ( $ autoLoginResult );
5453
55- $ this ->assertNull ( $ this ->authenticator ->supports ($ this ->request ));
54+ $ this ->assertSame ( $ support , $ this ->authenticator ->supports ($ this ->request ));
5655 }
5756
58- public function testSupportsRequestWithoutCookie ()
57+ public function provideSupportsData ()
5958 {
60- $ this ->request ->cookies ->remove ('_remember_me_cookie ' );
61-
62- $ this ->assertFalse ($ this ->authenticator ->supports ($ this ->request ));
63- }
64-
65- public function testSupports ()
66- {
67- $ this ->assertNull ($ this ->authenticator ->supports ($ this ->request ));
59+ yield [null , false ];
60+ yield [$ this ->createMock (TokenInterface::class), null ];
6861 }
6962
7063 public function testAuthenticate ()
7164 {
72- $ this ->rememberMeServices ->expects ($ this ->once ())
73- ->method ('autoLogin ' )
74- ->with ($ this ->request )
75- ->willReturn (new RememberMeToken ($ user = new User ('wouter ' , 'test ' ), 'main ' , 'secret ' ));
76-
65+ $ this ->request ->attributes ->set ('_remember_me_token ' , new RememberMeToken ($ user = new User ('wouter ' , 'test ' ), 'main ' , 'secret ' ));
7766 $ passport = $ this ->authenticator ->authenticate ($ this ->request );
7867
7968 $ this ->assertSame ($ user , $ passport ->getUser ());
8069 }
8170
82- private function generateCookieValue ()
71+ public function testAuthenticateWithoutToken ()
8372 {
84- return base64_encode (implode (AbstractRememberMeServices::COOKIE_DELIMITER , ['part1 ' , 'part2 ' ]));
73+ $ this ->expectException (\LogicException::class);
74+
75+ $ this ->authenticator ->authenticate ($ this ->request );
8576 }
8677}
0 commit comments