|
|
@@ -86,13 +86,22 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
$this->manager = new Manager( |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->defaultProvider, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
|
$this->groupManager, |
|
|
|
$this->l |
|
|
|
); |
|
|
|
$this->manager->registerProvider('tmp', |
|
|
|
[ |
|
|
|
\OCP\SHARE::SHARE_TYPE_USER, |
|
|
|
\OCP\Share::SHARE_TYPE_GROUP, |
|
|
|
\OCP\Share::SHARE_TYPE_LINK |
|
|
|
], |
|
|
|
function() { |
|
|
|
return $this->defaultProvider; |
|
|
|
} |
|
|
|
); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@@ -133,7 +142,6 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
->setConstructorArgs([ |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->defaultProvider, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
@@ -143,6 +151,13 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
->setMethods(['getShareById', 'deleteChildren']) |
|
|
|
->getMock(); |
|
|
|
|
|
|
|
$manager->registerProvider('tmp', |
|
|
|
[$shareType], |
|
|
|
function() { |
|
|
|
return $this->defaultProvider; |
|
|
|
} |
|
|
|
); |
|
|
|
|
|
|
|
$sharedBy = $this->getMock('\OCP\IUser'); |
|
|
|
$sharedBy->method('getUID')->willReturn('sharedBy'); |
|
|
|
|
|
|
@@ -224,7 +239,6 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
->setConstructorArgs([ |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->defaultProvider, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
@@ -234,6 +248,15 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
->setMethods(['getShareById']) |
|
|
|
->getMock(); |
|
|
|
|
|
|
|
$manager->registerProvider('tmp', |
|
|
|
[ |
|
|
|
\OCP\Share::SHARE_TYPE_USER |
|
|
|
], |
|
|
|
function() { |
|
|
|
return $this->defaultProvider; |
|
|
|
} |
|
|
|
); |
|
|
|
|
|
|
|
$sharedBy1 = $this->getMock('\OCP\IUser'); |
|
|
|
$sharedBy1->method('getUID')->willReturn('sharedBy1'); |
|
|
|
$sharedBy2 = $this->getMock('\OCP\IUser'); |
|
|
@@ -369,7 +392,6 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
->setConstructorArgs([ |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->defaultProvider, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
@@ -379,6 +401,13 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
->setMethods(['deleteShare']) |
|
|
|
->getMock(); |
|
|
|
|
|
|
|
$manager->registerProvider('tmp', |
|
|
|
[\OCP\Share::SHARE_TYPE_USER], |
|
|
|
function() { |
|
|
|
return $this->defaultProvider; |
|
|
|
} |
|
|
|
); |
|
|
|
|
|
|
|
$share = $this->getMock('\OC\Share20\IShare'); |
|
|
|
|
|
|
|
$child1 = $this->getMock('\OC\Share20\IShare'); |
|
|
@@ -1156,7 +1185,6 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
->setConstructorArgs([ |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->defaultProvider, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
@@ -1185,7 +1213,6 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
->setConstructorArgs([ |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->defaultProvider, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
@@ -1205,7 +1232,6 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
->setConstructorArgs([ |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->defaultProvider, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
@@ -1215,6 +1241,13 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
->setMethods(['canShare', 'generalCreateChecks', 'userCreateChecks', 'pathCreateChecks']) |
|
|
|
->getMock(); |
|
|
|
|
|
|
|
$manager->registerProvider('tmp', |
|
|
|
[\OCP\Share::SHARE_TYPE_USER], |
|
|
|
function() { |
|
|
|
return $this->defaultProvider; |
|
|
|
} |
|
|
|
); |
|
|
|
|
|
|
|
$sharedWith = $this->getMock('\OCP\IUser'); |
|
|
|
$sharedBy = $this->getMock('\OCP\IUser'); |
|
|
|
$shareOwner = $this->getMock('\OCP\IUser'); |
|
|
@@ -1267,7 +1300,6 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
->setConstructorArgs([ |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->defaultProvider, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
@@ -1277,6 +1309,13 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
->setMethods(['canShare', 'generalCreateChecks', 'groupCreateChecks', 'pathCreateChecks']) |
|
|
|
->getMock(); |
|
|
|
|
|
|
|
$manager->registerProvider('tmp', |
|
|
|
[\OCP\Share::SHARE_TYPE_GROUP], |
|
|
|
function() { |
|
|
|
return $this->defaultProvider; |
|
|
|
} |
|
|
|
); |
|
|
|
|
|
|
|
$sharedWith = $this->getMock('\OCP\IGroup'); |
|
|
|
$sharedBy = $this->getMock('\OCP\IUser'); |
|
|
|
$shareOwner = $this->getMock('\OCP\IUser'); |
|
|
@@ -1329,7 +1368,7 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
->setConstructorArgs([ |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->defaultProvider, |
|
|
|
|
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
@@ -1346,6 +1385,13 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
]) |
|
|
|
->getMock(); |
|
|
|
|
|
|
|
$manager->registerProvider('tmp', |
|
|
|
[\OCP\Share::SHARE_TYPE_LINK], |
|
|
|
function() { |
|
|
|
return $this->defaultProvider; |
|
|
|
} |
|
|
|
); |
|
|
|
|
|
|
|
$sharedBy = $this->getMock('\OCP\IUser'); |
|
|
|
$sharedBy->method('getUID')->willReturn('sharedBy'); |
|
|
|
$shareOwner = $this->getMock('\OCP\IUser'); |
|
|
@@ -1470,7 +1516,6 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
->setConstructorArgs([ |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->defaultProvider, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
@@ -1485,6 +1530,13 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
]) |
|
|
|
->getMock(); |
|
|
|
|
|
|
|
$manager->registerProvider('tmp', |
|
|
|
[\OCP\Share::SHARE_TYPE_USER], |
|
|
|
function() { |
|
|
|
return $this->defaultProvider; |
|
|
|
} |
|
|
|
); |
|
|
|
|
|
|
|
$sharedWith = $this->getMock('\OCP\IUser'); |
|
|
|
$sharedBy = $this->getMock('\OCP\IUser'); |
|
|
|
$shareOwner = $this->getMock('\OCP\IUser'); |
|
|
@@ -1530,6 +1582,184 @@ class ManagerTest extends \Test\TestCase { |
|
|
|
|
|
|
|
$manager->createShare($share); |
|
|
|
} |
|
|
|
|
|
|
|
public function dataRegisterProvider() { |
|
|
|
return [ |
|
|
|
[[ \OCP\Share::SHARE_TYPE_REMOTE,]], |
|
|
|
[[ \OCP\Share::SHARE_TYPE_LINK, ]], |
|
|
|
[[ \OCP\Share::SHARE_TYPE_LINK, \OCP\Share::SHARE_TYPE_REMOTE,]], |
|
|
|
[[ \OCP\Share::SHARE_TYPE_GROUP, ]], |
|
|
|
[[ \OCP\Share::SHARE_TYPE_GROUP, \OCP\Share::SHARE_TYPE_REMOTE,]], |
|
|
|
[[ \OCP\Share::SHARE_TYPE_GROUP, \OCP\Share::SHARE_TYPE_LINK, ]], |
|
|
|
[[ \OCP\Share::SHARE_TYPE_GROUP, \OCP\Share::SHARE_TYPE_LINK, \OCP\Share::SHARE_TYPE_REMOTE,]], |
|
|
|
[[ \OCP\Share::SHARE_TYPE_GROUP, ]], |
|
|
|
[[\OCP\Share::SHARE_TYPE_USER, ]], |
|
|
|
[[\OCP\Share::SHARE_TYPE_USER, \OCP\Share::SHARE_TYPE_REMOTE,]], |
|
|
|
[[\OCP\Share::SHARE_TYPE_USER, \OCP\Share::SHARE_TYPE_LINK, ]], |
|
|
|
[[\OCP\Share::SHARE_TYPE_USER, \OCP\Share::SHARE_TYPE_LINK, \OCP\Share::SHARE_TYPE_REMOTE,]], |
|
|
|
[[\OCP\Share::SHARE_TYPE_USER, \OCP\Share::SHARE_TYPE_GROUP, ]], |
|
|
|
[[\OCP\Share::SHARE_TYPE_USER, \OCP\Share::SHARE_TYPE_GROUP, \OCP\Share::SHARE_TYPE_REMOTE,]], |
|
|
|
[[\OCP\Share::SHARE_TYPE_USER, \OCP\Share::SHARE_TYPE_GROUP, \OCP\Share::SHARE_TYPE_LINK, ]], |
|
|
|
[[\OCP\Share::SHARE_TYPE_USER, \OCP\Share::SHARE_TYPE_GROUP, \OCP\Share::SHARE_TYPE_LINK, \OCP\Share::SHARE_TYPE_REMOTE,]], |
|
|
|
]; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @dataProvider dataRegisterProvider |
|
|
|
* @param int[] $shareTypes |
|
|
|
*/ |
|
|
|
public function testRegisterProvider($shareTypes) { |
|
|
|
$manager = new Manager( |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
|
$this->groupManager, |
|
|
|
$this->l |
|
|
|
); |
|
|
|
|
|
|
|
$provider = $this->getMock('OC\Share20\IShareProvider'); |
|
|
|
$manager->registerProvider('foo', $shareTypes, function() use ($provider) { |
|
|
|
return $provider; |
|
|
|
}); |
|
|
|
|
|
|
|
$this->assertEquals($provider, $this->invokePrivate($manager, 'getProvider', ['foo'])); |
|
|
|
foreach ($shareTypes as $shareType) { |
|
|
|
$this->assertEquals($provider, $this->invokePrivate($manager, 'getProviderForType', [$shareType])); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @expectedException \OC\Share20\Exception\ProviderException |
|
|
|
* @expectedExceptionMessage A share provider with the id 'foo' is already registered |
|
|
|
*/ |
|
|
|
public function testRegisterProviderDuplicateId() { |
|
|
|
$manager = new Manager( |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
|
$this->groupManager, |
|
|
|
$this->l |
|
|
|
); |
|
|
|
|
|
|
|
$provider = $this->getMock('OC\Share20\IShareProvider'); |
|
|
|
$manager->registerProvider('foo', [\OCP\Share::SHARE_TYPE_USER], function() use ($provider) { |
|
|
|
return $provider; |
|
|
|
}); |
|
|
|
$manager->registerProvider('foo', [\OCP\Share::SHARE_TYPE_USER], function() use ($provider) { |
|
|
|
return $provider; |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @expectedException \OC\Share20\Exception\ProviderException |
|
|
|
* @expectedExceptionMessage shareTypes can't be an empty array |
|
|
|
*/ |
|
|
|
public function testRegisterProviderEmptyShareTypes() { |
|
|
|
$manager = new Manager( |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
|
$this->groupManager, |
|
|
|
$this->l |
|
|
|
); |
|
|
|
|
|
|
|
$provider = $this->getMock('OC\Share20\IShareProvider'); |
|
|
|
$manager->registerProvider('foo', [], function() use ($provider) { |
|
|
|
return $provider; |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @expectedException \OC\Share20\Exception\ProviderException |
|
|
|
* @expectedExceptionMessage The share provider foo is already registered for share type 0 |
|
|
|
*/ |
|
|
|
public function testRegisterProviderSameType() { |
|
|
|
$manager = new Manager( |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
|
$this->groupManager, |
|
|
|
$this->l |
|
|
|
); |
|
|
|
|
|
|
|
$provider = $this->getMock('OC\Share20\IShareProvider'); |
|
|
|
$manager->registerProvider('foo', [\OCP\Share::SHARE_TYPE_USER], function() use ($provider) { |
|
|
|
return $provider; |
|
|
|
}); |
|
|
|
$manager->registerProvider('bar', [\OCP\Share::SHARE_TYPE_USER, \OCP\Share::SHARE_TYPE_GROUP], function() use ($provider) { |
|
|
|
return $provider; |
|
|
|
}); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @expectedException \OC\Share20\Exception\ProviderException |
|
|
|
* @expectedExceptionMessage No provider with id foo found |
|
|
|
*/ |
|
|
|
public function testGetProviderNoProviderWithId() { |
|
|
|
$manager = new Manager( |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
|
$this->groupManager, |
|
|
|
$this->l |
|
|
|
); |
|
|
|
|
|
|
|
$this->invokePrivate($manager, 'getProvider', ['foo']); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @expectedException \OC\Share20\Exception\ProviderException |
|
|
|
* @expectedExceptionMessage Callback does not return an IShareProvider instance for provider with id foo |
|
|
|
*/ |
|
|
|
public function testGetProviderNoIShareProvider() { |
|
|
|
$manager = new Manager( |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
|
$this->groupManager, |
|
|
|
$this->l |
|
|
|
); |
|
|
|
|
|
|
|
$provider = $this->getMock('OC\Share20\IShare'); |
|
|
|
$manager->registerProvider('foo', [\OCP\Share::SHARE_TYPE_USER], function() use ($provider) { |
|
|
|
return $provider; |
|
|
|
}); |
|
|
|
$this->invokePrivate($manager, 'getProvider', ['foo']); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* @expectedException \OC\Share20\Exception\ProviderException |
|
|
|
* @expectedExceptionMessage No share provider registered for share type 1 |
|
|
|
*/ |
|
|
|
public function testGetProviderForTypeUnkownType() { |
|
|
|
$manager = new Manager( |
|
|
|
$this->logger, |
|
|
|
$this->config, |
|
|
|
$this->secureRandom, |
|
|
|
$this->hasher, |
|
|
|
$this->mountManager, |
|
|
|
$this->groupManager, |
|
|
|
$this->l |
|
|
|
); |
|
|
|
|
|
|
|
$provider = $this->getMock('OC\Share20\IShareProvider'); |
|
|
|
$manager->registerProvider('foo', [\OCP\Share::SHARE_TYPE_USER], function() use ($provider) { |
|
|
|
return $provider; |
|
|
|
}); |
|
|
|
$this->invokePrivate($manager, 'getProviderForType', [\OCP\SHARE::SHARE_TYPE_GROUP]); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
class DummyPassword { |