parent
99b25ef3fe
commit
19390a4b5e
|
@ -47,34 +47,32 @@ use OCP\AppFramework\Utility\ITimeFactory;
|
||||||
use OCP\Files\IAppData;
|
use OCP\Files\IAppData;
|
||||||
use OCP\Files\NotFoundException;
|
use OCP\Files\NotFoundException;
|
||||||
use OCP\Files\SimpleFS\ISimpleFile;
|
use OCP\Files\SimpleFS\ISimpleFile;
|
||||||
use OCP\Files\SimpleFS\ISimpleFolder;
|
|
||||||
use OCP\IConfig;
|
use OCP\IConfig;
|
||||||
use OCP\IL10N;
|
use OCP\IL10N;
|
||||||
use OCP\IRequest;
|
use OCP\IRequest;
|
||||||
use OCP\ITempManager;
|
use OCP\ITempManager;
|
||||||
use OCP\IURLGenerator;
|
use OCP\IURLGenerator;
|
||||||
|
use PHPUnit\Framework\MockObject\MockObject;
|
||||||
use Test\TestCase;
|
use Test\TestCase;
|
||||||
|
|
||||||
class ThemingControllerTest extends TestCase {
|
class ThemingControllerTest extends TestCase {
|
||||||
/** @var IRequest|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var IRequest|MockObject */
|
||||||
private $request;
|
private $request;
|
||||||
/** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var IConfig|MockObject */
|
||||||
private $config;
|
private $config;
|
||||||
/** @var ThemingDefaults|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var ThemingDefaults|MockObject */
|
||||||
private $themingDefaults;
|
private $themingDefaults;
|
||||||
/** @var \OCP\AppFramework\Utility\ITimeFactory */
|
/** @var IL10N|MockObject */
|
||||||
private $timeFactory;
|
|
||||||
/** @var IL10N|\PHPUnit\Framework\MockObject\MockObject */
|
|
||||||
private $l10n;
|
private $l10n;
|
||||||
/** @var ThemingController */
|
/** @var ThemingController */
|
||||||
private $themingController;
|
private $themingController;
|
||||||
/** @var ITempManager */
|
/** @var ITempManager */
|
||||||
private $tempManager;
|
private $tempManager;
|
||||||
/** @var IAppManager|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var IAppManager|MockObject */
|
||||||
private $appManager;
|
private $appManager;
|
||||||
/** @var IAppData|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var IAppData|MockObject */
|
||||||
private $appData;
|
private $appData;
|
||||||
/** @var ImageManager|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var ImageManager|MockObject */
|
||||||
private $imageManager;
|
private $imageManager;
|
||||||
/** @var SCSSCacher */
|
/** @var SCSSCacher */
|
||||||
private $scssCacher;
|
private $scssCacher;
|
||||||
|
@ -93,12 +91,12 @@ class ThemingControllerTest extends TestCase {
|
||||||
$this->urlGenerator = $this->createMock(IURLGenerator::class);
|
$this->urlGenerator = $this->createMock(IURLGenerator::class);
|
||||||
$this->imageManager = $this->createMock(ImageManager::class);
|
$this->imageManager = $this->createMock(ImageManager::class);
|
||||||
|
|
||||||
$this->timeFactory = $this->createMock(ITimeFactory::class);
|
$timeFactory = $this->createMock(ITimeFactory::class);
|
||||||
$this->timeFactory->expects($this->any())
|
$timeFactory->expects($this->any())
|
||||||
->method('getTime')
|
->method('getTime')
|
||||||
->willReturn(123);
|
->willReturn(123);
|
||||||
|
|
||||||
$this->overwriteService(ITimeFactory::class, $this->timeFactory);
|
$this->overwriteService(ITimeFactory::class, $timeFactory);
|
||||||
|
|
||||||
$this->themingController = new ThemingController(
|
$this->themingController = new ThemingController(
|
||||||
'theming',
|
'theming',
|
||||||
|
@ -287,12 +285,9 @@ class ThemingControllerTest extends TestCase {
|
||||||
return $str;
|
return $str;
|
||||||
});
|
});
|
||||||
|
|
||||||
$folder = $this->createMock(ISimpleFolder::class);
|
$this->imageManager->expects($this->once())
|
||||||
$this->appData
|
->method('updateImage')
|
||||||
->expects($this->once())
|
->willThrowException(new \Exception('Unsupported image type'));
|
||||||
->method('getFolder')
|
|
||||||
->with('images')
|
|
||||||
->willReturn($folder);
|
|
||||||
|
|
||||||
$expected = new DataResponse(
|
$expected = new DataResponse(
|
||||||
[
|
[
|
||||||
|
@ -331,12 +326,9 @@ class ThemingControllerTest extends TestCase {
|
||||||
return $str;
|
return $str;
|
||||||
});
|
});
|
||||||
|
|
||||||
$folder = $this->createMock(ISimpleFolder::class);
|
$this->imageManager->expects($this->once())
|
||||||
$this->appData
|
->method('updateImage')
|
||||||
->expects($this->once())
|
->willThrowException(new \Exception('Unsupported image type'));
|
||||||
->method('getFolder')
|
|
||||||
->with('images')
|
|
||||||
->willReturn($folder);
|
|
||||||
|
|
||||||
$expected = new DataResponse(
|
$expected = new DataResponse(
|
||||||
[
|
[
|
||||||
|
@ -392,31 +384,6 @@ class ThemingControllerTest extends TestCase {
|
||||||
return $str;
|
return $str;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
$file = $this->createMock(ISimpleFile::class);
|
|
||||||
$folder = $this->createMock(ISimpleFolder::class);
|
|
||||||
if ($folderExists) {
|
|
||||||
$this->appData
|
|
||||||
->expects($this->once())
|
|
||||||
->method('getFolder')
|
|
||||||
->with('images')
|
|
||||||
->willReturn($folder);
|
|
||||||
} else {
|
|
||||||
$this->appData
|
|
||||||
->expects($this->at(0))
|
|
||||||
->method('getFolder')
|
|
||||||
->with('images')
|
|
||||||
->willThrowException(new NotFoundException());
|
|
||||||
$this->appData
|
|
||||||
->expects($this->at(1))
|
|
||||||
->method('newFolder')
|
|
||||||
->with('images')
|
|
||||||
->willReturn($folder);
|
|
||||||
}
|
|
||||||
$folder->expects($this->once())
|
|
||||||
->method('newFile')
|
|
||||||
->with('logo')
|
|
||||||
->willReturn($file);
|
|
||||||
$this->urlGenerator->expects($this->once())
|
$this->urlGenerator->expects($this->once())
|
||||||
->method('linkTo')
|
->method('linkTo')
|
||||||
->willReturn('serverCss');
|
->willReturn('serverCss');
|
||||||
|
@ -424,6 +391,10 @@ class ThemingControllerTest extends TestCase {
|
||||||
->method('getImageUrl')
|
->method('getImageUrl')
|
||||||
->with('logo')
|
->with('logo')
|
||||||
->willReturn('imageUrl');
|
->willReturn('imageUrl');
|
||||||
|
|
||||||
|
$this->imageManager->expects($this->once())
|
||||||
|
->method('updateImage');
|
||||||
|
|
||||||
$expected = new DataResponse(
|
$expected = new DataResponse(
|
||||||
[
|
[
|
||||||
'data' =>
|
'data' =>
|
||||||
|
@ -468,30 +439,8 @@ class ThemingControllerTest extends TestCase {
|
||||||
return $str;
|
return $str;
|
||||||
});
|
});
|
||||||
|
|
||||||
$file = $this->createMock(ISimpleFile::class);
|
$this->imageManager->expects($this->once())
|
||||||
$folder = $this->createMock(ISimpleFolder::class);
|
->method('updateImage');
|
||||||
if ($folderExists) {
|
|
||||||
$this->appData
|
|
||||||
->expects($this->once())
|
|
||||||
->method('getFolder')
|
|
||||||
->with('images')
|
|
||||||
->willReturn($folder);
|
|
||||||
} else {
|
|
||||||
$this->appData
|
|
||||||
->expects($this->at(0))
|
|
||||||
->method('getFolder')
|
|
||||||
->with('images')
|
|
||||||
->willThrowException(new NotFoundException());
|
|
||||||
$this->appData
|
|
||||||
->expects($this->at(1))
|
|
||||||
->method('newFolder')
|
|
||||||
->with('images')
|
|
||||||
->willReturn($folder);
|
|
||||||
}
|
|
||||||
$folder->expects($this->once())
|
|
||||||
->method('newFile')
|
|
||||||
->with('background')
|
|
||||||
->willReturn($file);
|
|
||||||
|
|
||||||
$this->urlGenerator->expects($this->once())
|
$this->urlGenerator->expects($this->once())
|
||||||
->method('linkTo')
|
->method('linkTo')
|
||||||
|
@ -542,12 +491,9 @@ class ThemingControllerTest extends TestCase {
|
||||||
return $str;
|
return $str;
|
||||||
});
|
});
|
||||||
|
|
||||||
$folder = $this->createMock(ISimpleFolder::class);
|
$this->imageManager->expects($this->once())
|
||||||
$this->appData
|
->method('updateImage')
|
||||||
->expects($this->once())
|
->willThrowException(new \Exception('Unsupported image type'));
|
||||||
->method('getFolder')
|
|
||||||
->with('images')
|
|
||||||
->willReturn($folder);
|
|
||||||
|
|
||||||
$expected = new DataResponse(
|
$expected = new DataResponse(
|
||||||
[
|
[
|
||||||
|
@ -717,9 +663,6 @@ class ThemingControllerTest extends TestCase {
|
||||||
->method('linkTo')
|
->method('linkTo')
|
||||||
->with('', '/core/css/someHash-css-variables.scss')
|
->with('', '/core/css/someHash-css-variables.scss')
|
||||||
->willReturn('/nextcloudWebroot/core/css/someHash-css-variables.scss');
|
->willReturn('/nextcloudWebroot/core/css/someHash-css-variables.scss');
|
||||||
$this->imageManager->expects($this->once())
|
|
||||||
->method('delete')
|
|
||||||
->with($filename);
|
|
||||||
|
|
||||||
$expected = new DataResponse(
|
$expected = new DataResponse(
|
||||||
[
|
[
|
||||||
|
|
|
@ -36,23 +36,27 @@ use OCP\Files\SimpleFS\ISimpleFolder;
|
||||||
use OCP\ICacheFactory;
|
use OCP\ICacheFactory;
|
||||||
use OCP\IConfig;
|
use OCP\IConfig;
|
||||||
use OCP\ILogger;
|
use OCP\ILogger;
|
||||||
|
use OCP\ITempManager;
|
||||||
use OCP\IURLGenerator;
|
use OCP\IURLGenerator;
|
||||||
|
use PHPUnit\Framework\MockObject\MockObject;
|
||||||
use Test\TestCase;
|
use Test\TestCase;
|
||||||
|
|
||||||
class ImageManagerTest extends TestCase {
|
class ImageManagerTest extends TestCase {
|
||||||
|
|
||||||
/** @var IConfig|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var IConfig|MockObject */
|
||||||
protected $config;
|
protected $config;
|
||||||
/** @var IAppData|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var IAppData|MockObject */
|
||||||
protected $appData;
|
protected $appData;
|
||||||
/** @var ImageManager */
|
/** @var ImageManager */
|
||||||
protected $imageManager;
|
protected $imageManager;
|
||||||
/** @var IURLGenerator|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var IURLGenerator|MockObject */
|
||||||
private $urlGenerator;
|
private $urlGenerator;
|
||||||
/** @var ICacheFactory|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var ICacheFactory|MockObject */
|
||||||
private $cacheFactory;
|
private $cacheFactory;
|
||||||
/** @var ILogger|\PHPUnit\Framework\MockObject\MockObject */
|
/** @var ILogger|MockObject */
|
||||||
private $logger;
|
private $logger;
|
||||||
|
/** @var ITempManager|MockObject */
|
||||||
|
private $tempManager;
|
||||||
|
|
||||||
protected function setUp(): void {
|
protected function setUp(): void {
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
@ -61,12 +65,14 @@ class ImageManagerTest extends TestCase {
|
||||||
$this->urlGenerator = $this->createMock(IURLGenerator::class);
|
$this->urlGenerator = $this->createMock(IURLGenerator::class);
|
||||||
$this->cacheFactory = $this->createMock(ICacheFactory::class);
|
$this->cacheFactory = $this->createMock(ICacheFactory::class);
|
||||||
$this->logger = $this->createMock(ILogger::class);
|
$this->logger = $this->createMock(ILogger::class);
|
||||||
|
$this->tempManager = $this->createMock(ITempManager::class);
|
||||||
$this->imageManager = new ImageManager(
|
$this->imageManager = new ImageManager(
|
||||||
$this->config,
|
$this->config,
|
||||||
$this->appData,
|
$this->appData,
|
||||||
$this->urlGenerator,
|
$this->urlGenerator,
|
||||||
$this->cacheFactory,
|
$this->cacheFactory,
|
||||||
$this->logger
|
$this->logger,
|
||||||
|
$this->tempManager
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -84,7 +90,7 @@ class ImageManagerTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function mockGetImage($key, $file) {
|
public function mockGetImage($key, $file) {
|
||||||
/** @var \PHPUnit\Framework\MockObject\MockObject $folder */
|
/** @var MockObject $folder */
|
||||||
$folder = $this->createMock(ISimpleFolder::class);
|
$folder = $this->createMock(ISimpleFolder::class);
|
||||||
if ($file === null) {
|
if ($file === null) {
|
||||||
$folder->expects($this->once())
|
$folder->expects($this->once())
|
||||||
|
@ -327,4 +333,56 @@ class ImageManagerTest extends TestCase {
|
||||||
->willReturn($folders[2]);
|
->willReturn($folders[2]);
|
||||||
$this->imageManager->cleanup();
|
$this->imageManager->cleanup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public function dataUpdateImage() {
|
||||||
|
return [
|
||||||
|
['background', __DIR__ . '/../../../tests/data/testimage.png', true, true],
|
||||||
|
['background', __DIR__ . '/../../../tests/data/testimage.png', false, true],
|
||||||
|
['background', __DIR__ . '/../../../tests/data/testimage.jpg', true, true],
|
||||||
|
['logo', __DIR__ . '/../../../tests/data/testimagelarge.svg', true, false],
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @dataProvider dataUpdateImage
|
||||||
|
*/
|
||||||
|
public function testUpdateImage($key, $tmpFile, $folderExists, $shouldConvert) {
|
||||||
|
$file = $this->createMock(ISimpleFile::class);
|
||||||
|
$folder = $this->createMock(ISimpleFolder::class);
|
||||||
|
$oldFile = $this->createMock(ISimpleFile::class);
|
||||||
|
$folder->expects($this->any())
|
||||||
|
->method('getFile')
|
||||||
|
->willReturn($oldFile);
|
||||||
|
if ($folderExists) {
|
||||||
|
$this->appData
|
||||||
|
->expects($this->any())
|
||||||
|
->method('getFolder')
|
||||||
|
->with('images')
|
||||||
|
->willReturn($folder);
|
||||||
|
} else {
|
||||||
|
$this->appData
|
||||||
|
->expects($this->any())
|
||||||
|
->method('getFolder')
|
||||||
|
->with('images')
|
||||||
|
->willThrowException(new NotFoundException());
|
||||||
|
$this->appData
|
||||||
|
->expects($this->any())
|
||||||
|
->method('newFolder')
|
||||||
|
->with('images')
|
||||||
|
->willReturn($folder);
|
||||||
|
}
|
||||||
|
$folder->expects($this->once())
|
||||||
|
->method('newFile')
|
||||||
|
->with($key)
|
||||||
|
->willReturn($file);
|
||||||
|
|
||||||
|
if ($shouldConvert) {
|
||||||
|
$this->tempManager->expects($this->once())
|
||||||
|
->method('getTemporaryFile')
|
||||||
|
->willReturn('/tmp/randomtempfile-theming');
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->imageManager->updateImage($key, $tmpFile);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue