From: Timo Tijhof Date: Wed, 25 Jul 2018 17:24:48 +0000 (+0100) Subject: GlobalFunctions: Enable patch-coverage for wfExpandUrl test X-Git-Tag: 1.34.0-rc.0~4651^2 X-Git-Url: https://git.cyclocoop.org/%7B%24admin_url%7Dmembres/cotisations/voir.php?a=commitdiff_plain;h=962770f14a9bde21649465e3ec03ed7e94ecc854;p=lhc%2Fweb%2Fwiklou.git GlobalFunctions: Enable patch-coverage for wfExpandUrl test Change-Id: I3b4594dab0aba659cc47233f7be3da751066b7de --- diff --git a/tests/phpunit/includes/GlobalFunctions/WfExpandUrlTest.php b/tests/phpunit/includes/GlobalFunctions/WfExpandUrlTest.php new file mode 100644 index 0000000000..f00883001b --- /dev/null +++ b/tests/phpunit/includes/GlobalFunctions/WfExpandUrlTest.php @@ -0,0 +1,153 @@ +getProtocol() + // fake edit to fake globals + $this->setMwGlobals( [ + 'wgServer' => $server, + 'wgCanonicalServer' => $canServer, + 'wgRequest' => new FauxRequest( [], false, null, $httpsMode ? 'https' : 'http' ), + 'wgHttpsPort' => $httpsPort + ] ); + + $this->assertEquals( $fullUrl, wfExpandUrl( $shortUrl, $defaultProto ), $message ); + } + + /** + * Provider of URL examples for testing wfExpandUrl() + * + * @return array + */ + public static function provideExpandableUrls() { + $modes = [ 'http', 'https' ]; + $servers = [ + 'http' => 'http://example.com', + 'https' => 'https://example.com', + 'protocol-relative' => '//example.com' + ]; + $defaultProtos = [ + 'http' => PROTO_HTTP, + 'https' => PROTO_HTTPS, + 'protocol-relative' => PROTO_RELATIVE, + 'current' => PROTO_CURRENT, + 'canonical' => PROTO_CANONICAL + ]; + + $retval = []; + foreach ( $modes as $mode ) { + $httpsMode = $mode == 'https'; + foreach ( $servers as $serverDesc => $server ) { + foreach ( $modes as $canServerMode ) { + $canServer = "$canServerMode://example2.com"; + foreach ( $defaultProtos as $protoDesc => $defaultProto ) { + $retval[] = [ + 'http://example.com', 'http://example.com', + $defaultProto, $server, $canServer, $httpsMode, 443, + "Testing fully qualified http URLs (no need to expand) " + . "(defaultProto: $protoDesc , wgServer: $server, " + . "wgCanonicalServer: $canServer, current request protocol: $mode )" + ]; + $retval[] = [ + 'https://example.com', 'https://example.com', + $defaultProto, $server, $canServer, $httpsMode, 443, + "Testing fully qualified https URLs (no need to expand) " + . "(defaultProto: $protoDesc , wgServer: $server, " + . "wgCanonicalServer: $canServer, current request protocol: $mode )" + ]; + # Would be nice to support this, see fixme on wfExpandUrl() + $retval[] = [ + "wiki/FooBar", 'wiki/FooBar', + $defaultProto, $server, $canServer, $httpsMode, 443, + "Test non-expandable relative URLs (defaultProto: $protoDesc, " + . "wgServer: $server, wgCanonicalServer: $canServer, " + . "current request protocol: $mode )" + ]; + + // Determine expected protocol + if ( $protoDesc == 'protocol-relative' ) { + $p = ''; + } elseif ( $protoDesc == 'current' ) { + $p = "$mode:"; + } elseif ( $protoDesc == 'canonical' ) { + $p = "$canServerMode:"; + } else { + $p = $protoDesc . ':'; + } + // Determine expected server name + if ( $protoDesc == 'canonical' ) { + $srv = $canServer; + } elseif ( $serverDesc == 'protocol-relative' ) { + $srv = $p . $server; + } else { + $srv = $server; + } + + $retval[] = [ + "$p//wikipedia.org", '//wikipedia.org', + $defaultProto, $server, $canServer, $httpsMode, 443, + "Test protocol-relative URL (defaultProto: $protoDesc, " + . "wgServer: $server, wgCanonicalServer: $canServer, " + . "current request protocol: $mode )" + ]; + $retval[] = [ + "$srv/wiki/FooBar", + '/wiki/FooBar', + $defaultProto, + $server, + $canServer, + $httpsMode, + 443, + "Testing expanding URL beginning with / (defaultProto: $protoDesc, " + . "wgServer: $server, wgCanonicalServer: $canServer, " + . "current request protocol: $mode )" + ]; + } + } + } + } + + // Don't add HTTPS port to foreign URLs + $retval[] = [ + 'https://foreign.example.com/foo', + 'https://foreign.example.com/foo', + PROTO_HTTPS, + '//wiki.example.com', + 'http://wiki.example.com', + 'https', + 111, + "Don't add HTTPS port to foreign URLs" + ]; + $retval[] = [ + 'https://foreign.example.com:222/foo', + 'https://foreign.example.com:222/foo', + PROTO_HTTPS, + '//wiki.example.com', + 'http://wiki.example.com', + 'https', + 111, + "Don't overwrite HTTPS port of foreign URLs" + ]; + // Do add HTTPS port to local URLs + $retval[] = [ + 'https://wiki.example.com:111/foo', + '/foo', + PROTO_HTTPS, + '//wiki.example.com', + 'http://wiki.example.com', + 'https', + 111, + "Do add HTTPS port to protocol-relative URLs" + ]; + + return $retval; + } +} diff --git a/tests/phpunit/includes/GlobalFunctions/wfExpandUrlTest.php b/tests/phpunit/includes/GlobalFunctions/wfExpandUrlTest.php deleted file mode 100644 index 159e4ad9a4..0000000000 --- a/tests/phpunit/includes/GlobalFunctions/wfExpandUrlTest.php +++ /dev/null @@ -1,152 +0,0 @@ -getProtocol() - $this->setMwGlobals( [ - 'wgServer' => $server, - 'wgCanonicalServer' => $canServer, - 'wgRequest' => new FauxRequest( [], false, null, $httpsMode ? 'https' : 'http' ), - 'wgHttpsPort' => $httpsPort - ] ); - - $this->assertEquals( $fullUrl, wfExpandUrl( $shortUrl, $defaultProto ), $message ); - } - - /** - * Provider of URL examples for testing wfExpandUrl() - * - * @return array - */ - public static function provideExpandableUrls() { - $modes = [ 'http', 'https' ]; - $servers = [ - 'http' => 'http://example.com', - 'https' => 'https://example.com', - 'protocol-relative' => '//example.com' - ]; - $defaultProtos = [ - 'http' => PROTO_HTTP, - 'https' => PROTO_HTTPS, - 'protocol-relative' => PROTO_RELATIVE, - 'current' => PROTO_CURRENT, - 'canonical' => PROTO_CANONICAL - ]; - - $retval = []; - foreach ( $modes as $mode ) { - $httpsMode = $mode == 'https'; - foreach ( $servers as $serverDesc => $server ) { - foreach ( $modes as $canServerMode ) { - $canServer = "$canServerMode://example2.com"; - foreach ( $defaultProtos as $protoDesc => $defaultProto ) { - $retval[] = [ - 'http://example.com', 'http://example.com', - $defaultProto, $server, $canServer, $httpsMode, 443, - "Testing fully qualified http URLs (no need to expand) " - . "(defaultProto: $protoDesc , wgServer: $server, " - . "wgCanonicalServer: $canServer, current request protocol: $mode )" - ]; - $retval[] = [ - 'https://example.com', 'https://example.com', - $defaultProto, $server, $canServer, $httpsMode, 443, - "Testing fully qualified https URLs (no need to expand) " - . "(defaultProto: $protoDesc , wgServer: $server, " - . "wgCanonicalServer: $canServer, current request protocol: $mode )" - ]; - # Would be nice to support this, see fixme on wfExpandUrl() - $retval[] = [ - "wiki/FooBar", 'wiki/FooBar', - $defaultProto, $server, $canServer, $httpsMode, 443, - "Test non-expandable relative URLs (defaultProto: $protoDesc, " - . "wgServer: $server, wgCanonicalServer: $canServer, " - . "current request protocol: $mode )" - ]; - - // Determine expected protocol - if ( $protoDesc == 'protocol-relative' ) { - $p = ''; - } elseif ( $protoDesc == 'current' ) { - $p = "$mode:"; - } elseif ( $protoDesc == 'canonical' ) { - $p = "$canServerMode:"; - } else { - $p = $protoDesc . ':'; - } - // Determine expected server name - if ( $protoDesc == 'canonical' ) { - $srv = $canServer; - } elseif ( $serverDesc == 'protocol-relative' ) { - $srv = $p . $server; - } else { - $srv = $server; - } - - $retval[] = [ - "$p//wikipedia.org", '//wikipedia.org', - $defaultProto, $server, $canServer, $httpsMode, 443, - "Test protocol-relative URL (defaultProto: $protoDesc, " - . "wgServer: $server, wgCanonicalServer: $canServer, " - . "current request protocol: $mode )" - ]; - $retval[] = [ - "$srv/wiki/FooBar", - '/wiki/FooBar', - $defaultProto, - $server, - $canServer, - $httpsMode, - 443, - "Testing expanding URL beginning with / (defaultProto: $protoDesc, " - . "wgServer: $server, wgCanonicalServer: $canServer, " - . "current request protocol: $mode )" - ]; - } - } - } - } - - // Don't add HTTPS port to foreign URLs - $retval[] = [ - 'https://foreign.example.com/foo', - 'https://foreign.example.com/foo', - PROTO_HTTPS, - '//wiki.example.com', - 'http://wiki.example.com', - 'https', - 111, - "Don't add HTTPS port to foreign URLs" - ]; - $retval[] = [ - 'https://foreign.example.com:222/foo', - 'https://foreign.example.com:222/foo', - PROTO_HTTPS, - '//wiki.example.com', - 'http://wiki.example.com', - 'https', - 111, - "Don't overwrite HTTPS port of foreign URLs" - ]; - // Do add HTTPS port to local URLs - $retval[] = [ - 'https://wiki.example.com:111/foo', - '/foo', - PROTO_HTTPS, - '//wiki.example.com', - 'http://wiki.example.com', - 'https', - 111, - "Do add HTTPS port to protocol-relative URLs" - ]; - - return $retval; - } -}