diff options
Diffstat (limited to 'apps/dav/tests/unit/CalDAV/BirthdayCalendar/EnablePluginTest.php')
-rw-r--r-- | apps/dav/tests/unit/CalDAV/BirthdayCalendar/EnablePluginTest.php | 62 |
1 files changed, 60 insertions, 2 deletions
diff --git a/apps/dav/tests/unit/CalDAV/BirthdayCalendar/EnablePluginTest.php b/apps/dav/tests/unit/CalDAV/BirthdayCalendar/EnablePluginTest.php index ec27dc89aa1..cb89f1bf88c 100644 --- a/apps/dav/tests/unit/CalDAV/BirthdayCalendar/EnablePluginTest.php +++ b/apps/dav/tests/unit/CalDAV/BirthdayCalendar/EnablePluginTest.php @@ -31,6 +31,7 @@ use OCA\DAV\CalDAV\BirthdayService; use OCA\DAV\CalDAV\Calendar; use OCA\DAV\CalDAV\CalendarHome; use OCP\IConfig; +use OCP\IUser; use Test\TestCase; class EnablePluginTest extends TestCase { @@ -44,6 +45,9 @@ class EnablePluginTest extends TestCase { /** @var BirthdayService |\PHPUnit\Framework\MockObject\MockObject */ protected $birthdayService; + /** @var IUser|\PHPUnit\Framework\MockObject\MockObject */ + protected $user; + /** @var \OCA\DAV\CalDAV\BirthdayCalendar\EnablePlugin $plugin */ protected $plugin; @@ -61,8 +65,9 @@ class EnablePluginTest extends TestCase { $this->config = $this->createMock(IConfig::class); $this->birthdayService = $this->createMock(BirthdayService::class); + $this->user = $this->createMock(IUser::class); - $this->plugin = new EnablePlugin($this->config, $this->birthdayService); + $this->plugin = new EnablePlugin($this->config, $this->birthdayService, $this->user); $this->plugin->initialize($this->server); $this->request = $this->createMock(\Sabre\HTTP\RequestInterface::class); @@ -80,7 +85,7 @@ class EnablePluginTest extends TestCase { public function testInitialize(): void { $server = $this->createMock(\Sabre\DAV\Server::class); - $plugin = new EnablePlugin($this->config, $this->birthdayService); + $plugin = new EnablePlugin($this->config, $this->birthdayService, $this->user); $server->expects($this->once()) ->method('on') @@ -143,6 +148,55 @@ class EnablePluginTest extends TestCase { $this->plugin->httpPost($this->request, $this->response); } + public function testHttpPostNotAuthorized(): void { + $calendarHome = $this->createMock(CalendarHome::class); + + $this->server->expects($this->once()) + ->method('getRequestUri') + ->willReturn('/bar/foo'); + $this->server->tree->expects($this->once()) + ->method('getNodeForPath') + ->with('/bar/foo') + ->willReturn($calendarHome); + + $calendarHome->expects($this->once()) + ->method('getOwner') + ->willReturn('principals/users/BlaBlub'); + + $this->request->expects($this->once()) + ->method('getBodyAsString') + ->willReturn('<nc:enable-birthday-calendar xmlns:nc="http://nextcloud.com/ns"/>'); + + $this->request->expects($this->once()) + ->method('getUrl') + ->willReturn('url_abc'); + + $this->server->xml->expects($this->once()) + ->method('parse') + ->willReturnCallback(function ($requestBody, $url, &$documentType): void { + $documentType = '{http://nextcloud.com/ns}enable-birthday-calendar'; + }); + + $this->user->expects(self::once()) + ->method('getUID') + ->willReturn('admin'); + + $this->server->httpResponse->expects($this->once()) + ->method('setStatus') + ->with(403); + + $this->config->expects($this->never()) + ->method('setUserValue'); + + $this->birthdayService->expects($this->never()) + ->method('syncUser'); + + + $result = $this->plugin->httpPost($this->request, $this->response); + + $this->assertEquals(false, $result); + } + public function testHttpPost(): void { $calendarHome = $this->createMock(CalendarHome::class); @@ -172,6 +226,10 @@ class EnablePluginTest extends TestCase { $documentType = '{http://nextcloud.com/ns}enable-birthday-calendar'; }); + $this->user->expects(self::exactly(3)) + ->method('getUID') + ->willReturn('BlaBlub'); + $this->config->expects($this->once()) ->method('setUserValue') ->with('BlaBlub', 'dav', 'generateBirthdayCalendar', 'yes'); |