1
+ <?php
2
+
3
+ namespace yii1tech \web \user \test ;
4
+
5
+ use CEvent ;
6
+ use CUserIdentity ;
7
+ use Yii ;
8
+ use yii1tech \web \user \WebUser ;
9
+
10
+ class WebUserTest extends TestCase
11
+ {
12
+ protected function createWebUser (): WebUser
13
+ {
14
+ return Yii::createComponent ([
15
+ 'class ' => WebUser::class,
16
+ 'stateKeyPrefix ' => '' ,
17
+ ]);
18
+ }
19
+
20
+ public function testBeforeLoginEvent (): void
21
+ {
22
+ $ webUser = $ this ->createWebUser ();
23
+
24
+ $ event = null ;
25
+ $ webUser ->onBeforeLogin = function (CEvent $ raisedEvent ) use (&$ event ) {
26
+ $ event = $ raisedEvent ;
27
+ };
28
+
29
+ $ identity = new CUserIdentity ('username ' , 'password ' );
30
+ $ identity ->setPersistentStates (['foo ' => 'bar ' ]);
31
+
32
+ $ webUser ->login ($ identity );
33
+
34
+ $ this ->assertFalse ($ webUser ->getIsGuest ());
35
+
36
+ $ this ->assertTrue ($ event instanceof CEvent);
37
+ $ this ->assertEquals (true , $ event ->params ['allowLogin ' ]);
38
+ $ this ->assertEquals (false , $ event ->params ['fromCookie ' ]);
39
+ $ this ->assertEquals ($ identity ->getId (), $ event ->params ['id ' ]);
40
+ $ this ->assertEquals ($ identity ->getPersistentStates (), $ event ->params ['states ' ]);
41
+ }
42
+
43
+ /**
44
+ * @depends testBeforeLoginEvent
45
+ */
46
+ public function testBeforeLoginEventBlocksLogin (): void
47
+ {
48
+ $ webUser = $ this ->createWebUser ();
49
+
50
+ $ webUser ->onBeforeLogin = function (CEvent $ event ) {
51
+ $ event ->params ['allowLogin ' ] = false ;
52
+ };
53
+
54
+ $ identity = new CUserIdentity ('username ' , 'password ' );
55
+
56
+ $ webUser ->login ($ identity );
57
+
58
+ $ this ->assertTrue ($ webUser ->getIsGuest ());
59
+ }
60
+
61
+ public function testAfterLoginEvent (): void
62
+ {
63
+ $ webUser = $ this ->createWebUser ();
64
+
65
+ $ event = null ;
66
+ $ webUser ->onAfterLogin = function (CEvent $ raisedEvent ) use (&$ event ) {
67
+ $ event = $ raisedEvent ;
68
+ };
69
+
70
+ $ identity = new CUserIdentity ('username ' , 'password ' );
71
+
72
+ $ webUser ->login ($ identity );
73
+
74
+ $ this ->assertFalse ($ webUser ->getIsGuest ());
75
+
76
+ $ this ->assertTrue ($ event instanceof CEvent);
77
+ $ this ->assertEquals (false , $ event ->params ['fromCookie ' ]);
78
+ }
79
+
80
+ public function testBeforeLogoutEvent (): void
81
+ {
82
+ $ webUser = $ this ->createWebUser ();
83
+
84
+ $ event = null ;
85
+ $ webUser ->onBeforeLogout = function (CEvent $ raisedEvent ) use (&$ event ) {
86
+ $ event = $ raisedEvent ;
87
+ };
88
+
89
+ $ identity = new CUserIdentity ('username ' , 'password ' );
90
+
91
+ $ webUser ->login ($ identity );
92
+ $ webUser ->logout ();
93
+
94
+ $ this ->assertTrue ($ webUser ->getIsGuest ());
95
+
96
+ $ this ->assertTrue ($ event instanceof CEvent);
97
+ $ this ->assertEquals (true , $ event ->params ['allowLogout ' ]);
98
+ }
99
+
100
+ /**
101
+ * @depends testBeforeLogoutEvent
102
+ */
103
+ public function testBeforeLogoutEventBlocksLogout (): void
104
+ {
105
+ $ webUser = $ this ->createWebUser ();
106
+
107
+ $ webUser ->onBeforeLogout = function (CEvent $ event ) {
108
+ $ event ->params ['allowLogout ' ] = false ;
109
+ };
110
+
111
+ $ identity = new CUserIdentity ('username ' , 'password ' );
112
+
113
+ $ webUser ->login ($ identity );
114
+ $ webUser ->logout ();
115
+
116
+ $ this ->assertFalse ($ webUser ->getIsGuest ());
117
+ }
118
+
119
+ public function testAfterLogoutEvent (): void
120
+ {
121
+ $ webUser = $ this ->createWebUser ();
122
+
123
+ $ event = null ;
124
+ $ webUser ->onAfterLogout = function (CEvent $ raisedEvent ) use (&$ event ) {
125
+ $ event = $ raisedEvent ;
126
+ };
127
+
128
+ $ identity = new CUserIdentity ('username ' , 'password ' );
129
+
130
+ $ webUser ->login ($ identity );
131
+ $ webUser ->logout ();
132
+
133
+ $ this ->assertTrue ($ webUser ->getIsGuest ());
134
+
135
+ $ this ->assertTrue ($ event instanceof CEvent);
136
+ }
137
+
138
+ public function testAfterRestoreEvent (): void
139
+ {
140
+ $ webUser = $ this ->createWebUser ();
141
+
142
+ $ event = null ;
143
+ $ webUser ->onAfterRestore = function (CEvent $ raisedEvent ) use (&$ event ) {
144
+ $ event = $ raisedEvent ;
145
+ };
146
+
147
+ $ _SESSION ['__id ' ] = 'username ' ;
148
+ $ _SESSION ['__name ' ] = 'username ' ;
149
+
150
+ $ webUser ->init ();
151
+
152
+ $ this ->assertTrue ($ event instanceof CEvent);
153
+ }
154
+ }
0 commit comments