summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorJulius Haertl <jus@bitgrid.net>2016-08-30 09:03:42 +0200
committerJulius Haertl <jus@bitgrid.net>2016-11-18 10:23:24 +0100
commit237034818dd3425116ef3db04dabbc95a5d10125 (patch)
treef44059db620a6c74215d43ffec10b9f6db8b79bf /apps
parentaf8976ab03d976bba04a2442957a650728de7ecb (diff)
downloadnextcloud-server-237034818dd3425116ef3db04dabbc95a5d10125.tar.gz
nextcloud-server-237034818dd3425116ef3db04dabbc95a5d10125.zip
Check if dynamic icons can be used
Signed-off-by: Julius Haertl <jus@bitgrid.net>
Diffstat (limited to 'apps')
-rw-r--r--apps/theming/lib/Controller/IconController.php34
-rw-r--r--apps/theming/tests/Controller/IconControllerTest.php93
2 files changed, 90 insertions, 37 deletions
diff --git a/apps/theming/lib/Controller/IconController.php b/apps/theming/lib/Controller/IconController.php
index 78d41d621a0..6f97fdcdaba 100644
--- a/apps/theming/lib/Controller/IconController.php
+++ b/apps/theming/lib/Controller/IconController.php
@@ -73,7 +73,8 @@ class IconController extends Controller {
Util $util,
ITimeFactory $timeFactory,
IL10N $l,
- IRootFolder $rootFolder
+ IRootFolder $rootFolder,
+ IconBuilder $iconBuilder
) {
parent::__construct($appName, $request);
@@ -83,9 +84,10 @@ class IconController extends Controller {
$this->l = $l;
$this->config = $config;
$this->rootFolder = $rootFolder;
- if(extension_loaded('imagick')) {
- $this->iconBuilder = new IconBuilder($this->themingDefaults, $this->util);
- }
+ $this->iconBuilder = $iconBuilder;
+ //if(extension_loaded('imagick')) {
+ // $this->iconBuilder = new IconBuilder($this->themingDefaults, $this->util);
+ //}
}
/**
@@ -121,18 +123,13 @@ class IconController extends Controller {
if($this->themingDefaults->shouldReplaceIcons()) {
$icon = $this->iconBuilder->getFavicon($app);
$response = new DataDisplayResponse($icon, Http::STATUS_OK, ['Content-Type' => 'image/x-icon']);
- $response->cacheFor(86400);
- $response->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
- $response->addHeader('Pragma', 'cache');
- return $response;
} else {
$response = new DataDisplayResponse(null, Http::STATUS_NOT_FOUND);
- $response->cacheFor(86400);
- $response->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
- return $response;
}
-
-
+ $response->cacheFor(86400);
+ $response->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
+ $response->addHeader('Pragma', 'cache');
+ return $response;
}
/**
@@ -148,16 +145,13 @@ class IconController extends Controller {
if($this->themingDefaults->shouldReplaceIcons()) {
$icon = $this->iconBuilder->getTouchIcon($app);
$response = new DataDisplayResponse($icon, Http::STATUS_OK, ['Content-Type' => 'image/png']);
- $response->cacheFor(86400);
- $response->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
- $response->addHeader('Pragma', 'cache');
- return $response;
} else {
$response = new DataDisplayResponse(null, Http::STATUS_NOT_FOUND);
- $response->cacheFor(86400);
- $response->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
- return $response;
}
+ $response->cacheFor(86400);
+ $response->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
+ $response->addHeader('Pragma', 'cache');
+ return $response;
}
diff --git a/apps/theming/tests/Controller/IconControllerTest.php b/apps/theming/tests/Controller/IconControllerTest.php
index 3443be60712..8c916c6cfe6 100644
--- a/apps/theming/tests/Controller/IconControllerTest.php
+++ b/apps/theming/tests/Controller/IconControllerTest.php
@@ -23,6 +23,7 @@
namespace OCA\Theming\Tests\Controller;
use OCA\Theming\Controller\IconController;
+use OCA\Theming\IconBuilder;
use OCA\Theming\Util;
use OCP\AppFramework\Http;
use OCP\AppFramework\Http\DataResponse;
@@ -52,11 +53,10 @@ class IconControllerTest extends TestCase {
private $iconController;
/** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */
private $rootFolder;
+ /** @var IconBuilder */
+ private $iconBuilder;
public function setUp() {
-
-
-
$this->request = $this->getMockBuilder('OCP\IRequest')->getMock();
$this->config = $this->getMockBuilder('OCP\IConfig')->getMock();
$this->themingDefaults = $this->getMockBuilder('OCA\Theming\ThemingDefaults')
@@ -68,6 +68,8 @@ class IconControllerTest extends TestCase {
->getMock();
$this->l10n = $this->getMockBuilder('OCP\IL10N')->getMock();
$this->rootFolder = $this->getMockBuilder('OCP\Files\IRootFolder')->getMock();
+ $this->iconBuilder = $this->getMockBuilder('OCA\Theming\IconBuilder')
+ ->disableOriginalConstructor()->getMock();
$this->timeFactory->expects($this->any())
->method('getTime')
@@ -81,10 +83,11 @@ class IconControllerTest extends TestCase {
$this->util,
$this->timeFactory,
$this->l10n,
- $this->rootFolder
+ $this->rootFolder,
+ $this->iconBuilder
);
- return parent::setUp();
+ parent::setUp();
}
public function testGetThemedIcon() {
@@ -111,38 +114,94 @@ class IconControllerTest extends TestCase {
$expected = new DataDisplayResponse($svg, Http::STATUS_OK, ['Content-Type' => 'image/svg+xml']);
$expected->cacheFor(86400);
$expected->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
+ $expected->addHeader('Pragma', 'cache');
@$this->assertEquals($expected, $this->iconController->getThemedIcon('core','filetypes/folder.svg'));
}
public function testGetFaviconDefault() {
-
- $this->util->expects($this->once())
- ->method('getAppIcon')
+ if(!extension_loaded('imagick')) {
+ $this->markTestSkipped('Imagemagick is required for dynamic icon generation.');
+ }
+ $checkImagick = new \Imagick();
+ if (count($checkImagick->queryFormats('SVG')) < 1) {
+ $this->markTestSkipped('No SVG provider present.');
+ }
+ $this->themingDefaults->expects($this->once())
+ ->method('shouldReplaceIcons')
+ ->willReturn(true);
+ $expectedIcon = new \Imagick(realpath(dirname(__FILE__)) . '/../data/favicon-original.ico');
+ $this->iconBuilder->expects($this->once())
+ ->method('getFavicon')
->with('core')
- ->willReturn(\OC::$SERVERROOT . "/core/img/logo.svg");
-
+ ->willReturn($expectedIcon);
$favicon = $this->iconController->getFavicon();
- $expectedIcon = new \Imagick(realpath(dirname(__FILE__)) . '/../data/favicon-original.ico');
+
$expected = new DataDisplayResponse($expectedIcon, Http::STATUS_OK, ['Content-Type' => 'image/x-icon']);
$expected->cacheFor(86400);
$expected->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
+ $expected->addHeader('Pragma', 'cache');
$this->assertEquals($expected, $favicon);
}
public function testGetTouchIconDefault() {
-
- $this->util->expects($this->once())
- ->method('getAppIcon')
+ if(!extension_loaded('imagick')) {
+ $this->markTestSkipped('Imagemagick is required for dynamic icon generation.');
+ }
+ $checkImagick = new \Imagick();
+ if (count($checkImagick->queryFormats('SVG')) < 1) {
+ $this->markTestSkipped('No SVG provider present.');
+ }
+ $this->themingDefaults->expects($this->once())
+ ->method('shouldReplaceIcons')
+ ->willReturn(true);
+ $expectedIcon = new \Imagick(realpath(dirname(__FILE__)) . '/../data/touch-original.png');
+ $this->iconBuilder->expects($this->once())
+ ->method('getTouchIcon')
->with('core')
- ->willReturn(\OC::$SERVERROOT . "/core/img/logo.svg");
+ ->willReturn($expectedIcon);
$favicon = $this->iconController->getTouchIcon();
- $expectedIcon = new \Imagick(realpath(dirname(__FILE__)) . '/../data/touch-original.png');
$expected = new DataDisplayResponse($expectedIcon, Http::STATUS_OK, ['Content-Type' => 'image/png']);
$expected->cacheFor(86400);
$expected->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
+ $expected->addHeader('Pragma', 'cache');
$this->assertEquals($expected, $favicon);
}
-
+ public function testGetFaviconFail() {
+ if(!extension_loaded('imagick')) {
+ $this->markTestSkipped('Imagemagick is required for dynamic icon generation.');
+ }
+ $checkImagick = new \Imagick();
+ if (count($checkImagick->queryFormats('SVG')) < 1) {
+ $this->markTestSkipped('No SVG provider present.');
+ }
+ $this->themingDefaults->expects($this->once())
+ ->method('shouldReplaceIcons')
+ ->willReturn(false);
+ $favicon = $this->iconController->getFavicon();
+ $expected = new DataDisplayResponse(null, Http::STATUS_NOT_FOUND);
+ $expected->cacheFor(86400);
+ $expected->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
+ $expected->addHeader('Pragma', 'cache');
+ $this->assertEquals($expected, $favicon);
+ }
+ public function testGetTouchIconFail() {
+ if(!extension_loaded('imagick')) {
+ $this->markTestSkipped('Imagemagick is required for dynamic icon generation.');
+ }
+ $checkImagick = new \Imagick();
+ if (count($checkImagick->queryFormats('SVG')) < 1) {
+ $this->markTestSkipped('No SVG provider present.');
+ }
+ $this->themingDefaults->expects($this->once())
+ ->method('shouldReplaceIcons')
+ ->willReturn(false);
+ $favicon = $this->iconController->getTouchIcon();
+ $expected = new DataDisplayResponse(null, Http::STATUS_NOT_FOUND);
+ $expected->cacheFor(86400);
+ $expected->addHeader('Expires', date(\DateTime::RFC2822, $this->timeFactory->getTime()));
+ $expected->addHeader('Pragma', 'cache');
+ $this->assertEquals($expected, $favicon);
+ }
}