From fd29d77817190ee66f19d1c5f1d7990c4d6d20d8 Mon Sep 17 00:00:00 2001 From: Robin Appelman Date: Tue, 27 Oct 2020 14:29:28 +0100 Subject: [PATCH] expand 'path is already shared' error message Signed-off-by: Robin Appelman --- lib/private/Share20/Manager.php | 8 +++++--- tests/lib/Share20/ManagerTest.php | 17 +++++++++++++---- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/lib/private/Share20/Manager.php b/lib/private/Share20/Manager.php index 683ca77c2b..bcdd4d2e46 100644 --- a/lib/private/Share20/Manager.php +++ b/lib/private/Share20/Manager.php @@ -563,9 +563,10 @@ class Manager implements IManager { //Shares are not identical } - // Identical share already existst + // Identical share already exists if ($existingShare->getSharedWith() === $share->getSharedWith() && $existingShare->getShareType() === $share->getShareType()) { - throw new AlreadySharedException('Path is already shared with this user', $existingShare); + $message = $this->l->t('Sharing %s failed, because this item is already shared with user %s', [$share->getNode()->getName(), $share->getSharedWithDisplayName()]); + throw new AlreadySharedException($message, $existingShare); } // The share is already shared with this user via a group share @@ -575,7 +576,8 @@ class Manager implements IManager { $user = $this->userManager->get($share->getSharedWith()); if ($group->inGroup($user) && $existingShare->getShareOwner() !== $share->getShareOwner()) { - throw new AlreadySharedException('Path is already shared with this user', $existingShare); + $message = $this->l->t('Sharing %s failed, because this item is already shared with user %s', [$share->getNode()->getName(), $share->getSharedWithDisplayName()]); + throw new AlreadySharedException($message, $existingShare); } } } diff --git a/tests/lib/Share20/ManagerTest.php b/tests/lib/Share20/ManagerTest.php index e053f4eb2e..12425683e7 100644 --- a/tests/lib/Share20/ManagerTest.php +++ b/tests/lib/Share20/ManagerTest.php @@ -50,6 +50,7 @@ use OCP\Mail\IMailer; use OCP\Security\Events\ValidatePasswordPolicyEvent; use OCP\Security\IHasher; use OCP\Security\ISecureRandom; +use OCP\Share\Exceptions\AlreadySharedException; use OCP\Share\Exceptions\ShareNotFound; use OCP\Share\IProviderFactory; use OCP\Share\IShare; @@ -1411,10 +1412,11 @@ class ManagerTest extends \Test\TestCase { public function testUserCreateChecksIdenticalShareExists() { - $this->expectException(\Exception::class); - $this->expectExceptionMessage('Path is already shared with this user'); + $this->expectException(AlreadySharedException::class); + $this->expectExceptionMessage('Sharing name.txt failed, because this item is already shared with user user'); $share = $this->manager->newShare(); + $share->setSharedWithDisplayName('user'); $share2 = $this->manager->newShare(); $sharedWith = $this->createMock(IUser::class); @@ -1431,13 +1433,16 @@ class ManagerTest extends \Test\TestCase { ->with($path) ->willReturn([$share2]); + $path->method('getName') + ->willReturn('name.txt'); + self::invokePrivate($this->manager, 'userCreateChecks', [$share]); } public function testUserCreateChecksIdenticalPathSharedViaGroup() { - $this->expectException(\Exception::class); - $this->expectExceptionMessage('Path is already shared with this user'); + $this->expectException(AlreadySharedException::class); + $this->expectExceptionMessage('Sharing name2.txt failed, because this item is already shared with user userName'); $share = $this->manager->newShare(); @@ -1451,6 +1456,7 @@ class ManagerTest extends \Test\TestCase { $share->setSharedWith('sharedWith') ->setNode($path) ->setShareOwner('shareOwner') + ->setSharedWithDisplayName('userName') ->setProviderId('foo') ->setId('bar'); @@ -1473,6 +1479,9 @@ class ManagerTest extends \Test\TestCase { ->with($path) ->willReturn([$share2]); + $path->method('getName') + ->willReturn('name2.txt'); + self::invokePrivate($this->manager, 'userCreateChecks', [$share]); }