Add @covers tags to logging tests
[lhc/web/wiklou.git] / tests / phpunit / includes / logging / RightsLogFormatterTest.php
1 <?php
2
3 /**
4 * @covers RightsLogFormatter
5 */
6 class RightsLogFormatterTest extends LogFormatterTestCase {
7
8 /**
9 * Provide different rows from the logging table to test
10 * for backward compatibility.
11 * Do not change the existing data, just add a new database row
12 */
13 public static function provideRightsLogDatabaseRows() {
14 return [
15 // Current format
16 [
17 [
18 'type' => 'rights',
19 'action' => 'rights',
20 'comment' => 'rights comment',
21 'user' => 0,
22 'user_text' => 'Sysop',
23 'namespace' => NS_USER,
24 'title' => 'User',
25 'params' => [
26 '4::oldgroups' => [],
27 '5::newgroups' => [ 'sysop', 'bureaucrat' ],
28 'oldmetadata' => [],
29 'newmetadata' => [
30 [ 'expiry' => null ],
31 [ 'expiry' => '20160101123456' ]
32 ],
33 ],
34 ],
35 [
36 'text' => 'Sysop changed group membership for User from (none) to '
37 . 'bureaucrat (temporary, until 12:34, 1 January 2016) and administrator',
38 'api' => [
39 'oldgroups' => [],
40 'newgroups' => [ 'sysop', 'bureaucrat' ],
41 'oldmetadata' => [],
42 'newmetadata' => [
43 [ 'group' => 'sysop', 'expiry' => 'infinity' ],
44 [ 'group' => 'bureaucrat', 'expiry' => '2016-01-01T12:34:56Z' ],
45 ],
46 ],
47 ],
48 ],
49
50 // Previous format (oldgroups and newgroups as arrays, no metadata)
51 [
52 [
53 'type' => 'rights',
54 'action' => 'rights',
55 'comment' => 'rights comment',
56 'user' => 0,
57 'user_text' => 'Sysop',
58 'namespace' => NS_USER,
59 'title' => 'User',
60 'params' => [
61 '4::oldgroups' => [],
62 '5::newgroups' => [ 'sysop', 'bureaucrat' ],
63 ],
64 ],
65 [
66 'text' => 'Sysop changed group membership for User from (none) to '
67 . 'administrator and bureaucrat',
68 'api' => [
69 'oldgroups' => [],
70 'newgroups' => [ 'sysop', 'bureaucrat' ],
71 'oldmetadata' => [],
72 'newmetadata' => [
73 [ 'group' => 'sysop', 'expiry' => 'infinity' ],
74 [ 'group' => 'bureaucrat', 'expiry' => 'infinity' ],
75 ],
76 ],
77 ],
78 ],
79
80 // Legacy format (oldgroups and newgroups as numeric-keyed strings)
81 [
82 [
83 'type' => 'rights',
84 'action' => 'rights',
85 'comment' => 'rights comment',
86 'user' => 0,
87 'user_text' => 'Sysop',
88 'namespace' => NS_USER,
89 'title' => 'User',
90 'params' => [
91 '',
92 'sysop, bureaucrat',
93 ],
94 ],
95 [
96 'legacy' => true,
97 'text' => 'Sysop changed group membership for User from (none) to '
98 . 'administrator and bureaucrat',
99 'api' => [
100 'oldgroups' => [],
101 'newgroups' => [ 'sysop', 'bureaucrat' ],
102 'oldmetadata' => [],
103 'newmetadata' => [
104 [ 'group' => 'sysop', 'expiry' => 'infinity' ],
105 [ 'group' => 'bureaucrat', 'expiry' => 'infinity' ],
106 ],
107 ],
108 ],
109 ],
110
111 // Really old entry
112 [
113 [
114 'type' => 'rights',
115 'action' => 'rights',
116 'comment' => 'rights comment',
117 'user' => 0,
118 'user_text' => 'Sysop',
119 'namespace' => NS_USER,
120 'title' => 'User',
121 'params' => [],
122 ],
123 [
124 'legacy' => true,
125 'text' => 'Sysop changed group membership for User',
126 'api' => [],
127 ],
128 ],
129 ];
130 }
131
132 /**
133 * @dataProvider provideRightsLogDatabaseRows
134 */
135 public function testRightsLogDatabaseRows( $row, $extra ) {
136 $this->doTestLogFormatter( $row, $extra );
137 }
138
139 /**
140 * Provide different rows from the logging table to test
141 * for backward compatibility.
142 * Do not change the existing data, just add a new database row
143 */
144 public static function provideAutopromoteLogDatabaseRows() {
145 return [
146 // Current format
147 [
148 [
149 'type' => 'rights',
150 'action' => 'autopromote',
151 'comment' => 'rights comment',
152 'user' => 0,
153 'user_text' => 'Sysop',
154 'namespace' => NS_USER,
155 'title' => 'Sysop',
156 'params' => [
157 '4::oldgroups' => [ 'sysop' ],
158 '5::newgroups' => [ 'sysop', 'bureaucrat' ],
159 ],
160 ],
161 [
162 'text' => 'Sysop was automatically promoted from administrator to '
163 . 'administrator and bureaucrat',
164 'api' => [
165 'oldgroups' => [ 'sysop' ],
166 'newgroups' => [ 'sysop', 'bureaucrat' ],
167 'oldmetadata' => [
168 [ 'group' => 'sysop', 'expiry' => 'infinity' ],
169 ],
170 'newmetadata' => [
171 [ 'group' => 'sysop', 'expiry' => 'infinity' ],
172 [ 'group' => 'bureaucrat', 'expiry' => 'infinity' ],
173 ],
174 ],
175 ],
176 ],
177
178 // Legacy format
179 [
180 [
181 'type' => 'rights',
182 'action' => 'autopromote',
183 'comment' => 'rights comment',
184 'user' => 0,
185 'user_text' => 'Sysop',
186 'namespace' => NS_USER,
187 'title' => 'Sysop',
188 'params' => [
189 'sysop',
190 'sysop, bureaucrat',
191 ],
192 ],
193 [
194 'legacy' => true,
195 'text' => 'Sysop was automatically promoted from administrator to '
196 . 'administrator and bureaucrat',
197 'api' => [
198 'oldgroups' => [ 'sysop' ],
199 'newgroups' => [ 'sysop', 'bureaucrat' ],
200 'oldmetadata' => [
201 [ 'group' => 'sysop', 'expiry' => 'infinity' ],
202 ],
203 'newmetadata' => [
204 [ 'group' => 'sysop', 'expiry' => 'infinity' ],
205 [ 'group' => 'bureaucrat', 'expiry' => 'infinity' ],
206 ],
207 ],
208 ],
209 ],
210 ];
211 }
212
213 /**
214 * @dataProvider provideAutopromoteLogDatabaseRows
215 */
216 public function testAutopromoteLogDatabaseRows( $row, $extra ) {
217 $this->doTestLogFormatter( $row, $extra );
218 }
219 }