Merge "rdbms: Replace func_get_args() in SQLPlatform::buildLike()"
[mediawiki.git] / tests / phpunit / includes / specials / SpecialInterwikiTest.php
bloba4ab9b00c3e24f84457f62be19ce67505fe6ac3a
1 <?php
3 use MediaWiki\MainConfigNames;
4 use MediaWiki\Request\FauxRequest;
5 use MediaWiki\Specials\SpecialInterwiki;
7 /**
8 * @group Database
9 * @covers \MediaWiki\Specials\SpecialInterwiki
11 class SpecialInterwikiTest extends SpecialPageTestBase {
12 protected function newSpecialPage() {
13 $services = $this->getServiceContainer();
14 return new SpecialInterwiki(
15 $services->getContentLanguage(),
16 $services->getInterwikiLookup(),
17 $services->getLanguageNameUtils(),
18 $services->getUrlUtils(),
19 $services->getConnectionProvider(),
23 private function populateDB( $iwrows ) {
24 $this->getDb()->newInsertQueryBuilder()
25 ->insertInto( 'interwiki' )
26 ->rows( $iwrows )
27 ->caller( __METHOD__ )->execute();
30 public static function provideModifyTable() {
31 return [
32 'add aaaawiki' => [
33 'add',
34 'aaaa',
35 false,
36 false,
37 'http://aaaawiki.org/wiki/$1',
38 'http://aaaawiki.org/w/api.php',
40 'iw_prefix' => 'aaaa',
41 'iw_url' => 'http://aaaawiki.org/wiki/$1',
42 'iw_api' => 'http://aaaawiki.org/w/api.php',
43 'iw_wikiid' => '',
44 'iw_local' => '0',
45 'iw_trans' => '0'
48 'edit zzzzwiki' => [
49 'edit',
50 'zzzz',
51 true,
52 true,
53 'https://zzzzwiki.org/wiki/$1',
54 'https://zzzzwiki.org/w/api.php',
56 'iw_prefix' => 'zzzz',
57 'iw_url' => 'https://zzzzwiki.org/wiki/$1',
58 'iw_api' => 'https://zzzzwiki.org/w/api.php',
59 'iw_wikiid' => '',
60 'iw_local' => '1',
61 'iw_trans' => '1'
64 'delete zzzzwiki' => [
65 'delete',
66 'zzzz',
67 null,
68 null,
69 null,
70 null,
71 false
76 /**
77 * @dataProvider provideModifyTable
78 * @param string $action
79 * @param string $prefix
80 * @param bool|null $local
81 * @param bool|null $trans
82 * @param string|null $url
83 * @param string|null $api
84 * @param array|false $expected
86 public function testModifyTable(
87 $action,
88 $prefix,
89 $local = null,
90 $trans = null,
91 $url = null,
92 $api = null,
93 $expected = false
94 ) {
95 $this->overrideConfigValue(
96 MainConfigNames::GroupPermissions,
97 wfArrayPlus2d(
98 $this->getServiceContainer()->getMainConfig()->get( MainConfigNames::GroupPermissions ),
100 'sysop' => [
101 'interwiki' => true,
107 $zzzzwiki = [
108 'iw_prefix' => 'zzzz',
109 'iw_url' => 'http://zzzzwiki.org/wiki/$1',
110 'iw_api' => 'http://zzzzwiki.org/w/api.php',
111 'iw_wikiid' => '',
112 'iw_local' => 0,
113 'iw_trans' => 0
116 $this->populateDB( [ $zzzzwiki ] );
118 $performer = $this->getTestSysop()->getUser();
120 $formData = [
121 'wpEditToken' => $performer->getEditToken(),
122 'action' => $action,
123 'prefix' => $prefix,
124 'reason' => 'r',
126 if ( $action !== 'delete' ) {
127 $formData['url'] = $url;
128 $formData['api'] = $api;
129 if ( $local ) {
130 $formData['local'] = '1';
132 if ( $trans ) {
133 $formData['trans'] = '1';
137 $this->executeSpecialPage(
138 $action,
139 new FauxRequest( $formData, true ),
140 null,
141 $performer
144 $row = $this->getDb()->newSelectQueryBuilder()
145 ->select( [ 'iw_prefix', 'iw_url', 'iw_api', 'iw_wikiid', 'iw_local', 'iw_trans' ] )
146 ->from( 'interwiki' )
147 ->where( [ 'iw_prefix' => $prefix ] )
148 ->caller( __METHOD__ )
149 ->fetchRow();
150 $this->assertSame( $expected, $row ? (array)$row : $row );