X-Git-Url: https://scripts.mit.edu/gitweb/autoinstallsdev/mediawiki.git/blobdiff_plain/19e297c21b10b1b8a3acad5e73fc71dcb35db44a..6932310fd58ebef145fa01eb76edf7150284d8ea:/tests/phpunit/includes/GlobalFunctions/wfAssembleUrlTest.php diff --git a/tests/phpunit/includes/GlobalFunctions/wfAssembleUrlTest.php b/tests/phpunit/includes/GlobalFunctions/wfAssembleUrlTest.php new file mode 100644 index 00000000..7ddad369 --- /dev/null +++ b/tests/phpunit/includes/GlobalFunctions/wfAssembleUrlTest.php @@ -0,0 +1,112 @@ +assertEquals( + $output, + wfAssembleUrl( $parts ), + "Testing $partsDump assembles to $output" + ); + } + + /** + * Provider of URL parts for testing wfAssembleUrl() + * + * @return array + */ + public static function provideURLParts() { + $schemes = [ + '' => [], + '//' => [ + 'delimiter' => '//', + ], + 'http://' => [ + 'scheme' => 'http', + 'delimiter' => '://', + ], + ]; + + $hosts = [ + '' => [], + 'example.com' => [ + 'host' => 'example.com', + ], + 'example.com:123' => [ + 'host' => 'example.com', + 'port' => 123, + ], + 'id@example.com' => [ + 'user' => 'id', + 'host' => 'example.com', + ], + 'id@example.com:123' => [ + 'user' => 'id', + 'host' => 'example.com', + 'port' => 123, + ], + 'id:key@example.com' => [ + 'user' => 'id', + 'pass' => 'key', + 'host' => 'example.com', + ], + 'id:key@example.com:123' => [ + 'user' => 'id', + 'pass' => 'key', + 'host' => 'example.com', + 'port' => 123, + ], + ]; + + $cases = []; + foreach ( $schemes as $scheme => $schemeParts ) { + foreach ( $hosts as $host => $hostParts ) { + foreach ( [ '', '/path' ] as $path ) { + foreach ( [ '', 'query' ] as $query ) { + foreach ( [ '', 'fragment' ] as $fragment ) { + $parts = array_merge( + $schemeParts, + $hostParts + ); + $url = $scheme . + $host . + $path; + + if ( $path ) { + $parts['path'] = $path; + } + if ( $query ) { + $parts['query'] = $query; + $url .= '?' . $query; + } + if ( $fragment ) { + $parts['fragment'] = $fragment; + $url .= '#' . $fragment; + } + + $cases[] = [ + $parts, + $url, + ]; + } + } + } + } + } + + $complexURL = 'http://id:key@example.org:321' . + '/over/there?name=ferret&foo=bar#nose'; + $cases[] = [ + wfParseUrl( $complexURL ), + $complexURL, + ]; + + return $cases; + } +}