Merge pull request #33581 from nextcloud/share-lazy-user

use LazyUser in DefaultShareProvider
This commit is contained in:
Arthur Schiwon 2024-06-17 22:53:21 +02:00 committed by GitHub
commit 2bc949d22d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 25 additions and 16 deletions

View file

@ -11,6 +11,7 @@ use OC\Files\Cache\Cache;
use OC\Share20\Exception\BackendError;
use OC\Share20\Exception\InvalidShare;
use OC\Share20\Exception\ProviderException;
use OC\User\LazyUser;
use OCP\AppFramework\Utility\ITimeFactory;
use OCP\DB\QueryBuilder\IQueryBuilder;
use OCP\Defaults;
@ -909,8 +910,8 @@ class DefaultShareProvider implements IShareProvider {
}
$cursor->closeCursor();
} elseif ($shareType === IShare::TYPE_GROUP) {
$user = $this->userManager->get($userId);
$allGroups = ($user instanceof IUser) ? $this->groupManager->getUserGroupIds($user) : [];
$user = new LazyUser($userId, $this->userManager);
$allGroups = $this->groupManager->getUserGroupIds($user);
/** @var Share[] $shares2 */
$shares2 = [];
@ -1045,9 +1046,9 @@ class DefaultShareProvider implements IShareProvider {
if ($share->getShareType() === IShare::TYPE_USER) {
$share->setSharedWith($data['share_with']);
$user = $this->userManager->get($data['share_with']);
if ($user !== null) {
$share->setSharedWithDisplayName($user->getDisplayName());
$displayName = $this->userManager->getDisplayName($data['share_with']);
if ($displayName !== null) {
$share->setSharedWithDisplayName($displayName);
}
} elseif ($share->getShareType() === IShare::TYPE_GROUP) {
$share->setSharedWith($data['share_with']);

View file

@ -38,31 +38,31 @@ class DefaultShareProviderTest extends \Test\TestCase {
/** @var IDBConnection */
protected $dbConn;
/** @var IUserManager | \PHPUnit\Framework\MockObject\MockObject */
/** @var IUserManager | MockObject */
protected $userManager;
/** @var IGroupManager | \PHPUnit\Framework\MockObject\MockObject */
/** @var IGroupManager | MockObject */
protected $groupManager;
/** @var IRootFolder | \PHPUnit\Framework\MockObject\MockObject */
/** @var IRootFolder | MockObject */
protected $rootFolder;
/** @var DefaultShareProvider */
protected $provider;
/** @var \PHPUnit\Framework\MockObject\MockObject|IMailer */
/** @var MockObject|IMailer */
protected $mailer;
/** @var IFactory|MockObject */
protected $l10nFactory;
/** @var \PHPUnit\Framework\MockObject\MockObject|IL10N */
/** @var MockObject|IL10N */
protected $l10n;
/** @var \PHPUnit\Framework\MockObject\MockObject|Defaults */
/** @var MockObject|Defaults */
protected $defaults;
/** @var \PHPUnit\Framework\MockObject\MockObject|IURLGenerator */
/** @var MockObject|IURLGenerator */
protected $urlGenerator;
/** @var ITimeFactory|MockObject */
@ -1035,7 +1035,9 @@ class DefaultShareProviderTest extends \Test\TestCase {
['shareOwner', $owner],
['sharedBy', $initiator],
]);
$this->groupManager->method('getUserGroupIds')->with($user)->willReturn($groups);
$this->groupManager
->method('getUserGroupIds')
->willReturnCallback(fn (IUser $user) => ($user->getUID() === 'sharedWith' ? $groups : []));
$file = $this->createMock(File::class);
$this->rootFolder->method('getUserFolder')->with('shareOwner')->willReturnSelf();
@ -1123,7 +1125,9 @@ class DefaultShareProviderTest extends \Test\TestCase {
['shareOwner', $owner],
['sharedBy', $initiator],
]);
$this->groupManager->method('getUserGroupIds')->with($user)->willReturn($groups);
$this->groupManager
->method('getUserGroupIds')
->willReturnCallback(fn (IUser $user) => ($user->getUID() === 'user' ? $groups : []));
$file = $this->createMock(File::class);
$this->rootFolder->method('getUserFolder')->with('shareOwner')->willReturnSelf();
@ -1206,7 +1210,9 @@ class DefaultShareProviderTest extends \Test\TestCase {
['user1', $user1],
]);
$this->groupManager->method('getUserGroupIds')->with($user0)->willReturn(['group0']);
$this->groupManager
->method('getUserGroupIds')
->willReturnCallback(fn (IUser $user) => ($user->getUID() === 'user0' ? ['group0'] : []));
$node = $this->createMock(Folder::class);
$node->method('getId')->willReturn($fileId2);
@ -1283,7 +1289,9 @@ class DefaultShareProviderTest extends \Test\TestCase {
['shareOwner', $owner],
['sharedBy', $initiator],
]);
$this->groupManager->method('getUserGroupIds')->with($user)->willReturn($groups);
$this->groupManager
->method('getUserGroupIds')
->willReturnCallback(fn (IUser $user) => ($user->getUID() === 'sharedWith' ? $groups : []));
$share = $this->provider->getSharedWith('sharedWith', $shareType, null, 1, 0);
$this->assertCount(0, $share);