diff options
author | Morris Jobke <hey@morrisjobke.de> | 2017-06-14 23:10:40 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-14 23:10:40 -0500 |
commit | ca3c69c8ae0fd7f0d13e87d7861c54e2950a2c09 (patch) | |
tree | 4ed63f89a9e8cb3940bbb67e3438a2272d007cb7 | |
parent | ac565cecadc1760e128293e5be6955a9b1fc85e4 (diff) | |
parent | 35781ae45c517bb39cf3e43a5877226ab4c89bb6 (diff) | |
download | nextcloud-server-ca3c69c8ae0fd7f0d13e87d7861c54e2950a2c09.tar.gz nextcloud-server-ca3c69c8ae0fd7f0d13e87d7861c54e2950a2c09.zip |
Merge pull request #5298 from nextcloud/bugfix/4885/calendar_shares_url_special_char_issue
urldecode group principals in Cal- and CardDAV backend
-rw-r--r-- | apps/dav/lib/CalDAV/CalDavBackend.php | 3 | ||||
-rw-r--r-- | apps/dav/lib/CardDAV/CardDavBackend.php | 3 | ||||
-rw-r--r-- | apps/dav/tests/unit/CalDAV/AbstractCalDavBackendTest.php | 3 | ||||
-rw-r--r-- | apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php | 7 | ||||
-rw-r--r-- | apps/dav/tests/unit/CardDAV/CardDavBackendTest.php | 4 |
5 files changed, 20 insertions, 0 deletions
diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php index ef3df8de83e..7fe18cd8656 100644 --- a/apps/dav/lib/CalDAV/CalDavBackend.php +++ b/apps/dav/lib/CalDAV/CalDavBackend.php @@ -276,6 +276,9 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription // query for shared calendars $principals = $this->principalBackend->getGroupMembership($principalUriOriginal, true); + $principals = array_map(function($principal) { + return urldecode($principal); + }, $principals); $principals[]= $principalUri; $fields = array_values($this->propertyMap); diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php index 983220c6ba0..5742f97b701 100644 --- a/apps/dav/lib/CardDAV/CardDavBackend.php +++ b/apps/dav/lib/CardDAV/CardDavBackend.php @@ -162,6 +162,9 @@ class CardDavBackend implements BackendInterface, SyncSupport { // query for shared calendars $principals = $this->principalBackend->getGroupMembership($principalUriOriginal, true); + $principals = array_map(function($principal) { + return urldecode($principal); + }, $principals); $principals[]= $principalUri; $query = $this->db->getQueryBuilder(); diff --git a/apps/dav/tests/unit/CalDAV/AbstractCalDavBackendTest.php b/apps/dav/tests/unit/CalDAV/AbstractCalDavBackendTest.php index bc161b00d91..a7bf4432c64 100644 --- a/apps/dav/tests/unit/CalDAV/AbstractCalDavBackendTest.php +++ b/apps/dav/tests/unit/CalDAV/AbstractCalDavBackendTest.php @@ -91,6 +91,9 @@ abstract class AbstractCalDavBackendTest extends TestCase { if (is_null($this->backend)) { return; } + $this->principal->expects($this->any())->method('getGroupMembership') + ->withAnyParameters() + ->willReturn([self::UNIT_TEST_GROUP, self::UNIT_TEST_GROUP2]); $calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER); foreach ($calendars as $calendar) { $this->dispatcher->expects($this->at(0)) diff --git a/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php b/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php index 7c424fd0dd1..eb9f9cd10d7 100644 --- a/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php +++ b/apps/dav/tests/unit/CalDAV/PublicCalendarRootTest.php @@ -46,6 +46,10 @@ class PublicCalendarRootTest extends TestCase { $this->random = \OC::$server->getSecureRandom(); $dispatcher = $this->createMock(EventDispatcherInterface::class); + $this->principal->expects($this->any())->method('getGroupMembership') + ->withAnyParameters() + ->willReturn([]); + $this->backend = new CalDavBackend( $db, $this->principal, @@ -66,6 +70,9 @@ class PublicCalendarRootTest extends TestCase { if (is_null($this->backend)) { return; } + $this->principal->expects($this->any())->method('getGroupMembership') + ->withAnyParameters() + ->willReturn([]); $books = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER); foreach ($books as $book) { $this->backend->deleteCalendar($book['id']); diff --git a/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php b/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php index f3a271a2db2..8ca7e8a33b1 100644 --- a/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php +++ b/apps/dav/tests/unit/CardDAV/CardDavBackendTest.php @@ -113,6 +113,10 @@ class CardDavBackendTest extends TestCase { if (is_null($this->backend)) { return; } + + $this->principal->method('getGroupMembership') + ->withAnyParameters() + ->willReturn([self::UNIT_TEST_GROUP]); $books = $this->backend->getAddressBooksForUser(self::UNIT_TEST_USER); foreach ($books as $book) { $this->backend->deleteAddressBook($book['id']); |