From b13c741cb3471f4f2df579b81e0bb5ebe56fff95 Mon Sep 17 00:00:00 2001 From: Christoph Wurst Date: Tue, 2 May 2017 14:12:04 +0200 Subject: [PATCH] Do not show an email action for contacts with emtpy email addresses Signed-off-by: Christoph Wurst --- .../ContactsMenu/Providers/EMailProvider.php | 4 ++++ .../Providers/EMailproviderTest.php | 24 +++++++++++++++++++ 2 files changed, 28 insertions(+) diff --git a/lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php b/lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php index d5630e6420..242fbd06a2 100644 --- a/lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php +++ b/lib/private/Contacts/ContactsMenu/Providers/EMailProvider.php @@ -52,6 +52,10 @@ class EMailProvider implements IProvider { public function process(IEntry $entry) { $iconUrl = $this->urlGenerator->getAbsoluteURL($this->urlGenerator->imagePath('core', 'actions/mail.svg')); foreach ($entry->getEMailAddresses() as $address) { + if (empty($address)) { + // Skip + continue; + } $action = $this->actionFactory->newEMailAction($iconUrl, $address, $address); $entry->addAction($action); } diff --git a/tests/lib/Contacts/ContactsMenu/Providers/EMailproviderTest.php b/tests/lib/Contacts/ContactsMenu/Providers/EMailproviderTest.php index 2d82fa5d68..353c8d6f58 100644 --- a/tests/lib/Contacts/ContactsMenu/Providers/EMailproviderTest.php +++ b/tests/lib/Contacts/ContactsMenu/Providers/EMailproviderTest.php @@ -79,4 +79,28 @@ class EMailproviderTest extends TestCase { $this->provider->process($entry); } + public function testProcessEmptyAddress() { + $entry = $this->createMock(IEntry::class); + $action = $this->createMock(ILinkAction::class); + $iconUrl = 'https://example.com/img/actions/icon.svg'; + $this->urlGenerator->expects($this->once()) + ->method('imagePath') + ->willReturn('img/actions/icon.svg'); + $this->urlGenerator->expects($this->once()) + ->method('getAbsoluteURL') + ->with('img/actions/icon.svg') + ->willReturn($iconUrl); + $entry->expects($this->once()) + ->method('getEMailAddresses') + ->willReturn([ + '', + ]); + $this->actionFactory->expects($this->never()) + ->method('newEMailAction'); + $entry->expects($this->never()) + ->method('addAction'); + + $this->provider->process($entry); + } + }