summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoeland Jago Douma <rullzer@users.noreply.github.com>2017-03-09 21:50:05 +0100
committerGitHub <noreply@github.com>2017-03-09 21:50:05 +0100
commitdb5fc4d3cbff68055d338f91bef44572b6c44fa6 (patch)
treec259202107fd5edff527314cdd06d19c449e7d5d
parentc16cb1978b9ebd55fe7bf4e66e58062e89d2437a (diff)
parentd4200a08cceeb99a41f45f50a41d50e0cb05cab3 (diff)
downloadnextcloud-server-db5fc4d3cbff68055d338f91bef44572b6c44fa6.tar.gz
nextcloud-server-db5fc4d3cbff68055d338f91bef44572b6c44fa6.zip
Merge pull request #3693 from nextcloud/get-user-folder-of-correct-user
Get the user folder of the correct user for mention notifications
-rw-r--r--apps/comments/lib/Notification/Notifier.php13
-rw-r--r--apps/comments/tests/Unit/AppInfo/ApplicationTest.php4
-rw-r--r--apps/comments/tests/Unit/Notification/NotifierTest.php102
3 files changed, 68 insertions, 51 deletions
diff --git a/apps/comments/lib/Notification/Notifier.php b/apps/comments/lib/Notification/Notifier.php
index a9daef3031f..09092da539c 100644
--- a/apps/comments/lib/Notification/Notifier.php
+++ b/apps/comments/lib/Notification/Notifier.php
@@ -23,7 +23,7 @@ namespace OCA\Comments\Notification;
use OCP\Comments\ICommentsManager;
use OCP\Comments\NotFoundException;
-use OCP\Files\Folder;
+use OCP\Files\IRootFolder;
use OCP\IURLGenerator;
use OCP\IUserManager;
use OCP\L10N\IFactory;
@@ -35,8 +35,8 @@ class Notifier implements INotifier {
/** @var IFactory */
protected $l10nFactory;
- /** @var Folder */
- protected $userFolder;
+ /** @var IRootFolder */
+ protected $rootFolder;
/** @var ICommentsManager */
protected $commentsManager;
@@ -49,13 +49,13 @@ class Notifier implements INotifier {
public function __construct(
IFactory $l10nFactory,
- Folder $userFolder,
+ IRootFolder $rootFolder,
ICommentsManager $commentsManager,
IURLGenerator $url,
IUserManager $userManager
) {
$this->l10nFactory = $l10nFactory;
- $this->userFolder = $userFolder;
+ $this->rootFolder = $rootFolder;
$this->commentsManager = $commentsManager;
$this->url = $url;
$this->userManager = $userManager;
@@ -93,7 +93,8 @@ class Notifier implements INotifier {
if($parameters[0] !== 'files') {
throw new \InvalidArgumentException('Unsupported comment object');
}
- $nodes = $this->userFolder->getById($parameters[1]);
+ $userFolder = $this->rootFolder->getUserFolder($notification->getUser());
+ $nodes = $userFolder->getById($parameters[1]);
if(empty($nodes)) {
throw new \InvalidArgumentException('Cannot resolve file id to Node instance');
}
diff --git a/apps/comments/tests/Unit/AppInfo/ApplicationTest.php b/apps/comments/tests/Unit/AppInfo/ApplicationTest.php
index e0a47dbfff9..5adfbbcc635 100644
--- a/apps/comments/tests/Unit/AppInfo/ApplicationTest.php
+++ b/apps/comments/tests/Unit/AppInfo/ApplicationTest.php
@@ -22,6 +22,7 @@
namespace OCA\Comments\Tests\Unit\AppInfo;
use OCA\Comments\AppInfo\Application;
+use OCA\Comments\Notification\Notifier;
use Test\TestCase;
/**
@@ -56,7 +57,8 @@ class ApplicationTest extends TestCase {
'OCA\Comments\Activity\Listener',
'OCA\Comments\Activity\Provider',
'OCA\Comments\Activity\Setting',
- 'OCA\Comments\Notification\Listener'
+ 'OCA\Comments\Notification\Listener',
+ Notifier::class,
];
foreach($services as $service) {
diff --git a/apps/comments/tests/Unit/Notification/NotifierTest.php b/apps/comments/tests/Unit/Notification/NotifierTest.php
index 25b8b4b278d..0b08849030b 100644
--- a/apps/comments/tests/Unit/Notification/NotifierTest.php
+++ b/apps/comments/tests/Unit/Notification/NotifierTest.php
@@ -28,6 +28,7 @@ use OCP\Comments\IComment;
use OCP\Comments\ICommentsManager;
use OCP\Comments\NotFoundException;
use OCP\Files\Folder;
+use OCP\Files\IRootFolder;
use OCP\Files\Node;
use OCP\IL10N;
use OCP\IURLGenerator;
@@ -41,41 +42,33 @@ class NotifierTest extends TestCase {
/** @var Notifier */
protected $notifier;
-
/** @var IFactory|\PHPUnit_Framework_MockObject_MockObject */
protected $l10nFactory;
-
- /** @var Folder|\PHPUnit_Framework_MockObject_MockObject */
+ /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */
+ protected $l;
+ /** @var IRootFolder|\PHPUnit_Framework_MockObject_MockObject */
protected $folder;
-
- /** @var ICommentsManager|\PHPUnit_Framework_MockObject_MockObject */
+ /** @var ICommentsManager|\PHPUnit_Framework_MockObject_MockObject */
protected $commentsManager;
/** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
protected $url;
- /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
+ /** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
protected $userManager;
-
-
- /** @var string */
- protected $lc = 'tlh_KX';
-
- /** @var INotification|\PHPUnit_Framework_MockObject_MockObject */
+ /** @var INotification|\PHPUnit_Framework_MockObject_MockObject */
protected $notification;
-
- /** @var IL10N|\PHPUnit_Framework_MockObject_MockObject */
- protected $l;
-
- /** @var IComment|\PHPUnit_Framework_MockObject_MockObject */
+ /** @var IComment|\PHPUnit_Framework_MockObject_MockObject */
protected $comment;
+ /** @var string */
+ protected $lc = 'tlh_KX';
protected function setUp() {
parent::setUp();
- $this->l10nFactory = $this->getMockBuilder('OCP\L10N\IFactory')->getMock();
- $this->folder = $this->getMockBuilder('OCP\Files\Folder')->getMock();
- $this->commentsManager = $this->getMockBuilder('OCP\Comments\ICommentsManager')->getMock();
+ $this->l10nFactory = $this->createMock(IFactory::class);
+ $this->folder = $this->createMock(IRootFolder::class);
+ $this->commentsManager = $this->createMock(ICommentsManager::class);
$this->url = $this->createMock(IURLGenerator::class);
- $this->userManager = $this->getMockBuilder('OCP\IUserManager')->getMock();
+ $this->userManager = $this->createMock(IUserManager::class);
$this->notifier = new Notifier(
$this->l10nFactory,
@@ -92,8 +85,8 @@ class NotifierTest extends TestCase {
return vsprintf($text, $parameters);
}));
- $this->notification = $this->getMockBuilder('OCP\Notification\INotification')->getMock();
- $this->comment = $this->getMockBuilder('OCP\Comments\IComment')->getMock();
+ $this->notification = $this->createMock(INotification::class);
+ $this->comment = $this->createMock(IComment::class);
}
public function testPrepareSuccess() {
@@ -102,24 +95,31 @@ class NotifierTest extends TestCase {
$message = 'Huraga mentioned you in a comment on “Gre\'thor.odp”';
/** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
- $user = $this->getMockBuilder('OCP\IUser')->getMock();
+ $user = $this->createMock(IUser::class);
$user->expects($this->once())
->method('getDisplayName')
->willReturn($displayName);
- /** @var Node|\PHPUnit_Framework_MockObject_MockObject */
- $node = $this->getMockBuilder('OCP\Files\Node')->getMock();
+ /** @var Node|\PHPUnit_Framework_MockObject_MockObject $node */
+ $node = $this->createMock(Node::class);
$node
->expects($this->atLeastOnce())
->method('getName')
->willReturn($fileName);
- $this->folder
- ->expects($this->once())
+ $userFolder = $this->createMock(Folder::class);
+ $this->folder->expects($this->once())
+ ->method('getUserFolder')
+ ->with('you')
+ ->willReturn($userFolder);
+ $userFolder->expects($this->once())
->method('getById')
->with('678')
->willReturn([$node]);
+ $this->notification->expects($this->once())
+ ->method('getUser')
+ ->willReturn('you');
$this->notification
->expects($this->once())
->method('getApp')
@@ -172,7 +172,7 @@ class NotifierTest extends TestCase {
->willReturn('users');
$this->commentsManager
- ->expects(($this->once()))
+ ->expects($this->once())
->method('get')
->willReturn($this->comment);
@@ -189,19 +189,26 @@ class NotifierTest extends TestCase {
$fileName = 'Gre\'thor.odp';
$message = 'A (now) deleted user mentioned you in a comment on “Gre\'thor.odp”';
- /** @var Node|\PHPUnit_Framework_MockObject_MockObject */
- $node = $this->getMockBuilder('OCP\Files\Node')->getMock();
+ /** @var Node|\PHPUnit_Framework_MockObject_MockObject $node */
+ $node = $this->createMock(Node::class);
$node
->expects($this->atLeastOnce())
->method('getName')
->willReturn($fileName);
- $this->folder
- ->expects($this->once())
+ $userFolder = $this->createMock(Folder::class);
+ $this->folder->expects($this->once())
+ ->method('getUserFolder')
+ ->with('you')
+ ->willReturn($userFolder);
+ $userFolder->expects($this->once())
->method('getById')
->with('678')
->willReturn([$node]);
+ $this->notification->expects($this->once())
+ ->method('getUser')
+ ->willReturn('you');
$this->notification
->expects($this->once())
->method('getApp')
@@ -254,7 +261,7 @@ class NotifierTest extends TestCase {
->willReturn(ICommentsManager::DELETED_USER);
$this->commentsManager
- ->expects(($this->once()))
+ ->expects($this->once())
->method('get')
->willReturn($this->comment);
@@ -292,7 +299,7 @@ class NotifierTest extends TestCase {
->method('get');
$this->commentsManager
- ->expects(($this->never()))
+ ->expects($this->never())
->method('get');
$this->userManager
@@ -329,7 +336,7 @@ class NotifierTest extends TestCase {
->method('get');
$this->commentsManager
- ->expects(($this->once()))
+ ->expects($this->once())
->method('get')
->willThrowException(new NotFoundException());
@@ -347,7 +354,7 @@ class NotifierTest extends TestCase {
$displayName = 'Huraga';
/** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
- $user = $this->getMockBuilder('OCP\IUser')->getMock();
+ $user = $this->createMock(IUser::class);
$user->expects($this->once())
->method('getDisplayName')
->willReturn($displayName);
@@ -390,7 +397,7 @@ class NotifierTest extends TestCase {
->willReturn('users');
$this->commentsManager
- ->expects(($this->once()))
+ ->expects($this->once())
->method('get')
->willReturn($this->comment);
@@ -410,7 +417,7 @@ class NotifierTest extends TestCase {
$displayName = 'Huraga';
/** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
- $user = $this->getMockBuilder('OCP\IUser')->getMock();
+ $user = $this->createMock(IUser::class);
$user->expects($this->once())
->method('getDisplayName')
->willReturn($displayName);
@@ -454,7 +461,7 @@ class NotifierTest extends TestCase {
->willReturn('users');
$this->commentsManager
- ->expects(($this->once()))
+ ->expects($this->once())
->method('get')
->willReturn($this->comment);
@@ -474,17 +481,24 @@ class NotifierTest extends TestCase {
$displayName = 'Huraga';
/** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
- $user = $this->getMockBuilder('OCP\IUser')->getMock();
+ $user = $this->createMock(IUser::class);
$user->expects($this->once())
->method('getDisplayName')
->willReturn($displayName);
- $this->folder
- ->expects($this->once())
+ $userFolder = $this->createMock(Folder::class);
+ $this->folder->expects($this->once())
+ ->method('getUserFolder')
+ ->with('you')
+ ->willReturn($userFolder);
+ $userFolder->expects($this->once())
->method('getById')
->with('678')
->willReturn([]);
+ $this->notification->expects($this->once())
+ ->method('getUser')
+ ->willReturn('you');
$this->notification
->expects($this->once())
->method('getApp')
@@ -520,7 +534,7 @@ class NotifierTest extends TestCase {
->willReturn('users');
$this->commentsManager
- ->expects(($this->once()))
+ ->expects($this->once())
->method('get')
->willReturn($this->comment);