3 use MediaWiki\MainConfigNames
;
4 use MediaWiki\Request\FauxRequest
;
5 use MediaWiki\Specials\SpecialInterwiki
;
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' )
27 ->caller( __METHOD__
)->execute();
30 public static function provideModifyTable() {
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',
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',
64 'delete zzzzwiki' => [
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(
95 $this->overrideConfigValue(
96 MainConfigNames
::GroupPermissions
,
98 $this->getServiceContainer()->getMainConfig()->get( MainConfigNames
::GroupPermissions
),
108 'iw_prefix' => 'zzzz',
109 'iw_url' => 'http://zzzzwiki.org/wiki/$1',
110 'iw_api' => 'http://zzzzwiki.org/w/api.php',
116 $this->populateDB( [ $zzzzwiki ] );
118 $performer = $this->getTestSysop()->getUser();
121 'wpEditToken' => $performer->getEditToken(),
126 if ( $action !== 'delete' ) {
127 $formData['url'] = $url;
128 $formData['api'] = $api;
130 $formData['local'] = '1';
133 $formData['trans'] = '1';
137 $this->executeSpecialPage(
139 new FauxRequest( $formData, true ),
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__
)
150 $this->assertSame( $expected, $row ?
(array)$row : $row );