]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - tests/phpunit/includes/GlobalFunctions/wfAssembleUrlTest.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / tests / phpunit / includes / GlobalFunctions / wfAssembleUrlTest.php
1 <?php
2 /**
3  * @group GlobalFunctions
4  * @covers ::wfAssembleUrl
5  */
6 class WfAssembleUrlTest extends MediaWikiTestCase {
7         /**
8          * @dataProvider provideURLParts
9          */
10         public function testWfAssembleUrl( $parts, $output ) {
11                 $partsDump = print_r( $parts, true );
12                 $this->assertEquals(
13                         $output,
14                         wfAssembleUrl( $parts ),
15                         "Testing $partsDump assembles to $output"
16                 );
17         }
18
19         /**
20          * Provider of URL parts for testing wfAssembleUrl()
21          *
22          * @return array
23          */
24         public static function provideURLParts() {
25                 $schemes = [
26                         '' => [],
27                         '//' => [
28                                 'delimiter' => '//',
29                         ],
30                         'http://' => [
31                                 'scheme' => 'http',
32                                 'delimiter' => '://',
33                         ],
34                 ];
35
36                 $hosts = [
37                         '' => [],
38                         'example.com' => [
39                                 'host' => 'example.com',
40                         ],
41                         'example.com:123' => [
42                                 'host' => 'example.com',
43                                 'port' => 123,
44                         ],
45                         'id@example.com' => [
46                                 'user' => 'id',
47                                 'host' => 'example.com',
48                         ],
49                         'id@example.com:123' => [
50                                 'user' => 'id',
51                                 'host' => 'example.com',
52                                 'port' => 123,
53                         ],
54                         'id:key@example.com' => [
55                                 'user' => 'id',
56                                 'pass' => 'key',
57                                 'host' => 'example.com',
58                         ],
59                         'id:key@example.com:123' => [
60                                 'user' => 'id',
61                                 'pass' => 'key',
62                                 'host' => 'example.com',
63                                 'port' => 123,
64                         ],
65                 ];
66
67                 $cases = [];
68                 foreach ( $schemes as $scheme => $schemeParts ) {
69                         foreach ( $hosts as $host => $hostParts ) {
70                                 foreach ( [ '', '/path' ] as $path ) {
71                                         foreach ( [ '', 'query' ] as $query ) {
72                                                 foreach ( [ '', 'fragment' ] as $fragment ) {
73                                                         $parts = array_merge(
74                                                                 $schemeParts,
75                                                                 $hostParts
76                                                         );
77                                                         $url = $scheme .
78                                                                 $host .
79                                                                 $path;
80
81                                                         if ( $path ) {
82                                                                 $parts['path'] = $path;
83                                                         }
84                                                         if ( $query ) {
85                                                                 $parts['query'] = $query;
86                                                                 $url .= '?' . $query;
87                                                         }
88                                                         if ( $fragment ) {
89                                                                 $parts['fragment'] = $fragment;
90                                                                 $url .= '#' . $fragment;
91                                                         }
92
93                                                         $cases[] = [
94                                                                 $parts,
95                                                                 $url,
96                                                         ];
97                                                 }
98                                         }
99                                 }
100                         }
101                 }
102
103                 $complexURL = 'http://id:key@example.org:321' .
104                         '/over/there?name=ferret&foo=bar#nose';
105                 $cases[] = [
106                         wfParseUrl( $complexURL ),
107                         $complexURL,
108                 ];
109
110                 return $cases;
111         }
112 }