Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/server.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorblizzz <blizzz@arthur-schiwon.de>2022-05-19 12:46:13 +0300
committerGitHub <noreply@github.com>2022-05-19 12:46:13 +0300
commitfa13c647769c9e228f9cf0237869dac559578fe0 (patch)
tree072015c65bad203b39cedd0178391f025e339eb6
parent74f26cc89e16c3f8a4449c3c849ac65cdad91443 (diff)
parentafb3d38cb83936a85715a1ca76a4fbbcc723ae74 (diff)
Merge pull request #32472 from nextcloud/backport/32428/stable24
[stable24] Add Email validation
-rw-r--r--apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php11
-rw-r--r--apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php120
2 files changed, 42 insertions, 89 deletions
diff --git a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php
index 456b9f8b42d..85590d506cf 100644
--- a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php
+++ b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php
@@ -272,7 +272,10 @@ class EmailProvider extends AbstractProvider {
$emailAddressesOfDelegates = $delegates->getParts();
foreach ($emailAddressesOfDelegates as $addressesOfDelegate) {
if (strcasecmp($addressesOfDelegate, 'mailto:') === 0) {
- $emailAddresses[substr($addressesOfDelegate, 7)] = [];
+ $delegateEmail = substr($addressesOfDelegate, 7);
+ if ($delegateEmail !== false && $this->mailer->validateMailAddress($delegateEmail)) {
+ $emailAddresses[$delegateEmail] = [];
+ }
}
}
@@ -344,8 +347,12 @@ class EmailProvider extends AbstractProvider {
if (!$this->hasAttendeeMailURI($attendee)) {
return null;
}
+ $attendeeEMail = substr($attendee->getValue(), 7);
+ if ($attendeeEMail === false || !$this->mailer->validateMailAddress($attendeeEMail)) {
+ return null;
+ }
- return substr($attendee->getValue(), 7);
+ return $attendeeEMail;
}
/**
diff --git a/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php b/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php
index 0352827aa5c..b5cbf94016c 100644
--- a/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php
+++ b/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php
@@ -240,99 +240,45 @@ class EmailProviderTest extends AbstractNotificationProviderTest {
$message22 = $this->getMessageMock('foo4@example.org', $template2);
$message23 = $this->getMessageMock('uid1@example.com', $template2);
- $this->mailer->expects($this->at(0))
+ $this->mailer->expects(self::exactly(2))
->method('createEMailTemplate')
->with('dav.calendarReminder')
- ->willReturn($template1);
-
- $this->mailer->expects($this->at(1))
- ->method('validateMailAddress')
- ->with('foo1@example.org')
- ->willReturn(true);
-
- $this->mailer->expects($this->at(2))
- ->method('createMessage')
- ->with()
- ->willReturn($message11);
- $this->mailer->expects($this->at(3))
- ->method('send')
- ->with($message11)
- ->willReturn([]);
- $this->mailer->expects($this->at(4))
- ->method('validateMailAddress')
- ->with('uid2@example.com')
- ->willReturn(true);
- $this->mailer->expects($this->at(5))
- ->method('createMessage')
- ->with()
- ->willReturn($message12);
- $this->mailer->expects($this->at(6))
- ->method('send')
- ->with($message12)
- ->willReturn([]);
-
- $this->mailer->expects($this->at(7))
+ ->willReturnOnConsecutiveCalls(
+ $template1,
+ $template2,
+ );
+ $this->mailer->expects($this->atLeastOnce())
->method('validateMailAddress')
- ->with('uid3@example.com')
- ->willReturn(true);
-
- $this->mailer->expects($this->at(8))
- ->method('createMessage')
- ->with()
- ->willReturn($message13);
- $this->mailer->expects($this->at(9))
- ->method('send')
- ->with($message13)
- ->willReturn([]);
-
- $this->mailer->expects($this->at(10))
- ->method('validateMailAddress')
- ->with('invalid')
- ->willReturn(false);
-
- $this->mailer->expects($this->at(11))
- ->method('createEMailTemplate')
- ->with('dav.calendarReminder')
- ->willReturn($template2);
-
- $this->mailer->expects($this->at(12))
- ->method('validateMailAddress')
- ->with('foo3@example.org')
- ->willReturn(true);
-
- $this->mailer->expects($this->at(13))
- ->method('createMessage')
- ->with()
- ->willReturn($message21);
- $this->mailer->expects($this->at(14))
- ->method('send')
- ->with($message21)
- ->willReturn([]);
- $this->mailer->expects($this->at(15))
- ->method('validateMailAddress')
- ->with('foo4@example.org')
- ->willReturn(true);
- $this->mailer->expects($this->at(16))
- ->method('createMessage')
- ->with()
- ->willReturn($message22);
- $this->mailer->expects($this->at(17))
- ->method('send')
- ->with($message22)
- ->willReturn([]);
- $this->mailer->expects($this->at(18))
- ->method('validateMailAddress')
- ->with('uid1@example.com')
- ->willReturn(true);
- $this->mailer->expects($this->at(19))
+ ->willReturnMap([
+ ['foo1@example.org', true],
+ ['foo3@example.org', true],
+ ['foo4@example.org', true],
+ ['uid1@example.com', true],
+ ['uid2@example.com', true],
+ ['uid3@example.com', true],
+ ['invalid', false],
+ ]);
+ $this->mailer->expects($this->exactly(6))
->method('createMessage')
->with()
- ->willReturn($message23);
- $this->mailer->expects($this->at(20))
+ ->willReturnOnConsecutiveCalls(
+ $message11,
+ $message12,
+ $message13,
+ $message21,
+ $message22,
+ $message23,
+ );
+ $this->mailer->expects($this->exactly(6))
->method('send')
- ->with($message23)
- ->willReturn([]);
-
+ ->withConsecutive(
+ [$message11],
+ [$message12],
+ [$message13],
+ [$message21],
+ [$message22],
+ [$message23],
+ )->willReturn([]);
$this->setupURLGeneratorMock(2);
$vcalendar = $this->getAttendeeVCalendar();