From: Georg Ehrke Date: Mon, 16 Mar 2020 14:04:21 +0000 (+0100) Subject: RefreshWebcalService: randomly generate calendar-object uri X-Git-Tag: v18.0.4RC1~32^2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=refs%2Fpull%2F20148%2Fhead;p=nextcloud-server.git RefreshWebcalService: randomly generate calendar-object uri Signed-off-by: Georg Ehrke --- diff --git a/apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php b/apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php index beab0271d8f..a057e29eb2c 100644 --- a/apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php +++ b/apps/dav/lib/CalDAV/WebcalCaching/RefreshWebcalService.php @@ -47,6 +47,7 @@ use Sabre\VObject\InvalidDataException; use Sabre\VObject\ParseException; use Sabre\VObject\Reader; use Sabre\VObject\Splitter\ICalendar; +use Sabre\VObject\UUIDUtil; use function count; class RefreshWebcalService { @@ -113,7 +114,6 @@ class RefreshWebcalService { while ($vObject = $splitter->getNext()) { /** @var Component $vObject */ - $uid = null; $compName = null; foreach ($vObject->getComponents() as $component) { @@ -121,7 +121,6 @@ class RefreshWebcalService { continue; } - $uid = $component->{'UID'}->getValue(); $compName = $component->name; if ($stripAlarms) { @@ -136,7 +135,7 @@ class RefreshWebcalService { continue; } - $uri = $uid . '.ics'; + $uri = $this->getRandomCalendarObjectUri(); $calendarData = $vObject->serialize(); try { $this->calDavBackend->createCalendarObject($subscription['id'], $uri, $calendarData, CalDavBackend::CALENDAR_TYPE_SUBSCRIPTION); @@ -413,4 +412,13 @@ class RefreshWebcalService { return $cleanURL; } + + /** + * Returns a random uri for a calendar-object + * + * @return string + */ + public function getRandomCalendarObjectUri():string { + return UUIDUtil::getUUID() . '.ics'; + } } diff --git a/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php b/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php index 01e541ec20e..b1d341c2e4e 100644 --- a/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php +++ b/apps/dav/tests/unit/CalDAV/WebcalCaching/RefreshWebcalServiceTest.php @@ -69,8 +69,14 @@ class RefreshWebcalServiceTest extends TestCase { * @dataProvider runDataProvider */ public function testRun(string $body, string $contentType, string $result) { - $refreshWebcalService = new RefreshWebcalService($this->caldavBackend, - $this->clientService, $this->config, $this->logger); + $refreshWebcalService = $this->getMockBuilder(RefreshWebcalService::class) + ->setMethods(['getRandomCalendarObjectUri']) + ->setConstructorArgs([$this->caldavBackend, $this->clientService, $this->config, $this->logger]) + ->getMock(); + + $refreshWebcalService + ->method('getRandomCalendarObjectUri') + ->willReturn('uri-1.ics'); $this->caldavBackend->expects($this->once()) ->method('getSubscriptionsForUser') @@ -130,7 +136,7 @@ class RefreshWebcalServiceTest extends TestCase { $this->caldavBackend->expects($this->once()) ->method('createCalendarObject') - ->with(42, '12345.ics', $result, 1); + ->with(42, 'uri-1.ics', $result, 1); $refreshWebcalService->refreshSubscription('principals/users/testuser', 'sub123'); }