mirror of
https://github.com/nextcloud/server.git
synced 2026-06-11 01:30:50 -04:00
test: Add unit tests for removing federated group shares
Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
This commit is contained in:
parent
3749b31f4e
commit
718560a4a4
1 changed files with 207 additions and 0 deletions
207
apps/files_sharing/tests/External/ManagerTest.php
vendored
207
apps/files_sharing/tests/External/ManagerTest.php
vendored
|
|
@ -672,6 +672,213 @@ class ManagerTest extends TestCase {
|
|||
$this->verifyAcceptedGroupShare($shareData);
|
||||
}
|
||||
|
||||
public function testRemoveGroupShare() {
|
||||
[$shareData, $groupShare] = $this->createTestGroupShare();
|
||||
$this->assertTrue($this->manager->acceptShare($groupShare['id']));
|
||||
|
||||
// Setup mounts to remove share through mountpoint
|
||||
$this->setupMounts();
|
||||
|
||||
$this->manager->removeShare($this->uid . '/files/' . $groupShare['name']);
|
||||
|
||||
// Refresh mounts after removing share
|
||||
$this->setupMounts();
|
||||
|
||||
$this->assertNotMount($groupShare['name']);
|
||||
|
||||
$openShares = $this->manager->getOpenShares();
|
||||
$this->assertCount(1, $openShares);
|
||||
// After removing/declining a group share the sub-share of the user
|
||||
// rather than the group share is listed, so the mountpoint is no longer
|
||||
// a temporary one, even if it was removed.
|
||||
$this->assertExternalShareEntry($shareData, $openShares[0], 1, $shareData['name'], $this->uid);
|
||||
|
||||
$acceptedShares = $this->manager->getAcceptedShares();
|
||||
$this->assertCount(0, $acceptedShares);
|
||||
}
|
||||
|
||||
public function testRemoveGroupShareWhenAcceptedByOtherUser() {
|
||||
$manager2 = $this->createManagerForUser($this->uid2);
|
||||
|
||||
[$shareData, $groupShare] = $this->createTestGroupShare();
|
||||
$this->assertTrue($this->manager->acceptShare($groupShare['id']));
|
||||
$this->assertTrue($manager2->acceptShare($groupShare['id']));
|
||||
|
||||
// Setup mounts to remove share through mountpoint
|
||||
$this->setupMounts();
|
||||
|
||||
$this->manager->removeShare($this->uid . '/files/' . $groupShare['name']);
|
||||
|
||||
// Refresh mounts after removing share
|
||||
$this->setupMounts();
|
||||
|
||||
$openShares = $this->manager->getOpenShares();
|
||||
$this->assertCount(1, $openShares);
|
||||
// After removing/declining a group share the sub-share of the user
|
||||
// rather than the group share is listed, so the mountpoint is no longer
|
||||
// a temporary one, even if it was removed.
|
||||
$this->assertExternalShareEntry($shareData, $openShares[0], 1, $shareData['name'], $this->uid);
|
||||
|
||||
$acceptedShares = $this->manager->getAcceptedShares();
|
||||
$this->assertCount(0, $acceptedShares);
|
||||
|
||||
$user2OpenShares = $manager2->getOpenShares();
|
||||
$this->assertCount(0, $user2OpenShares);
|
||||
|
||||
$user2ShareData = $shareData;
|
||||
$user2ShareData['accepted'] = true;
|
||||
|
||||
$user2AcceptedShares = $manager2->getAcceptedShares();
|
||||
$this->assertCount(1, $user2AcceptedShares);
|
||||
$this->assertExternalShareEntry($user2ShareData, $user2AcceptedShares[0], 1, $shareData['name'], $this->uid2);
|
||||
}
|
||||
|
||||
public function testRemoveGroupShareWhenThereAreSeveralShares() {
|
||||
$manager2 = $this->createManagerForUser($this->uid2);
|
||||
|
||||
[$shareData1, $groupShare1] = $this->createTestGroupShare('group1', 'token1', '/SharedFolder', '2341');
|
||||
$this->assertTrue($this->manager->acceptShare($groupShare1['id']));
|
||||
[$shareData2, $groupShare2] = $this->createTestGroupShare('group1', 'token2', '/SharedFolder2', '2342');
|
||||
$this->assertTrue($this->manager->acceptShare($groupShare2['id']));
|
||||
[$shareData3, $groupShare3] = $this->createTestGroupShare('group1', 'token3', '/SharedFolder3', '2343');
|
||||
[$shareData4, $groupShare4] = $this->createTestGroupShare('group2', 'token4', '/SharedFolder4', '2344');
|
||||
[$shareData5, $groupShare5] = $this->createTestGroupShare('group3', 'token1', '/SharedFolder', '2341', $manager2);
|
||||
$this->assertTrue($manager2->acceptShare($groupShare5['id']));
|
||||
|
||||
// Setup mounts to remove share through mountpoint
|
||||
$this->setupMounts();
|
||||
|
||||
$this->manager->removeShare($this->uid . '/files/' . $groupShare2['name']);
|
||||
|
||||
// Refresh mounts after removing share
|
||||
$this->setupMounts();
|
||||
|
||||
$this->assertNotMount($groupShare2['name']);
|
||||
|
||||
$openShares = $this->manager->getOpenShares();
|
||||
$this->assertCount(3, $openShares);
|
||||
// After removing/declining a group share the sub-share of the user
|
||||
// rather than the group share is listed, so the mountpoint is no longer
|
||||
// a temporary one, even if it was removed.
|
||||
$this->assertExternalShareEntry($shareData2, $openShares[0], 2, $shareData2['name'], $this->uid);
|
||||
$this->assertExternalShareEntry($shareData3, $openShares[1], 3, '{{TemporaryMountPointName#' . $shareData3['name'] . '}}', 'group1');
|
||||
$this->assertExternalShareEntry($shareData4, $openShares[2], 4, '{{TemporaryMountPointName#' . $shareData4['name'] . '}}', 'group2');
|
||||
|
||||
$user1ShareData1 = $shareData1;
|
||||
$user1ShareData1['accepted'] = true;
|
||||
|
||||
$acceptedShares = $this->manager->getAcceptedShares();
|
||||
$this->assertCount(1, $acceptedShares);
|
||||
$this->assertExternalShareEntry($user1ShareData1, $acceptedShares[0], 1, $user1ShareData1['name'], $this->uid);
|
||||
|
||||
$user2OpenShares = $manager2->getOpenShares();
|
||||
$this->assertCount(3, $user2OpenShares);
|
||||
$this->assertExternalShareEntry($shareData1, $user2OpenShares[0], 1, '{{TemporaryMountPointName#' . $shareData1['name'] . '}}', 'group1');
|
||||
$this->assertExternalShareEntry($shareData2, $user2OpenShares[1], 2, '{{TemporaryMountPointName#' . $shareData2['name'] . '}}', 'group1');
|
||||
$this->assertExternalShareEntry($shareData3, $user2OpenShares[2], 3, '{{TemporaryMountPointName#' . $shareData3['name'] . '}}', 'group1');
|
||||
|
||||
$shareData5['accepted'] = true;
|
||||
|
||||
$user2AcceptedShares = $manager2->getAcceptedShares();
|
||||
$this->assertCount(1, $user2AcceptedShares);
|
||||
$this->assertExternalShareEntry($shareData5, $user2AcceptedShares[0], 5, $shareData1['name'], $this->uid2);
|
||||
}
|
||||
|
||||
public function testForceRemoveGroupShare() {
|
||||
[$shareData, $groupShare] = $this->createTestGroupShare();
|
||||
$this->assertTrue($this->manager->acceptShare($groupShare['id']));
|
||||
|
||||
// Setup mounts to remove share through mountpoint
|
||||
$this->setupMounts();
|
||||
|
||||
$this->manager->removeShare($this->uid . '/files/' . $groupShare['name'], true);
|
||||
|
||||
// Refresh mounts after removing share
|
||||
$this->setupMounts();
|
||||
|
||||
$this->assertNotMount($groupShare['name']);
|
||||
|
||||
$openShares = $this->manager->getOpenShares();
|
||||
$this->assertCount(0, $openShares);
|
||||
|
||||
$acceptedShares = $this->manager->getAcceptedShares();
|
||||
$this->assertCount(0, $acceptedShares);
|
||||
}
|
||||
|
||||
public function testForceRemoveGroupShareWhenAcceptedByOtherUser() {
|
||||
$manager2 = $this->createManagerForUser($this->uid2);
|
||||
|
||||
[$shareData, $groupShare] = $this->createTestGroupShare();
|
||||
$this->assertTrue($this->manager->acceptShare($groupShare['id']));
|
||||
$this->assertTrue($manager2->acceptShare($groupShare['id']));
|
||||
|
||||
// Setup mounts to remove share through mountpoint
|
||||
$this->setupMounts();
|
||||
|
||||
$this->manager->removeShare($this->uid . '/files/' . $groupShare['name'], true);
|
||||
|
||||
// Refresh mounts after removing share
|
||||
$this->setupMounts();
|
||||
|
||||
$openShares = $this->manager->getOpenShares();
|
||||
$this->assertCount(0, $openShares);
|
||||
|
||||
$acceptedShares = $this->manager->getAcceptedShares();
|
||||
$this->assertCount(0, $acceptedShares);
|
||||
|
||||
$user2OpenShares = $manager2->getOpenShares();
|
||||
$this->assertCount(0, $openShares);
|
||||
|
||||
$user2AcceptedShares = $manager2->getAcceptedShares();
|
||||
$this->assertCount(0, $user2AcceptedShares);
|
||||
}
|
||||
|
||||
public function testForceRemoveGroupShareWhenThereAreSeveralShares() {
|
||||
$manager2 = $this->createManagerForUser($this->uid2);
|
||||
|
||||
[$shareData1, $groupShare1] = $this->createTestGroupShare('group1', 'token1', '/SharedFolder', '2341');
|
||||
$this->assertTrue($this->manager->acceptShare($groupShare1['id']));
|
||||
[$shareData2, $groupShare2] = $this->createTestGroupShare('group1', 'token2', '/SharedFolder2', '2342');
|
||||
$this->assertTrue($this->manager->acceptShare($groupShare2['id']));
|
||||
[$shareData3, $groupShare3] = $this->createTestGroupShare('group1', 'token3', '/SharedFolder3', '2343');
|
||||
[$shareData4, $groupShare4] = $this->createTestGroupShare('group2', 'token4', '/SharedFolder4', '2344');
|
||||
[$shareData5, $groupShare5] = $this->createTestGroupShare('group3', 'token1', '/SharedFolder', '2341', $manager2);
|
||||
$this->assertTrue($manager2->acceptShare($groupShare5['id']));
|
||||
|
||||
// Setup mounts to remove share through mountpoint
|
||||
$this->setupMounts();
|
||||
|
||||
$this->manager->removeShare($this->uid . '/files/' . $groupShare2['name'], true);
|
||||
|
||||
// Refresh mounts after removing share
|
||||
$this->setupMounts();
|
||||
|
||||
$this->assertNotMount($groupShare2['name']);
|
||||
|
||||
$openShares = $this->manager->getOpenShares();
|
||||
$this->assertCount(2, $openShares);
|
||||
$this->assertExternalShareEntry($shareData3, $openShares[0], 3, '{{TemporaryMountPointName#' . $shareData3['name'] . '}}', 'group1');
|
||||
$this->assertExternalShareEntry($shareData4, $openShares[1], 4, '{{TemporaryMountPointName#' . $shareData4['name'] . '}}', 'group2');
|
||||
|
||||
$user1ShareData1 = $shareData1;
|
||||
$user1ShareData1['accepted'] = true;
|
||||
|
||||
$acceptedShares = $this->manager->getAcceptedShares();
|
||||
$this->assertCount(1, $acceptedShares);
|
||||
$this->assertExternalShareEntry($user1ShareData1, $acceptedShares[0], 1, $user1ShareData1['name'], $this->uid);
|
||||
|
||||
$user2OpenShares = $manager2->getOpenShares();
|
||||
$this->assertCount(2, $user2OpenShares);
|
||||
$this->assertExternalShareEntry($shareData1, $user2OpenShares[0], 1, '{{TemporaryMountPointName#' . $shareData1['name'] . '}}', 'group1');
|
||||
$this->assertExternalShareEntry($shareData3, $user2OpenShares[1], 3, '{{TemporaryMountPointName#' . $shareData3['name'] . '}}', 'group1');
|
||||
|
||||
$shareData5['accepted'] = true;
|
||||
|
||||
$user2AcceptedShares = $manager2->getAcceptedShares();
|
||||
$this->assertCount(1, $user2AcceptedShares);
|
||||
$this->assertExternalShareEntry($shareData5, $user2AcceptedShares[0], 5, $shareData1['name'], $this->uid2);
|
||||
}
|
||||
|
||||
public function testDeleteUserShares() {
|
||||
// user 1 shares
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue