Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/apps
diff options
context:
space:
mode:
authorJulius Härtl <jus@bitgrid.net>2018-02-27 12:37:46 +0300
committerGitHub <noreply@github.com>2018-02-27 12:37:46 +0300
commit282b79c4b1f8b1f5022f0fc842cd10477820fcec (patch)
tree92230d1471e93c6b7d473d99c27a0cdcda06e6d4 /apps
parent4c52fed77996c71a539501aeb08a78cd13194f0b (diff)
parent4ecf31541b13167e95a92da1bb632875577cd9ca (diff)
Merge pull request #8554 from kyrofa/backport_13/8462/theming_app_outside_root
[stable13] theming: handle not being in the serverroot
Diffstat (limited to 'apps')
-rw-r--r--apps/theming/lib/Controller/ThemingController.php13
-rw-r--r--apps/theming/tests/Controller/ThemingControllerTest.php26
2 files changed, 34 insertions, 5 deletions
diff --git a/apps/theming/lib/Controller/ThemingController.php b/apps/theming/lib/Controller/ThemingController.php
index 6592eb7f7ab..3ac8b7fe587 100644
--- a/apps/theming/lib/Controller/ThemingController.php
+++ b/apps/theming/lib/Controller/ThemingController.php
@@ -53,6 +53,7 @@ use OCP\IRequest;
use OCA\Theming\Util;
use OCP\ITempManager;
use OCP\IURLGenerator;
+use OCP\App\IAppManager;
/**
* Class ThemingController
@@ -80,6 +81,8 @@ class ThemingController extends Controller {
private $scssCacher;
/** @var IURLGenerator */
private $urlGenerator;
+ /** @var IAppManager */
+ private $appManager;
/**
* ThemingController constructor.
@@ -95,6 +98,7 @@ class ThemingController extends Controller {
* @param IAppData $appData
* @param SCSSCacher $scssCacher
* @param IURLGenerator $urlGenerator
+ * @param IAppManager $appManager
*/
public function __construct(
$appName,
@@ -107,7 +111,8 @@ class ThemingController extends Controller {
ITempManager $tempManager,
IAppData $appData,
SCSSCacher $scssCacher,
- IURLGenerator $urlGenerator
+ IURLGenerator $urlGenerator,
+ IAppManager $appManager
) {
parent::__construct($appName, $request);
@@ -120,6 +125,7 @@ class ThemingController extends Controller {
$this->appData = $appData;
$this->scssCacher = $scssCacher;
$this->urlGenerator = $urlGenerator;
+ $this->appManager = $appManager;
}
/**
@@ -413,12 +419,13 @@ class ThemingController extends Controller {
* @return FileDisplayResponse|NotFoundResponse
*/
public function getStylesheet() {
- $appPath = substr(\OC::$server->getAppManager()->getAppPath('theming'), strlen(\OC::$SERVERROOT) + 1);
+ $appPath = $this->appManager->getAppPath('theming');
+
/* SCSSCacher is required here
* We cannot rely on automatic caching done by \OC_Util::addStyle,
* since we need to add the cacheBuster value to the url
*/
- $cssCached = $this->scssCacher->process(\OC::$SERVERROOT, $appPath . '/css/theming.scss', 'theming');
+ $cssCached = $this->scssCacher->process($appPath, 'css/theming.scss', 'theming');
if(!$cssCached) {
return new NotFoundResponse();
}
diff --git a/apps/theming/tests/Controller/ThemingControllerTest.php b/apps/theming/tests/Controller/ThemingControllerTest.php
index 54b842bc4e8..debc1b71e47 100644
--- a/apps/theming/tests/Controller/ThemingControllerTest.php
+++ b/apps/theming/tests/Controller/ThemingControllerTest.php
@@ -106,7 +106,8 @@ class ThemingControllerTest extends TestCase {
$this->tempManager,
$this->appData,
$this->scssCacher,
- $this->urlGenerator
+ $this->urlGenerator,
+ $this->appManager
);
return parent::setUp();
@@ -798,7 +799,7 @@ class ThemingControllerTest extends TestCase {
public function testGetStylesheet() {
-
+ $this->appManager->expects($this->once())->method('getAppPath')->with('theming')->willReturn(\OC::$SERVERROOT . '/theming');
$file = $this->createMock(ISimpleFile::class);
$file->expects($this->any())->method('getName')->willReturn('theming.css');
$file->expects($this->any())->method('getContent')->willReturn('compiled');
@@ -818,6 +819,7 @@ class ThemingControllerTest extends TestCase {
}
public function testGetStylesheetFails() {
+ $this->appManager->expects($this->once())->method('getAppPath')->with('theming')->willReturn(\OC::$SERVERROOT . '/theming');
$file = $this->createMock(ISimpleFile::class);
$file->expects($this->any())->method('getName')->willReturn('theming.css');
$file->expects($this->any())->method('getContent')->willReturn('compiled');
@@ -829,6 +831,26 @@ class ThemingControllerTest extends TestCase {
$this->assertEquals($response, $actual);
}
+ public function testGetStylesheetOutsideServerroot() {
+ $this->appManager->expects($this->once())->method('getAppPath')->with('theming')->willReturn('/outside/serverroot/theming');
+ $file = $this->createMock(ISimpleFile::class);
+ $file->expects($this->any())->method('getName')->willReturn('theming.css');
+ $file->expects($this->any())->method('getContent')->willReturn('compiled');
+ $this->scssCacher->expects($this->once())->method('process')->with('/outside/serverroot/theming', 'css/theming.scss', 'theming')->willReturn(true);
+ $this->scssCacher->expects($this->once())->method('getCachedCSS')->willReturn($file);
+
+ $response = new Http\FileDisplayResponse($file, Http::STATUS_OK, ['Content-Type' => 'text/css']);
+ $response->cacheFor(86400);
+ $expires = new \DateTime();
+ $expires->setTimestamp($this->timeFactory->getTime());
+ $expires->add(new \DateInterval('PT24H'));
+ $response->addHeader('Expires', $expires->format(\DateTime::RFC1123));
+ $response->addHeader('Pragma', 'cache');
+
+ $actual = $this->themingController->getStylesheet();
+ $this->assertEquals($response, $actual);
+ }
+
public function testGetJavascript() {
$this->themingDefaults
->expects($this->at(0))