Merge pull request #7847 from nextcloud/avatarmanager_strict
Fixes for avatarmanager
This commit is contained in:
commit
f8756d96bc
|
@ -70,7 +70,7 @@ class AvatarHome implements ICollection {
|
|||
throw new MethodNotAllowed('Invalid image size');
|
||||
}
|
||||
$avatar = $this->avatarManager->getAvatar($this->getName());
|
||||
if ($avatar === null || !$avatar->exists()) {
|
||||
if (!$avatar->exists()) {
|
||||
throw new NotFound();
|
||||
}
|
||||
return new AvatarNode($size, $ext, $avatar);
|
||||
|
|
|
@ -86,11 +86,10 @@ class AvatarHomeTest extends TestCase {
|
|||
if ($expectedException !== null) {
|
||||
$this->expectException($expectedException);
|
||||
}
|
||||
$avatar = null;
|
||||
if ($hasAvatar) {
|
||||
$avatar = $this->createMock(IAvatar::class);
|
||||
$avatar->expects($this->once())->method('exists')->willReturn(true);
|
||||
}
|
||||
|
||||
$avatar = $this->createMock(IAvatar::class);
|
||||
$avatar->method('exists')->willReturn($hasAvatar);
|
||||
|
||||
$this->avatarManager->expects($this->any())->method('getAvatar')->with('admin')->willReturn($avatar);
|
||||
$avatarNode = $this->home->getChild($path);
|
||||
$this->assertInstanceOf(AvatarNode::class, $avatarNode);
|
||||
|
@ -111,11 +110,9 @@ class AvatarHomeTest extends TestCase {
|
|||
* @dataProvider providesTestGetChild
|
||||
*/
|
||||
public function testChildExists($expectedException, $hasAvatar, $path) {
|
||||
$avatar = null;
|
||||
if ($hasAvatar) {
|
||||
$avatar = $this->createMock(IAvatar::class);
|
||||
$avatar->expects($this->once())->method('exists')->willReturn(true);
|
||||
}
|
||||
$avatar = $this->createMock(IAvatar::class);
|
||||
$avatar->method('exists')->willReturn($hasAvatar);
|
||||
|
||||
$this->avatarManager->expects($this->any())->method('getAvatar')->with('admin')->willReturn($avatar);
|
||||
$childExists = $this->home->childExists($path);
|
||||
$this->assertEquals($hasAvatar, $childExists);
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* @copyright Copyright (c) 2016, ownCloud, Inc.
|
||||
*
|
||||
|
@ -27,12 +28,13 @@
|
|||
|
||||
namespace OC;
|
||||
|
||||
use OC\User\Manager;
|
||||
use OCP\Files\IAppData;
|
||||
use OCP\Files\NotFoundException;
|
||||
use OCP\IAvatar;
|
||||
use OCP\IAvatarManager;
|
||||
use OCP\IConfig;
|
||||
use OCP\ILogger;
|
||||
use OCP\IUserManager;
|
||||
use OCP\IL10N;
|
||||
|
||||
/**
|
||||
|
@ -40,7 +42,7 @@ use OCP\IL10N;
|
|||
*/
|
||||
class AvatarManager implements IAvatarManager {
|
||||
|
||||
/** @var IUserManager */
|
||||
/** @var Manager */
|
||||
private $userManager;
|
||||
|
||||
/** @var IAppData */
|
||||
|
@ -58,14 +60,14 @@ class AvatarManager implements IAvatarManager {
|
|||
/**
|
||||
* AvatarManager constructor.
|
||||
*
|
||||
* @param IUserManager $userManager
|
||||
* @param Manager $userManager
|
||||
* @param IAppData $appData
|
||||
* @param IL10N $l
|
||||
* @param ILogger $logger
|
||||
* @param IConfig $config
|
||||
*/
|
||||
public function __construct(
|
||||
IUserManager $userManager,
|
||||
Manager $userManager,
|
||||
IAppData $appData,
|
||||
IL10N $l,
|
||||
ILogger $logger,
|
||||
|
@ -85,9 +87,9 @@ class AvatarManager implements IAvatarManager {
|
|||
* @throws \Exception In case the username is potentially dangerous
|
||||
* @throws NotFoundException In case there is no user folder yet
|
||||
*/
|
||||
public function getAvatar($userId) {
|
||||
public function getAvatar(string $userId) : IAvatar {
|
||||
$user = $this->userManager->get($userId);
|
||||
if (is_null($user)) {
|
||||
if ($user === null) {
|
||||
throw new \Exception('user does not exist');
|
||||
}
|
||||
|
||||
|
|
|
@ -284,11 +284,12 @@ class Server extends ServerContainer implements IServerContainer {
|
|||
});
|
||||
$this->registerAlias('LazyRootFolder', \OCP\Files\IRootFolder::class);
|
||||
|
||||
$this->registerService(\OCP\IUserManager::class, function (Server $c) {
|
||||
$this->registerService(\OC\User\Manager::class, function (Server $c) {
|
||||
$config = $c->getConfig();
|
||||
return new \OC\User\Manager($config);
|
||||
});
|
||||
$this->registerAlias('UserManager', \OCP\IUserManager::class);
|
||||
$this->registerAlias('UserManager', \OC\User\Manager::class);
|
||||
$this->registerAlias(\OCP\IUserManager::class, \OC\User\Manager::class);
|
||||
|
||||
$this->registerService(\OCP\IGroupManager::class, function (Server $c) {
|
||||
$groupManager = new \OC\Group\Manager($this->getUserManager(), $this->getLogger());
|
||||
|
@ -523,7 +524,7 @@ class Server extends ServerContainer implements IServerContainer {
|
|||
|
||||
$this->registerService(\OCP\IAvatarManager::class, function (Server $c) {
|
||||
return new AvatarManager(
|
||||
$c->getUserManager(),
|
||||
$c->query(\OC\User\Manager::class),
|
||||
$c->getAppDataDir('avatar'),
|
||||
$c->getL10N('lib'),
|
||||
$c->getLogger(),
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
<?php
|
||||
declare(strict_types=1);
|
||||
/**
|
||||
* @copyright Copyright (c) 2016, ownCloud, Inc.
|
||||
*
|
||||
|
@ -35,12 +36,12 @@ interface IAvatarManager {
|
|||
|
||||
/**
|
||||
* return a user specific instance of \OCP\IAvatar
|
||||
* @see \OCP\IAvatar
|
||||
* @see IAvatar
|
||||
* @param string $user the ownCloud user id
|
||||
* @return \OCP\IAvatar
|
||||
* @return 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);
|
||||
public function getAvatar(string $user) : IAvatar;
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@ namespace Test;
|
|||
use OC\Avatar;
|
||||
use OC\AvatarManager;
|
||||
use OC\Files\AppData\AppData;
|
||||
use OC\User\Manager;
|
||||
use OCP\Files\IAppData;
|
||||
use OCP\Files\SimpleFS\ISimpleFolder;
|
||||
use OCP\IConfig;
|
||||
|
@ -39,7 +40,7 @@ use OCP\IUserManager;
|
|||
* Class AvatarManagerTest
|
||||
*/
|
||||
class AvatarManagerTest extends \Test\TestCase {
|
||||
/** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
|
||||
/** @var Manager|\PHPUnit_Framework_MockObject_MockObject */
|
||||
private $userManager;
|
||||
/** @var IAppData|\PHPUnit_Framework_MockObject_MockObject */
|
||||
private $appData;
|
||||
|
@ -55,7 +56,7 @@ class AvatarManagerTest extends \Test\TestCase {
|
|||
public function setUp() {
|
||||
parent::setUp();
|
||||
|
||||
$this->userManager = $this->createMock(IUserManager::class);
|
||||
$this->userManager = $this->createMock(Manager::class);
|
||||
$this->appData = $this->createMock(IAppData::class);
|
||||
$this->l10n = $this->createMock(IL10N::class);
|
||||
$this->logger = $this->createMock(ILogger::class);
|
||||
|
|
Loading…
Reference in New Issue