diff options
author | Michael Weimann <mail@michael-weimann.eu> | 2019-01-20 11:13:41 +0100 |
---|---|---|
committer | Morris Jobke <hey@morrisjobke.de> | 2019-02-07 14:23:16 +0100 |
commit | bf1253cb49a4931244a6bbde4dfa44bf084f4377 (patch) | |
tree | 6faacd5110c029778ed56554e27a5d73c4e888db /tests | |
parent | b69b17f29fd518495a6495e0f90f60c70ef0fc73 (diff) | |
download | nextcloud-server-bf1253cb49a4931244a6bbde4dfa44bf084f4377.tar.gz nextcloud-server-bf1253cb49a4931244a6bbde4dfa44bf084f4377.zip |
Implement guest avatar endpoint
Signed-off-by: Michael Weimann <mail@michael-weimann.eu>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/Core/Controller/AvatarControllerTest.php | 4 | ||||
-rw-r--r-- | tests/Core/Controller/GuestAvatarControllerTest.php | 90 | ||||
-rw-r--r-- | tests/data/guest_avatar_einstein_32.svg | 5 | ||||
-rw-r--r-- | tests/data/test.pdf | bin | 0 -> 7083 bytes | |||
-rw-r--r-- | tests/lib/Avatar/AvatarManagerTest.php (renamed from tests/lib/AvatarManagerTest.php) | 12 | ||||
-rw-r--r-- | tests/lib/Avatar/GuestAvatarTest.php | 80 | ||||
-rw-r--r-- | tests/lib/Avatar/UserAvatarTest.php (renamed from tests/lib/AvatarTest.php) | 8 | ||||
-rw-r--r-- | tests/lib/Files/SimpleFS/InMemoryFileTest.php | 145 | ||||
-rw-r--r-- | tests/lib/Repair/ClearGeneratedAvatarCacheTest.php | 2 | ||||
-rw-r--r-- | tests/lib/ServerTest.php | 2 |
10 files changed, 333 insertions, 15 deletions
diff --git a/tests/Core/Controller/AvatarControllerTest.php b/tests/Core/Controller/AvatarControllerTest.php index 3369fa882c8..5fce8fc6359 100644 --- a/tests/Core/Controller/AvatarControllerTest.php +++ b/tests/Core/Controller/AvatarControllerTest.php @@ -53,7 +53,7 @@ use OCP\IUserManager; * @package OC\Core\Controller */ class AvatarControllerTest extends \Test\TestCase { - /** @var \OC\Core\Controller\AvatarController */ + /** @var AvatarController */ private $avatarController; /** @var IAvatar|\PHPUnit_Framework_MockObject_MockObject */ private $avatarMock; @@ -78,7 +78,7 @@ class AvatarControllerTest extends \Test\TestCase { private $request; /** @var TimeFactory|\PHPUnit_Framework_MockObject_MockObject */ private $timeFactory; - + protected function setUp() { parent::setUp(); diff --git a/tests/Core/Controller/GuestAvatarControllerTest.php b/tests/Core/Controller/GuestAvatarControllerTest.php new file mode 100644 index 00000000000..a7c67c684cc --- /dev/null +++ b/tests/Core/Controller/GuestAvatarControllerTest.php @@ -0,0 +1,90 @@ +<?php + +namespace Core\Controller; + +use OC\Core\Controller\GuestAvatarController; +use OCP\AppFramework\Http\FileDisplayResponse; +use OCP\Files\SimpleFS\ISimpleFile; +use OCP\IAvatar; +use OCP\IAvatarManager; +use OCP\ILogger; +use OCP\IRequest; + +/** + * This class provides tests for the guest avatar controller. + */ +class GuestAvatarControllerTest extends \Test\TestCase { + + /** + * @var GuestAvatarController + */ + private $guestAvatarController; + + /** + * @var IRequest|\PHPUnit_Framework_MockObject_MockObject + */ + private $request; + + /** + * @var IAvatarManager|\PHPUnit_Framework_MockObject_MockObject + */ + private $avatarManager; + + /** + * @var IAvatar|\PHPUnit_Framework_MockObject_MockObject + */ + private $avatar; + + /** + * @var \OCP\Files\File|\PHPUnit_Framework_MockObject_MockObject + */ + private $file; + + /** + * @var ILogger|\PHPUnit_Framework_MockObject_MockObject + */ + private $logger; + + /** + * Sets up the test environment. + */ + protected function setUp() { + parent::setUp(); + + $this->logger = $this->getMockBuilder(ILogger::class)->getMock(); + $this->request = $this->getMockBuilder(IRequest::class)->getMock(); + $this->avatar = $this->getMockBuilder(IAvatar::class)->getMock(); + $this->avatarManager = $this->getMockBuilder(IAvatarManager::class)->getMock(); + $this->file = $this->getMockBuilder(ISimpleFile::class)->getMock(); + $this->guestAvatarController = new GuestAvatarController( + 'core', + $this->request, + $this->avatarManager, + $this->logger + ); + } + + /** + * Tests getAvatar returns the guest avatar. + */ + public function testGetAvatar() { + $this->avatarManager->expects($this->once()) + ->method('getGuestAvatar') + ->with('Peter') + ->willReturn($this->avatar); + + $this->avatar->expects($this->once()) + ->method('getFile') + ->with(128) + ->willReturn($this->file); + + $this->file->method('getMimeType') + ->willReturn('image/svg+xml'); + + $response = $this->guestAvatarController->getAvatar('Peter', 128); + + $this->assertGreaterThanOrEqual(201, $response->getStatus()); + $this->assertInstanceOf(FileDisplayResponse::class, $response); + $this->assertSame($this->file, $response->getFile()); + } +} diff --git a/tests/data/guest_avatar_einstein_32.svg b/tests/data/guest_avatar_einstein_32.svg new file mode 100644 index 00000000000..d007f962f24 --- /dev/null +++ b/tests/data/guest_avatar_einstein_32.svg @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> + <svg width="32" height="32" version="1.1" viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg"> + <rect width="100%" height="100%" fill="#499aa2"></rect> + <text x="50%" y="350" style="font-weight:normal;font-size:279px;font-family:'Nunito';text-anchor:middle;fill:#fff">E</text> + </svg> diff --git a/tests/data/test.pdf b/tests/data/test.pdf Binary files differnew file mode 100644 index 00000000000..241e1e85d41 --- /dev/null +++ b/tests/data/test.pdf diff --git a/tests/lib/AvatarManagerTest.php b/tests/lib/Avatar/AvatarManagerTest.php index 9f2a4f4f337..7466f664eb5 100644 --- a/tests/lib/AvatarManagerTest.php +++ b/tests/lib/Avatar/AvatarManagerTest.php @@ -22,11 +22,10 @@ * */ -namespace Test; +namespace Test\Avatar; -use OC\Avatar; -use OC\AvatarManager; -use OC\Files\AppData\AppData; +use OC\Avatar\UserAvatar; +use OC\Avatar\AvatarManager; use OC\User\Manager; use OCP\Files\IAppData; use OCP\Files\SimpleFS\ISimpleFolder; @@ -34,7 +33,6 @@ use OCP\IConfig; use OCP\IL10N; use OCP\ILogger; use OCP\IUser; -use OCP\IUserManager; /** * Class AvatarManagerTest @@ -103,7 +101,7 @@ class AvatarManagerTest extends \Test\TestCase { ->with('valid-user') ->willReturn($folder); - $expected = new Avatar($folder, $this->l10n, $user, $this->logger, $this->config); + $expected = new UserAvatar($folder, $this->l10n, $user, $this->logger, $this->config); $this->assertEquals($expected, $this->avatarManager->getAvatar('valid-user')); } @@ -125,7 +123,7 @@ class AvatarManagerTest extends \Test\TestCase { ->with('valid-user') ->willReturn($folder); - $expected = new Avatar($folder, $this->l10n, $user, $this->logger, $this->config); + $expected = new UserAvatar($folder, $this->l10n, $user, $this->logger, $this->config); $this->assertEquals($expected, $this->avatarManager->getAvatar('vaLid-USER')); } } diff --git a/tests/lib/Avatar/GuestAvatarTest.php b/tests/lib/Avatar/GuestAvatarTest.php new file mode 100644 index 00000000000..8762d063f5d --- /dev/null +++ b/tests/lib/Avatar/GuestAvatarTest.php @@ -0,0 +1,80 @@ +<?php +declare(strict_types=1); + +/** + * @copyright Copyright (c) 2018, Michael Weimann <mail@michael-weimann.eu> + * + * @author Michael Weimann <mail@michael-weimann.eu> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + */ + +namespace Test\Avatar; + +use OC\Avatar\GuestAvatar; +use OCP\Files\SimpleFS\InMemoryFile; +use OCP\ILogger; +use PHPUnit\Framework\MockObject\MockObject; +use Test\TestCase; + +/** + * This class provides test cases for the GuestAvatar class. + * + * @package Test\Avatar + */ +class GuestAvatarTest extends TestCase { + /** + * @var GuestAvatar + */ + private $guestAvatar; + + /** + * Setups a guest avatar instance for tests. + * + * @before + * @return void + */ + public function setupGuestAvatar() { + /* @var MockObject|ILogger $logger */ + $logger = $this->getMockBuilder(ILogger::class)->getMock(); + $this->guestAvatar = new GuestAvatar('einstein', $logger); + } + + /** + * Asserts that testGet() returns the expected avatar. + * + * For the test a static name "einstein" is used and + * the generated image is compared with an expected one. + * + * @return void + */ + public function testGet() { + $avatar = $this->guestAvatar->getFile(32); + self::assertInstanceOf(InMemoryFile::class, $avatar); + $expectedFile = file_get_contents( + __DIR__ . '/../../data/guest_avatar_einstein_32.svg' + ); + self::assertEquals(trim($expectedFile), trim($avatar->getContent())); + } + + /** + * Asserts that "testIsCustomAvatar" returns false for guests. + * + * @return void + */ + public function testIsCustomAvatar() { + self::assertFalse($this->guestAvatar->isCustomAvatar()); + } +} diff --git a/tests/lib/AvatarTest.php b/tests/lib/Avatar/UserAvatarTest.php index c8c9d3b8317..049725c78c9 100644 --- a/tests/lib/AvatarTest.php +++ b/tests/lib/Avatar/UserAvatarTest.php @@ -6,7 +6,7 @@ * See the COPYING-README file. */ -namespace Test; +namespace Test\Avatar; use OC\Files\SimpleFS\SimpleFolder; use OC\User\User; @@ -18,11 +18,11 @@ use OCP\IConfig; use OCP\IL10N; use OCP\ILogger; -class AvatarTest extends \Test\TestCase { +class UserAvatarTest extends \Test\TestCase { /** @var Folder | \PHPUnit_Framework_MockObject_MockObject */ private $folder; - /** @var \OC\Avatar */ + /** @var \OC\Avatar\UserAvatar */ private $avatar; /** @var \OC\User\User | \PHPUnit_Framework_MockObject_MockObject $user */ @@ -41,7 +41,7 @@ class AvatarTest extends \Test\TestCase { $this->user = $this->createMock(User::class); $this->config = $this->createMock(IConfig::class); - $this->avatar = new \OC\Avatar( + $this->avatar = new \OC\Avatar\UserAvatar( $this->folder, $l, $this->user, diff --git a/tests/lib/Files/SimpleFS/InMemoryFileTest.php b/tests/lib/Files/SimpleFS/InMemoryFileTest.php new file mode 100644 index 00000000000..195a5d04a8f --- /dev/null +++ b/tests/lib/Files/SimpleFS/InMemoryFileTest.php @@ -0,0 +1,145 @@ +<?php +declare(strict_types=1); + +/** + * @copyright Copyright (c) 2018, Michael Weimann <mail@michael-weimann.eu> + * + * @author Michael Weimann <mail@michael-weimann.eu> + * + * @license AGPL-3.0 + * + * This code is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License, version 3, + * as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License, version 3, + * along with this program. If not, see <http://www.gnu.org/licenses/> + */ + +namespace Test\File\SimpleFS; + +use OCP\Files\NotPermittedException; +use OCP\Files\SimpleFS\InMemoryFile; +use Test\TestCase; + +/** + * This class provide test casesf or the InMemoryFile. + * + * @package Test\File\SimpleFS + */ +class InMemoryFileTest extends TestCase { + /** + * Holds a pdf file with know attributes for tests. + * + * @var InMemoryFile + */ + private $testPdf; + + /** + * Sets the test file from "./resources/test.pdf". + * + * @before + * @return void + */ + public function setupTestPdf() { + $fileContents = file_get_contents( + __DIR__ . '/../../../data/test.pdf' + ); + $this->testPdf = new InMemoryFile('test.pdf', $fileContents); + } + + /** + * Asserts that putContent replaces the file contents. + * + * @return void + */ + public function testPutContent() { + $this->testPdf->putContent('test'); + self::assertEquals('test', $this->testPdf->getContent()); + } + + /** + * Asserts that delete() doesn't rise an exception. + * + * @return void + */ + public function testDelete() { + $this->testPdf->delete(); + // assert true, otherwise phpunit complains about not doing any assert + self::assertTrue(true); + } + + /** + * Asserts that getName returns the name passed on file creation. + * + * @return void + */ + public function testGetName() { + self::assertEquals('test.pdf', $this->testPdf->getName()); + } + + /** + * Asserts that the file size is the size of the test file. + * + * @return void + */ + public function testGetSize() { + self::assertEquals(7083, $this->testPdf->getSize()); + } + + /** + * Asserts the file contents are the same than the original file contents. + * + * @return void + */ + public function testGetContent() { + self::assertEquals( + file_get_contents(__DIR__ . '/../../../data/test.pdf'), + $this->testPdf->getContent() + ); + } + + /** + * Asserts the test file modification time is an integer. + * + * @return void + */ + public function testGetMTime() { + self::assertTrue(is_int($this->testPdf->getMTime())); + } + + /** + * Asserts the test file mime type is "application/json". + * + * @return void + */ + public function testGetMimeType() { + self::assertEquals('application/pdf', $this->testPdf->getMimeType()); + } + + + /** + * Asserts that read() raises an NotPermittedException. + * + * @return void + */ + public function testRead() { + self::expectException(NotPermittedException::class); + $this->testPdf->read(); + } + + /** + * Asserts that write() raises an NotPermittedException. + * + * @return void + */ + public function testWrite() { + self::expectException(NotPermittedException::class); + $this->testPdf->write(); + } +} diff --git a/tests/lib/Repair/ClearGeneratedAvatarCacheTest.php b/tests/lib/Repair/ClearGeneratedAvatarCacheTest.php index ec107d300d6..dd98307993f 100644 --- a/tests/lib/Repair/ClearGeneratedAvatarCacheTest.php +++ b/tests/lib/Repair/ClearGeneratedAvatarCacheTest.php @@ -25,7 +25,7 @@ namespace Test\Repair; use OCP\IConfig; use OCP\Migration\IOutput; -use OC\AvatarManager; +use OC\Avatar\AvatarManager; use OC\Repair\ClearGeneratedAvatarCache; class ClearGeneratedAvatarCacheTest extends \Test\TestCase { diff --git a/tests/lib/ServerTest.php b/tests/lib/ServerTest.php index e76b2b96db7..604e11ec11e 100644 --- a/tests/lib/ServerTest.php +++ b/tests/lib/ServerTest.php @@ -57,7 +57,7 @@ class ServerTest extends \Test\TestCase { ['AppManager', '\OCP\App\IAppManager'], ['AsyncCommandBus', '\OC\Command\AsyncBus'], ['AsyncCommandBus', '\OCP\Command\IBus'], - ['AvatarManager', '\OC\AvatarManager'], + ['AvatarManager', '\OC\Avatar\AvatarManager'], ['AvatarManager', '\OCP\IAvatarManager'], ['CategoryFetcher', CategoryFetcher::class], |