summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/private/avatarmanager.php2
-rw-r--r--lib/public/iavatarmanager.php2
-rw-r--r--settings/controller/userscontroller.php6
-rw-r--r--tests/settings/controller/userscontrollertest.php26
4 files changed, 35 insertions, 1 deletions
diff --git a/lib/private/avatarmanager.php b/lib/private/avatarmanager.php
index 21f88b1fd3f..b2d3e6eb3dd 100644
--- a/lib/private/avatarmanager.php
+++ b/lib/private/avatarmanager.php
@@ -27,6 +27,7 @@
namespace OC;
use OCP\Files\Folder;
+use OCP\Files\NotFoundException;
use OCP\IAvatarManager;
use OCP\IUserManager;
use OCP\Files\IRootFolder;
@@ -68,6 +69,7 @@ class AvatarManager implements IAvatarManager {
* @param string $userId the ownCloud user id
* @return \OCP\IAvatar
* @throws \Exception In case the username is potentially dangerous
+ * @throws NotFoundException In case there is no user folder yet
*/
public function getAvatar($userId) {
$user = $this->userManager->get($userId);
diff --git a/lib/public/iavatarmanager.php b/lib/public/iavatarmanager.php
index 264c4fcf051..cb63ccaf6fd 100644
--- a/lib/public/iavatarmanager.php
+++ b/lib/public/iavatarmanager.php
@@ -36,6 +36,8 @@ interface IAvatarManager {
* @see \OCP\IAvatar
* @param string $user the ownCloud user id
* @return \OCP\IAvatar
+ * @throws \Exception In case the username is potentially dangerous
+ * @throws \OCP\Files\NotFoundException In case there is no user folder yet
* @since 6.0.0
*/
public function getAvatar($user);
diff --git a/settings/controller/userscontroller.php b/settings/controller/userscontroller.php
index 3e5455751ab..0abcabed11c 100644
--- a/settings/controller/userscontroller.php
+++ b/settings/controller/userscontroller.php
@@ -176,7 +176,11 @@ class UsersController extends Controller {
$avatarAvailable = false;
if ($this->config->getSystemValue('enable_avatars', true) === true) {
- $avatarAvailable = $this->avatarManager->getAvatar($user->getUID())->exists();
+ try {
+ $avatarAvailable = $this->avatarManager->getAvatar($user->getUID())->exists();
+ } catch (\Exception $e) {
+ //No avatar yet
+ }
}
return [
diff --git a/tests/settings/controller/userscontrollertest.php b/tests/settings/controller/userscontrollertest.php
index 947540fa67b..6f07f34ba8d 100644
--- a/tests/settings/controller/userscontrollertest.php
+++ b/tests/settings/controller/userscontrollertest.php
@@ -1696,6 +1696,32 @@ class UsersControllerTest extends \Test\TestCase {
$this->assertEquals($expectedResult, $result);
}
+ public function testNoAvatar() {
+ $this->container['IsAdmin'] = true;
+
+ list($user, $expectedResult) = $this->mockUser();
+
+ $subadmin = $this->getMockBuilder('\OC\SubAdmin')
+ ->disableOriginalConstructor()
+ ->getMock();
+ $subadmin->expects($this->once())
+ ->method('getSubAdminsGroups')
+ ->with($user)
+ ->will($this->returnValue([]));
+ $this->container['GroupManager']
+ ->expects($this->any())
+ ->method('getSubAdmin')
+ ->will($this->returnValue($subadmin));
+
+ $this->container['OCP\\IAvatarManager']
+ ->method('getAvatar')
+ ->will($this->throwException(new \OCP\Files\NotFoundException()));
+ $expectedResult['isAvatarAvailable'] = false;
+
+ $result = self::invokePrivate($this->container['UsersController'], 'formatUserForIndex', [$user]);
+ $this->assertEquals($expectedResult, $result);
+ }
+
/**
* @return array
*/