nextcloud-server/apps/dav/tests/unit/CalDAV/DefaultCalendarValidatorTes...

172 lines
4.9 KiB
PHP

<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\DAV\Tests\unit\CalDAV;
use OCA\DAV\CalDAV\Calendar;
use OCA\DAV\CalDAV\DefaultCalendarValidator;
use Sabre\CalDAV\Xml\Property\SupportedCalendarComponentSet;
use Test\TestCase;
class DefaultCalendarValidatorTest extends TestCase {
private DefaultCalendarValidator $validator;
protected function setUp(): void {
parent::setUp();
$this->validator = new DefaultCalendarValidator();
}
public function testValidateScheduleDefaultCalendar(): void {
$node = $this->createMock(Calendar::class);
$node->expects(self::once())
->method('isSubscription')
->willReturn(false);
$node->expects(self::once())
->method('canWrite')
->willReturn(true);
$node->expects(self::once())
->method('isShared')
->willReturn(false);
$node->expects(self::once())
->method('isDeleted')
->willReturn(false);
$node->expects(self::once())
->method('getProperties')
->willReturn([
'{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new SupportedCalendarComponentSet(['VEVENT']),
]);
$this->validator->validateScheduleDefaultCalendar($node);
}
public function testValidateScheduleDefaultCalendarWithEmptyProperties(): void {
$node = $this->createMock(Calendar::class);
$node->expects(self::once())
->method('isSubscription')
->willReturn(false);
$node->expects(self::once())
->method('canWrite')
->willReturn(true);
$node->expects(self::once())
->method('isShared')
->willReturn(false);
$node->expects(self::once())
->method('isDeleted')
->willReturn(false);
$node->expects(self::once())
->method('getProperties')
->willReturn([]);
$this->validator->validateScheduleDefaultCalendar($node);
}
public function testValidateScheduleDefaultCalendarWithSubscription(): void {
$node = $this->createMock(Calendar::class);
$node->expects(self::once())
->method('isSubscription')
->willReturn(true);
$node->expects(self::never())
->method('canWrite');
$node->expects(self::never())
->method('isShared');
$node->expects(self::never())
->method('isDeleted');
$node->expects(self::never())
->method('getProperties');
$this->expectException(\Sabre\DAV\Exception::class);
$this->validator->validateScheduleDefaultCalendar($node);
}
public function testValidateScheduleDefaultCalendarWithoutWrite(): void {
$node = $this->createMock(Calendar::class);
$node->expects(self::once())
->method('isSubscription')
->willReturn(false);
$node->expects(self::once())
->method('canWrite')
->willReturn(false);
$node->expects(self::never())
->method('isShared');
$node->expects(self::never())
->method('isDeleted');
$node->expects(self::never())
->method('getProperties');
$this->expectException(\Sabre\DAV\Exception::class);
$this->validator->validateScheduleDefaultCalendar($node);
}
public function testValidateScheduleDefaultCalendarWithShared(): void {
$node = $this->createMock(Calendar::class);
$node->expects(self::once())
->method('isSubscription')
->willReturn(false);
$node->expects(self::once())
->method('canWrite')
->willReturn(true);
$node->expects(self::once())
->method('isShared')
->willReturn(true);
$node->expects(self::never())
->method('isDeleted');
$node->expects(self::never())
->method('getProperties');
$this->expectException(\Sabre\DAV\Exception::class);
$this->validator->validateScheduleDefaultCalendar($node);
}
public function testValidateScheduleDefaultCalendarWithDeleted(): void {
$node = $this->createMock(Calendar::class);
$node->expects(self::once())
->method('isSubscription')
->willReturn(false);
$node->expects(self::once())
->method('canWrite')
->willReturn(true);
$node->expects(self::once())
->method('isShared')
->willReturn(false);
$node->expects(self::once())
->method('isDeleted')
->willReturn(true);
$node->expects(self::never())
->method('getProperties');
$this->expectException(\Sabre\DAV\Exception::class);
$this->validator->validateScheduleDefaultCalendar($node);
}
public function testValidateScheduleDefaultCalendarWithoutVeventSupport(): void {
$node = $this->createMock(Calendar::class);
$node->expects(self::once())
->method('isSubscription')
->willReturn(false);
$node->expects(self::once())
->method('canWrite')
->willReturn(true);
$node->expects(self::once())
->method('isShared')
->willReturn(false);
$node->expects(self::once())
->method('isDeleted')
->willReturn(false);
$node->expects(self::once())
->method('getProperties')
->willReturn([
'{urn:ietf:params:xml:ns:caldav}supported-calendar-component-set' => new SupportedCalendarComponentSet(['VTODO']),
]);
$this->expectException(\Sabre\DAV\Exception::class);
$this->validator->validateScheduleDefaultCalendar($node);
}
}