summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/Server.php8
-rw-r--r--lib/private/URLGenerator.php12
-rw-r--r--tests/lib/UrlGeneratorTest.php77
3 files changed, 65 insertions, 32 deletions
diff --git a/lib/private/Server.php b/lib/private/Server.php
index 159fab20be4..489683aa127 100644
--- a/lib/private/Server.php
+++ b/lib/private/Server.php
@@ -414,9 +414,11 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerService(\OCP\IURLGenerator::class, function (Server $c) {
$config = $c->getConfig();
$cacheFactory = $c->getMemCacheFactory();
+ $request = $c->getRequest();
return new \OC\URLGenerator(
$config,
- $cacheFactory
+ $cacheFactory,
+ $request
);
});
$this->registerAlias('URLGenerator', \OCP\IURLGenerator::class);
@@ -433,13 +435,15 @@ class Server extends ServerContainer implements IServerContainer {
$this->registerAlias('UserCache', \OCP\ICache::class);
$this->registerService(Factory::class, function (Server $c) {
+
$arrayCacheFactory = new \OC\Memcache\Factory('', $c->getLogger(),
'\\OC\\Memcache\\ArrayCache',
'\\OC\\Memcache\\ArrayCache',
'\\OC\\Memcache\\ArrayCache'
);
$config = $c->getConfig();
- $urlGenerator = new URLGenerator($config, $arrayCacheFactory);
+ $request = $c->getRequest();
+ $urlGenerator = new URLGenerator($config, $arrayCacheFactory, $request);
if ($config->getSystemValue('installed', false) && !(defined('PHPUNIT_RUN') && PHPUNIT_RUN)) {
$v = \OC_App::getAppVersions();
diff --git a/lib/private/URLGenerator.php b/lib/private/URLGenerator.php
index 6db675e7d77..073d40b0de8 100644
--- a/lib/private/URLGenerator.php
+++ b/lib/private/URLGenerator.php
@@ -35,7 +35,9 @@ namespace OC;
use OCP\ICacheFactory;
use OCP\IConfig;
+use OCP\IRequest;
use OCP\IURLGenerator;
+use OCP\Route\IRoute;
use RuntimeException;
/**
@@ -46,15 +48,20 @@ class URLGenerator implements IURLGenerator {
private $config;
/** @var ICacheFactory */
private $cacheFactory;
+ /** @var IRequest */
+ private $request;
/**
* @param IConfig $config
* @param ICacheFactory $cacheFactory
+ * @param IRequest $request
*/
public function __construct(IConfig $config,
- ICacheFactory $cacheFactory) {
+ ICacheFactory $cacheFactory,
+ IRequest $request) {
$this->config = $config;
$this->cacheFactory = $cacheFactory;
+ $this->request = $request;
}
/**
@@ -244,7 +251,6 @@ class URLGenerator implements IURLGenerator {
* @return string base url of the current request
*/
public function getBaseUrl() {
- $request = \OC::$server->getRequest();
- return $request->getServerProtocol() . '://' . $request->getServerHost() . \OC::$WEBROOT;
+ return $this->request->getServerProtocol() . '://' . $this->request->getServerHost() . \OC::$WEBROOT;
}
}
diff --git a/tests/lib/UrlGeneratorTest.php b/tests/lib/UrlGeneratorTest.php
index 28fd2d336d2..69067f51e08 100644
--- a/tests/lib/UrlGeneratorTest.php
+++ b/tests/lib/UrlGeneratorTest.php
@@ -9,6 +9,8 @@
namespace Test;
use OCP\ICacheFactory;
use OCP\IConfig;
+use OCP\IRequest;
+use OCP\IURLGenerator;
/**
* Class UrlGeneratorTest
@@ -17,6 +19,37 @@ use OCP\IConfig;
*/
class UrlGeneratorTest extends \Test\TestCase {
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IConfig */
+ private $config;
+ /** @var \PHPUnit_Framework_MockObject_MockObject|ICacheFactory */
+ private $cacheFactory;
+ /** @var \PHPUnit_Framework_MockObject_MockObject|IRequest */
+ private $request;
+ /** @var IURLGenerator */
+ private $urlGenerator;
+
+ public function setUp() {
+ parent::setUp();
+ $this->config = $this->createMock(IConfig::class);
+ $this->cacheFactory = $this->createMock(ICacheFactory::class);
+ $this->request = $this->createMock(IRequest::class);
+ $this->urlGenerator = new \OC\URLGenerator(
+ $this->config,
+ $this->cacheFactory,
+ $this->request
+ );
+ }
+
+ private function mockBaseUrl() {
+ $this->request->expects($this->once())
+ ->method('getServerProtocol')
+ ->willReturn('http');
+ $this->request->expects($this->once())
+ ->method('getServerHost')
+ ->willReturn('localhost');
+
+ }
+
/**
* @small
* test linkTo URL construction
@@ -24,11 +57,7 @@ class UrlGeneratorTest extends \Test\TestCase {
*/
public function testLinkToDocRoot($app, $file, $args, $expectedResult) {
\OC::$WEBROOT = '';
- $config = $this->createMock(IConfig::class);
- $cacheFactory = $this->createMock(ICacheFactory::class);
- $urlGenerator = new \OC\URLGenerator($config, $cacheFactory);
- $result = $urlGenerator->linkTo($app, $file, $args);
-
+ $result = $this->urlGenerator->linkTo($app, $file, $args);
$this->assertEquals($expectedResult, $result);
}
@@ -39,11 +68,7 @@ class UrlGeneratorTest extends \Test\TestCase {
*/
public function testLinkToSubDir($app, $file, $args, $expectedResult) {
\OC::$WEBROOT = '/owncloud';
- $config = $this->createMock(IConfig::class);
- $cacheFactory = $this->createMock(ICacheFactory::class);
- $urlGenerator = new \OC\URLGenerator($config, $cacheFactory);
- $result = $urlGenerator->linkTo($app, $file, $args);
-
+ $result = $this->urlGenerator->linkTo($app, $file, $args);
$this->assertEquals($expectedResult, $result);
}
@@ -51,13 +76,10 @@ class UrlGeneratorTest extends \Test\TestCase {
* @dataProvider provideRoutes
*/
public function testLinkToRouteAbsolute($route, $expected) {
+ $this->mockBaseUrl();
\OC::$WEBROOT = '/owncloud';
- $config = $this->createMock(IConfig::class);
- $cacheFactory = $this->createMock(ICacheFactory::class);
- $urlGenerator = new \OC\URLGenerator($config, $cacheFactory);
- $result = $urlGenerator->linkToRouteAbsolute($route);
+ $result = $this->urlGenerator->linkToRouteAbsolute($route);
$this->assertEquals($expected, $result);
-
}
public function provideRoutes() {
@@ -89,13 +111,9 @@ class UrlGeneratorTest extends \Test\TestCase {
* @dataProvider provideDocRootURLs
*/
function testGetAbsoluteURLDocRoot($url, $expectedResult) {
-
+ $this->mockBaseUrl();
\OC::$WEBROOT = '';
- $config = $this->createMock(IConfig::class);
- $cacheFactory = $this->createMock(ICacheFactory::class);
- $urlGenerator = new \OC\URLGenerator($config, $cacheFactory);
- $result = $urlGenerator->getAbsoluteURL($url);
-
+ $result = $this->urlGenerator->getAbsoluteURL($url);
$this->assertEquals($expectedResult, $result);
}
@@ -105,13 +123,9 @@ class UrlGeneratorTest extends \Test\TestCase {
* @dataProvider provideSubDirURLs
*/
function testGetAbsoluteURLSubDir($url, $expectedResult) {
-
+ $this->mockBaseUrl();
\OC::$WEBROOT = '/owncloud';
- $config = $this->createMock(IConfig::class);
- $cacheFactory = $this->createMock(ICacheFactory::class);
- $urlGenerator = new \OC\URLGenerator($config, $cacheFactory);
- $result = $urlGenerator->getAbsoluteURL($url);
-
+ $result = $this->urlGenerator->getAbsoluteURL($url);
$this->assertEquals($expectedResult, $result);
}
@@ -132,5 +146,14 @@ class UrlGeneratorTest extends \Test\TestCase {
array("apps/index.php", "http://localhost/owncloud/apps/index.php"),
);
}
+
+ public function testGetBaseUrl() {
+ $this->mockBaseUrl();
+ \OC::$WEBROOT = '/nextcloud';
+ $actual = $this->urlGenerator->getBaseUrl();
+ $expected = "http://localhost/nextcloud";
+ $this->assertEquals($expected, $actual);
+ }
+
}