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:
authorChristoph Wurst <ChristophWurst@users.noreply.github.com>2022-05-18 12:22:55 +0300
committerGitHub <noreply@github.com>2022-05-18 12:22:55 +0300
commit4cd0b2253df2fdbb43d91b9331a63fa5afcb4326 (patch)
treed4a8869073ea4d2895bdb5b2f71673a4bf707c5b
parent18dd460720b762ff644f3292724c7aad2c9e551d (diff)
parent440f69bd69a629ade15ded9255990a53e11ebfd4 (diff)
Merge pull request #32428 from nextcloud/enhancement/validate-email
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 c147b47860e..d4aea6215ea 100644
--- a/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php
+++ b/apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php
@@ -260,7 +260,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] = [];
+ }
}
}
@@ -317,8 +320,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 6428652ccab..273ad939144 100644
--- a/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php
+++ b/apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php
@@ -224,99 +224,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();