@@ -33,20 +33,29 @@ class CheckRememberMeConditionsListenerTest extends TestCase
33
33
protected function setUp (): void
34
34
{
35
35
$ this ->listener = new CheckRememberMeConditionsListener ();
36
- $ this ->request = Request::create ('/login ' );
37
- $ this ->request ->request ->set ('_remember_me ' , true );
38
- $ this ->response = new Response ();
39
36
}
40
37
41
- public function testSuccessfulLoginWithoutSupportingAuthenticator ()
38
+ public function testSuccessfulHttpLoginWithoutSupportingAuthenticator ()
42
39
{
40
+ $ this ->createHttpRequest ();
41
+
43
42
$ passport = $ this ->createPassport ([]);
44
43
45
44
$ this ->listener ->onSuccessfulLogin ($ this ->createLoginSuccessfulEvent ($ passport ));
46
45
47
46
$ this ->assertFalse ($ passport ->hasBadge (RememberMeBadge::class));
48
47
}
49
48
49
+ public function testSuccessfulJsonLoginWithoutSupportingAuthenticator ()
50
+ {
51
+ $ this ->createJsonRequest ();
52
+
53
+ $ passport = $ this ->createPassport ([]);
54
+ $ this ->listener ->onSuccessfulLogin ($ this ->createLoginSuccessfulEvent ($ passport ));
55
+
56
+ $ this ->assertFalse ($ passport ->hasBadge (RememberMeBadge::class));
57
+ }
58
+
50
59
public function testSuccessfulLoginWithoutRequestParameter ()
51
60
{
52
61
$ this ->request = Request::create ('/login ' );
@@ -57,10 +66,22 @@ public function testSuccessfulLoginWithoutRequestParameter()
57
66
$ this ->assertFalse ($ passport ->getBadge (RememberMeBadge::class)->isEnabled ());
58
67
}
59
68
60
- public function testSuccessfulLoginWhenRememberMeAlwaysIsTrue ()
69
+ public function testSuccessfulHttpLoginWhenRememberMeAlwaysIsTrue ()
61
70
{
71
+ $ this ->createHttpRequest ();
72
+
73
+ $ passport = $ this ->createPassport ();
74
+
75
+ $ this ->listener ->onSuccessfulLogin ($ this ->createLoginSuccessfulEvent ($ passport ));
76
+
77
+ $ this ->assertTrue ($ passport ->getBadge (RememberMeBadge::class)->isEnabled ());
78
+ }
79
+
80
+ public function testSuccessfulJsonLoginWhenRememberMeAlwaysIsTrue ()
81
+ {
82
+ $ this ->createJsonRequest ();
83
+
62
84
$ passport = $ this ->createPassport ();
63
- $ listener = new CheckRememberMeConditionsListener (['always_remember_me ' => true ]);
64
85
65
86
$ this ->listener ->onSuccessfulLogin ($ this ->createLoginSuccessfulEvent ($ passport ));
66
87
@@ -70,8 +91,10 @@ public function testSuccessfulLoginWhenRememberMeAlwaysIsTrue()
70
91
/**
71
92
* @dataProvider provideRememberMeOptInValues
72
93
*/
73
- public function testSuccessfulLoginWithOptInRequestParameter ($ optInValue )
94
+ public function testSuccessfulHttpLoginWithOptInRequestParameter ($ optInValue )
74
95
{
96
+ $ this ->createHttpRequest ();
97
+
75
98
$ this ->request ->request ->set ('_remember_me ' , $ optInValue );
76
99
$ passport = $ this ->createPassport ();
77
100
@@ -80,6 +103,20 @@ public function testSuccessfulLoginWithOptInRequestParameter($optInValue)
80
103
$ this ->assertTrue ($ passport ->getBadge (RememberMeBadge::class)->isEnabled ());
81
104
}
82
105
106
+ /**
107
+ * @dataProvider provideRememberMeOptInValues
108
+ */
109
+ public function testSuccessfulJsonLoginWithOptInRequestParameter ($ optInValue )
110
+ {
111
+ $ this ->createJsonRequest (['_remember_me ' => $ optInValue ]);
112
+
113
+ $ passport = $ this ->createPassport ();
114
+
115
+ $ this ->listener ->onSuccessfulLogin ($ this ->createLoginSuccessfulEvent ($ passport ));
116
+
117
+ $ this ->assertTrue ($ passport ->getBadge (RememberMeBadge::class)->isEnabled ());
118
+ }
119
+
83
120
public static function provideRememberMeOptInValues ()
84
121
{
85
122
yield ['true ' ];
@@ -89,6 +126,20 @@ public static function provideRememberMeOptInValues()
89
126
yield [true ];
90
127
}
91
128
129
+ private function createHttpRequest (): void
130
+ {
131
+ $ this ->request = Request::create ('/login ' );
132
+ $ this ->request ->request ->set ('_remember_me ' , true );
133
+ $ this ->response = new Response ();
134
+ }
135
+
136
+ private function createJsonRequest (mixed $ content = ['_remember_me ' => true ]): void
137
+ {
138
+ $ this ->request = Request::create ('/login ' , 'POST ' , [], [], [], [], json_encode ($ content ));
139
+ $ this ->request ->headers ->add (['Content-Type ' => 'application/json ' ]);
140
+ $ this ->response = new Response ();
141
+ }
142
+
92
143
private function createLoginSuccessfulEvent (Passport $ passport )
93
144
{
94
145
return new LoginSuccessEvent ($ this ->createMock (AuthenticatorInterface::class), $ passport , $ this ->createMock (TokenInterface::class), $ this ->request , $ this ->response , 'main_firewall ' );
0 commit comments