]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - tests/phpunit/includes/WikiReferenceTest.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / tests / phpunit / includes / WikiReferenceTest.php
1 <?php
2
3 /**
4  * @covers WikiReference
5  */
6
7 class WikiReferenceTest extends PHPUnit_Framework_TestCase {
8
9         public function provideGetDisplayName() {
10                 return [
11                         'http' => [ 'foo.bar', 'http://foo.bar' ],
12                         'https' => [ 'foo.bar', 'http://foo.bar' ],
13
14                         // apparently, this is the expected behavior
15                         'invalid' => [ 'purple kittens', 'purple kittens' ],
16                 ];
17         }
18
19         /**
20          * @dataProvider provideGetDisplayName
21          */
22         public function testGetDisplayName( $expected, $canonicalServer ) {
23                 $reference = new WikiReference( $canonicalServer, '/wiki/$1' );
24                 $this->assertEquals( $expected, $reference->getDisplayName() );
25         }
26
27         public function testGetCanonicalServer() {
28                 $reference = new WikiReference( 'https://acme.com', '/wiki/$1', '//acme.com' );
29                 $this->assertEquals( 'https://acme.com', $reference->getCanonicalServer() );
30         }
31
32         public function provideGetCanonicalUrl() {
33                 return [
34                         'no fragment' => [
35                                 'https://acme.com/wiki/Foo',
36                                 'https://acme.com',
37                                 '//acme.com',
38                                 '/wiki/$1',
39                                 'Foo',
40                                 null
41                         ],
42                         'empty fragment' => [
43                                 'https://acme.com/wiki/Foo',
44                                 'https://acme.com',
45                                 '//acme.com',
46                                 '/wiki/$1',
47                                 'Foo',
48                                 ''
49                         ],
50                         'fragment' => [
51                                 'https://acme.com/wiki/Foo#Bar',
52                                 'https://acme.com',
53                                 '//acme.com',
54                                 '/wiki/$1',
55                                 'Foo',
56                                 'Bar'
57                         ],
58                         'double fragment' => [
59                                 'https://acme.com/wiki/Foo#Bar%23Xus',
60                                 'https://acme.com',
61                                 '//acme.com',
62                                 '/wiki/$1',
63                                 'Foo',
64                                 'Bar#Xus'
65                         ],
66                         'escaped fragment' => [
67                                 'https://acme.com/wiki/Foo%23Bar',
68                                 'https://acme.com',
69                                 '//acme.com',
70                                 '/wiki/$1',
71                                 'Foo#Bar',
72                                 null
73                         ],
74                         'empty path' => [
75                                 'https://acme.com/Foo',
76                                 'https://acme.com',
77                                 '//acme.com',
78                                 '/$1',
79                                 'Foo',
80                                 null
81                         ],
82                 ];
83         }
84
85         /**
86          * @dataProvider provideGetCanonicalUrl
87          */
88         public function testGetCanonicalUrl(
89                 $expected, $canonicalServer, $server, $path, $page, $fragmentId
90         ) {
91                 $reference = new WikiReference( $canonicalServer, $path, $server );
92                 $this->assertEquals( $expected, $reference->getCanonicalUrl( $page, $fragmentId ) );
93         }
94
95         /**
96          * @dataProvider provideGetCanonicalUrl
97          * @note getUrl is an alias for getCanonicalUrl
98          */
99         public function testGetUrl( $expected, $canonicalServer, $server, $path, $page, $fragmentId ) {
100                 $reference = new WikiReference( $canonicalServer, $path, $server );
101                 $this->assertEquals( $expected, $reference->getUrl( $page, $fragmentId ) );
102         }
103
104         public function provideGetFullUrl() {
105                 return [
106                         'no fragment' => [
107                                 '//acme.com/wiki/Foo',
108                                 'https://acme.com',
109                                 '//acme.com',
110                                 '/wiki/$1',
111                                 'Foo',
112                                 null
113                         ],
114                         'empty fragment' => [
115                                 '//acme.com/wiki/Foo',
116                                 'https://acme.com',
117                                 '//acme.com',
118                                 '/wiki/$1',
119                                 'Foo',
120                                 ''
121                         ],
122                         'fragment' => [
123                                 '//acme.com/wiki/Foo#Bar',
124                                 'https://acme.com',
125                                 '//acme.com',
126                                 '/wiki/$1',
127                                 'Foo',
128                                 'Bar'
129                         ],
130                         'double fragment' => [
131                                 '//acme.com/wiki/Foo#Bar%23Xus',
132                                 'https://acme.com',
133                                 '//acme.com',
134                                 '/wiki/$1',
135                                 'Foo',
136                                 'Bar#Xus'
137                         ],
138                         'escaped fragment' => [
139                                 '//acme.com/wiki/Foo%23Bar',
140                                 'https://acme.com',
141                                 '//acme.com',
142                                 '/wiki/$1',
143                                 'Foo#Bar',
144                                 null
145                         ],
146                         'empty path' => [
147                                 '//acme.com/Foo',
148                                 'https://acme.com',
149                                 '//acme.com',
150                                 '/$1',
151                                 'Foo',
152                                 null
153                         ],
154                 ];
155         }
156
157         /**
158          * @dataProvider provideGetFullUrl
159          */
160         public function testGetFullUrl( $expected, $canonicalServer, $server, $path, $page, $fragmentId ) {
161                 $reference = new WikiReference( $canonicalServer, $path, $server );
162                 $this->assertEquals( $expected, $reference->getFullUrl( $page, $fragmentId ) );
163         }
164
165 }