From a87d9860418948a72fbe3d29a2cc5d589be147ec Mon Sep 17 00:00:00 2001 From: Georg Ehrke Date: Sat, 11 Nov 2017 02:02:17 +0100 Subject: [PATCH] create a user's birthday calendar right after they requested it Signed-off-by: Georg Ehrke --- .../CalDAV/BirthdayCalendar/EnablePlugin.php | 11 ++++++++++- apps/dav/lib/Server.php | 4 +++- .../BirthdayCalendar/EnablePluginTest.php | 19 +++++++++++++++++-- 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/apps/dav/lib/CalDAV/BirthdayCalendar/EnablePlugin.php b/apps/dav/lib/CalDAV/BirthdayCalendar/EnablePlugin.php index 9f9b24e205..497d7112b3 100644 --- a/apps/dav/lib/CalDAV/BirthdayCalendar/EnablePlugin.php +++ b/apps/dav/lib/CalDAV/BirthdayCalendar/EnablePlugin.php @@ -23,6 +23,7 @@ namespace OCA\DAV\CalDAV\BirthdayCalendar; +use OCA\DAV\CalDAV\BirthdayService; use OCA\DAV\CalDAV\CalendarHome; use Sabre\DAV\Server; use Sabre\DAV\ServerPlugin; @@ -44,6 +45,11 @@ class EnablePlugin extends ServerPlugin { */ protected $config; + /** + * @var BirthdayService + */ + protected $birthdayService; + /** * @var Server */ @@ -53,9 +59,11 @@ class EnablePlugin extends ServerPlugin { * PublishPlugin constructor. * * @param IConfig $config + * @param BirthdayService $birthdayService */ - public function __construct(IConfig $config) { + public function __construct(IConfig $config, BirthdayService $birthdayService) { $this->config = $config; + $this->birthdayService = $birthdayService; } /** @@ -122,6 +130,7 @@ class EnablePlugin extends ServerPlugin { $userId = substr($principalUri, 17); $this->config->setUserValue($userId, 'dav', 'generateBirthdayCalendar', 'yes'); + $this->birthdayService->syncUser($userId); $this->server->httpResponse->setStatus(204); diff --git a/apps/dav/lib/Server.php b/apps/dav/lib/Server.php index ab20d14cab..afa52530b0 100644 --- a/apps/dav/lib/Server.php +++ b/apps/dav/lib/Server.php @@ -33,6 +33,7 @@ namespace OCA\DAV; use OC\AppFramework\Utility\TimeFactory; +use OCA\DAV\CalDAV\BirthdayService; use OCA\DAV\CalDAV\Schedule\IMipPlugin; use OCA\DAV\CardDAV\ImageExportPlugin; use OCA\DAV\CardDAV\PhotoCache; @@ -260,7 +261,8 @@ class Server { ))); } $this->server->addPlugin(new \OCA\DAV\CalDAV\BirthdayCalendar\EnablePlugin( - \OC::$server->getConfig() + \OC::$server->getConfig(), + \OC::$server->query(BirthdayService::class) )); } diff --git a/apps/dav/tests/unit/CalDAV/BirthdayCalendar/EnablePluginTest.php b/apps/dav/tests/unit/CalDAV/BirthdayCalendar/EnablePluginTest.php index 6e7965ea61..44bf9237b2 100644 --- a/apps/dav/tests/unit/CalDAV/BirthdayCalendar/EnablePluginTest.php +++ b/apps/dav/tests/unit/CalDAV/BirthdayCalendar/EnablePluginTest.php @@ -22,6 +22,7 @@ namespace OCA\DAV\Tests\unit\CalDAV\BirthdayCalendar; use OCA\DAV\CalDAV\BirthdayCalendar\EnablePlugin; +use OCA\DAV\CalDAV\BirthdayService; use OCA\DAV\CalDAV\Calendar; use OCA\DAV\CalDAV\CalendarHome; use OCP\IConfig; @@ -35,6 +36,9 @@ class EnablePluginTest extends TestCase { /** @var \OCP\IConfig|\PHPUnit_Framework_MockObject_MockObject */ protected $config; + /** @var BirthdayService |\PHPUnit_Framework_MockObject_MockObject */ + protected $birthdayService; + /** @var \OCA\DAV\CalDAV\BirthdayCalendar\EnablePlugin $plugin */ protected $plugin; @@ -51,8 +55,9 @@ class EnablePluginTest extends TestCase { $this->server->xml = $this->createMock(\Sabre\DAV\Xml\Service::class); $this->config = $this->createMock(IConfig::class); + $this->birthdayService = $this->createMock(BirthdayService::class); - $this->plugin = new EnablePlugin($this->config); + $this->plugin = new EnablePlugin($this->config, $this->birthdayService); $this->plugin->initialize($this->server); $this->request = $this->createMock(\Sabre\HTTP\RequestInterface::class); @@ -70,7 +75,7 @@ class EnablePluginTest extends TestCase { public function testInitialize() { $server = $this->createMock(\Sabre\DAV\Server::class); - $plugin = new EnablePlugin($this->config); + $plugin = new EnablePlugin($this->config, $this->birthdayService); $server->expects($this->at(0)) ->method('on') @@ -93,6 +98,9 @@ class EnablePluginTest extends TestCase { $this->config->expects($this->never()) ->method('setUserValue'); + $this->birthdayService->expects($this->never()) + ->method('syncUser'); + $this->plugin->httpPost($this->request, $this->response); } @@ -124,6 +132,9 @@ class EnablePluginTest extends TestCase { $this->config->expects($this->never()) ->method('setUserValue'); + $this->birthdayService->expects($this->never()) + ->method('syncUser'); + $this->plugin->httpPost($this->request, $this->response); } @@ -160,6 +171,10 @@ class EnablePluginTest extends TestCase { ->method('setUserValue') ->with('BlaBlub', 'dav', 'generateBirthdayCalendar', 'yes'); + $this->birthdayService->expects($this->once()) + ->method('syncUser') + ->with('BlaBlub'); + $this->server->httpResponse->expects($this->once()) ->method('setStatus') ->with(204);