l10n = $this->createMock(IL10N::class); $this->credentialsManager = $this->createMock(ICredentialsManager::class); $this->instance = new GlobalAuth($this->l10n, $this->credentialsManager); } private function getStorageConfig($type, $config = []) { /** @var \OCA\Files_External\Lib\StorageConfig|\PHPUnit\Framework\MockObject\MockObject $storageConfig */ $storageConfig = $this->createMock(StorageConfig::class); $storageConfig->expects($this->any()) ->method('getType') ->willReturn($type); $storageConfig->expects($this->any()) ->method('getBackendOptions') ->willReturnCallback(function () use (&$config) { return $config; }); $storageConfig->expects($this->any()) ->method('getBackendOption') ->willReturnCallback(function ($key) use (&$config) { return $config[$key]; }); $storageConfig->expects($this->any()) ->method('setBackendOption') ->willReturnCallback(function ($key, $value) use (&$config): void { $config[$key] = $value; }); return $storageConfig; } public function testNoCredentials(): void { $this->credentialsManager->expects($this->once()) ->method('retrieve') ->willReturn(null); $storage = $this->getStorageConfig(StorageConfig::MOUNT_TYPE_ADMIN); $this->instance->manipulateStorageConfig($storage); $this->assertEquals([], $storage->getBackendOptions()); } public function testSavedCredentials(): void { $this->credentialsManager->expects($this->once()) ->method('retrieve') ->willReturn([ 'user' => 'a', 'password' => 'b' ]); $storage = $this->getStorageConfig(StorageConfig::MOUNT_TYPE_ADMIN); $this->instance->manipulateStorageConfig($storage); $this->assertEquals([ 'user' => 'a', 'password' => 'b' ], $storage->getBackendOptions()); } public function testNoCredentialsPersonal(): void { $this->expectException(InsufficientDataForMeaningfulAnswerException::class); $this->credentialsManager->expects($this->never()) ->method('retrieve'); $storage = $this->getStorageConfig(StorageConfig::MOUNT_TYPE_PERSONAL); $this->instance->manipulateStorageConfig($storage); $this->assertEquals([], $storage->getBackendOptions()); } }