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:
authorLukas Reschke <lukas@statuscode.ch>2017-04-18 23:23:07 +0300
committerLukas Reschke <lukas@statuscode.ch>2017-04-18 23:23:07 +0300
commit203ef885096e402de772be70c4f39615767bdf65 (patch)
tree2808f6ea70af22e21b4cafbaa081b5896e05228c /apps/sharebymail/tests
parentb072d2c49d6f61c2b55abf12e04bdf2166dbd4f4 (diff)
Add "Reply-To" on ShareByMailProvider mails
Fixes https://github.com/nextcloud/server/issues/4209 Signed-off-by: Lukas Reschke <lukas@statuscode.ch>
Diffstat (limited to 'apps/sharebymail/tests')
-rw-r--r--apps/sharebymail/tests/ShareByMailProviderTest.php239
1 files changed, 237 insertions, 2 deletions
diff --git a/apps/sharebymail/tests/ShareByMailProviderTest.php b/apps/sharebymail/tests/ShareByMailProviderTest.php
index 13fb5d03bd8..8761f49f0f4 100644
--- a/apps/sharebymail/tests/ShareByMailProviderTest.php
+++ b/apps/sharebymail/tests/ShareByMailProviderTest.php
@@ -23,14 +23,18 @@
namespace OCA\ShareByMail\Tests;
+use OC\Mail\Message;
use OCA\ShareByMail\Settings\SettingsManager;
use OCA\ShareByMail\ShareByMailProvider;
+use OCP\Defaults;
use OCP\Files\IRootFolder;
use OCP\IDBConnection;
use OCP\IL10N;
use OCP\ILogger;
use OCP\IURLGenerator;
+use OCP\IUser;
use OCP\IUserManager;
+use OCP\Mail\IEMailTemplate;
use OCP\Mail\IMailer;
use OCP\Security\ISecureRandom;
use OCP\Share\IManager;
@@ -81,6 +85,9 @@ class ShareByMailProviderTest extends TestCase {
/** @var SettingsManager | \PHPUnit_Framework_MockObject_MockObject */
private $settingsManager;
+ /** @var Defaults|\PHPUnit_Framework_MockObject_MockObject */
+ private $defaults;
+
public function setUp() {
parent::setUp();
@@ -101,6 +108,7 @@ class ShareByMailProviderTest extends TestCase {
$this->share = $this->getMockBuilder('\OCP\Share\IShare')->getMock();
$this->activityManager = $this->getMockBuilder('OCP\Activity\IManager')->getMock();
$this->settingsManager = $this->getMockBuilder(SettingsManager::class)->disableOriginalConstructor()->getMock();
+ $this->defaults = $this->createMock(Defaults::class);
$this->userManager->expects($this->any())->method('userExists')->willReturn(true);
}
@@ -125,7 +133,8 @@ class ShareByMailProviderTest extends TestCase {
$this->mailer,
$this->urlGenerator,
$this->activityManager,
- $this->settingsManager
+ $this->settingsManager,
+ $this->defaults
]
);
@@ -144,7 +153,8 @@ class ShareByMailProviderTest extends TestCase {
$this->mailer,
$this->urlGenerator,
$this->activityManager,
- $this->settingsManager
+ $this->settingsManager,
+ $this->defaults
);
}
@@ -726,4 +736,229 @@ class ShareByMailProviderTest extends TestCase {
$u1->delete();
$u2->delete();
}
+
+ public function testSendMailNotificationWithSameUserAndUserEmail() {
+ $provider = $this->getInstance();
+ $user = $this->createMock(IUser::class);
+ $this->userManager
+ ->expects($this->exactly(2))
+ ->method('get')
+ ->with('OwnerUser')
+ ->willReturn($user);
+ $user
+ ->expects($this->exactly(2))
+ ->method('getDisplayName')
+ ->willReturn('Mrs. Owner User');
+ $message = $this->createMock(Message::class);
+ $this->mailer
+ ->expects($this->once())
+ ->method('createMessage')
+ ->willReturn($message);
+ $template = $this->createMock(IEMailTemplate::class);
+ $this->mailer
+ ->expects($this->once())
+ ->method('createEMailTemplate')
+ ->willReturn($template);
+ $template
+ ->expects($this->once())
+ ->method('addHeader');
+ $template
+ ->expects($this->once())
+ ->method('addHeading')
+ ->with('Mrs. Owner User shared »file.txt« with you');
+ $template
+ ->expects($this->once())
+ ->method('addBodyText')
+ ->with(
+ 'Mrs. Owner User shared »file.txt« with you. Click the button below to open it.',
+ 'Mrs. Owner User shared »file.txt« with you.'
+ );
+ $template
+ ->expects($this->once())
+ ->method('addBodyButton')
+ ->with(
+ 'Open »file.txt«',
+ 'https://example.com/file.txt'
+ );
+ $message
+ ->expects($this->once())
+ ->method('setTo')
+ ->with(['john@doe.com']);
+ $this->defaults
+ ->expects($this->once())
+ ->method('getName')
+ ->willReturn('UnitTestCloud');
+ $message
+ ->expects($this->once())
+ ->method('setFrom')
+ ->with([
+ \OCP\Util::getDefaultEmailAddress('UnitTestCloud') => 'Mrs. Owner User via UnitTestCloud'
+ ]);
+ $user
+ ->expects($this->once())
+ ->method('getEMailAddress')
+ ->willReturn('owner@example.com');
+ $message
+ ->expects($this->once())
+ ->method('setReplyTo')
+ ->with(['owner@example.com' => 'Mrs. Owner User']);
+ $this->defaults
+ ->expects($this->once())
+ ->method('getSlogan')
+ ->willReturn('Testing like 1990');
+ $template
+ ->expects($this->once())
+ ->method('addFooter')
+ ->with('UnitTestCloud - Testing like 1990');
+ $message
+ ->expects($this->once())
+ ->method('setSubject')
+ ->willReturn('Mrs. Owner User shared »file.txt« with you');
+ $template
+ ->expects($this->once())
+ ->method('renderText')
+ ->willReturn('Text Render');
+ $message
+ ->expects($this->once())
+ ->method('setPlainBody')
+ ->with('Text Render');
+ $template
+ ->expects($this->once())
+ ->method('renderHTML')
+ ->willReturn('HTML Render');
+ $message
+ ->expects($this->once())
+ ->method('setHtmlBody')
+ ->with('HTML Render');
+ $this->mailer
+ ->expects($this->once())
+ ->method('send')
+ ->with($message);
+
+ self::invokePrivate(
+ $provider,
+ 'sendMailNotification',
+ [
+ 'file.txt',
+ 'https://example.com/file.txt',
+ 'OwnerUser',
+ 'OwnerUser',
+ 'john@doe.com',
+ ]);
+ }
+
+ public function testSendMailNotificationWithDifferentUserAndNoUserEmail() {
+ $provider = $this->getInstance();
+ $ownerUser = $this->createMock(IUser::class);
+ $initiatorUser = $this->createMock(IUser::class);
+ $this->userManager
+ ->expects($this->at(0))
+ ->method('get')
+ ->with('OwnerUser')
+ ->willReturn($ownerUser);
+ $this->userManager
+ ->expects($this->at(1))
+ ->method('get')
+ ->with('InitiatorUser')
+ ->willReturn($initiatorUser);
+ $ownerUser
+ ->expects($this->once())
+ ->method('getDisplayName')
+ ->willReturn('Mrs. Owner User');
+ $initiatorUser
+ ->expects($this->once())
+ ->method('getDisplayName')
+ ->willReturn('Mr. Initiator User');
+ $message = $this->createMock(Message::class);
+ $this->mailer
+ ->expects($this->once())
+ ->method('createMessage')
+ ->willReturn($message);
+ $template = $this->createMock(IEMailTemplate::class);
+ $this->mailer
+ ->expects($this->once())
+ ->method('createEMailTemplate')
+ ->willReturn($template);
+ $template
+ ->expects($this->once())
+ ->method('addHeader');
+ $template
+ ->expects($this->once())
+ ->method('addHeading')
+ ->with('Mrs. Owner User shared »file.txt« with you');
+ $template
+ ->expects($this->once())
+ ->method('addBodyText')
+ ->with(
+ 'Mrs. Owner User shared »file.txt« with you on behalf of InitiatorUser. Click the button below to open it.',
+ 'Mrs. Owner User shared »file.txt« with you on behalf of InitiatorUser.'
+ );
+ $template
+ ->expects($this->once())
+ ->method('addBodyButton')
+ ->with(
+ 'Open »file.txt«',
+ 'https://example.com/file.txt'
+ );
+ $message
+ ->expects($this->once())
+ ->method('setTo')
+ ->with(['john@doe.com']);
+ $this->defaults
+ ->expects($this->once())
+ ->method('getName')
+ ->willReturn('UnitTestCloud');
+ $message
+ ->expects($this->once())
+ ->method('setFrom')
+ ->with([
+ \OCP\Util::getDefaultEmailAddress('UnitTestCloud') => 'Mrs. Owner User via UnitTestCloud'
+ ]);
+ $ownerUser
+ ->expects($this->once())
+ ->method('getEMailAddress')
+ ->willReturn(null);
+ $message
+ ->expects($this->never())
+ ->method('setReplyTo');
+ $template
+ ->expects($this->once())
+ ->method('addFooter')
+ ->with('');
+ $message
+ ->expects($this->once())
+ ->method('setSubject')
+ ->willReturn('Mrs. Owner User shared »file.txt« with you');
+ $template
+ ->expects($this->once())
+ ->method('renderText')
+ ->willReturn('Text Render');
+ $message
+ ->expects($this->once())
+ ->method('setPlainBody')
+ ->with('Text Render');
+ $template
+ ->expects($this->once())
+ ->method('renderHTML')
+ ->willReturn('HTML Render');
+ $message
+ ->expects($this->once())
+ ->method('setHtmlBody')
+ ->with('HTML Render');
+ $this->mailer
+ ->expects($this->once())
+ ->method('send')
+ ->with($message);
+
+ self::invokePrivate(
+ $provider,
+ 'sendMailNotification',
+ [
+ 'file.txt',
+ 'https://example.com/file.txt',
+ 'OwnerUser',
+ 'InitiatorUser',
+ 'john@doe.com',
+ ]);
+ }
}