summaryrefslogtreecommitdiff
path: root/vendor/symfony/http-foundation/Tests/UrlHelperTest.php
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/symfony/http-foundation/Tests/UrlHelperTest.php')
-rw-r--r--vendor/symfony/http-foundation/Tests/UrlHelperTest.php143
1 files changed, 143 insertions, 0 deletions
diff --git a/vendor/symfony/http-foundation/Tests/UrlHelperTest.php b/vendor/symfony/http-foundation/Tests/UrlHelperTest.php
new file mode 100644
index 0000000000..9a750bd8a3
--- /dev/null
+++ b/vendor/symfony/http-foundation/Tests/UrlHelperTest.php
@@ -0,0 +1,143 @@
+<?php
+
+/*
+ * This file is part of the Symfony package.
+ *
+ * (c) Fabien Potencier <fabien@symfony.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+
+namespace Symfony\Component\HttpFoundation\Tests;
+
+use PHPUnit\Framework\TestCase;
+use Symfony\Component\HttpFoundation\Request;
+use Symfony\Component\HttpFoundation\RequestStack;
+use Symfony\Component\HttpFoundation\UrlHelper;
+use Symfony\Component\Routing\RequestContext;
+
+class UrlHelperTest extends TestCase
+{
+ /**
+ * @dataProvider getGenerateAbsoluteUrlData()
+ */
+ public function testGenerateAbsoluteUrl($expected, $path, $pathinfo)
+ {
+ $stack = new RequestStack();
+ $stack->push(Request::create($pathinfo));
+ $helper = new UrlHelper($stack);
+
+ $this->assertEquals($expected, $helper->getAbsoluteUrl($path));
+ }
+
+ public function getGenerateAbsoluteUrlData()
+ {
+ return [
+ ['http://localhost/foo.png', '/foo.png', '/foo/bar.html'],
+ ['http://localhost/foo/foo.png', 'foo.png', '/foo/bar.html'],
+ ['http://localhost/foo/foo.png', 'foo.png', '/foo/bar'],
+ ['http://localhost/foo/bar/foo.png', 'foo.png', '/foo/bar/'],
+
+ ['http://example.com/baz', 'http://example.com/baz', '/'],
+ ['https://example.com/baz', 'https://example.com/baz', '/'],
+ ['//example.com/baz', '//example.com/baz', '/'],
+
+ ['http://localhost/foo/bar?baz', '?baz', '/foo/bar'],
+ ['http://localhost/foo/bar?baz=1', '?baz=1', '/foo/bar?foo=1'],
+ ['http://localhost/foo/baz?baz=1', 'baz?baz=1', '/foo/bar?foo=1'],
+
+ ['http://localhost/foo/bar#baz', '#baz', '/foo/bar'],
+ ['http://localhost/foo/bar?0#baz', '#baz', '/foo/bar?0'],
+ ['http://localhost/foo/bar?baz=1#baz', '?baz=1#baz', '/foo/bar?foo=1'],
+ ['http://localhost/foo/baz?baz=1#baz', 'baz?baz=1#baz', '/foo/bar?foo=1'],
+ ];
+ }
+
+ /**
+ * @dataProvider getGenerateAbsoluteUrlRequestContextData
+ */
+ public function testGenerateAbsoluteUrlWithRequestContext($path, $baseUrl, $host, $scheme, $httpPort, $httpsPort, $expected)
+ {
+ if (!class_exists('Symfony\Component\Routing\RequestContext')) {
+ $this->markTestSkipped('The Routing component is needed to run tests that depend on its request context.');
+ }
+
+ $requestContext = new RequestContext($baseUrl, 'GET', $host, $scheme, $httpPort, $httpsPort, $path);
+ $helper = new UrlHelper(new RequestStack(), $requestContext);
+
+ $this->assertEquals($expected, $helper->getAbsoluteUrl($path));
+ }
+
+ /**
+ * @dataProvider getGenerateAbsoluteUrlRequestContextData
+ */
+ public function testGenerateAbsoluteUrlWithoutRequestAndRequestContext($path)
+ {
+ if (!class_exists('Symfony\Component\Routing\RequestContext')) {
+ $this->markTestSkipped('The Routing component is needed to run tests that depend on its request context.');
+ }
+
+ $helper = new UrlHelper(new RequestStack());
+
+ $this->assertEquals($path, $helper->getAbsoluteUrl($path));
+ }
+
+ public function getGenerateAbsoluteUrlRequestContextData()
+ {
+ return [
+ ['/foo.png', '/foo', 'localhost', 'http', 80, 443, 'http://localhost/foo.png'],
+ ['foo.png', '/foo', 'localhost', 'http', 80, 443, 'http://localhost/foo/foo.png'],
+ ['foo.png', '/foo/bar/', 'localhost', 'http', 80, 443, 'http://localhost/foo/bar/foo.png'],
+ ['/foo.png', '/foo', 'localhost', 'https', 80, 443, 'https://localhost/foo.png'],
+ ['foo.png', '/foo', 'localhost', 'https', 80, 443, 'https://localhost/foo/foo.png'],
+ ['foo.png', '/foo/bar/', 'localhost', 'https', 80, 443, 'https://localhost/foo/bar/foo.png'],
+ ['/foo.png', '/foo', 'localhost', 'http', 443, 80, 'http://localhost:443/foo.png'],
+ ['/foo.png', '/foo', 'localhost', 'https', 443, 80, 'https://localhost:80/foo.png'],
+ ];
+ }
+
+ public function testGenerateAbsoluteUrlWithScriptFileName()
+ {
+ $request = Request::create('http://localhost/app/web/app_dev.php');
+ $request->server->set('SCRIPT_FILENAME', '/var/www/app/web/app_dev.php');
+
+ $stack = new RequestStack();
+ $stack->push($request);
+ $helper = new UrlHelper($stack);
+
+ $this->assertEquals(
+ 'http://localhost/app/web/bundles/framework/css/structure.css',
+ $helper->getAbsoluteUrl('/app/web/bundles/framework/css/structure.css')
+ );
+ }
+
+ /**
+ * @dataProvider getGenerateRelativePathData()
+ */
+ public function testGenerateRelativePath($expected, $path, $pathinfo)
+ {
+ if (!method_exists('Symfony\Component\HttpFoundation\Request', 'getRelativeUriForPath')) {
+ $this->markTestSkipped('Your version of Symfony HttpFoundation is too old.');
+ }
+
+ $stack = new RequestStack();
+ $stack->push(Request::create($pathinfo));
+ $urlHelper = new UrlHelper($stack);
+
+ $this->assertEquals($expected, $urlHelper->getRelativePath($path));
+ }
+
+ public function getGenerateRelativePathData()
+ {
+ return [
+ ['../foo.png', '/foo.png', '/foo/bar.html'],
+ ['../baz/foo.png', '/baz/foo.png', '/foo/bar.html'],
+ ['baz/foo.png', 'baz/foo.png', '/foo/bar.html'],
+
+ ['http://example.com/baz', 'http://example.com/baz', '/'],
+ ['https://example.com/baz', 'https://example.com/baz', '/'],
+ ['//example.com/baz', '//example.com/baz', '/'],
+ ];
+ }
+}