Merge "Selenium: replace UserLoginPage with BlankPage where possible"
[lhc/web/wiklou.git] / tests / phpunit / includes / user / ExternalUserNamesTest.php
1 <?php
2
3 use MediaWiki\Interwiki\InterwikiLookup;
4
5 /**
6 * @covers ExternalUserNames
7 */
8 class ExternalUserNamesTest extends MediaWikiTestCase {
9
10 public function provideGetUserLinkTitle() {
11 return [
12 [ 'valid:>User1', Title::makeTitle( NS_MAIN, ':User:User1', '', 'valid' ) ],
13 [
14 'valid:valid:>User1',
15 Title::makeTitle( NS_MAIN, 'valid::User:User1', '', 'valid' )
16 ],
17 [
18 '127.0.0.1',
19 Title::makeTitle( NS_SPECIAL, 'Contributions/127.0.0.1', '', '' )
20 ],
21 [ 'invalid:>User1', null ]
22 ];
23 }
24
25 /**
26 * @covers ExternalUserNames::getUserLinkTitle
27 * @dataProvider provideGetUserLinkTitle
28 */
29 public function testGetUserLinkTitle( $username, $expected ) {
30 $this->setContentLang( 'en' );
31
32 $interwikiLookupMock = $this->getMockBuilder( InterwikiLookup::class )
33 ->getMock();
34
35 $interwikiValueMap = [
36 [ 'valid', true ],
37 [ 'invalid', false ]
38 ];
39 $interwikiLookupMock->expects( $this->any() )
40 ->method( 'isValidInterwiki' )
41 ->will( $this->returnValueMap( $interwikiValueMap ) );
42
43 $this->setService( 'InterwikiLookup', $interwikiLookupMock );
44
45 $this->assertEquals(
46 $expected,
47 ExternalUserNames::getUserLinkTitle( $username )
48 );
49 }
50
51 public function provideApplyPrefix() {
52 return [
53 [ 'User1', 'prefix', 'prefix>User1' ],
54 [ 'User1', 'prefix:>', 'prefix>User1' ],
55 [ 'User1', 'prefix:', 'prefix>User1' ],
56 ];
57 }
58
59 /**
60 * @covers ExternalUserNames::applyPrefix
61 * @dataProvider provideApplyPrefix
62 */
63 public function testApplyPrefix( $username, $prefix, $expected ) {
64 $externalUserNames = new ExternalUserNames( $prefix, true );
65
66 $this->assertSame(
67 $expected,
68 $externalUserNames->applyPrefix( $username )
69 );
70 }
71
72 public function provideAddPrefix() {
73 return [
74 [ 'User1', 'prefix', 'prefix>User1' ],
75 [ 'User2', 'prefix2', 'prefix2>User2' ],
76 [ 'User3', 'prefix3', 'prefix3>User3' ],
77 ];
78 }
79
80 /**
81 * @covers ExternalUserNames::addPrefix
82 * @dataProvider provideAddPrefix
83 */
84 public function testAddPrefix( $username, $prefix, $expected ) {
85 $externalUserNames = new ExternalUserNames( $prefix, true );
86
87 $this->assertSame(
88 $expected,
89 $externalUserNames->addPrefix( $username )
90 );
91 }
92
93 public function provideIsExternal() {
94 return [
95 [ 'User1', false ],
96 [ '>User1', true ],
97 [ 'prefix>User1', true ],
98 [ 'prefix:>User1', true ],
99 ];
100 }
101
102 /**
103 * @covers ExternalUserNames::isExternal
104 * @dataProvider provideIsExternal
105 */
106 public function testIsExternal( $username, $expected ) {
107 $this->assertSame(
108 $expected,
109 ExternalUserNames::isExternal( $username )
110 );
111 }
112
113 public function provideGetLocal() {
114 return [
115 [ 'User1', 'User1' ],
116 [ '>User2', 'User2' ],
117 [ 'prefix>User3', 'User3' ],
118 [ 'prefix:>User4', 'User4' ],
119 ];
120 }
121
122 /**
123 * @covers ExternalUserNames::getLocal
124 * @dataProvider provideGetLocal
125 */
126 public function testGetLocal( $username, $expected ) {
127 $this->assertSame(
128 $expected,
129 ExternalUserNames::getLocal( $username )
130 );
131 }
132
133 }