diff options
author | Christoph Wurst <ChristophWurst@users.noreply.github.com> | 2024-03-14 14:05:27 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-03-14 14:05:27 +0100 |
commit | d4ac4b81e14d6fb98a5ac19fe0dab3e2f1b97403 (patch) | |
tree | 048a8f8d43ee2a97d1aabcad599d0dd7ffff565d /apps/dav/tests | |
parent | e3b1a557f000e47f53c7ca681ae2e09f91f75bc6 (diff) | |
parent | f40f962c2e744b2b7ae74b62a4065aee7fc5eff3 (diff) | |
download | nextcloud-server-d4ac4b81e14d6fb98a5ac19fe0dab3e2f1b97403.tar.gz nextcloud-server-d4ac4b81e14d6fb98a5ac19fe0dab3e2f1b97403.zip |
Merge pull request #44130 from nextcloud/fix/dav/occ-fix-caldav-sync-tokens
fix(dav): Add occ command to fix missing caldav sync tokens
Diffstat (limited to 'apps/dav/tests')
-rw-r--r-- | apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php | 8 | ||||
-rw-r--r-- | apps/dav/tests/unit/CalDAV/CalDavBackendTest.php | 89 |
2 files changed, 94 insertions, 3 deletions
diff --git a/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php b/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php index dbed804ea41..1c125fa9b7f 100644 --- a/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php +++ b/apps/dav/tests/unit/CalDAV/AbstractCalDavBackend.php @@ -39,6 +39,7 @@ use OCP\App\IAppManager; use OCP\EventDispatcher\IEventDispatcher; use OCP\ICacheFactory; use OCP\IConfig; +use OCP\IDBConnection; use OCP\IGroupManager; use OCP\IUserManager; use OCP\IUserSession; @@ -70,6 +71,7 @@ abstract class AbstractCalDavBackend extends TestCase { private IConfig|MockObject $config; private ISecureRandom $random; protected SharingBackend $sharingBackend; + protected IDBConnection $db; public const UNIT_TEST_USER = 'principals/users/caldav-unit-test'; public const UNIT_TEST_USER1 = 'principals/users/caldav-unit-test1'; public const UNIT_TEST_GROUP = 'principals/groups/caldav-unit-test-group'; @@ -105,7 +107,7 @@ abstract class AbstractCalDavBackend extends TestCase { ->withAnyParameters() ->willReturn([self::UNIT_TEST_GROUP, self::UNIT_TEST_GROUP2]); - $db = \OC::$server->getDatabaseConnection(); + $this->db = \OC::$server->getDatabaseConnection(); $this->random = \OC::$server->getSecureRandom(); $this->logger = $this->createMock(LoggerInterface::class); $this->config = $this->createMock(IConfig::class); @@ -114,10 +116,10 @@ abstract class AbstractCalDavBackend extends TestCase { $this->groupManager, $this->principal, $this->createMock(ICacheFactory::class), - new Service(new SharingMapper($db)), + new Service(new SharingMapper($this->db)), $this->logger); $this->backend = new CalDavBackend( - $db, + $this->db, $this->principal, $this->userManager, $this->random, diff --git a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php index 112786eb987..c85c13e3f21 100644 --- a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php +++ b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php @@ -1502,4 +1502,93 @@ EOD; } } } + + public function testRestoreChanges(): void { + $calendarId = $this->createTestCalendar(); + $uri1 = static::getUniqueID('calobj1') . '.ics'; + $calData = <<<EOD +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:Nextcloud 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:20130912T130000Z +DTEND;VALUE=DATE-TIME:20130912T140000Z +CLASS:PUBLIC +END:VEVENT +END:VCALENDAR +EOD; + $this->backend->createCalendarObject($calendarId, $uri1, $calData); + $calData = <<<EOD +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:Nextcloud Calendar +BEGIN:VEVENT +CREATED;VALUE=DATE-TIME:20130910T125139Z +UID:47d15e3ec8 +LAST-MODIFIED;VALUE=DATE-TIME:20130910T125139Z +DTSTAMP;VALUE=DATE-TIME:20130910T125139Z +SUMMARY:Test Event – UPDATED +DTSTART;VALUE=DATE-TIME:20130912T130000Z +DTEND;VALUE=DATE-TIME:20130912T140000Z +CLASS:PUBLIC +SEQUENCE:1 +END:VEVENT +END:VCALENDAR +EOD; + $this->backend->updateCalendarObject($calendarId, $uri1, $calData); + $uri2 = static::getUniqueID('calobj2') . '.ics'; + $calData = <<<EOD +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:Nextcloud Calendar +BEGIN:VEVENT +CREATED;VALUE=DATE-TIME:20130910T125139Z +UID:47d15e3ec9 +LAST-MODIFIED;VALUE=DATE-TIME:20130910T125139Z +DTSTAMP;VALUE=DATE-TIME:20130910T125139Z +SUMMARY:Test Event +DTSTART;VALUE=DATE-TIME:20130912T130000Z +DTEND;VALUE=DATE-TIME:20130912T140000Z +CLASS:PUBLIC +END:VEVENT +END:VCALENDAR +EOD; + $this->backend->createCalendarObject($calendarId, $uri2, $calData); + $changesBefore = $this->backend->getChangesForCalendar($calendarId, null, 1); + $this->backend->deleteCalendarObject($calendarId, $uri2); + $uri3 = static::getUniqueID('calobj3') . '.ics'; + $calData = <<<EOD +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:Nextcloud Calendar +BEGIN:VEVENT +CREATED;VALUE=DATE-TIME:20130910T125139Z +UID:47d15e3e10 +LAST-MODIFIED;VALUE=DATE-TIME:20130910T125139Z +DTSTAMP;VALUE=DATE-TIME:20130910T125139Z +SUMMARY:Test Event +DTSTART;VALUE=DATE-TIME:20130912T130000Z +DTEND;VALUE=DATE-TIME:20130912T140000Z +CLASS:PUBLIC +END:VEVENT +END:VCALENDAR +EOD; + $this->backend->createCalendarObject($calendarId, $uri3, $calData); + $deleteChanges = $this->db->getQueryBuilder(); + $deleteChanges->delete('calendarchanges') + ->where($deleteChanges->expr()->eq('calendarid', $deleteChanges->createNamedParameter($calendarId))); + $deleteChanges->executeStatement(); + + $this->backend->restoreChanges($calendarId); + + $changesAfter = $this->backend->getChangesForCalendar($calendarId, $changesBefore['syncToken'], 1); + self::assertEquals([], $changesAfter['added']); + self::assertEqualsCanonicalizing([$uri1, $uri3], $changesAfter['modified']); + self::assertEquals([$uri2], $changesAfter['deleted']); + } } |