]> source.dussan.org Git - nextcloud-server.git/commitdiff
Fix getting the avatar of a non-existing user
authorJoas Schilling <nickvergessen@owncloud.com>
Fri, 13 Mar 2015 12:12:14 +0000 (13:12 +0100)
committerJoas Schilling <nickvergessen@owncloud.com>
Fri, 13 Mar 2015 14:29:52 +0000 (15:29 +0100)
core/avatar/avatarcontroller.php
tests/core/avatar/avatarcontrollertest.php

index dd6e8fdc71d90c635c64d6680bedc65a50fd860b..f63e02b77614c2eb3dbbfddb522db8d44df52105 100644 (file)
@@ -101,11 +101,13 @@ class AvatarController extends Controller {
                                ['Content-Type' => $image->mimeType()]);
                        $resp->setETag(crc32($image->data()));
                } else {
-                       $resp = new DataResponse(
-                                               ['data' => [
-                                                               'displayname' => $this->userManager->get($userId)->getDisplayName()
-                                                       ]
-                                               ]);
+                       $user = $this->userManager->get($userId);
+                       $userName = $user ? $user->getDisplayName() : '';
+                       $resp = new DataResponse([
+                               'data' => [
+                                       'displayname' => $userName,
+                               ],
+                       ]);
                }
 
                $resp->addHeader('Pragma', 'public');
index f43cd7fedd1569806ec05ed5e96655073a1ac42b..cc9ff62807beb8b7c74e3ddae533379229d23754 100644 (file)
@@ -74,7 +74,6 @@ class AvatarControllerTest extends \Test\TestCase {
                $this->container['Request'] = $this->getMockBuilder('OCP\IRequest')
                        ->disableOriginalConstructor()->getMock();
 
-       
                $this->avatarMock = $this->getMockBuilder('OCP\IAvatar')
                        ->disableOriginalConstructor()->getMock();
                $this->userMock = $this->getMockBuilder('OCP\IUser')
@@ -82,11 +81,11 @@ class AvatarControllerTest extends \Test\TestCase {
 
                $this->avatarController = $this->container['AvatarController'];
 
-               // Store current User   
+               // Store current User
                $this->oldUser = \OC_User::getUser();
 
                // Create a dummy user
-               $this->user = \OC::$server->getSecureRandom()->getLowStrengthGenerator()->generate(12, ISecureRandom::CHAR_LOWER);
+               $this->user = $this->getUniqueID('user');
 
                OC::$server->getUserManager()->createUser($this->user, $this->user);
                \OC_Util::tearDownFS();
@@ -102,7 +101,8 @@ class AvatarControllerTest extends \Test\TestCase {
                // Configure userMock
                $this->userMock->method('getDisplayName')->willReturn($this->user);
                $this->userMock->method('getUID')->willReturn($this->user);
-               $this->container['UserManager']->method('get')->willReturn($this->userMock);
+               $this->container['UserManager']->method('get')
+                       ->willReturnMap([[$this->user, $this->userMock]]);
                $this->container['UserSession']->method('getUser')->willReturn($this->userMock);
 
        }
@@ -134,7 +134,7 @@ class AvatarControllerTest extends \Test\TestCase {
        }
 
        /**
-        * Fetch the users avatar
+        * Fetch the user's avatar
         */
        public function testGetAvatar() {
                $image = new Image(OC::$SERVERROOT.'/tests/data/testimage.jpg');
@@ -150,6 +150,23 @@ class AvatarControllerTest extends \Test\TestCase {
                $this->assertEquals(crc32($response->getData()), $response->getEtag());
        }
 
+       /**
+        * Fetch the avatar of a non-existing user
+        */
+       public function testGetAvatarNoUser() {
+               $image = new Image(OC::$SERVERROOT.'/tests/data/testimage.jpg');
+               $this->avatarMock->method('get')->willReturn($image);
+               $this->container['AvatarManager']->method('getAvatar')->willReturn($this->avatarMock);
+
+               $response = $this->avatarController->getAvatar($this->user . 'doesnotexist', 32);
+
+               $this->assertEquals($response->getStatus(), Http::STATUS_OK);
+
+               $image2 = new Image($response->getData());
+               $this->assertEquals($image->mimeType(), $image2->mimeType());
+               $this->assertEquals(crc32($response->getData()), $response->getEtag());
+       }
+
        /**
         * Make sure we get the correct size
         */