use OC\Cache\CappedMemoryCache;
use OC\Files\Mount\MoveableMount;
use OC\HintException;
+use OC\Share20\Exception\ProviderException;
use OCP\Files\File;
use OCP\Files\Folder;
use OCP\Files\IRootFolder;
return $this->config->getAppValue('files_sharing', 'outgoing_server2server_share_enabled', 'yes') === 'yes';
}
+ /**
+ * @inheritdoc
+ */
+ public function shareProviderExists($shareType) {
+ try {
+ $this->factory->getProviderForType($shareType);
+ } catch (ProviderException $e) {
+ return false;
+ }
+
+ return true;
+ }
+
}
*/
public function outgoingServer2ServerSharesAllowed();
+ /**
+ * Check if a given share provider exists
+ * @param int $shareType
+ * @return bool
+ * @since 9.2.0
+ */
+ public function shareProviderExists($shareType);
+
}
$this->manager->moveShare($share, 'recipient');
}
+
+ /**
+ * @dataProvider dataTestShareProviderExists
+ */
+ public function testShareProviderExists($shareType, $expected) {
+
+ $factory = $this->getMockBuilder('OCP\Share\IProviderFactory')->getMock();
+ $factory->expects($this->any())->method('getProviderForType')
+ ->willReturnCallback(function ($id) {
+ if ($id === \OCP\Share::SHARE_TYPE_USER) {
+ return true;
+ }
+ throw new Exception\ProviderException();
+ });
+
+ $manager = new Manager(
+ $this->logger,
+ $this->config,
+ $this->secureRandom,
+ $this->hasher,
+ $this->mountManager,
+ $this->groupManager,
+ $this->l,
+ $factory,
+ $this->userManager,
+ $this->rootFolder,
+ $this->eventDispatcher
+ );
+ $this->assertSame($expected,
+ $manager->shareProviderExists($shareType)
+ );
+ }
+
+ public function dataTestShareProviderExists() {
+ return [
+ [\OCP\Share::SHARE_TYPE_USER, true],
+ [42, false],
+ ];
+ }
+
public function testGetSharesInFolder() {
$factory = new DummyFactory2($this->createMock(IServerContainer::class));