diff options
4 files changed, 17 insertions, 9 deletions
diff --git a/apps/files_external/lib/Controller/StoragesController.php b/apps/files_external/lib/Controller/StoragesController.php index 18f8d3164b7..4516f087217 100644 --- a/apps/files_external/lib/Controller/StoragesController.php +++ b/apps/files_external/lib/Controller/StoragesController.php @@ -140,7 +140,7 @@ abstract class StoragesController extends Controller { $backend = $storage->getBackend(); /** @var AuthMechanism */ $authMechanism = $storage->getAuthMechanism(); - if ($backend->checkDependencies()) { + if ($backend->checkRequiredDependencies()) { // invalid backend return new DataResponse( [ diff --git a/apps/files_external/lib/Lib/DependencyTrait.php b/apps/files_external/lib/Lib/DependencyTrait.php index 644132b82bc..79a9555de2c 100644 --- a/apps/files_external/lib/Lib/DependencyTrait.php +++ b/apps/files_external/lib/Lib/DependencyTrait.php @@ -13,11 +13,23 @@ namespace OCA\Files_External\Lib; trait DependencyTrait { /** - * Check if object is valid for use + * Check if object has unsatisfied required or optional dependencies * * @return MissingDependency[] Unsatisfied dependencies */ public function checkDependencies() { return []; // no dependencies by default } + + /** + * Check if object has unsatisfied required dependencies + * + * @return MissingDependency[] Unsatisfied required dependencies + */ + public function checkRequiredDependencies() { + return array_filter( + $this->checkDependencies(), + fn (MissingDependency $dependency) => !$dependency->isOptional() + ); + } } diff --git a/apps/files_external/lib/Service/BackendService.php b/apps/files_external/lib/Service/BackendService.php index 3a688ee66e6..c9e81711cae 100644 --- a/apps/files_external/lib/Service/BackendService.php +++ b/apps/files_external/lib/Service/BackendService.php @@ -13,7 +13,6 @@ use OCA\Files_External\Lib\Auth\AuthMechanism; use OCA\Files_External\Lib\Backend\Backend; use OCA\Files_External\Lib\Config\IAuthMechanismProvider; use OCA\Files_External\Lib\Config\IBackendProvider; -use OCA\Files_External\Lib\MissingDependency; use OCP\EventDispatcher\GenericEvent; use OCP\EventDispatcher\IEventDispatcher; use OCP\IAppConfig; @@ -188,10 +187,7 @@ class BackendService { * @return Backend[] */ public function getAvailableBackends() { - return array_filter($this->getBackends(), function ($backend) { - $missing = array_filter($backend->checkDependencies(), fn (MissingDependency $dependency) => !$dependency->isOptional()); - return count($missing) === 0; - }); + return array_filter($this->getBackends(), fn (Backend $backend) => !$backend->checkRequiredDependencies()); } /** diff --git a/apps/files_external/tests/Service/BackendServiceTest.php b/apps/files_external/tests/Service/BackendServiceTest.php index ef545688040..8d6f788c9b4 100644 --- a/apps/files_external/tests/Service/BackendServiceTest.php +++ b/apps/files_external/tests/Service/BackendServiceTest.php @@ -175,11 +175,11 @@ class BackendServiceTest extends \Test\TestCase { $backendAvailable = $this->getBackendMock('\Backend\Available'); $backendAvailable->expects($this->once()) - ->method('checkDependencies') + ->method('checkRequiredDependencies') ->willReturn([]); $backendNotAvailable = $this->getBackendMock('\Backend\NotAvailable'); $backendNotAvailable->expects($this->once()) - ->method('checkDependencies') + ->method('checkRequiredDependencies') ->willReturn([ $this->getMockBuilder('\OCA\Files_External\Lib\MissingDependency') ->disableOriginalConstructor() |