Merge pull request #19252 from nextcloud/bug/fix-notification-object-id

Hash event UID to make sure it's not too long for PushProvider notifications
This commit is contained in:
Joas Schilling 2020-02-25 17:04:25 +01:00 committed by GitHub
commit e6206731c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 2 deletions

View File

@ -93,6 +93,9 @@ class PushProvider extends AbstractProvider {
$eventDetails = $this->extractEventDetails($vevent);
$eventDetails['calendar_displayname'] = $calendarDisplayName;
$eventUUID = (string) $vevent->UID;
// Empty Notification ObjectId will be catched by OC\Notification\Notification
$eventUUIDHash = $eventUUID ? hash('sha256', $eventUUID, false) : '';
foreach($users as $user) {
/** @var INotification $notification */
@ -100,7 +103,7 @@ class PushProvider extends AbstractProvider {
$notification->setApp(Application::APP_ID)
->setUser($user->getUID())
->setDateTime($this->timeFactory->getDateTime())
->setObject(Application::APP_ID, (string) $vevent->UID)
->setObject(Application::APP_ID, $eventUUIDHash)
->setSubject('calendar_reminder', [
'title' => $eventDetails['title'],
'start_atom' => $eventDetails['start_atom']

View File

@ -189,7 +189,7 @@ class PushProviderTest extends AbstractNotificationProviderTest {
$notification->expects($this->once())
->method('setObject')
->with('dav', 'uid1234')
->with('dav', hash('sha256', 'uid1234', false))
->willReturn($notification);
$notification->expects($this->once())