Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2016-08-17 10:58:53 +0300
committerRoeland Jago Douma <roeland@famdouma.nl>2016-08-17 16:31:47 +0300
commitdf9b509ed33ef6e3041b76b4b7ce1b22c7d81fcc (patch)
tree69c5a7dccdc784dafa7d829c9e189d0c623da296 /tests
parent7a2d25fab4bb2b452b513e41adda4dec68e81bbe (diff)
Improve regexp to detect duplicate folders when repairing unmerged shares
Diffstat (limited to 'tests')
-rw-r--r--tests/lib/Repair/RepairUnmergedSharesTest.php102
1 files changed, 68 insertions, 34 deletions
diff --git a/tests/lib/Repair/RepairUnmergedSharesTest.php b/tests/lib/Repair/RepairUnmergedSharesTest.php
index 7304bfd6920..7b9d2579389 100644
--- a/tests/lib/Repair/RepairUnmergedSharesTest.php
+++ b/tests/lib/Repair/RepairUnmergedSharesTest.php
@@ -28,6 +28,8 @@ use OCP\Migration\IOutput;
use OCP\Migration\IRepairStep;
use Test\TestCase;
use OC\Share20\DefaultShareProvider;
+use OCP\IUserManager;
+use OCP\IGroupManager;
/**
* Tests for repairing invalid shares
@@ -47,6 +49,12 @@ class RepairUnmergedSharesTest extends TestCase {
/** @var int */
private $lastShareTime;
+ /** @var IUserManager */
+ private $userManager;
+
+ /** @var IGroupManager */
+ private $groupManager;
+
protected function setUp() {
parent::setUp();
@@ -61,45 +69,14 @@ class RepairUnmergedSharesTest extends TestCase {
$this->connection = \OC::$server->getDatabaseConnection();
$this->deleteAllShares();
- $user1 = $this->getMock('\OCP\IUser');
- $user1->expects($this->any())
- ->method('getUID')
- ->will($this->returnValue('user1'));
-
- $user2 = $this->getMock('\OCP\IUser');
- $user2->expects($this->any())
- ->method('getUID')
- ->will($this->returnValue('user2'));
-
- $users = [$user1, $user2];
-
- $groupManager = $this->getMock('\OCP\IGroupManager');
- $groupManager->expects($this->any())
- ->method('getUserGroupIds')
- ->will($this->returnValueMap([
- // owner
- [$user1, ['samegroup1', 'samegroup2']],
- // recipient
- [$user2, ['recipientgroup1', 'recipientgroup2']],
- ]));
-
- $userManager = $this->getMock('\OCP\IUserManager');
- $userManager->expects($this->once())
- ->method('countUsers')
- ->will($this->returnValue([2]));
- $userManager->expects($this->once())
- ->method('callForAllUsers')
- ->will($this->returnCallback(function(\Closure $closure) use ($users) {
- foreach ($users as $user) {
- $closure($user);
- }
- }));
+ $this->userManager = $this->getMock('\OCP\IUserManager');
+ $this->groupManager = $this->getMock('\OCP\IGroupManager');
// used to generate incremental stimes
$this->lastShareTime = time();
/** @var \OCP\IConfig $config */
- $this->repair = new RepairUnmergedShares($config, $this->connection, $userManager, $groupManager);
+ $this->repair = new RepairUnmergedShares($config, $this->connection, $this->userManager, $this->groupManager);
}
protected function tearDown() {
@@ -510,6 +487,38 @@ class RepairUnmergedSharesTest extends TestCase {
* @dataProvider sharesDataProvider
*/
public function testMergeGroupShares($shares, $expectedShares) {
+ $user1 = $this->getMock('\OCP\IUser');
+ $user1->expects($this->any())
+ ->method('getUID')
+ ->will($this->returnValue('user1'));
+
+ $user2 = $this->getMock('\OCP\IUser');
+ $user2->expects($this->any())
+ ->method('getUID')
+ ->will($this->returnValue('user2'));
+
+ $users = [$user1, $user2];
+
+ $this->groupManager->expects($this->any())
+ ->method('getUserGroupIds')
+ ->will($this->returnValueMap([
+ // owner
+ [$user1, ['samegroup1', 'samegroup2']],
+ // recipient
+ [$user2, ['recipientgroup1', 'recipientgroup2']],
+ ]));
+
+ $this->userManager->expects($this->once())
+ ->method('countUsers')
+ ->will($this->returnValue([2]));
+ $this->userManager->expects($this->once())
+ ->method('callForAllUsers')
+ ->will($this->returnCallback(function(\Closure $closure) use ($users) {
+ foreach ($users as $user) {
+ $closure($user);
+ }
+ }));
+
$shareIds = [];
foreach ($shares as $share) {
@@ -536,5 +545,30 @@ class RepairUnmergedSharesTest extends TestCase {
$this->assertEquals($expectedShare[1], $share['permissions']);
}
}
+
+ public function duplicateNamesProvider() {
+ return [
+ // matching
+ ['filename (1).txt', true],
+ ['folder (2)', true],
+ ['filename (1)(2).txt', true],
+ // non-matching
+ ['filename ().txt', false],
+ ['folder ()', false],
+ ['folder (1x)', false],
+ ['folder (x1)', false],
+ ['filename (a)', false],
+ ['filename (1).', false],
+ ['filename (1).txt.txt', false],
+ ['filename (1)..txt', false],
+ ];
+ }
+
+ /**
+ * @dataProvider duplicateNamesProvider
+ */
+ public function testIsPotentialDuplicateName($name, $expectedResult) {
+ $this->assertEquals($expectedResult, $this->invokePrivate($this->repair, 'isPotentialDuplicateName', [$name]));
+ }
}