Skip to content

Commit

Permalink
Merge pull request #49581 from nextcloud/fix/noid/add-absence-capability
Browse files Browse the repository at this point in the history
chore(absence): Add capability
  • Loading branch information
nickvergessen authored Dec 2, 2024
2 parents 199515f + 303a21f commit ce7b5eb
Show file tree
Hide file tree
Showing 4 changed files with 48 additions and 3 deletions.
8 changes: 7 additions & 1 deletion apps/dav/lib/Capabilities.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,17 @@

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, absence-replacement?: bool}}
*/
public function getCapabilities() {
$capabilities = [
Expand All @@ -26,6 +28,10 @@ public function getCapabilities() {
if ($this->config->getSystemValueBool('bulkupload.enabled', true)) {
$capabilities['dav']['bulkupload'] = '1.0';
}
if ($this->coordinator->isEnabled()) {
$capabilities['dav']['absence-supported'] = true;
$capabilities['dav']['absence-replacement'] = true;
}
return $capabilities;
}
}
6 changes: 6 additions & 0 deletions apps/dav/openapi.json
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,12 @@
},
"bulkupload": {
"type": "string"
},
"absence-supported": {
"type": "boolean"
},
"absence-replacement": {
"type": "boolean"
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
use OCP\AppFramework\QueryException;
use Test\TestCase;

/**
* @group DB
*/
class NotificationProviderManagerTest extends TestCase {

/** @var NotificationProviderManager|\PHPUnit\Framework\MockObject\MockObject */
Expand Down
34 changes: 32 additions & 2 deletions apps/dav/tests/unit/CapabilitiesTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@

use OCA\DAV\Capabilities;
use OCP\IConfig;
use OCP\User\IAvailabilityCoordinator;
use Test\TestCase;

/**
Expand All @@ -19,7 +20,11 @@ public function testGetCapabilities(): void {
->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',
Expand All @@ -34,7 +39,11 @@ public function testGetCapabilitiesWithBulkUpload(): void {
->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',
Expand All @@ -43,4 +52,25 @@ public function testGetCapabilitiesWithBulkUpload(): void {
];
$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,
'absence-replacement' => true,
],
];
$this->assertSame($expected, $capabilities->getCapabilities());
}
}

0 comments on commit ce7b5eb

Please sign in to comment.