~ubuntu-branches/ubuntu/trusty/mediawiki/trusty

« back to all changes in this revision

Viewing changes to tests/phpunit/includes/SiteConfigurationTest.php

  • Committer: Package Import Robot
  • Author(s): Thorsten Glaser
  • Date: 2014-03-28 09:56:29 UTC
  • mfrom: (1.3.14)
  • Revision ID: package-import@ubuntu.com-20140328095629-1526y9tchdd507id
Tags: 1:1.19.14+dfsg-1
* New upstream security fix release (Closes: #742857):
  - (bug 62497) SECURITY: Add CSRF token on Special:ChangePassword
  - (bug 62467) Set a title for the context during import on the cli
* Use upstream-provided signing key bundle

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
<?php
 
2
 
 
3
function getSiteParams( $conf, $wiki ) {
 
4
        $site = null;
 
5
        $lang = null;
 
6
        foreach ( $conf->suffixes as $suffix ) {
 
7
                if ( substr( $wiki, -strlen( $suffix ) ) == $suffix ) {
 
8
                        $site = $suffix;
 
9
                        $lang = substr( $wiki, 0, -strlen( $suffix ) );
 
10
                        break;
 
11
                }
 
12
        }
 
13
        return array(
 
14
                'suffix' => $site,
 
15
                'lang' => $lang,
 
16
                'params' => array(
 
17
                        'lang' => $lang,
 
18
                        'site' => $site,
 
19
                        'wiki' => $wiki,
 
20
                ),
 
21
                'tags' => array( 'tag' ),
 
22
        );
 
23
}
 
24
 
 
25
class SiteConfigurationTest extends MediaWikiTestCase {
 
26
        var $mConf;
 
27
 
 
28
        function setUp() {
 
29
                $this->mConf = new SiteConfiguration;
 
30
 
 
31
                $this->mConf->suffixes = array( 'wiki' );
 
32
                $this->mConf->wikis = array( 'enwiki', 'dewiki', 'frwiki' );
 
33
                $this->mConf->settings = array(
 
34
                        'simple' => array(
 
35
                                'wiki' => 'wiki',
 
36
                                'tag' => 'tag',
 
37
                                'enwiki' => 'enwiki',
 
38
                                'dewiki' => 'dewiki',
 
39
                                'frwiki' => 'frwiki',
 
40
                        ),
 
41
 
 
42
                        'fallback' => array(
 
43
                                'default' => 'default',
 
44
                                'wiki' => 'wiki',
 
45
                                'tag' => 'tag',
 
46
                        ),
 
47
 
 
48
                        'params' => array(
 
49
                                'default' => '$lang $site $wiki',
 
50
                        ),
 
51
 
 
52
                        '+global' => array(
 
53
                                'wiki' => array(
 
54
                                        'wiki' => 'wiki',
 
55
                                ),
 
56
                                'tag' => array(
 
57
                                        'tag' => 'tag',
 
58
                                ),
 
59
                                'enwiki' => array(
 
60
                                        'enwiki' => 'enwiki',
 
61
                                ),
 
62
                                'dewiki' => array(
 
63
                                        'dewiki' => 'dewiki',
 
64
                                ),
 
65
                                'frwiki' => array(
 
66
                                        'frwiki' => 'frwiki',
 
67
                                ),
 
68
                        ),
 
69
 
 
70
                        'merge' => array(
 
71
                                '+wiki' => array(
 
72
                                        'wiki' => 'wiki',
 
73
                                ),
 
74
                                '+tag' => array(
 
75
                                        'tag' => 'tag',
 
76
                                ),
 
77
                                'default' => array(
 
78
                                        'default' => 'default',
 
79
                                ),
 
80
                                '+enwiki' => array(
 
81
                                        'enwiki' => 'enwiki',
 
82
                                ),
 
83
                                '+dewiki' => array(
 
84
                                        'dewiki' => 'dewiki',
 
85
                                ),
 
86
                                '+frwiki' => array(
 
87
                                        'frwiki' => 'frwiki',
 
88
                                ),
 
89
                        ),
 
90
                );
 
91
 
 
92
                $GLOBALS['global'] = array( 'global' => 'global' );
 
93
        }
 
94
 
 
95
 
 
96
        function testSiteFromDb() {
 
97
                $this->assertEquals(
 
98
                        array( 'wikipedia', 'en' ),
 
99
                        $this->mConf->siteFromDB( 'enwiki' ),
 
100
                        'siteFromDB()'
 
101
                );
 
102
                $this->assertEquals(
 
103
                        array( 'wikipedia', '' ),
 
104
                        $this->mConf->siteFromDB( 'wiki' ),
 
105
                        'siteFromDB() on a suffix'
 
106
                );
 
107
                $this->assertEquals(
 
108
                        array( null, null ),
 
109
                        $this->mConf->siteFromDB( 'wikien' ),
 
110
                        'siteFromDB() on a non-existing wiki'
 
111
                );
 
112
 
 
113
                $this->mConf->suffixes = array( 'wiki', '' );
 
114
                $this->assertEquals(
 
115
                        array( '', 'wikien' ),
 
116
                        $this->mConf->siteFromDB( 'wikien' ),
 
117
                        'siteFromDB() on a non-existing wiki (2)'
 
118
                );
 
119
        }
 
120
 
 
121
        function testGetLocalDatabases() {
 
122
                $this->assertEquals(
 
123
                        array( 'enwiki', 'dewiki', 'frwiki' ),
 
124
                        $this->mConf->getLocalDatabases(),
 
125
                        'getLocalDatabases()'
 
126
                );
 
127
        }
 
128
 
 
129
        function testGetConfVariables() {
 
130
                $this->assertEquals(
 
131
                        'enwiki',
 
132
                        $this->mConf->get( 'simple', 'enwiki', 'wiki' ),
 
133
                        'get(): simple setting on an existing wiki'
 
134
                );
 
135
                $this->assertEquals(
 
136
                        'dewiki',
 
137
                        $this->mConf->get( 'simple', 'dewiki', 'wiki' ),
 
138
                        'get(): simple setting on an existing wiki (2)'
 
139
                );
 
140
                $this->assertEquals(
 
141
                        'frwiki',
 
142
                        $this->mConf->get( 'simple', 'frwiki', 'wiki' ),
 
143
                        'get(): simple setting on an existing wiki (3)'
 
144
                );
 
145
                $this->assertEquals(
 
146
                        'wiki',
 
147
                        $this->mConf->get( 'simple', 'wiki', 'wiki' ),
 
148
                        'get(): simple setting on an suffix'
 
149
                );
 
150
                $this->assertEquals(
 
151
                        'wiki',
 
152
                        $this->mConf->get( 'simple', 'eswiki', 'wiki' ),
 
153
                        'get(): simple setting on an non-existing wiki'
 
154
                );
 
155
 
 
156
                $this->assertEquals(
 
157
                        'wiki',
 
158
                        $this->mConf->get( 'fallback', 'enwiki', 'wiki' ),
 
159
                        'get(): fallback setting on an existing wiki'
 
160
                );
 
161
                $this->assertEquals(
 
162
                        'tag',
 
163
                        $this->mConf->get( 'fallback', 'dewiki', 'wiki', array(), array( 'tag' ) ),
 
164
                        'get(): fallback setting on an existing wiki (with wiki tag)'
 
165
                );
 
166
                $this->assertEquals(
 
167
                        'wiki',
 
168
                        $this->mConf->get( 'fallback', 'wiki', 'wiki' ),
 
169
                        'get(): fallback setting on an suffix'
 
170
                );
 
171
                $this->assertEquals(
 
172
                        'wiki',
 
173
                        $this->mConf->get( 'fallback', 'wiki', 'wiki', array(), array( 'tag' ) ),
 
174
                        'get(): fallback setting on an suffix (with wiki tag)'
 
175
                );
 
176
                $this->assertEquals(
 
177
                        'wiki',
 
178
                        $this->mConf->get( 'fallback', 'eswiki', 'wiki' ),
 
179
                        'get(): fallback setting on an non-existing wiki'
 
180
                );
 
181
                $this->assertEquals(
 
182
                        'tag',
 
183
                        $this->mConf->get( 'fallback', 'eswiki', 'wiki', array(), array( 'tag' ) ),
 
184
                        'get(): fallback setting on an non-existing wiki (with wiki tag)'
 
185
                );
 
186
 
 
187
                $common = array( 'wiki' => 'wiki', 'default' => 'default' );
 
188
                $commonTag = array( 'tag' => 'tag', 'wiki' => 'wiki', 'default' => 'default' );
 
189
                $this->assertEquals(
 
190
                        array( 'enwiki' => 'enwiki' ) + $common,
 
191
                        $this->mConf->get( 'merge', 'enwiki', 'wiki' ),
 
192
                        'get(): merging setting on an existing wiki'
 
193
                );
 
194
                $this->assertEquals(
 
195
                        array( 'enwiki' => 'enwiki' ) + $commonTag,
 
196
                        $this->mConf->get( 'merge', 'enwiki', 'wiki', array(), array( 'tag' ) ),
 
197
                        'get(): merging setting on an existing wiki (with tag)'
 
198
                );
 
199
                $this->assertEquals(
 
200
                        array( 'dewiki' => 'dewiki' ) + $common,
 
201
                        $this->mConf->get( 'merge', 'dewiki', 'wiki' ),
 
202
                        'get(): merging setting on an existing wiki (2)'
 
203
                );
 
204
                $this->assertEquals(
 
205
                        array( 'dewiki' => 'dewiki' ) + $commonTag,
 
206
                        $this->mConf->get( 'merge', 'dewiki', 'wiki', array(), array( 'tag' ) ),
 
207
                        'get(): merging setting on an existing wiki (2) (with tag)'
 
208
                );
 
209
                $this->assertEquals(
 
210
                        array( 'frwiki' => 'frwiki' ) + $common,
 
211
                        $this->mConf->get( 'merge', 'frwiki', 'wiki' ),
 
212
                        'get(): merging setting on an existing wiki (3)'
 
213
                );
 
214
                $this->assertEquals(
 
215
                        array( 'frwiki' => 'frwiki' ) + $commonTag,
 
216
                        $this->mConf->get( 'merge', 'frwiki', 'wiki', array(), array( 'tag' ) ),
 
217
                        'get(): merging setting on an existing wiki (3) (with tag)'
 
218
                );
 
219
                $this->assertEquals(
 
220
                        array( 'wiki' => 'wiki' ) + $common,
 
221
                        $this->mConf->get( 'merge', 'wiki', 'wiki' ),
 
222
                        'get(): merging setting on an suffix'
 
223
                );
 
224
                $this->assertEquals(
 
225
                        array( 'wiki' => 'wiki' ) + $commonTag,
 
226
                        $this->mConf->get( 'merge', 'wiki', 'wiki', array(), array( 'tag' ) ),
 
227
                        'get(): merging setting on an suffix (with tag)'
 
228
                );
 
229
                $this->assertEquals(
 
230
                        $common,
 
231
                        $this->mConf->get( 'merge', 'eswiki', 'wiki' ),
 
232
                        'get(): merging setting on an non-existing wiki'
 
233
                );
 
234
                $this->assertEquals(
 
235
                        $commonTag,
 
236
                        $this->mConf->get( 'merge', 'eswiki', 'wiki', array(), array( 'tag' ) ),
 
237
                        'get(): merging setting on an non-existing wiki (with tag)'
 
238
                );
 
239
        }
 
240
 
 
241
        function testSiteFromDbWithCallback() {
 
242
                $this->mConf->siteParamsCallback = 'getSiteParams';
 
243
 
 
244
                $this->assertEquals(
 
245
                        array( 'wiki', 'en' ),
 
246
                        $this->mConf->siteFromDB( 'enwiki' ),
 
247
                        'siteFromDB() with callback'
 
248
                );
 
249
                $this->assertEquals(
 
250
                        array( 'wiki', '' ),
 
251
                        $this->mConf->siteFromDB( 'wiki' ),
 
252
                        'siteFromDB() with callback on a suffix'
 
253
                );
 
254
                $this->assertEquals(
 
255
                        array( null, null ),
 
256
                        $this->mConf->siteFromDB( 'wikien' ),
 
257
                        'siteFromDB() with callback on a non-existing wiki'
 
258
                );
 
259
        }
 
260
 
 
261
        function testParameterReplacement() {
 
262
                $this->mConf->siteParamsCallback = 'getSiteParams';
 
263
 
 
264
                $this->assertEquals(
 
265
                        'en wiki enwiki',
 
266
                        $this->mConf->get( 'params', 'enwiki', 'wiki' ),
 
267
                        'get(): parameter replacement on an existing wiki'
 
268
                );
 
269
                $this->assertEquals(
 
270
                        'de wiki dewiki',
 
271
                        $this->mConf->get( 'params', 'dewiki', 'wiki' ),
 
272
                        'get(): parameter replacement on an existing wiki (2)'
 
273
                );
 
274
                $this->assertEquals(
 
275
                        'fr wiki frwiki',
 
276
                        $this->mConf->get( 'params', 'frwiki', 'wiki' ),
 
277
                        'get(): parameter replacement on an existing wiki (3)'
 
278
                );
 
279
                $this->assertEquals(
 
280
                        ' wiki wiki',
 
281
                        $this->mConf->get( 'params', 'wiki', 'wiki' ),
 
282
                        'get(): parameter replacement on an suffix'
 
283
                );
 
284
                $this->assertEquals(
 
285
                        'es wiki eswiki',
 
286
                        $this->mConf->get( 'params', 'eswiki', 'wiki' ),
 
287
                        'get(): parameter replacement on an non-existing wiki'
 
288
                );
 
289
        }
 
290
 
 
291
        function testGetAllGlobals() {
 
292
                $this->mConf->siteParamsCallback = 'getSiteParams';
 
293
 
 
294
                $getall = array(
 
295
                        'simple' => 'enwiki',
 
296
                        'fallback' => 'tag',
 
297
                        'params' => 'en wiki enwiki',
 
298
                        'global' => array( 'enwiki' => 'enwiki' ) + $GLOBALS['global'],
 
299
                        'merge' => array( 'enwiki' => 'enwiki', 'tag' => 'tag', 'wiki' => 'wiki', 'default' => 'default' ),
 
300
                );
 
301
                $this->assertEquals( $getall, $this->mConf->getAll( 'enwiki' ), 'getAll()' );
 
302
 
 
303
                $this->mConf->extractAllGlobals( 'enwiki', 'wiki' );
 
304
 
 
305
                $this->assertEquals( $getall['simple'], $GLOBALS['simple'], 'extractAllGlobals(): simple setting' );
 
306
                $this->assertEquals( $getall['fallback'], $GLOBALS['fallback'], 'extractAllGlobals(): fallback setting' );
 
307
                $this->assertEquals( $getall['params'], $GLOBALS['params'], 'extractAllGlobals(): parameter replacement' );
 
308
                $this->assertEquals( $getall['global'], $GLOBALS['global'],  'extractAllGlobals(): merging with global' );
 
309
                $this->assertEquals( $getall['merge'], $GLOBALS['merge'],  'extractAllGlobals(): merging setting' );
 
310
        }
 
311
}