You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

IMipPluginTest.php 3.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. <?php
  2. /**
  3. * @author Joas Schilling <nickvergessen@owncloud.com>
  4. * @author Thomas Müller <thomas.mueller@tmit.eu>
  5. *
  6. * @copyright Copyright (c) 2016, ownCloud, Inc.
  7. * @license AGPL-3.0
  8. *
  9. * This code is free software: you can redistribute it and/or modify
  10. * it under the terms of the GNU Affero General Public License, version 3,
  11. * as published by the Free Software Foundation.
  12. *
  13. * This program is distributed in the hope that it will be useful,
  14. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  15. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  16. * GNU Affero General Public License for more details.
  17. *
  18. * You should have received a copy of the GNU Affero General Public License, version 3,
  19. * along with this program. If not, see <http://www.gnu.org/licenses/>
  20. *
  21. */
  22. namespace OCA\DAV\Tests\unit\CalDAV\Schedule;
  23. use OC\Mail\Mailer;
  24. use OCA\DAV\CalDAV\Schedule\IMipPlugin;
  25. use OCP\ILogger;
  26. use Sabre\VObject\Component\VCalendar;
  27. use Sabre\VObject\ITip\Message;
  28. use Test\TestCase;
  29. class IMipPluginTest extends TestCase {
  30. public function testDelivery() {
  31. $mailMessage = new \OC\Mail\Message(new \Swift_Message());
  32. /** @var Mailer | \PHPUnit_Framework_MockObject_MockObject $mailer */
  33. $mailer = $this->getMockBuilder('OC\Mail\Mailer')->disableOriginalConstructor()->getMock();
  34. $mailer->method('createMessage')->willReturn($mailMessage);
  35. $mailer->expects($this->once())->method('send');
  36. /** @var ILogger | \PHPUnit_Framework_MockObject_MockObject $logger */
  37. $logger = $this->getMockBuilder('OC\Log')->disableOriginalConstructor()->getMock();
  38. $plugin = new IMipPlugin($mailer, $logger);
  39. $message = new Message();
  40. $message->method = 'REQUEST';
  41. $message->message = new VCalendar();
  42. $message->message->add('VEVENT', [
  43. 'UID' => $message->uid,
  44. 'SEQUENCE' => $message->sequence,
  45. 'SUMMARY' => 'Fellowship meeting',
  46. ]);
  47. $message->sender = 'mailto:gandalf@wiz.ard';
  48. $message->recipient = 'mailto:frodo@hobb.it';
  49. $plugin->schedule($message);
  50. $this->assertEquals('1.1', $message->getScheduleStatus());
  51. $this->assertEquals('Fellowship meeting', $mailMessage->getSubject());
  52. $this->assertEquals(['frodo@hobb.it' => null], $mailMessage->getTo());
  53. $this->assertEquals(['gandalf@wiz.ard' => null], $mailMessage->getReplyTo());
  54. $this->assertEquals('text/calendar; charset=UTF-8; method=REQUEST', $mailMessage->getSwiftMessage()->getContentType());
  55. }
  56. public function testFailedDelivery() {
  57. $mailMessage = new \OC\Mail\Message(new \Swift_Message());
  58. /** @var Mailer | \PHPUnit_Framework_MockObject_MockObject $mailer */
  59. $mailer = $this->getMockBuilder('OC\Mail\Mailer')->disableOriginalConstructor()->getMock();
  60. $mailer->method('createMessage')->willReturn($mailMessage);
  61. $mailer->method('send')->willThrowException(new \Exception());
  62. /** @var ILogger | \PHPUnit_Framework_MockObject_MockObject $logger */
  63. $logger = $this->getMockBuilder('OC\Log')->disableOriginalConstructor()->getMock();
  64. $plugin = new IMipPlugin($mailer, $logger);
  65. $message = new Message();
  66. $message->method = 'REQUEST';
  67. $message->message = new VCalendar();
  68. $message->message->add('VEVENT', [
  69. 'UID' => $message->uid,
  70. 'SEQUENCE' => $message->sequence,
  71. 'SUMMARY' => 'Fellowship meeting',
  72. ]);
  73. $message->sender = 'mailto:gandalf@wiz.ard';
  74. $message->recipient = 'mailto:frodo@hobb.it';
  75. $plugin->schedule($message);
  76. $this->assertEquals('5.0', $message->getScheduleStatus());
  77. $this->assertEquals('Fellowship meeting', $mailMessage->getSubject());
  78. $this->assertEquals(['frodo@hobb.it' => null], $mailMessage->getTo());
  79. $this->assertEquals(['gandalf@wiz.ard' => null], $mailMessage->getReplyTo());
  80. $this->assertEquals('text/calendar; charset=UTF-8; method=REQUEST', $mailMessage->getSwiftMessage()->getContentType());
  81. }
  82. }