@@ -31,7 +31,11 @@ class RememberMeAuthenticatorTest extends TestCase
31
31
32
32
protected function setUp (): void
33
33
{
34
- $ this ->rememberMeHandler = $ this ->createMock (RememberMeHandlerInterface::class);
34
+ $ this ->rememberMeHandler = $ this ->getMockBuilder (RememberMeHandlerInterface::class)
35
+ ->onlyMethods (get_class_methods (RememberMeHandlerInterface::class))
36
+ ->addMethods (['getRememberMeDetails ' , 'getUserIdentifierForCookie ' ])
37
+ ->getMock ();
38
+
35
39
$ this ->tokenStorage = new TokenStorage ();
36
40
$ this ->authenticator = new RememberMeAuthenticator ($ this ->rememberMeHandler , 's3cr3t ' , $ this ->tokenStorage , '_remember_me_cookie ' );
37
41
}
@@ -67,6 +71,15 @@ public function testAuthenticate()
67
71
{
68
72
$ rememberMeDetails = new RememberMeDetails (InMemoryUser::class, 'wouter ' , 1 , 'secret ' );
69
73
$ request = Request::create ('/ ' , 'GET ' , [], ['_remember_me_cookie ' => $ rememberMeDetails ->toString ()]);
74
+
75
+ $ this ->rememberMeHandler ->expects ($ this ->once ())->method ('getRememberMeDetails ' )
76
+ ->with ($ rememberMeDetails ->toString ())
77
+ ->willReturn ($ rememberMeDetails );
78
+
79
+ $ this ->rememberMeHandler ->expects ($ this ->once ())->method ('getUserIdentifierForCookie ' )
80
+ ->with ($ rememberMeDetails )
81
+ ->willReturn ('wouter ' );
82
+
70
83
$ passport = $ this ->authenticator ->authenticate ($ request );
71
84
72
85
$ this ->rememberMeHandler ->expects ($ this ->once ())->method ('consumeRememberMeCookie ' )->with ($ this ->callback (function ($ arg ) use ($ rememberMeDetails ) {
@@ -86,7 +99,40 @@ public function testAuthenticateWithoutOldToken()
86
99
{
87
100
$ this ->expectException (AuthenticationException::class);
88
101
89
- $ request = Request::create ('/ ' , 'GET ' , [], ['_remember_me_cookie ' => base64_encode ('foo:bar ' )]);
102
+ $ encodedData = base64_encode ('foo:bar ' );
103
+ $ request = Request::create ('/ ' , 'GET ' , [], ['_remember_me_cookie ' => $ encodedData ]);
104
+
105
+ $ this ->rememberMeHandler ->expects ($ this ->once ())->method ('getRememberMeDetails ' )->with ($ encodedData )->willThrowException (new AuthenticationException ());
90
106
$ this ->authenticator ->authenticate ($ request );
91
107
}
108
+
109
+ public function testAuthenticateDeprecatedCodePath ()
110
+ {
111
+ $ mock = $ this ->getMockBuilder (RememberMeHandlerInterface::class)
112
+ ->getMock ();
113
+
114
+ $ rememberMeDetails = new RememberMeDetails (InMemoryUser::class, 'wouter ' , 1 , 'secret ' );
115
+ $ request = Request::create ('/ ' , 'GET ' , [], ['_remember_me_cookie ' => $ rememberMeDetails ->toString ()]);
116
+
117
+ $ authenticator = new RememberMeAuthenticator ($ mock , 's3cr3t ' , $ this ->tokenStorage , '_remember_me_cookie ' );
118
+ $ passport = $ authenticator ->authenticate ($ request );
119
+
120
+ $ mock ->expects ($ this ->once ())->method ('consumeRememberMeCookie ' )->with ($ this ->callback (function ($ arg ) use ($ rememberMeDetails ) {
121
+ return $ rememberMeDetails == $ arg ;
122
+ }));
123
+ $ passport ->getUser (); // trigger the user loader
124
+ }
125
+
126
+ public function testAuthenticateWithoutOldTokenDeprecatedCodePath ()
127
+ {
128
+ $ mock = $ this ->getMockBuilder (RememberMeHandlerInterface::class)
129
+ ->getMock ();
130
+
131
+ $ this ->expectException (AuthenticationException::class);
132
+
133
+ $ request = Request::create ('/ ' , 'GET ' , [], ['_remember_me_cookie ' => base64_encode ('foo:bar ' )]);
134
+
135
+ $ authenticator = new RememberMeAuthenticator ($ mock , 's3cr3t ' , $ this ->tokenStorage , '_remember_me_cookie ' );
136
+ $ authenticator ->authenticate ($ request );
137
+ }
92
138
}
0 commit comments