Check if the user/group exists for dav shares
Signed-off-by: Joas Schilling <coding@schilljs.com>
This commit is contained in:
parent
9ba51247f0
commit
3b4ab6560b
|
@ -49,7 +49,7 @@ $db = \OC::$server->getDatabaseConnection();
|
||||||
$userManager = \OC::$server->getUserManager();
|
$userManager = \OC::$server->getUserManager();
|
||||||
$random = \OC::$server->getSecureRandom();
|
$random = \OC::$server->getSecureRandom();
|
||||||
$dispatcher = \OC::$server->getEventDispatcher();
|
$dispatcher = \OC::$server->getEventDispatcher();
|
||||||
$calDavBackend = new CalDavBackend($db, $principalBackend, $userManager, $random, $dispatcher, true);
|
$calDavBackend = new CalDavBackend($db, $principalBackend, $userManager, \OC::$server->getGroupManager(), $random, $dispatcher, true);
|
||||||
|
|
||||||
$debugging = \OC::$server->getConfig()->getSystemValue('debug', false);
|
$debugging = \OC::$server->getConfig()->getSystemValue('debug', false);
|
||||||
|
|
||||||
|
|
|
@ -48,7 +48,7 @@ $principalBackend = new Principal(
|
||||||
'principals/'
|
'principals/'
|
||||||
);
|
);
|
||||||
$db = \OC::$server->getDatabaseConnection();
|
$db = \OC::$server->getDatabaseConnection();
|
||||||
$cardDavBackend = new CardDavBackend($db, $principalBackend, \OC::$server->getUserManager(), \OC::$server->getEventDispatcher());
|
$cardDavBackend = new CardDavBackend($db, $principalBackend, \OC::$server->getUserManager(), \OC::$server->getGroupManager(), \OC::$server->getEventDispatcher());
|
||||||
|
|
||||||
$debugging = \OC::$server->getConfig()->getSystemValue('debug', false);
|
$debugging = \OC::$server->getConfig()->getSystemValue('debug', false);
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@ use OCP\DB\QueryBuilder\IQueryBuilder;
|
||||||
use OCA\DAV\Connector\Sabre\Principal;
|
use OCA\DAV\Connector\Sabre\Principal;
|
||||||
use OCA\DAV\DAV\Sharing\Backend;
|
use OCA\DAV\DAV\Sharing\Backend;
|
||||||
use OCP\IDBConnection;
|
use OCP\IDBConnection;
|
||||||
|
use OCP\IGroupManager;
|
||||||
use OCP\IUser;
|
use OCP\IUser;
|
||||||
use OCP\IUserManager;
|
use OCP\IUserManager;
|
||||||
use OCP\Security\ISecureRandom;
|
use OCP\Security\ISecureRandom;
|
||||||
|
@ -158,6 +159,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
|
||||||
* @param IDBConnection $db
|
* @param IDBConnection $db
|
||||||
* @param Principal $principalBackend
|
* @param Principal $principalBackend
|
||||||
* @param IUserManager $userManager
|
* @param IUserManager $userManager
|
||||||
|
* @param IGroupManager $groupManager
|
||||||
* @param ISecureRandom $random
|
* @param ISecureRandom $random
|
||||||
* @param EventDispatcherInterface $dispatcher
|
* @param EventDispatcherInterface $dispatcher
|
||||||
* @param bool $legacyEndpoint
|
* @param bool $legacyEndpoint
|
||||||
|
@ -165,13 +167,14 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
|
||||||
public function __construct(IDBConnection $db,
|
public function __construct(IDBConnection $db,
|
||||||
Principal $principalBackend,
|
Principal $principalBackend,
|
||||||
IUserManager $userManager,
|
IUserManager $userManager,
|
||||||
|
IGroupManager $groupManager,
|
||||||
ISecureRandom $random,
|
ISecureRandom $random,
|
||||||
EventDispatcherInterface $dispatcher,
|
EventDispatcherInterface $dispatcher,
|
||||||
$legacyEndpoint = false) {
|
$legacyEndpoint = false) {
|
||||||
$this->db = $db;
|
$this->db = $db;
|
||||||
$this->principalBackend = $principalBackend;
|
$this->principalBackend = $principalBackend;
|
||||||
$this->userManager = $userManager;
|
$this->userManager = $userManager;
|
||||||
$this->sharingBackend = new Backend($this->db, $principalBackend, 'calendar');
|
$this->sharingBackend = new Backend($this->db, $this->userManager, $groupManager, $principalBackend, 'calendar');
|
||||||
$this->random = $random;
|
$this->random = $random;
|
||||||
$this->dispatcher = $dispatcher;
|
$this->dispatcher = $dispatcher;
|
||||||
$this->legacyEndpoint = $legacyEndpoint;
|
$this->legacyEndpoint = $legacyEndpoint;
|
||||||
|
|
|
@ -33,6 +33,7 @@ use OCP\DB\QueryBuilder\IQueryBuilder;
|
||||||
use OCA\DAV\DAV\Sharing\Backend;
|
use OCA\DAV\DAV\Sharing\Backend;
|
||||||
use OCA\DAV\DAV\Sharing\IShareable;
|
use OCA\DAV\DAV\Sharing\IShareable;
|
||||||
use OCP\IDBConnection;
|
use OCP\IDBConnection;
|
||||||
|
use OCP\IGroupManager;
|
||||||
use OCP\IUser;
|
use OCP\IUser;
|
||||||
use OCP\IUserManager;
|
use OCP\IUserManager;
|
||||||
use PDO;
|
use PDO;
|
||||||
|
@ -88,17 +89,19 @@ class CardDavBackend implements BackendInterface, SyncSupport {
|
||||||
* @param IDBConnection $db
|
* @param IDBConnection $db
|
||||||
* @param Principal $principalBackend
|
* @param Principal $principalBackend
|
||||||
* @param IUserManager $userManager
|
* @param IUserManager $userManager
|
||||||
|
* @param IGroupManager $groupManager
|
||||||
* @param EventDispatcherInterface $dispatcher
|
* @param EventDispatcherInterface $dispatcher
|
||||||
*/
|
*/
|
||||||
public function __construct(IDBConnection $db,
|
public function __construct(IDBConnection $db,
|
||||||
Principal $principalBackend,
|
Principal $principalBackend,
|
||||||
IUserManager $userManager,
|
IUserManager $userManager,
|
||||||
|
IGroupManager $groupManager,
|
||||||
EventDispatcherInterface $dispatcher) {
|
EventDispatcherInterface $dispatcher) {
|
||||||
$this->db = $db;
|
$this->db = $db;
|
||||||
$this->principalBackend = $principalBackend;
|
$this->principalBackend = $principalBackend;
|
||||||
$this->userManager = $userManager;
|
$this->userManager = $userManager;
|
||||||
$this->dispatcher = $dispatcher;
|
$this->dispatcher = $dispatcher;
|
||||||
$this->sharingBackend = new Backend($this->db, $principalBackend, 'addressbook');
|
$this->sharingBackend = new Backend($this->db, $this->userManager, $groupManager, $principalBackend, 'addressbook');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -79,7 +79,7 @@ class CreateCalendar extends Command {
|
||||||
$dispatcher = \OC::$server->getEventDispatcher();
|
$dispatcher = \OC::$server->getEventDispatcher();
|
||||||
|
|
||||||
$name = $input->getArgument('name');
|
$name = $input->getArgument('name');
|
||||||
$caldav = new CalDavBackend($this->dbConnection, $principalBackend, $this->userManager, $random, $dispatcher);
|
$caldav = new CalDavBackend($this->dbConnection, $principalBackend, $this->userManager, $this->groupManager, $random, $dispatcher);
|
||||||
$caldav->createCalendar("principals/users/$user", $name, []);
|
$caldav->createCalendar("principals/users/$user", $name, []);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,11 +26,17 @@ namespace OCA\DAV\DAV\Sharing;
|
||||||
|
|
||||||
use OCA\DAV\Connector\Sabre\Principal;
|
use OCA\DAV\Connector\Sabre\Principal;
|
||||||
use OCP\IDBConnection;
|
use OCP\IDBConnection;
|
||||||
|
use OCP\IGroupManager;
|
||||||
|
use OCP\IUserManager;
|
||||||
|
|
||||||
class Backend {
|
class Backend {
|
||||||
|
|
||||||
/** @var IDBConnection */
|
/** @var IDBConnection */
|
||||||
private $db;
|
private $db;
|
||||||
|
/** @var IUserManager */
|
||||||
|
private $userManager;
|
||||||
|
/** @var IGroupManager */
|
||||||
|
private $groupManager;
|
||||||
/** @var Principal */
|
/** @var Principal */
|
||||||
private $principalBackend;
|
private $principalBackend;
|
||||||
/** @var string */
|
/** @var string */
|
||||||
|
@ -42,11 +48,15 @@ class Backend {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param IDBConnection $db
|
* @param IDBConnection $db
|
||||||
|
* @param IUserManager $userManager
|
||||||
|
* @param IGroupManager $groupManager
|
||||||
* @param Principal $principalBackend
|
* @param Principal $principalBackend
|
||||||
* @param string $resourceType
|
* @param string $resourceType
|
||||||
*/
|
*/
|
||||||
public function __construct(IDBConnection $db, Principal $principalBackend, $resourceType) {
|
public function __construct(IDBConnection $db, IUserManager $userManager, IGroupManager $groupManager, Principal $principalBackend, $resourceType) {
|
||||||
$this->db = $db;
|
$this->db = $db;
|
||||||
|
$this->userManager = $userManager;
|
||||||
|
$this->groupManager = $groupManager;
|
||||||
$this->principalBackend = $principalBackend;
|
$this->principalBackend = $principalBackend;
|
||||||
$this->resourceType = $resourceType;
|
$this->resourceType = $resourceType;
|
||||||
}
|
}
|
||||||
|
@ -81,6 +91,18 @@ class Backend {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$principal = explode('/', $parts[1], 3);
|
||||||
|
if (count($principal) !== 3 || $principal[0] !== 'principals' || !in_array($principal[1], ['users', 'groups'], true)) {
|
||||||
|
// Invalid principal
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (($principal[1] === 'users' && !$this->userManager->userExists($principal[2])) ||
|
||||||
|
($principal[1] === 'groups' && !$this->groupManager->groupExists($principal[2]))) {
|
||||||
|
// User or group does not exist
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// remove the share if it already exists
|
// remove the share if it already exists
|
||||||
$this->unshare($shareable, $element['href']);
|
$this->unshare($shareable, $element['href']);
|
||||||
$access = self::ACCESS_READ;
|
$access = self::ACCESS_READ;
|
||||||
|
|
|
@ -41,15 +41,14 @@ class RootCollection extends SimpleCollection {
|
||||||
$config = \OC::$server->getConfig();
|
$config = \OC::$server->getConfig();
|
||||||
$random = \OC::$server->getSecureRandom();
|
$random = \OC::$server->getSecureRandom();
|
||||||
$userManager = \OC::$server->getUserManager();
|
$userManager = \OC::$server->getUserManager();
|
||||||
|
$groupManager = \OC::$server->getGroupManager();
|
||||||
$db = \OC::$server->getDatabaseConnection();
|
$db = \OC::$server->getDatabaseConnection();
|
||||||
$dispatcher = \OC::$server->getEventDispatcher();
|
$dispatcher = \OC::$server->getEventDispatcher();
|
||||||
$userPrincipalBackend = new Principal(
|
$userPrincipalBackend = new Principal(
|
||||||
$userManager,
|
$userManager,
|
||||||
\OC::$server->getGroupManager()
|
$groupManager
|
||||||
);
|
|
||||||
$groupPrincipalBackend = new GroupPrincipalBackend(
|
|
||||||
\OC::$server->getGroupManager()
|
|
||||||
);
|
);
|
||||||
|
$groupPrincipalBackend = new GroupPrincipalBackend($groupManager);
|
||||||
// as soon as debug mode is enabled we allow listing of principals
|
// as soon as debug mode is enabled we allow listing of principals
|
||||||
$disableListing = !$config->getSystemValue('debug', false);
|
$disableListing = !$config->getSystemValue('debug', false);
|
||||||
|
|
||||||
|
@ -62,7 +61,7 @@ class RootCollection extends SimpleCollection {
|
||||||
$systemPrincipals->disableListing = $disableListing;
|
$systemPrincipals->disableListing = $disableListing;
|
||||||
$filesCollection = new Files\RootCollection($userPrincipalBackend, 'principals/users');
|
$filesCollection = new Files\RootCollection($userPrincipalBackend, 'principals/users');
|
||||||
$filesCollection->disableListing = $disableListing;
|
$filesCollection->disableListing = $disableListing;
|
||||||
$caldavBackend = new CalDavBackend($db, $userPrincipalBackend, $userManager, $random, $dispatcher);
|
$caldavBackend = new CalDavBackend($db, $userPrincipalBackend, $userManager, $groupManager, $random, $dispatcher);
|
||||||
$calendarRoot = new CalendarRoot($userPrincipalBackend, $caldavBackend, 'principals/users');
|
$calendarRoot = new CalendarRoot($userPrincipalBackend, $caldavBackend, 'principals/users');
|
||||||
$calendarRoot->disableListing = $disableListing;
|
$calendarRoot->disableListing = $disableListing;
|
||||||
$publicCalendarRoot = new PublicCalendarRoot($caldavBackend);
|
$publicCalendarRoot = new PublicCalendarRoot($caldavBackend);
|
||||||
|
@ -71,28 +70,28 @@ class RootCollection extends SimpleCollection {
|
||||||
$systemTagCollection = new SystemTag\SystemTagsByIdCollection(
|
$systemTagCollection = new SystemTag\SystemTagsByIdCollection(
|
||||||
\OC::$server->getSystemTagManager(),
|
\OC::$server->getSystemTagManager(),
|
||||||
\OC::$server->getUserSession(),
|
\OC::$server->getUserSession(),
|
||||||
\OC::$server->getGroupManager()
|
$groupManager
|
||||||
);
|
);
|
||||||
$systemTagRelationsCollection = new SystemTag\SystemTagsRelationsCollection(
|
$systemTagRelationsCollection = new SystemTag\SystemTagsRelationsCollection(
|
||||||
\OC::$server->getSystemTagManager(),
|
\OC::$server->getSystemTagManager(),
|
||||||
\OC::$server->getSystemTagObjectMapper(),
|
\OC::$server->getSystemTagObjectMapper(),
|
||||||
\OC::$server->getUserSession(),
|
\OC::$server->getUserSession(),
|
||||||
\OC::$server->getGroupManager(),
|
$groupManager,
|
||||||
\OC::$server->getEventDispatcher()
|
\OC::$server->getEventDispatcher()
|
||||||
);
|
);
|
||||||
$commentsCollection = new Comments\RootCollection(
|
$commentsCollection = new Comments\RootCollection(
|
||||||
\OC::$server->getCommentsManager(),
|
\OC::$server->getCommentsManager(),
|
||||||
\OC::$server->getUserManager(),
|
$userManager,
|
||||||
\OC::$server->getUserSession(),
|
\OC::$server->getUserSession(),
|
||||||
\OC::$server->getEventDispatcher(),
|
\OC::$server->getEventDispatcher(),
|
||||||
\OC::$server->getLogger()
|
\OC::$server->getLogger()
|
||||||
);
|
);
|
||||||
|
|
||||||
$usersCardDavBackend = new CardDavBackend($db, $userPrincipalBackend, \OC::$server->getUserManager(), $dispatcher);
|
$usersCardDavBackend = new CardDavBackend($db, $userPrincipalBackend, $userManager, $groupManager, $dispatcher);
|
||||||
$usersAddressBookRoot = new AddressBookRoot($userPrincipalBackend, $usersCardDavBackend, 'principals/users');
|
$usersAddressBookRoot = new AddressBookRoot($userPrincipalBackend, $usersCardDavBackend, 'principals/users');
|
||||||
$usersAddressBookRoot->disableListing = $disableListing;
|
$usersAddressBookRoot->disableListing = $disableListing;
|
||||||
|
|
||||||
$systemCardDavBackend = new CardDavBackend($db, $userPrincipalBackend, \OC::$server->getUserManager(), $dispatcher);
|
$systemCardDavBackend = new CardDavBackend($db, $userPrincipalBackend, $userManager, $groupManager, $dispatcher);
|
||||||
$systemAddressBookRoot = new AddressBookRoot(new SystemPrincipalBackend(), $systemCardDavBackend, 'principals/system');
|
$systemAddressBookRoot = new AddressBookRoot(new SystemPrincipalBackend(), $systemCardDavBackend, 'principals/system');
|
||||||
$systemAddressBookRoot->disableListing = $disableListing;
|
$systemAddressBookRoot->disableListing = $disableListing;
|
||||||
|
|
||||||
|
|
|
@ -24,6 +24,7 @@ namespace OCA\DAV\Tests\unit\CalDAV;
|
||||||
|
|
||||||
use OCA\DAV\CalDAV\CalDavBackend;
|
use OCA\DAV\CalDAV\CalDavBackend;
|
||||||
use OCA\DAV\Connector\Sabre\Principal;
|
use OCA\DAV\Connector\Sabre\Principal;
|
||||||
|
use OCP\IGroupManager;
|
||||||
use OCP\IUserManager;
|
use OCP\IUserManager;
|
||||||
use OCP\Security\ISecureRandom;
|
use OCP\Security\ISecureRandom;
|
||||||
use Sabre\CalDAV\Xml\Property\SupportedCalendarComponentSet;
|
use Sabre\CalDAV\Xml\Property\SupportedCalendarComponentSet;
|
||||||
|
@ -37,7 +38,7 @@ use Test\TestCase;
|
||||||
*
|
*
|
||||||
* @package OCA\DAV\Tests\unit\CalDAV
|
* @package OCA\DAV\Tests\unit\CalDAV
|
||||||
*/
|
*/
|
||||||
abstract class AbstractCalDavBackendTest extends TestCase {
|
abstract class AbstractCalDavBackend extends TestCase {
|
||||||
|
|
||||||
/** @var CalDavBackend */
|
/** @var CalDavBackend */
|
||||||
protected $backend;
|
protected $backend;
|
||||||
|
@ -46,6 +47,8 @@ abstract class AbstractCalDavBackendTest extends TestCase {
|
||||||
protected $principal;
|
protected $principal;
|
||||||
/** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
|
/** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
|
||||||
protected $userManager;
|
protected $userManager;
|
||||||
|
/** @var IGroupManager|\PHPUnit_Framework_MockObject_MockObject */
|
||||||
|
protected $groupManager;
|
||||||
/** @var EventDispatcherInterface|\PHPUnit_Framework_MockObject_MockObject */
|
/** @var EventDispatcherInterface|\PHPUnit_Framework_MockObject_MockObject */
|
||||||
protected $dispatcher;
|
protected $dispatcher;
|
||||||
|
|
||||||
|
@ -61,6 +64,7 @@ abstract class AbstractCalDavBackendTest extends TestCase {
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
$this->userManager = $this->createMock(IUserManager::class);
|
$this->userManager = $this->createMock(IUserManager::class);
|
||||||
|
$this->groupManager = $this->createMock(IGroupManager::class);
|
||||||
$this->dispatcher = $this->createMock(EventDispatcherInterface::class);
|
$this->dispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||||
$this->principal = $this->getMockBuilder('OCA\DAV\Connector\Sabre\Principal')
|
$this->principal = $this->getMockBuilder('OCA\DAV\Connector\Sabre\Principal')
|
||||||
->disableOriginalConstructor()
|
->disableOriginalConstructor()
|
||||||
|
@ -77,7 +81,7 @@ abstract class AbstractCalDavBackendTest extends TestCase {
|
||||||
|
|
||||||
$db = \OC::$server->getDatabaseConnection();
|
$db = \OC::$server->getDatabaseConnection();
|
||||||
$this->random = \OC::$server->getSecureRandom();
|
$this->random = \OC::$server->getSecureRandom();
|
||||||
$this->backend = new CalDavBackend($db, $this->principal, $this->userManager, $this->random, $this->dispatcher);
|
$this->backend = new CalDavBackend($db, $this->principal, $this->userManager, $this->groupManager, $this->random, $this->dispatcher);
|
||||||
|
|
||||||
$this->cleanUpBackend();
|
$this->cleanUpBackend();
|
||||||
}
|
}
|
|
@ -42,7 +42,7 @@ use Sabre\DAVACL\IACL;
|
||||||
*
|
*
|
||||||
* @package OCA\DAV\Tests\unit\CalDAV
|
* @package OCA\DAV\Tests\unit\CalDAV
|
||||||
*/
|
*/
|
||||||
class CalDavBackendTest extends AbstractCalDavBackendTest {
|
class CalDavBackendTest extends AbstractCalDavBackend {
|
||||||
|
|
||||||
public function testCalendarOperations() {
|
public function testCalendarOperations() {
|
||||||
|
|
||||||
|
@ -130,6 +130,14 @@ class CalDavBackendTest extends AbstractCalDavBackendTest {
|
||||||
return vsprintf($text, $parameters);
|
return vsprintf($text, $parameters);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
$this->userManager->expects($this->any())
|
||||||
|
->method('userExists')
|
||||||
|
->willReturn(true);
|
||||||
|
|
||||||
|
$this->userManager->expects($this->any())
|
||||||
|
->method('groupExists')
|
||||||
|
->willReturn(true);
|
||||||
|
|
||||||
$calendarId = $this->createTestCalendar();
|
$calendarId = $this->createTestCalendar();
|
||||||
$calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER);
|
$calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER);
|
||||||
$this->assertCount(1, $calendars);
|
$this->assertCount(1, $calendars);
|
||||||
|
|
|
@ -5,6 +5,7 @@ namespace OCA\DAV\Tests\unit\CalDAV;
|
||||||
use OCA\DAV\CalDAV\Calendar;
|
use OCA\DAV\CalDAV\Calendar;
|
||||||
use OCA\DAV\CalDAV\PublicCalendar;
|
use OCA\DAV\CalDAV\PublicCalendar;
|
||||||
use OCA\DAV\Connector\Sabre\Principal;
|
use OCA\DAV\Connector\Sabre\Principal;
|
||||||
|
use OCP\IGroupManager;
|
||||||
use OCP\IL10N;
|
use OCP\IL10N;
|
||||||
use OCA\DAV\CalDAV\CalDavBackend;
|
use OCA\DAV\CalDAV\CalDavBackend;
|
||||||
use OCA\DAV\CalDAV\PublicCalendarRoot;
|
use OCA\DAV\CalDAV\PublicCalendarRoot;
|
||||||
|
@ -33,6 +34,8 @@ class PublicCalendarRootTest extends TestCase {
|
||||||
private $principal;
|
private $principal;
|
||||||
/** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
|
/** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
|
||||||
protected $userManager;
|
protected $userManager;
|
||||||
|
/** @var IGroupManager|\PHPUnit_Framework_MockObject_MockObject */
|
||||||
|
protected $groupManager;
|
||||||
|
|
||||||
/** @var ISecureRandom */
|
/** @var ISecureRandom */
|
||||||
private $random;
|
private $random;
|
||||||
|
@ -43,6 +46,7 @@ class PublicCalendarRootTest extends TestCase {
|
||||||
$db = \OC::$server->getDatabaseConnection();
|
$db = \OC::$server->getDatabaseConnection();
|
||||||
$this->principal = $this->createMock('OCA\DAV\Connector\Sabre\Principal');
|
$this->principal = $this->createMock('OCA\DAV\Connector\Sabre\Principal');
|
||||||
$this->userManager = $this->createMock(IUserManager::class);
|
$this->userManager = $this->createMock(IUserManager::class);
|
||||||
|
$this->groupManager = $this->createMock(IGroupManager::class);
|
||||||
$this->random = \OC::$server->getSecureRandom();
|
$this->random = \OC::$server->getSecureRandom();
|
||||||
$dispatcher = $this->createMock(EventDispatcherInterface::class);
|
$dispatcher = $this->createMock(EventDispatcherInterface::class);
|
||||||
|
|
||||||
|
@ -54,6 +58,7 @@ class PublicCalendarRootTest extends TestCase {
|
||||||
$db,
|
$db,
|
||||||
$this->principal,
|
$this->principal,
|
||||||
$this->userManager,
|
$this->userManager,
|
||||||
|
$this->groupManager,
|
||||||
$this->random,
|
$this->random,
|
||||||
$dispatcher
|
$dispatcher
|
||||||
);
|
);
|
||||||
|
|
|
@ -33,6 +33,7 @@ use OCA\DAV\CardDAV\CardDavBackend;
|
||||||
use OCA\DAV\Connector\Sabre\Principal;
|
use OCA\DAV\Connector\Sabre\Principal;
|
||||||
use OCP\DB\QueryBuilder\IQueryBuilder;
|
use OCP\DB\QueryBuilder\IQueryBuilder;
|
||||||
use OCP\IDBConnection;
|
use OCP\IDBConnection;
|
||||||
|
use OCP\IGroupManager;
|
||||||
use OCP\IL10N;
|
use OCP\IL10N;
|
||||||
use OCP\IUserManager;
|
use OCP\IUserManager;
|
||||||
use Sabre\DAV\PropPatch;
|
use Sabre\DAV\PropPatch;
|
||||||
|
@ -60,6 +61,9 @@ class CardDavBackendTest extends TestCase {
|
||||||
/** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
|
/** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
|
||||||
private $userManager;
|
private $userManager;
|
||||||
|
|
||||||
|
/** @var IGroupManager|\PHPUnit_Framework_MockObject_MockObject */
|
||||||
|
private $groupManager;
|
||||||
|
|
||||||
/** @var EventDispatcherInterface|\PHPUnit_Framework_MockObject_MockObject */
|
/** @var EventDispatcherInterface|\PHPUnit_Framework_MockObject_MockObject */
|
||||||
private $dispatcher;
|
private $dispatcher;
|
||||||
|
|
||||||
|
@ -80,6 +84,7 @@ class CardDavBackendTest extends TestCase {
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
|
||||||
$this->userManager = $this->createMock(IUserManager::class);
|
$this->userManager = $this->createMock(IUserManager::class);
|
||||||
|
$this->groupManager = $this->createMock(IGroupManager::class);
|
||||||
$this->principal = $this->getMockBuilder('OCA\DAV\Connector\Sabre\Principal')
|
$this->principal = $this->getMockBuilder('OCA\DAV\Connector\Sabre\Principal')
|
||||||
->disableOriginalConstructor()
|
->disableOriginalConstructor()
|
||||||
->setMethods(['getPrincipalByPath', 'getGroupMembership'])
|
->setMethods(['getPrincipalByPath', 'getGroupMembership'])
|
||||||
|
@ -96,7 +101,7 @@ class CardDavBackendTest extends TestCase {
|
||||||
|
|
||||||
$this->db = \OC::$server->getDatabaseConnection();
|
$this->db = \OC::$server->getDatabaseConnection();
|
||||||
|
|
||||||
$this->backend = new CardDavBackend($this->db, $this->principal, $this->userManager, $this->dispatcher);
|
$this->backend = new CardDavBackend($this->db, $this->principal, $this->userManager, $this->groupManager, $this->dispatcher);
|
||||||
// start every test with a empty cards_properties and cards table
|
// start every test with a empty cards_properties and cards table
|
||||||
$query = $this->db->getQueryBuilder();
|
$query = $this->db->getQueryBuilder();
|
||||||
$query->delete('cards_properties')->execute();
|
$query->delete('cards_properties')->execute();
|
||||||
|
@ -154,6 +159,14 @@ class CardDavBackendTest extends TestCase {
|
||||||
|
|
||||||
public function testAddressBookSharing() {
|
public function testAddressBookSharing() {
|
||||||
|
|
||||||
|
$this->userManager->expects($this->any())
|
||||||
|
->method('userExists')
|
||||||
|
->willReturn(true);
|
||||||
|
|
||||||
|
$this->groupManager->expects($this->any())
|
||||||
|
->method('groupExists')
|
||||||
|
->willReturn(true);
|
||||||
|
|
||||||
$this->backend->createAddressBook(self::UNIT_TEST_USER, 'Example', []);
|
$this->backend->createAddressBook(self::UNIT_TEST_USER, 'Example', []);
|
||||||
$books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER);
|
$books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER);
|
||||||
$this->assertEquals(1, count($books));
|
$this->assertEquals(1, count($books));
|
||||||
|
@ -180,7 +193,7 @@ class CardDavBackendTest extends TestCase {
|
||||||
|
|
||||||
/** @var CardDavBackend | \PHPUnit_Framework_MockObject_MockObject $backend */
|
/** @var CardDavBackend | \PHPUnit_Framework_MockObject_MockObject $backend */
|
||||||
$backend = $this->getMockBuilder(CardDavBackend::class)
|
$backend = $this->getMockBuilder(CardDavBackend::class)
|
||||||
->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher])
|
->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->groupManager, $this->dispatcher])
|
||||||
->setMethods(['updateProperties', 'purgeProperties'])->getMock();
|
->setMethods(['updateProperties', 'purgeProperties'])->getMock();
|
||||||
|
|
||||||
// create a new address book
|
// create a new address book
|
||||||
|
@ -253,7 +266,7 @@ class CardDavBackendTest extends TestCase {
|
||||||
public function testMultiCard() {
|
public function testMultiCard() {
|
||||||
|
|
||||||
$this->backend = $this->getMockBuilder(CardDavBackend::class)
|
$this->backend = $this->getMockBuilder(CardDavBackend::class)
|
||||||
->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher])
|
->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->groupManager, $this->dispatcher])
|
||||||
->setMethods(['updateProperties'])->getMock();
|
->setMethods(['updateProperties'])->getMock();
|
||||||
|
|
||||||
// create a new address book
|
// create a new address book
|
||||||
|
@ -299,7 +312,7 @@ class CardDavBackendTest extends TestCase {
|
||||||
|
|
||||||
public function testDeleteWithoutCard() {
|
public function testDeleteWithoutCard() {
|
||||||
$this->backend = $this->getMockBuilder(CardDavBackend::class)
|
$this->backend = $this->getMockBuilder(CardDavBackend::class)
|
||||||
->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher])
|
->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->groupManager, $this->dispatcher])
|
||||||
->setMethods([
|
->setMethods([
|
||||||
'getCardId',
|
'getCardId',
|
||||||
'addChange',
|
'addChange',
|
||||||
|
@ -339,7 +352,7 @@ class CardDavBackendTest extends TestCase {
|
||||||
|
|
||||||
public function testSyncSupport() {
|
public function testSyncSupport() {
|
||||||
$this->backend = $this->getMockBuilder(CardDavBackend::class)
|
$this->backend = $this->getMockBuilder(CardDavBackend::class)
|
||||||
->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher])
|
->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->groupManager, $this->dispatcher])
|
||||||
->setMethods(['updateProperties'])->getMock();
|
->setMethods(['updateProperties'])->getMock();
|
||||||
|
|
||||||
// create a new address book
|
// create a new address book
|
||||||
|
@ -362,32 +375,41 @@ class CardDavBackendTest extends TestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testSharing() {
|
public function testSharing() {
|
||||||
|
|
||||||
|
$this->userManager->expects($this->any())
|
||||||
|
->method('userExists')
|
||||||
|
->willReturn(true);
|
||||||
|
|
||||||
|
$this->groupManager->expects($this->any())
|
||||||
|
->method('groupExists')
|
||||||
|
->willReturn(true);
|
||||||
|
|
||||||
$this->backend->createAddressBook(self::UNIT_TEST_USER, 'Example', []);
|
$this->backend->createAddressBook(self::UNIT_TEST_USER, 'Example', []);
|
||||||
$books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER);
|
$books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER);
|
||||||
$this->assertEquals(1, count($books));
|
$this->assertEquals(1, count($books));
|
||||||
|
|
||||||
$l = $this->createMock(IL10N::class);
|
$l = $this->createMock(IL10N::class);
|
||||||
$exampleBook = new AddressBook($this->backend, $books[0], $l);
|
$exampleBook = new AddressBook($this->backend, $books[0], $l);
|
||||||
$this->backend->updateShares($exampleBook, [['href' => 'principal:principals/best-friend']], []);
|
$this->backend->updateShares($exampleBook, [['href' => 'principal:' . self::UNIT_TEST_USER1]], []);
|
||||||
|
|
||||||
$shares = $this->backend->getShares($exampleBook->getResourceId());
|
$shares = $this->backend->getShares($exampleBook->getResourceId());
|
||||||
$this->assertEquals(1, count($shares));
|
$this->assertEquals(1, count($shares));
|
||||||
|
|
||||||
// adding the same sharee again has no effect
|
// adding the same sharee again has no effect
|
||||||
$this->backend->updateShares($exampleBook, [['href' => 'principal:principals/best-friend']], []);
|
$this->backend->updateShares($exampleBook, [['href' => 'principal:' . self::UNIT_TEST_USER1]], []);
|
||||||
|
|
||||||
$shares = $this->backend->getShares($exampleBook->getResourceId());
|
$shares = $this->backend->getShares($exampleBook->getResourceId());
|
||||||
$this->assertEquals(1, count($shares));
|
$this->assertEquals(1, count($shares));
|
||||||
|
|
||||||
$books = $this->backend->getAddressBooksForUser('principals/best-friend');
|
$books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER1);
|
||||||
$this->assertEquals(1, count($books));
|
$this->assertEquals(1, count($books));
|
||||||
|
|
||||||
$this->backend->updateShares($exampleBook, [], ['principal:principals/best-friend']);
|
$this->backend->updateShares($exampleBook, [], ['principal:' . self::UNIT_TEST_USER1]);
|
||||||
|
|
||||||
$shares = $this->backend->getShares($exampleBook->getResourceId());
|
$shares = $this->backend->getShares($exampleBook->getResourceId());
|
||||||
$this->assertEquals(0, count($shares));
|
$this->assertEquals(0, count($shares));
|
||||||
|
|
||||||
$books = $this->backend->getAddressBooksForUser('principals/best-friend');
|
$books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER1);
|
||||||
$this->assertEquals(0, count($books));
|
$this->assertEquals(0, count($books));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -398,7 +420,7 @@ class CardDavBackendTest extends TestCase {
|
||||||
$cardId = 2;
|
$cardId = 2;
|
||||||
|
|
||||||
$backend = $this->getMockBuilder(CardDavBackend::class)
|
$backend = $this->getMockBuilder(CardDavBackend::class)
|
||||||
->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->dispatcher])
|
->setConstructorArgs([$this->db, $this->principal, $this->userManager, $this->groupManager, $this->dispatcher])
|
||||||
->setMethods(['getCardId'])->getMock();
|
->setMethods(['getCardId'])->getMock();
|
||||||
|
|
||||||
$backend->expects($this->any())->method('getCardId')->willReturn($cardId);
|
$backend->expects($this->any())->method('getCardId')->willReturn($cardId);
|
||||||
|
|
Loading…
Reference in New Issue