parent
369c3b5d7e
commit
082f456b8b
@ -0,0 +1,163 @@ |
||||
<?php |
||||
/** |
||||
* @author Joas Schilling <nickvergessen@owncloud.com> |
||||
* @author Thomas Müller <thomas.mueller@tmit.eu> |
||||
* |
||||
* @copyright Copyright (c) 2016, ownCloud, Inc. |
||||
* @license AGPL-3.0 |
||||
* |
||||
* This code is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License, version 3, |
||||
* as published by the Free Software Foundation. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License, version 3, |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
||||
* |
||||
*/ |
||||
|
||||
namespace OCA\DAV\Tests\unit\CalDAV; |
||||
|
||||
use DateTime; |
||||
use DateTimeZone; |
||||
use OCA\DAV\CalDAV\CalDavBackend; |
||||
use OCA\DAV\CalDAV\Calendar; |
||||
use OCA\DAV\Connector\Sabre\Principal; |
||||
use OCP\IL10N; |
||||
use Sabre\CalDAV\Xml\Property\SupportedCalendarComponentSet; |
||||
use Sabre\DAV\PropPatch; |
||||
use Sabre\DAV\Xml\Property\Href; |
||||
use Sabre\DAVACL\IACL; |
||||
use Test\TestCase; |
||||
|
||||
/** |
||||
* Class CalDavBackendTest |
||||
* |
||||
* @group DB |
||||
* |
||||
* @package OCA\DAV\Tests\unit\CalDAV |
||||
*/ |
||||
abstract class AbstractCalDavBackendTest extends TestCase { |
||||
|
||||
/** @var CalDavBackend */ |
||||
protected $backend; |
||||
|
||||
/** @var Principal | \PHPUnit_Framework_MockObject_MockObject */ |
||||
protected $principal; |
||||
|
||||
const UNIT_TEST_USER = 'principals/users/caldav-unit-test'; |
||||
const UNIT_TEST_USER1 = 'principals/users/caldav-unit-test1'; |
||||
const UNIT_TEST_GROUP = 'principals/groups/caldav-unit-test-group'; |
||||
|
||||
public function setUp() { |
||||
parent::setUp(); |
||||
|
||||
$this->principal = $this->getMockBuilder('OCA\DAV\Connector\Sabre\Principal') |
||||
->disableOriginalConstructor() |
||||
->setMethods(['getPrincipalByPath', 'getGroupMembership']) |
||||
->getMock(); |
||||
$this->principal->expects($this->any())->method('getPrincipalByPath') |
||||
->willReturn([ |
||||
'uri' => 'principals/best-friend' |
||||
]); |
||||
$this->principal->expects($this->any())->method('getGroupMembership') |
||||
->withAnyParameters() |
||||
->willReturn([self::UNIT_TEST_GROUP]); |
||||
|
||||
$db = \OC::$server->getDatabaseConnection(); |
||||
$this->backend = new CalDavBackend($db, $this->principal); |
||||
|
||||
$this->tearDown(); |
||||
} |
||||
|
||||
public function tearDown() { |
||||
parent::tearDown(); |
||||
|
||||
if (is_null($this->backend)) { |
||||
return; |
||||
} |
||||
$books = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER); |
||||
foreach ($books as $book) { |
||||
$this->backend->deleteCalendar($book['id']); |
||||
} |
||||
$subscriptions = $this->backend->getSubscriptionsForUser(self::UNIT_TEST_USER); |
||||
foreach ($subscriptions as $subscription) { |
||||
$this->backend->deleteSubscription($subscription['id']); |
||||
} |
||||
} |
||||
|
||||
protected function createTestCalendar() { |
||||
$this->backend->createCalendar(self::UNIT_TEST_USER, 'Example', [ |
||||
'{http://apple.com/ns/ical/}calendar-color' => '#1C4587FF' |
||||
]); |
||||
$calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER); |
||||
$this->assertEquals(1, count($calendars)); |
||||
$this->assertEquals(self::UNIT_TEST_USER, $calendars[0]['principaluri']); |
||||
/** @var SupportedCalendarComponentSet $components */ |
||||
$components = $calendars[0]['{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set']; |
||||
$this->assertEquals(['VEVENT','VTODO'], $components->getValue()); |
||||
$color = $calendars[0]['{http://apple.com/ns/ical/}calendar-color']; |
||||
$this->assertEquals('#1C4587FF', $color); |
||||
$this->assertEquals('Example', $calendars[0]['uri']); |
||||
$this->assertEquals('Example', $calendars[0]['{DAV:}displayname']); |
||||
$calendarId = $calendars[0]['id']; |
||||
|
||||
return $calendarId; |
||||
} |
||||
|
||||
protected function createEvent($calendarId, $start = '20130912T130000Z', $end = '20130912T140000Z') { |
||||
|
||||
$calData = <<<EOD |
||||
BEGIN:VCALENDAR |
||||
VERSION:2.0 |
||||
PRODID:ownCloud Calendar |
||||
BEGIN:VEVENT |
||||
CREATED;VALUE=DATE-TIME:20130910T125139Z |
||||
UID:47d15e3ec8 |
||||
LAST-MODIFIED;VALUE=DATE-TIME:20130910T125139Z |
||||
DTSTAMP;VALUE=DATE-TIME:20130910T125139Z |
||||
SUMMARY:Test Event |
||||
DTSTART;VALUE=DATE-TIME:$start |
||||
DTEND;VALUE=DATE-TIME:$end |
||||
CLASS:PUBLIC |
||||
END:VEVENT |
||||
END:VCALENDAR |
||||
EOD; |
||||
$uri0 = $this->getUniqueID('event'); |
||||
$this->backend->createCalendarObject($calendarId, $uri0, $calData); |
||||
|
||||
return $uri0; |
||||
} |
||||
|
||||
protected function assertAcl($principal, $privilege, $acl) { |
||||
foreach($acl as $a) { |
||||
if ($a['principal'] === $principal && $a['privilege'] === $privilege) { |
||||
$this->assertTrue(true); |
||||
return; |
||||
} |
||||
} |
||||
$this->fail("ACL does not contain $principal / $privilege"); |
||||
} |
||||
|
||||
protected function assertNotAcl($principal, $privilege, $acl) { |
||||
foreach($acl as $a) { |
||||
if ($a['principal'] === $principal && $a['privilege'] === $privilege) { |
||||
$this->fail("ACL contains $principal / $privilege"); |
||||
return; |
||||
} |
||||
} |
||||
$this->assertTrue(true); |
||||
} |
||||
|
||||
protected function assertAccess($shouldHaveAcl, $principal, $privilege, $acl) { |
||||
if ($shouldHaveAcl) { |
||||
$this->assertAcl($principal, $privilege, $acl); |
||||
} else { |
||||
$this->assertNotAcl($principal, $privilege, $acl); |
||||
} |
||||
} |
||||
} |
@ -0,0 +1,75 @@ |
||||
<?php |
||||
/** |
||||
* @author Thomas Müller <thomas.mueller@tmit.eu> |
||||
* |
||||
* @copyright Copyright (c) 2016, ownCloud, Inc. |
||||
* @license AGPL-3.0 |
||||
* |
||||
* This code is free software: you can redistribute it and/or modify |
||||
* it under the terms of the GNU Affero General Public License, version 3, |
||||
* as published by the Free Software Foundation. |
||||
* |
||||
* This program is distributed in the hope that it will be useful, |
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
* GNU Affero General Public License for more details. |
||||
* |
||||
* You should have received a copy of the GNU Affero General Public License, version 3, |
||||
* along with this program. If not, see <http://www.gnu.org/licenses/> |
||||
* |
||||
*/ |
||||
|
||||
namespace OCA\DAV\Tests\unit\DAV\Migration; |
||||
|
||||
use OCA\DAV\CalDAV\CalDavBackend; |
||||
use OCA\DAV\Migration\Classification; |
||||
use OCA\DAV\Tests\unit\CalDAV\AbstractCalDavBackendTest; |
||||
use OCP\IUser; |
||||
|
||||
/** |
||||
* Class ClassificationTest |
||||
* |
||||
* @group DB |
||||
* |
||||
* @package OCA\DAV\Tests\unit\DAV |
||||
*/ |
||||
class ClassificationTest extends AbstractCalDavBackendTest { |
||||
|
||||
/** @var \PHPUnit_Framework_MockObject_MockObject | \OCP\IUserManager */ |
||||
private $userManager; |
||||
|
||||
public function setUp() { |
||||
parent::setUp(); |
||||
|
||||
$this->userManager = $this->getMockBuilder('OCP\IUserManager') |
||||
->disableOriginalConstructor()->getMock(); |
||||
} |
||||
|
||||
public function test() { |
||||
// setup data |
||||
$calendarId = $this->createTestCalendar(); |
||||
$eventUri = $this->createEvent($calendarId, '20130912T130000Z', '20130912T140000Z'); |
||||
$object = $this->backend->getCalendarObject($calendarId, $eventUri); |
||||
|
||||
// assert proper classification |
||||
$this->assertEquals(CalDavBackend::CLASSIFICATION_PUBLIC, $object['classification']); |
||||
$this->backend->setClassification($object['id'], CalDavBackend::CLASSIFICATION_CONFIDENTIAL); |
||||
$object = $this->backend->getCalendarObject($calendarId, $eventUri); |
||||
$this->assertEquals(CalDavBackend::CLASSIFICATION_CONFIDENTIAL, $object['classification']); |
||||
|
||||
// run migration |
||||
$c = new Classification($this->backend, $this->userManager); |
||||
|
||||
/** @var IUser | \PHPUnit_Framework_MockObject_MockObject $user */ |
||||
$user = $this->getMockBuilder('OCP\IUser') |
||||
->disableOriginalConstructor() |
||||
->getMock(); |
||||
$user->expects($this->once())->method('getUID')->willReturn('caldav-unit-test'); |
||||
|
||||
$c->runForUser($user); |
||||
|
||||
// assert classification after migration |
||||
$object = $this->backend->getCalendarObject($calendarId, $eventUri); |
||||
$this->assertEquals(CalDavBackend::CLASSIFICATION_PUBLIC, $object['classification']); |
||||
} |
||||
} |
Loading…
Reference in new issue