summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMichael Weimann <mail@michael-weimann.eu>2019-01-20 11:13:41 +0100
committerMorris Jobke <hey@morrisjobke.de>2019-02-07 14:23:16 +0100
commitbf1253cb49a4931244a6bbde4dfa44bf084f4377 (patch)
tree6faacd5110c029778ed56554e27a5d73c4e888db /tests
parentb69b17f29fd518495a6495e0f90f60c70ef0fc73 (diff)
downloadnextcloud-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.php4
-rw-r--r--tests/Core/Controller/GuestAvatarControllerTest.php90
-rw-r--r--tests/data/guest_avatar_einstein_32.svg5
-rw-r--r--tests/data/test.pdfbin0 -> 7083 bytes
-rw-r--r--tests/lib/Avatar/AvatarManagerTest.php (renamed from tests/lib/AvatarManagerTest.php)12
-rw-r--r--tests/lib/Avatar/GuestAvatarTest.php80
-rw-r--r--tests/lib/Avatar/UserAvatarTest.php (renamed from tests/lib/AvatarTest.php)8
-rw-r--r--tests/lib/Files/SimpleFS/InMemoryFileTest.php145
-rw-r--r--tests/lib/Repair/ClearGeneratedAvatarCacheTest.php2
-rw-r--r--tests/lib/ServerTest.php2
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
new file mode 100644
index 00000000000..241e1e85d41
--- /dev/null
+++ b/tests/data/test.pdf
Binary files differ
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],