summaryrefslogtreecommitdiffstats
path: root/tests/lib/User
diff options
context:
space:
mode:
authorJoas Schilling <coding@schilljs.com>2016-09-29 15:01:38 +0200
committerJoas Schilling <coding@schilljs.com>2016-09-29 15:40:53 +0200
commitf6ff60f4cb3800e5e7937fc18d62b99342fb7727 (patch)
tree0296b599ac5096182c6d172cf330b4f29964859e /tests/lib/User
parent5b7b8f8dac7d2d1e6fda6526628557ce7233257d (diff)
downloadnextcloud-server-f6ff60f4cb3800e5e7937fc18d62b99342fb7727.tar.gz
nextcloud-server-f6ff60f4cb3800e5e7937fc18d62b99342fb7727.zip
Make sure that comments, notifications and preferences are deleted
Signed-off-by: Joas Schilling <coding@schilljs.com>
Diffstat (limited to 'tests/lib/User')
-rw-r--r--tests/lib/User/UserTest.php85
1 files changed, 74 insertions, 11 deletions
diff --git a/tests/lib/User/UserTest.php b/tests/lib/User/UserTest.php
index 69f75d07762..19afa3642dd 100644
--- a/tests/lib/User/UserTest.php
+++ b/tests/lib/User/UserTest.php
@@ -11,6 +11,10 @@ namespace Test\User;
use OC\Hooks\PublicEmitter;
use OC\User\Database;
+use OCP\Comments\ICommentsManager;
+use OCP\IConfig;
+use OCP\Notification\IManager as INotificationManager;
+use OCP\Notification\INotification;
/**
* Class UserTest
@@ -175,9 +179,7 @@ class UserTest extends \Test\TestCase {
$backend->expects($this->any())
->method('implementsActions')
- ->will($this->returnCallback(function ($actions) {
- return false;
- }));
+ ->willReturn(false);
$user = new \OC\User\User('foo', $backend);
$this->assertTrue($user->canChangeAvatar());
@@ -380,9 +382,7 @@ class UserTest extends \Test\TestCase {
$backend->expects($this->any())
->method('implementsActions')
- ->will($this->returnCallback(function ($actions) {
- return false;
- }));
+ ->willReturn(false);
$backend->expects($this->never())
->method('setDisplayName');
@@ -433,7 +433,18 @@ class UserTest extends \Test\TestCase {
$this->assertEquals(2, $hooksCalled);
}
- public function testDeleteHooks() {
+ public function dataDeleteHooks() {
+ return [
+ [true],
+ [false],
+ ];
+ }
+
+ /**
+ * @dataProvider dataDeleteHooks
+ * @param bool $result
+ */
+ public function testDeleteHooks($result) {
$hooksCalled = 0;
$test = $this;
@@ -442,7 +453,10 @@ class UserTest extends \Test\TestCase {
*/
$backend = $this->createMock(\Test\Util\User\Dummy::class);
$backend->expects($this->once())
- ->method('deleteUser');
+ ->method('deleteUser')
+ ->willReturn($result);
+ $emitter = new PublicEmitter();
+ $user = new \OC\User\User('foo', $backend, $emitter);
/**
* @param \OC\User\User $user
@@ -452,12 +466,61 @@ class UserTest extends \Test\TestCase {
$test->assertEquals('foo', $user->getUID());
};
- $emitter = new PublicEmitter();
$emitter->listen('\OC\User', 'preDelete', $hook);
$emitter->listen('\OC\User', 'postDelete', $hook);
- $user = new \OC\User\User('foo', $backend, $emitter);
- $this->assertTrue($user->delete());
+ $config = $this->createMock(IConfig::class);
+ $commentsManager = $this->createMock(ICommentsManager::class);
+ $notificationManager = $this->createMock(INotificationManager::class);
+
+ if ($result) {
+ $config->expects($this->once())
+ ->method('deleteAllUserValues')
+ ->with('foo');
+
+ $commentsManager->expects($this->once())
+ ->method('deleteReferencesOfActor')
+ ->with('users', 'foo');
+ $commentsManager->expects($this->once())
+ ->method('deleteReadMarksFromUser')
+ ->with($user);
+
+ $notification = $this->createMock(INotification::class);
+ $notification->expects($this->once())
+ ->method('setUser')
+ ->with('foo');
+
+ $notificationManager->expects($this->once())
+ ->method('createNotification')
+ ->willReturn($notification);
+ $notificationManager->expects($this->once())
+ ->method('markProcessed')
+ ->with($notification);
+ } else {
+ $config->expects($this->never())
+ ->method('deleteAllUserValues');
+
+ $commentsManager->expects($this->never())
+ ->method('deleteReferencesOfActor');
+ $commentsManager->expects($this->never())
+ ->method('deleteReadMarksFromUser');
+
+ $notificationManager->expects($this->never())
+ ->method('createNotification');
+ $notificationManager->expects($this->never())
+ ->method('markProcessed');
+ }
+
+ $this->overwriteService('NotificationManager', $notificationManager);
+ $this->overwriteService('CommentsManager', $commentsManager);
+ $this->overwriteService('AllConfig', $config);
+
+ $this->assertSame($result, $user->delete());
+
+ $this->restoreService('AllConfig');
+ $this->restoreService('CommentsManager');
+ $this->restoreService('NotificationManager');
+
$this->assertEquals(2, $hooksCalled);
}