summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
Diffstat (limited to 'apps')
-rw-r--r--apps/dav/lib/CalDAV/Calendar.php7
-rw-r--r--apps/dav/tests/unit/CalDAV/CalendarTest.php19
2 files changed, 25 insertions, 1 deletions
diff --git a/apps/dav/lib/CalDAV/Calendar.php b/apps/dav/lib/CalDAV/Calendar.php
index 2df8944b83f..9fedbe6f91f 100644
--- a/apps/dav/lib/CalDAV/Calendar.php
+++ b/apps/dav/lib/CalDAV/Calendar.php
@@ -153,7 +153,8 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
}
function delete() {
- if (isset($this->calendarInfo['{http://owncloud.org/ns}owner-principal'])) {
+ if (isset($this->calendarInfo['{http://owncloud.org/ns}owner-principal']) &&
+ $this->calendarInfo['{http://owncloud.org/ns}owner-principal'] !== $this->calendarInfo['principaluri']) {
$principal = 'principal:' . parent::getOwner();
$shares = $this->getShares();
$shares = array_filter($shares, function($share) use ($principal){
@@ -283,6 +284,10 @@ class Calendar extends \Sabre\CalDAV\Calendar implements IShareable {
}
private function isShared() {
+ if (!isset($this->calendarInfo['{http://owncloud.org/ns}owner-principal'])) {
+ return false;
+ }
+
return $this->calendarInfo['{http://owncloud.org/ns}owner-principal'] !== $this->calendarInfo['principaluri'];
}
diff --git a/apps/dav/tests/unit/CalDAV/CalendarTest.php b/apps/dav/tests/unit/CalDAV/CalendarTest.php
index bd4c1f6aabb..e585a23a9a2 100644
--- a/apps/dav/tests/unit/CalDAV/CalendarTest.php
+++ b/apps/dav/tests/unit/CalDAV/CalendarTest.php
@@ -85,6 +85,25 @@ class CalendarTest extends TestCase {
$c->delete();
}
+ public function testDeleteOwn() {
+ /** @var \PHPUnit_Framework_MockObject_MockObject | CalDavBackend $backend */
+ $backend = $this->createMock(CalDavBackend::class);
+ $backend->expects($this->never())->method('updateShares');
+ $backend->expects($this->never())->method('getShares');
+
+ $backend->expects($this->once())->method('deleteCalendar')
+ ->with(666);
+
+ $calendarInfo = [
+ '{http://owncloud.org/ns}owner-principal' => 'user1',
+ 'principaluri' => 'user1',
+ 'id' => 666,
+ 'uri' => 'cal',
+ ];
+ $c = new Calendar($backend, $calendarInfo, $this->l10n);
+ $c->delete();
+ }
+
public function dataPropPatch() {
return [
[[], true],