diff options
Diffstat (limited to 'apps/files_sharing/tests/server2server.php')
-rw-r--r-- | apps/files_sharing/tests/server2server.php | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/apps/files_sharing/tests/server2server.php b/apps/files_sharing/tests/server2server.php index 0400d357b82..6e9c0dd0ddd 100644 --- a/apps/files_sharing/tests/server2server.php +++ b/apps/files_sharing/tests/server2server.php @@ -30,6 +30,14 @@ class Test_Files_Sharing_S2S_OCS_API extends TestCase { const TEST_FOLDER_NAME = '/folder_share_api_test'; + /** + * @var \OCP\IDBConnection + */ + private $connection; + + /** + * @var \OCA\Files_Sharing\API\Server2Server + */ private $s2s; protected function setUp() { @@ -49,6 +57,8 @@ class Test_Files_Sharing_S2S_OCS_API extends TestCase { $this->registerHttpHelper($httpHelperMock); $this->s2s = new \OCA\Files_Sharing\API\Server2Server(); + + $this->connection = \OC::$server->getDatabaseConnection(); } protected function tearDown() { @@ -132,4 +142,71 @@ class Test_Files_Sharing_S2S_OCS_API extends TestCase { $data = $result->fetchAll(); $this->assertEmpty($data); } + + /** + * @dataProvider dataTestDeleteUser + */ + function testDeleteUser($toDelete, $expected, $remainingUsers) { + $this->createDummyS2SShares(); + + $manager = new OCA\Files_Sharing\External\Manager( + \OC::$server->getDatabaseConnection(), + \OC\Files\Filesystem::getMountManager(), + \OC\Files\Filesystem::getLoader(), + \OC::$server->getHTTPHelper(), + $toDelete + ); + + $manager->removeUserShares($toDelete); + + $query = $this->connection->prepare('SELECT `user` FROM `*PREFIX*share_external`'); + $query->execute(); + $result = $query->fetchAll(); + + foreach ($result as $r) { + $remainingShares[$r['user']] = isset($remainingShares[$r['user']]) ? $remainingShares[$r['user']] + 1 : 1; + } + + $this->assertSame($remainingUsers, count($remainingShares)); + + foreach ($expected as $key => $value) { + if ($key === $toDelete) { + $this->assertArrayNotHasKey($key, $remainingShares); + } else { + $this->assertSame($value, $remainingShares[$key]); + } + } + + } + + function dataTestDeleteUser() { + return array( + array('user1', array('user1' => 0, 'user2' => 3, 'user3' => 3), 2), + array('user2', array('user1' => 4, 'user2' => 0, 'user3' => 3), 2), + array('user3', array('user1' => 4, 'user2' => 3, 'user3' => 0), 2), + array('user4', array('user1' => 4, 'user2' => 3, 'user3' => 3), 3), + ); + } + + private function createDummyS2SShares() { + $query = $this->connection->prepare(' + INSERT INTO `*PREFIX*share_external` + (`remote`, `share_token`, `password`, `name`, `owner`, `user`, `mountpoint`, `mountpoint_hash`, `remote_id`, `accepted`) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?) + '); + + $users = array('user1', 'user2', 'user3'); + + for ($i = 0; $i < 10; $i++) { + $user = $users[$i%3]; + $query->execute(array('remote', 'token', 'password', 'name', 'owner', $user, 'mount point', $i, $i, 0)); + } + + $query = $this->connection->prepare('SELECT `id` FROM `*PREFIX*share_external`'); + $query->execute(); + $dummyEntries = $query->fetchAll(); + + $this->assertSame(10, count($dummyEntries)); + } + } |