diff options
author | blizzz <blizzz@arthur-schiwon.de> | 2022-05-19 11:25:19 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-05-19 11:25:19 +0200 |
commit | 7cffeca48b6e2fc301abec544cbc0004835bf7bc (patch) | |
tree | be78294f8e0a11a88fb7303438b0fee7b57a02f7 | |
parent | 60509b2fd657b7504e02024f16ed6f8106330e7a (diff) | |
parent | fd73fc93ca9f0d6bc77136bb91bd8ab15e013f5d (diff) | |
download | nextcloud-server-7cffeca48b6e2fc301abec544cbc0004835bf7bc.tar.gz nextcloud-server-7cffeca48b6e2fc301abec544cbc0004835bf7bc.zip |
Merge pull request #32475 from nextcloud/backport/32428/stable22
[stable22] Add Email validation
-rw-r--r-- | apps/dav/lib/CalDAV/Reminder/NotificationProvider/EmailProvider.php | 11 | ||||
-rw-r--r-- | apps/dav/tests/unit/CalDAV/Reminder/NotificationProvider/EmailProviderTest.php | 120 |
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 9e96a1f3bec..1d9caee71dc 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(); |