diff options
author | Brad Rubenstein <brad@wbr.tech> | 2019-02-28 01:25:27 +0000 |
---|---|---|
committer | Brad Rubenstein <brad@wbr.tech> | 2019-02-28 01:46:07 +0000 |
commit | 1a2923996059aadbcd69000a85d51304ec9a9f8e (patch) | |
tree | a8308020e151b7a3477a305bf3ff2bf15e16a77b /apps/dav/tests/unit/CalDAV | |
parent | 1dbda2604b1a9971739d72a3542a24c29c316bf6 (diff) | |
download | nextcloud-server-1a2923996059aadbcd69000a85d51304ec9a9f8e.tar.gz nextcloud-server-1a2923996059aadbcd69000a85d51304ec9a9f8e.zip |
IMipPlugin: DRY up - move common test set-up into setUp function
Signed-off-by: Brad Rubenstein <brad@wbr.tech>
Diffstat (limited to 'apps/dav/tests/unit/CalDAV')
-rw-r--r-- | apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php | 428 |
1 files changed, 117 insertions, 311 deletions
diff --git a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php index 0ba670879f1..84da1d2727c 100644 --- a/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php +++ b/apps/dav/tests/unit/CalDAV/Schedule/IMipPluginTest.php @@ -48,179 +48,76 @@ use Test\TestCase; class IMipPluginTest extends TestCase { - public function testDelivery() { - $mailMessage = $this->createMock(IMessage::class); - $mailMessage->method('setFrom')->willReturn($mailMessage); - $mailMessage->method('setReplyTo')->willReturn($mailMessage); - $mailMessage->method('setTo')->willReturn($mailMessage); - /** @var Mailer | \PHPUnit_Framework_MockObject_MockObject $mailer */ - $mailer = $this->getMockBuilder(IMailer::class)->disableOriginalConstructor()->getMock(); - $emailTemplate = $this->createMock(IEMailTemplate::class); - $emailAttachment = $this->createMock(IAttachment::class); - $mailer->method('createEMailTemplate')->willReturn($emailTemplate); - $mailer->method('createMessage')->willReturn($mailMessage); - $mailer->method('createAttachment')->willReturn($emailAttachment); - $mailer->expects($this->once())->method('send'); - /** @var ILogger | \PHPUnit_Framework_MockObject_MockObject $logger */ + public function setUp() { + $this->mailMessage = $this->createMock(IMessage::class); + $this->mailMessage->method('setFrom')->willReturn($this->mailMessage); + $this->mailMessage->method('setReplyTo')->willReturn($this->mailMessage); + $this->mailMessage->method('setTo')->willReturn($this->mailMessage); + + $this->mailer = $this->getMockBuilder(IMailer::class)->disableOriginalConstructor()->getMock(); + $this->mailer->method('createMessage')->willReturn($this->mailMessage); + + $this->emailTemplate = $this->createMock(IEMailTemplate::class); + $this->mailer->method('createEMailTemplate')->willReturn($this->emailTemplate); + + $this->emailAttachment = $this->createMock(IAttachment::class); + $this->mailer->method('createAttachment')->willReturn($this->emailAttachment); + $logger = $this->getMockBuilder(ILogger::class)->disableOriginalConstructor()->getMock(); - $timeFactory = $this->getMockBuilder(ITimeFactory::class)->disableOriginalConstructor()->getMock(); - $timeFactory->method('getTime')->willReturn(1); - /** @var IConfig | \PHPUnit_Framework_MockObject_MockObject $config */ - $config = $this->createMock(IConfig::class); - $config->method('getSystemValue') - ->with('dav.invitation_link_recipients', true) - ->willReturn(true); + + $this->timeFactory = $this->getMockBuilder(ITimeFactory::class)->disableOriginalConstructor()->getMock(); + $this->timeFactory->method('getTime')->willReturn(1496912528); // 2017-01-01 + + $this->config = $this->createMock(IConfig::class); + $l10n = $this->createMock(IL10N::class); - /** @var IFactory | \PHPUnit_Framework_MockObject_MockObject $l10nFactory */ $l10nFactory = $this->createMock(IFactory::class); $l10nFactory->method('get')->willReturn($l10n); - /** @var IURLGenerator | \PHPUnit_Framework_MockObject_MockObject $urlGenerator */ + $urlGenerator = $this->createMock(IURLGenerator::class); - /** @var IDBConnection | \PHPUnit_Framework_MockObject_MockObject $db */ + + $this->queryBuilder = $this->createMock(IQueryBuilder::class); $db = $this->createMock(IDBConnection::class); - /** @var ISecureRandom | \PHPUnit_Framework_MockObject_MockObject $random */ - $random = $this->createMock(ISecureRandom::class); - /** @var Defaults | \PHPUnit_Framework_MockObject_MockObject $defaults */ - $defaults = $this->createMock(Defaults::class); - $defaults->expects($this->once()) - ->method('getName') - ->will($this->returnValue('Instance Name 123')); + $db->method('getQueryBuilder') + ->with() + ->will($this->returnValue($this->queryBuilder)); - $random->expects($this->once()) - ->method('generate') + $random = $this->createMock(ISecureRandom::class); + $random->method('generate') ->with(60, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') ->will($this->returnValue('random_token')); - $queryBuilder = $this->createMock(IQueryBuilder::class); - - $db->expects($this->once()) - ->method('getQueryBuilder') - ->with() - ->will($this->returnValue($queryBuilder)); - $queryBuilder->expects($this->at(0)) - ->method('insert') - ->with('calendar_invitations') - ->will($this->returnValue($queryBuilder)); - $queryBuilder->expects($this->at(8)) - ->method('values') - ->will($this->returnValue($queryBuilder)); - $queryBuilder->expects($this->at(9)) - ->method('execute'); - - $plugin = new IMipPlugin($config, $mailer, $logger, $timeFactory, $l10nFactory, $urlGenerator, $defaults, $random, $db, 'user123'); - $message = new Message(); - $message->method = 'REQUEST'; - $message->message = new VCalendar(); - $message->message->add('VEVENT', [ - 'UID' => $message->uid, - 'SEQUENCE' => $message->sequence, - 'SUMMARY' => 'Fellowship meeting', - 'DTSTART' => new \DateTime('2017-01-01 00:00:00') // 1483228800 - ]); - - $message->message->VEVENT->add( 'ORGANIZER', 'mailto:gandalf@wiz.ard' ); - $message->message->VEVENT->add( 'ATTENDEE', 'mailto:frodo@hobb.it', [ 'RSVP' => 'TRUE' ] ); + $defaults = $this->createMock(Defaults::class); + $defaults->method('getName') + ->will($this->returnValue('Instance Name 123')); - $message->sender = 'mailto:gandalf@wiz.ard'; - $message->recipient = 'mailto:frodo@hobb.it'; + $this->plugin = new IMipPlugin($this->config, $this->mailer, $logger, $this->timeFactory, $l10nFactory, $urlGenerator, $defaults, $random, $db, 'user123'); + } - $emailTemplate->expects($this->once()) - ->method('setSubject') - ->with('Invitation: Fellowship meeting'); - $mailMessage->expects($this->once()) - ->method('setTo') - ->with(['frodo@hobb.it' => null]); - $mailMessage->expects($this->once()) - ->method('setReplyTo') - ->with(['gandalf@wiz.ard' => null]); + public function testDelivery() { + $this->config + ->method('getSystemValue') + ->with('dav.invitation_link_recipients', true) + ->willReturn(true); - $plugin->schedule($message); + $message = $this->_testMessage(); + $this->_expectSend(); + $this->plugin->schedule($message); $this->assertEquals('1.1', $message->getScheduleStatus()); } public function testFailedDelivery() { - $mailMessage = $this->createMock(IMessage::class); - $mailMessage->method('setFrom')->willReturn($mailMessage); - $mailMessage->method('setReplyTo')->willReturn($mailMessage); - $mailMessage->method('setTo')->willReturn($mailMessage); - /** @var Mailer | \PHPUnit_Framework_MockObject_MockObject $mailer */ - $mailer = $this->getMockBuilder(IMailer::class)->disableOriginalConstructor()->getMock(); - $emailTemplate = $this->createMock(IEMailTemplate::class); - $emailAttachment = $this->createMock(IAttachment::class); - $mailer->method('createEMailTemplate')->willReturn($emailTemplate); - $mailer->method('createMessage')->willReturn($mailMessage); - $mailer->method('createAttachment')->willReturn($emailAttachment); - $mailer->method('send')->willThrowException(new \Exception()); - /** @var ILogger | \PHPUnit_Framework_MockObject_MockObject $logger */ - $logger = $this->getMockBuilder(ILogger::class)->disableOriginalConstructor()->getMock(); - $timeFactory = $this->getMockBuilder(ITimeFactory::class)->disableOriginalConstructor()->getMock(); - $timeFactory->method('getTime')->willReturn(1); - /** @var IConfig | \PHPUnit_Framework_MockObject_MockObject $config */ - $config = $this->createMock(IConfig::class); - $config->method('getSystemValue') + $this->config + ->method('getSystemValue') ->with('dav.invitation_link_recipients', true) ->willReturn(true); - $l10n = $this->createMock(IL10N::class); - /** @var IFactory | \PHPUnit_Framework_MockObject_MockObject $l10nFactory */ - $l10nFactory = $this->createMock(IFactory::class); - $l10nFactory->method('get')->willReturn($l10n); - /** @var IURLGenerator | \PHPUnit_Framework_MockObject_MockObject $urlGenerator */ - $urlGenerator = $this->createMock(IURLGenerator::class); - /** @var IDBConnection | \PHPUnit_Framework_MockObject_MockObject $db */ - $db = $this->createMock(IDBConnection::class); - /** @var ISecureRandom | \PHPUnit_Framework_MockObject_MockObject $random */ - $random = $this->createMock(ISecureRandom::class); - /** @var Defaults | \PHPUnit_Framework_MockObject_MockObject $defaults */ - $defaults = $this->createMock(Defaults::class); - - $random->expects($this->once()) - ->method('generate') - ->with(60, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') - ->will($this->returnValue('random_token')); - - $queryBuilder = $this->createMock(IQueryBuilder::class); - - $db->expects($this->once()) - ->method('getQueryBuilder') - ->with() - ->will($this->returnValue($queryBuilder)); - $queryBuilder->expects($this->at(0)) - ->method('insert') - ->with('calendar_invitations') - ->will($this->returnValue($queryBuilder)); - $queryBuilder->expects($this->at(8)) - ->method('values') - ->will($this->returnValue($queryBuilder)); - $queryBuilder->expects($this->at(9)) - ->method('execute'); - - $plugin = new IMipPlugin($config, $mailer, $logger, $timeFactory, $l10nFactory, $urlGenerator, $defaults, $random, $db, 'user123'); - $message = new Message(); - $message->method = 'REQUEST'; - $message->message = new VCalendar(); - $message->message->add('VEVENT', [ - 'UID' => $message->uid, - 'SEQUENCE' => $message->sequence, - 'SUMMARY' => 'Fellowship meeting', - 'DTSTART' => new \DateTime('2017-01-01 00:00:00') // 1483228800 - ]); - $message->message->VEVENT->add( 'ORGANIZER', 'mailto:gandalf@wiz.ard' ); - $message->message->VEVENT->add( 'ATTENDEE', 'mailto:frodo@hobb.it', [ 'RSVP' => 'TRUE' ] ); - $message->sender = 'mailto:gandalf@wiz.ard'; - $message->recipient = 'mailto:frodo@hobb.it'; - - $emailTemplate->expects($this->once()) - ->method('setSubject') - ->with('Invitation: Fellowship meeting'); - $mailMessage->expects($this->once()) - ->method('setTo') - ->with(['frodo@hobb.it' => null]); - $mailMessage->expects($this->once()) - ->method('setReplyTo') - ->with(['gandalf@wiz.ard' => null]); - - $plugin->schedule($message); + $message = $this->_testMessage(); + $this->mailer + ->method('send') + ->willThrowException(new \Exception()); + $this->_expectSend(); + $this->plugin->schedule($message); $this->assertEquals('5.0', $message->getScheduleStatus()); } @@ -228,82 +125,17 @@ class IMipPluginTest extends TestCase { * @dataProvider dataNoMessageSendForPastEvents */ public function testNoMessageSendForPastEvents($veventParams, $expectsMail) { - $mailMessage = $this->createMock(IMessage::class); - $mailMessage->method('setFrom')->willReturn($mailMessage); - $mailMessage->method('setReplyTo')->willReturn($mailMessage); - $mailMessage->method('setTo')->willReturn($mailMessage); - /** @var Mailer | \PHPUnit_Framework_MockObject_MockObject $mailer */ - $mailer = $this->getMockBuilder(IMailer::class)->disableOriginalConstructor()->getMock(); - $emailTemplate = $this->createMock(IEMailTemplate::class); - $emailAttachment = $this->createMock(IAttachment::class); - $mailer->method('createEMailTemplate')->willReturn($emailTemplate); - $mailer->method('createMessage')->willReturn($mailMessage); - $mailer->method('createAttachment')->willReturn($emailAttachment); - if ($expectsMail) { - $mailer->expects($this->once())->method('send'); - } else { - $mailer->expects($this->never())->method('send'); - } - /** @var ILogger | \PHPUnit_Framework_MockObject_MockObject $logger */ - $logger = $this->getMockBuilder(ILogger::class)->disableOriginalConstructor()->getMock(); - $timeFactory = $this->getMockBuilder(ITimeFactory::class)->disableOriginalConstructor()->getMock(); - $timeFactory->method('getTime')->willReturn(1496912528); - /** @var IConfig | \PHPUnit_Framework_MockObject_MockObject $config */ - $config = $this->createMock(IConfig::class); - $config->method('getSystemValue') + + $this->config + ->method('getSystemValue') ->with('dav.invitation_link_recipients', true) ->willReturn(true); - $l10n = $this->createMock(IL10N::class); - /** @var IFactory | \PHPUnit_Framework_MockObject_MockObject $l10nFactory */ - $l10nFactory = $this->createMock(IFactory::class); - $l10nFactory->method('get')->willReturn($l10n); - /** @var IURLGenerator | \PHPUnit_Framework_MockObject_MockObject $urlGenerator */ - $urlGenerator = $this->createMock(IURLGenerator::class); - /** @var IDBConnection | \PHPUnit_Framework_MockObject_MockObject $db */ - $db = $this->createMock(IDBConnection::class); - /** @var ISecureRandom | \PHPUnit_Framework_MockObject_MockObject $random */ - $random = $this->createMock(ISecureRandom::class); - /** @var Defaults | \PHPUnit_Framework_MockObject_MockObject $defaults */ - $defaults = $this->createMock(Defaults::class); - if ($expectsMail) { - $random->expects($this->once()) - ->method('generate') - ->with(60, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') - ->will($this->returnValue('random_token')); - - $queryBuilder = $this->createMock(IQueryBuilder::class); - - $db->expects($this->once()) - ->method('getQueryBuilder') - ->with() - ->will($this->returnValue($queryBuilder)); - $queryBuilder->expects($this->at(0)) - ->method('insert') - ->with('calendar_invitations') - ->will($this->returnValue($queryBuilder)); - $queryBuilder->expects($this->at(8)) - ->method('values') - ->will($this->returnValue($queryBuilder)); - $queryBuilder->expects($this->at(9)) - ->method('execute'); - } + $message = $this->_testMessage( $veventParams ); - $plugin = new IMipPlugin($config, $mailer, $logger, $timeFactory, $l10nFactory, $urlGenerator, $defaults, $random, $db, 'user123'); - $message = new Message(); - $message->method = 'REQUEST'; - $message->message = new VCalendar(); - $message->message->add('VEVENT', array_merge([ - 'UID' => 'uid1337', - 'SEQUENCE' => 42, - 'SUMMARY' => 'Fellowship meeting', - ], $veventParams)); - $message->message->VEVENT->add( 'ORGANIZER', 'mailto:gandalf@wiz.ard' ); - $message->message->VEVENT->add( 'ATTENDEE', 'mailto:frodo@hobb.it', [ 'RSVP' => 'TRUE' ] ); - $message->sender = 'mailto:gandalf@wiz.ard'; - $message->recipient = 'mailto:frodo@hobb.it'; + $this->_expectSend('frodo@hobb.it', $expectsMail, $expectsMail); - $plugin->schedule($message); + $this->plugin->schedule($message); if ($expectsMail) { $this->assertEquals('1.1', $message->getScheduleStatus()); @@ -331,113 +163,87 @@ class IMipPluginTest extends TestCase { * @dataProvider dataIncludeResponseButtons */ public function testIncludeResponseButtons( $config_setting, $recipient, $has_buttons ) { - $mailMessage = $this->createMock(IMessage::class); - $mailMessage->method('setFrom')->willReturn($mailMessage); - $mailMessage->method('setReplyTo')->willReturn($mailMessage); - $mailMessage->method('setTo')->willReturn($mailMessage); - /** @var Mailer | \PHPUnit_Framework_MockObject_MockObject $mailer */ - $mailer = $this->getMockBuilder(IMailer::class)->disableOriginalConstructor()->getMock(); - $emailTemplate = $this->createMock(IEMailTemplate::class); - $emailAttachment = $this->createMock(IAttachment::class); - $mailer->method('createEMailTemplate')->willReturn($emailTemplate); - $mailer->method('createMessage')->willReturn($mailMessage); - $mailer->method('createAttachment')->willReturn($emailAttachment); - $mailer->expects($this->once())->method('send'); - /** @var ILogger | \PHPUnit_Framework_MockObject_MockObject $logger */ - $logger = $this->getMockBuilder(ILogger::class)->disableOriginalConstructor()->getMock(); - $timeFactory = $this->getMockBuilder(ITimeFactory::class)->disableOriginalConstructor()->getMock(); - $timeFactory->method('getTime')->willReturn(1); - /** @var IConfig | \PHPUnit_Framework_MockObject_MockObject $config */ - $config = $this->createMock(IConfig::class); - $config->method('getSystemValue') + $message = $this->_testMessage([],$recipient); + + $this->_expectSend($recipient, true, $has_buttons); + $this->config + ->method('getSystemValue') ->with('dav.invitation_link_recipients', true) ->willReturn($config_setting); - $l10n = $this->createMock(IL10N::class); - /** @var IFactory | \PHPUnit_Framework_MockObject_MockObject $l10nFactory */ - $l10nFactory = $this->createMock(IFactory::class); - $l10nFactory->method('get')->willReturn($l10n); - /** @var IURLGenerator | \PHPUnit_Framework_MockObject_MockObject $urlGenerator */ - $urlGenerator = $this->createMock(IURLGenerator::class); - /** @var IDBConnection | \PHPUnit_Framework_MockObject_MockObject $db */ - $db = $this->createMock(IDBConnection::class); - /** @var ISecureRandom | \PHPUnit_Framework_MockObject_MockObject $random */ - $random = $this->createMock(ISecureRandom::class); - /** @var Defaults | \PHPUnit_Framework_MockObject_MockObject $defaults */ - $defaults = $this->createMock(Defaults::class); - $defaults->expects($this->once()) - ->method('getName') - ->will($this->returnValue('Instance Name 123')); - - if ($has_buttons) { - $random->expects($this->once()) - ->method('generate') - ->with(60, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789') - ->will($this->returnValue('random_token')); - } - $queryBuilder = $this->createMock(IQueryBuilder::class); + $this->plugin->schedule($message); + $this->assertEquals('1.1', $message->getScheduleStatus()); + } - if ($has_buttons) { - $db->expects($this->once()) - ->method('getQueryBuilder') - ->with() - ->will($this->returnValue($queryBuilder)); - $queryBuilder->expects($this->at(0)) - ->method('insert') - ->with('calendar_invitations') - ->will($this->returnValue($queryBuilder)); - $queryBuilder->expects($this->at(8)) - ->method('values') - ->will($this->returnValue($queryBuilder)); - $queryBuilder->expects($this->at(9)) - ->method('execute'); - } else { - $queryBuilder->expects($this->never()) - ->method('insert') - ->with('calendar_invitations'); - } + public function dataIncludeResponseButtons() { + return [ + // dav.invitation_link_recipients, recipient, $has_buttons + [ true, 'joe@internal.com', true], + [ 'joe@internal.com', 'joe@internal.com', true], + [ 'internal.com', 'joe@internal.com', true], + [ ['pete@otherinternal.com', 'internal.com'], 'joe@internal.com', true], + [ false, 'joe@internal.com', false], + [ 'internal.com', 'joe@external.com', false], + [ ['jane@otherinternal.com', 'internal.com'], 'joe@otherinternal.com', false], + ]; + } - $plugin = new IMipPlugin($config, $mailer, $logger, $timeFactory, $l10nFactory, $urlGenerator, $defaults, $random, $db, 'user123'); + private function _testMessage($attrs = [], $recipient = 'frodo@hobb.it' ) { $message = new Message(); $message->method = 'REQUEST'; $message->message = new VCalendar(); - $message->message->add('VEVENT', [ - 'UID' => $message->uid, - 'SEQUENCE' => $message->sequence, + $message->message->add('VEVENT', array_merge([ + 'UID' => 'uid-1234', + 'SEQUENCE' => 0, 'SUMMARY' => 'Fellowship meeting', - 'DTSTART' => new \DateTime('2017-01-01 00:00:00') // 1483228800 - ]); - + 'DTSTART' => new \DateTime('2018-01-01 00:00:00') + ], $attrs)); $message->message->VEVENT->add( 'ORGANIZER', 'mailto:gandalf@wiz.ard' ); $message->message->VEVENT->add( 'ATTENDEE', 'mailto:'.$recipient, [ 'RSVP' => 'TRUE' ] ); - $message->sender = 'mailto:gandalf@wiz.ard'; $message->recipient = 'mailto:'.$recipient; + return $message; + } + - $emailTemplate->expects($this->once()) + private function _expectSend( $recipient = 'frodo@hobb.it', $expectSend = true, $expectButtons = true ) { + + // if the event is in the past, we skip out + if (!$expectSend) { + $this->mailer + ->expects($this->never()) + ->method('send'); + return; + } + + $this->emailTemplate->expects($this->once()) ->method('setSubject') ->with('Invitation: Fellowship meeting'); - $mailMessage->expects($this->once()) + $this->mailMessage->expects($this->once()) ->method('setTo') ->with([$recipient => null]); - $mailMessage->expects($this->once()) + $this->mailMessage->expects($this->once()) ->method('setReplyTo') ->with(['gandalf@wiz.ard' => null]); + $this->mailer + ->expects($this->once()) + ->method('send'); - $plugin->schedule($message); - $this->assertEquals('1.1', $message->getScheduleStatus()); - } - - public function dataIncludeResponseButtons() { - return [ - // dav.invitation_link_recipients, recipient, $has_buttons - [ true, 'joe@internal.com', true], - [ 'joe@internal.com', 'joe@internal.com', true], - [ 'internal.com', 'joe@internal.com', true], - [ ['pete@otherinternal.com', 'internal.com'], 'joe@internal.com', true], - [ false, 'joe@internal.com', false], - [ 'internal.com', 'joe@external.com', false], - [ ['jane@otherinternal.com', 'internal.com'], 'joe@otherinternal.com', false], - ]; + if ($expectButtons) { + $this->queryBuilder->expects($this->at(0)) + ->method('insert') + ->with('calendar_invitations') + ->will($this->returnValue($this->queryBuilder)); + $this->queryBuilder->expects($this->at(8)) + ->method('values') + ->will($this->returnValue($this->queryBuilder)); + $this->queryBuilder->expects($this->at(9)) + ->method('execute'); + } + else { + $this->queryBuilder->expects($this->never()) + ->method('insert') + ->with('calendar_invitations'); + } } } |