diff options
author | Marcel Müller <marcel-mueller@gmx.de> | 2024-12-01 22:22:38 +0100 |
---|---|---|
committer | Marcel Müller <marcel-mueller@gmx.de> | 2024-12-01 23:15:32 +0100 |
commit | 66d4f0e4c0b062a4a0d9e4946dfa673e155c338c (patch) | |
tree | 3056da6e4348f458852926a632636b72623b8fa4 /apps | |
parent | e17f011f08cb4529ae19ff8637a49b7f4e89f216 (diff) | |
download | nextcloud-server-66d4f0e4c0b062a4a0d9e4946dfa673e155c338c.tar.gz nextcloud-server-66d4f0e4c0b062a4a0d9e4946dfa673e155c338c.zip |
chore(absence): Add capability for absence api
Signed-off-by: Marcel Müller <marcel-mueller@gmx.de>
Diffstat (limited to 'apps')
-rw-r--r-- | apps/dav/lib/Capabilities.php | 7 | ||||
-rw-r--r-- | apps/dav/openapi.json | 3 | ||||
-rw-r--r-- | apps/dav/tests/unit/CalDAV/Reminder/NotificationProviderManagerTest.php | 3 | ||||
-rw-r--r-- | apps/dav/tests/unit/CapabilitiesTest.php | 33 |
4 files changed, 43 insertions, 3 deletions
diff --git a/apps/dav/lib/Capabilities.php b/apps/dav/lib/Capabilities.php index b0f63f80f2d..36d56d4a822 100644 --- a/apps/dav/lib/Capabilities.php +++ b/apps/dav/lib/Capabilities.php @@ -7,15 +7,17 @@ namespace OCA\DAV; use OCP\Capabilities\ICapability; use OCP\IConfig; +use OCP\User\IAvailabilityCoordinator; class Capabilities implements ICapability { public function __construct( private IConfig $config, + private IAvailabilityCoordinator $coordinator, ) { } /** - * @return array{dav: array{chunking: string, bulkupload?: string}} + * @return array{dav: array{chunking: string, bulkupload?: string, absence-supported?: bool}} */ public function getCapabilities() { $capabilities = [ @@ -26,6 +28,9 @@ class Capabilities implements ICapability { if ($this->config->getSystemValueBool('bulkupload.enabled', true)) { $capabilities['dav']['bulkupload'] = '1.0'; } + if ($this->coordinator->isEnabled()) { + $capabilities['dav']['absence-supported'] = true; + } return $capabilities; } } diff --git a/apps/dav/openapi.json b/apps/dav/openapi.json index 7045a7f9b27..e212796304d 100644 --- a/apps/dav/openapi.json +++ b/apps/dav/openapi.json @@ -37,6 +37,9 @@ }, "bulkupload": { "type": "string" + }, + "absence-supported": { + "type": "boolean" } } } diff --git a/apps/dav/tests/unit/CalDAV/Reminder/NotificationProviderManagerTest.php b/apps/dav/tests/unit/CalDAV/Reminder/NotificationProviderManagerTest.php index 6c46a2aed2d..6d0e62f505b 100644 --- a/apps/dav/tests/unit/CalDAV/Reminder/NotificationProviderManagerTest.php +++ b/apps/dav/tests/unit/CalDAV/Reminder/NotificationProviderManagerTest.php @@ -17,6 +17,9 @@ use OCA\DAV\Capabilities; use OCP\AppFramework\QueryException; use Test\TestCase; +/** + * @group DB + */ class NotificationProviderManagerTest extends TestCase { /** @var NotificationProviderManager|\PHPUnit\Framework\MockObject\MockObject */ diff --git a/apps/dav/tests/unit/CapabilitiesTest.php b/apps/dav/tests/unit/CapabilitiesTest.php index acdfb4a2443..4a2d7e8dba6 100644 --- a/apps/dav/tests/unit/CapabilitiesTest.php +++ b/apps/dav/tests/unit/CapabilitiesTest.php @@ -7,6 +7,7 @@ namespace OCA\DAV\Tests\unit; use OCA\DAV\Capabilities; use OCP\IConfig; +use OCP\User\IAvailabilityCoordinator; use Test\TestCase; /** @@ -19,7 +20,11 @@ class CapabilitiesTest extends TestCase { ->method('getSystemValueBool') ->with('bulkupload.enabled', $this->isType('bool')) ->willReturn(false); - $capabilities = new Capabilities($config); + $coordinator = $this->createMock(IAvailabilityCoordinator::class); + $coordinator->expects($this->once()) + ->method('isEnabled') + ->willReturn(false); + $capabilities = new Capabilities($config, $coordinator); $expected = [ 'dav' => [ 'chunking' => '1.0', @@ -34,7 +39,11 @@ class CapabilitiesTest extends TestCase { ->method('getSystemValueBool') ->with('bulkupload.enabled', $this->isType('bool')) ->willReturn(true); - $capabilities = new Capabilities($config); + $coordinator = $this->createMock(IAvailabilityCoordinator::class); + $coordinator->expects($this->once()) + ->method('isEnabled') + ->willReturn(false); + $capabilities = new Capabilities($config, $coordinator); $expected = [ 'dav' => [ 'chunking' => '1.0', @@ -43,4 +52,24 @@ class CapabilitiesTest extends TestCase { ]; $this->assertSame($expected, $capabilities->getCapabilities()); } + + public function testGetCapabilitiesWithAbsence(): void { + $config = $this->createMock(IConfig::class); + $config->expects($this->once()) + ->method('getSystemValueBool') + ->with('bulkupload.enabled', $this->isType('bool')) + ->willReturn(false); + $coordinator = $this->createMock(IAvailabilityCoordinator::class); + $coordinator->expects($this->once()) + ->method('isEnabled') + ->willReturn(true); + $capabilities = new Capabilities($config, $coordinator); + $expected = [ + 'dav' => [ + 'chunking' => '1.0', + 'absence-supported' => true, + ], + ]; + $this->assertSame($expected, $capabilities->getCapabilities()); + } } |