diff --git a/lib/private/avatar.php b/lib/private/avatar.php index d4e5f5225d..a276fb7ccf 100644 --- a/lib/private/avatar.php +++ b/lib/private/avatar.php @@ -58,10 +58,8 @@ class Avatar implements \OCP\IAvatar { } /** - * get the users avatar - * @param int $size size in px of the avatar, avatars are square, defaults to 64 - * @return boolean|\OCP\IImage containing the avatar or false if there's no image - */ + * @inheritdoc + */ public function get ($size = 64) { try { $file = $this->getFile($size); @@ -135,16 +133,16 @@ class Avatar implements \OCP\IAvatar { } /** - * Get the File of an avatar of size $size. - * - * @param int $size - * @return File - * @throws NotFoundException + * @inheritdoc */ public function getFile($size) { $ext = $this->getExtention(); - $path = 'avatar.' . $size . '.' . $ext; + if ($size === -1) { + $path = 'avatar.' . $ext; + } else { + $path = 'avatar.' . $size . '.' . $ext; + } try { $file = $this->folder->get($path); @@ -157,7 +155,9 @@ class Avatar implements \OCP\IAvatar { /** @var File $file */ $file = $this->folder->get('avatar.' . $ext); $avatar->loadFromData($file->getContent()); - $avatar->resize($size); + if ($size !== -1) { + $avatar->resize($size); + } $file = $this->folder->newFile($path); $file->putContent($avatar->data()); } diff --git a/lib/public/iavatar.php b/lib/public/iavatar.php index fc4058ab4f..6203d3d557 100644 --- a/lib/public/iavatar.php +++ b/lib/public/iavatar.php @@ -36,9 +36,9 @@ interface IAvatar { /** * get the users avatar - * @param int $size size in px of the avatar, avatars are square, defaults to 64 + * @param int $size size in px of the avatar, avatars are square, defaults to 64, -1 can be used to not scale the image * @return boolean|\OCP\IImage containing the avatar or false if there's no image - * @since 6.0.0 + * @since 6.0.0 - size of -1 was added in 9.0.0 */ public function get($size = 64); @@ -70,7 +70,7 @@ interface IAvatar { /** * Get the file of the avatar - * @param int $size + * @param int $size -1 can be used to not scale the image * @return File * @throws NotFoundException * @since 9.0.0 diff --git a/tests/lib/avatartest.php b/tests/lib/avatartest.php index d3e615977c..fe6d3e2fa3 100644 --- a/tests/lib/avatartest.php +++ b/tests/lib/avatartest.php @@ -7,14 +7,13 @@ * See the COPYING-README file. */ -use OC\Avatar; use OCP\Files\Folder; class AvatarTest extends \Test\TestCase { - /** @var Folder */ + /** @var Folder | PHPUnit_Framework_MockObject_MockObject */ private $folder; - /** @var \OC\Avatar */ + /** @var \OC\Avatar */ private $avatar; public function setUp() { @@ -24,7 +23,6 @@ class AvatarTest extends \Test\TestCase { $l = $this->getMock('\OCP\IL10N'); $l->method('t')->will($this->returnArgument(0)); $this->avatar = new \OC\Avatar($this->folder, $l); - } public function testGetNoAvatar() { @@ -47,6 +45,21 @@ class AvatarTest extends \Test\TestCase { $this->assertEquals($expected->data(), $this->avatar->get(128)->data()); } + public function testGetAvatarSizeMinusOne() { + $this->folder->method('nodeExists') + ->will($this->returnValueMap([ + ['avatar.jpg', true], + ])); + + $expected = new OC_Image(\OC::$SERVERROOT . '/tests/data/testavatar.png'); + + $file = $this->getMock('\OCP\Files\File'); + $file->method('getContent')->willReturn($expected->data()); + $this->folder->method('get')->with('avatar.jpg')->willReturn($file); + + $this->assertEquals($expected->data(), $this->avatar->get(-1)->data()); + } + public function testGetAvatarNoSizeMatch() { $this->folder->method('nodeExists') ->will($this->returnValueMap([