diff options
Diffstat (limited to 'apps/dav/tests')
3 files changed, 143 insertions, 2 deletions
diff --git a/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php index db07165ebf0..1352229b1f5 100644 --- a/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/FilesPluginTest.php @@ -7,12 +7,15 @@ */ namespace OCA\DAV\Tests\unit\Connector\Sabre; +use OC\Accounts\Account; +use OC\Accounts\AccountProperty; use OC\User\User; use OCA\DAV\Connector\Sabre\Directory; use OCA\DAV\Connector\Sabre\Exception\InvalidPath; use OCA\DAV\Connector\Sabre\File; use OCA\DAV\Connector\Sabre\FilesPlugin; use OCA\DAV\Connector\Sabre\Node; +use OCP\Accounts\IAccountManager; use OCP\Files\FileInfo; use OCP\Files\IFilenameValidator; use OCP\Files\InvalidPathException; @@ -43,6 +46,7 @@ class FilesPluginTest extends TestCase { private IPreview&MockObject $previewManager; private IUserSession&MockObject $userSession; private IFilenameValidator&MockObject $filenameValidator; + private IAccountManager&MockObject $accountManager; private FilesPlugin $plugin; protected function setUp(): void { @@ -57,6 +61,7 @@ class FilesPluginTest extends TestCase { $this->previewManager = $this->createMock(IPreview::class); $this->userSession = $this->createMock(IUserSession::class); $this->filenameValidator = $this->createMock(IFilenameValidator::class); + $this->accountManager = $this->createMock(IAccountManager::class); $this->plugin = new FilesPlugin( $this->tree, @@ -65,6 +70,7 @@ class FilesPluginTest extends TestCase { $this->previewManager, $this->userSession, $this->filenameValidator, + $this->accountManager, ); $response = $this->getMockBuilder(ResponseInterface::class) @@ -154,6 +160,13 @@ class FilesPluginTest extends TestCase { ->method('getDisplayName') ->willReturn('M. Foo'); + $owner = $this->getMockBuilder(Account::class) + ->disableOriginalConstructor()->getMock(); + $this->accountManager->expects($this->once()) + ->method('getAccount') + ->with($user) + ->willReturn($owner); + $node->expects($this->once()) ->method('getDirectDownload') ->willReturn(['url' => 'http://example.com/']); @@ -161,6 +174,18 @@ class FilesPluginTest extends TestCase { ->method('getOwner') ->willReturn($user); + $displayNameProp = $this->getMockBuilder(AccountProperty::class) + ->disableOriginalConstructor()->getMock(); + $owner + ->expects($this->once()) + ->method('getProperty') + ->with(IAccountManager::PROPERTY_DISPLAYNAME) + ->willReturn($displayNameProp); + $displayNameProp + ->expects($this->once()) + ->method('getScope') + ->willReturn(IAccountManager::SCOPE_PUBLISHED); + $this->plugin->handleGetProperties( $propFind, $node @@ -179,6 +204,101 @@ class FilesPluginTest extends TestCase { $this->assertEquals([], $propFind->get404Properties()); } + public function testGetDisplayNamePropertyWhenNotPublished(): void { + /** @var File|\PHPUnit\Framework\MockObject\MockObject $node */ + $node = $this->createTestNode('\OCA\DAV\Connector\Sabre\File'); + + $propFind = new PropFind( + '/dummyPath', + [ + FilesPlugin::OWNER_DISPLAY_NAME_PROPERTYNAME, + ], + 0 + ); + + $this->userSession->expects($this->once()) + ->method('getUser') + ->willReturn(null); + + $user = $this->getMockBuilder(User::class) + ->disableOriginalConstructor()->getMock(); + + $user + ->expects($this->never()) + ->method('getDisplayName'); + + $owner = $this->getMockBuilder(Account::class) + ->disableOriginalConstructor()->getMock(); + $this->accountManager->expects($this->once()) + ->method('getAccount') + ->with($user) + ->willReturn($owner); + + $node->expects($this->once()) + ->method('getOwner') + ->willReturn($user); + + $displayNameProp = $this->getMockBuilder(AccountProperty::class) + ->disableOriginalConstructor()->getMock(); + $owner + ->expects($this->once()) + ->method('getProperty') + ->with(IAccountManager::PROPERTY_DISPLAYNAME) + ->willReturn($displayNameProp); + $displayNameProp + ->expects($this->once()) + ->method('getScope') + ->willReturn(IAccountManager::SCOPE_PRIVATE); + + $this->plugin->handleGetProperties( + $propFind, + $node + ); + + $this->assertEquals(null, $propFind->get(FilesPlugin::OWNER_DISPLAY_NAME_PROPERTYNAME)); + } + + public function testGetDisplayNamePropertyWhenNotPublishedButLoggedIn(): void { + /** @var File|\PHPUnit\Framework\MockObject\MockObject $node */ + $node = $this->createTestNode('\OCA\DAV\Connector\Sabre\File'); + + $propFind = new PropFind( + '/dummyPath', + [ + FilesPlugin::OWNER_DISPLAY_NAME_PROPERTYNAME, + ], + 0 + ); + + $user = $this->getMockBuilder(User::class) + ->disableOriginalConstructor()->getMock(); + + $node->expects($this->once()) + ->method('getOwner') + ->willReturn($user); + + $loggedInUser = $this->getMockBuilder(User::class) + ->disableOriginalConstructor()->getMock(); + $this->userSession->expects($this->once()) + ->method('getUser') + ->willReturn($loggedInUser); + + $user + ->expects($this->once()) + ->method('getDisplayName') + ->willReturn('M. Foo'); + + $this->accountManager->expects($this->never()) + ->method('getAccount'); + + $this->plugin->handleGetProperties( + $propFind, + $node + ); + + $this->assertEquals('M. Foo', $propFind->get(FilesPlugin::OWNER_DISPLAY_NAME_PROPERTYNAME)); + } + public function testGetPropertiesStorageNotAvailable(): void { /** @var File|\PHPUnit\Framework\MockObject\MockObject $node */ $node = $this->createTestNode('\OCA\DAV\Connector\Sabre\File'); @@ -215,6 +335,7 @@ class FilesPluginTest extends TestCase { $this->previewManager, $this->userSession, $this->filenameValidator, + $this->accountManager, true, ); $this->plugin->initialize($this->server); diff --git a/apps/dav/tests/unit/Connector/Sabre/FilesReportPluginTest.php b/apps/dav/tests/unit/Connector/Sabre/FilesReportPluginTest.php index 8b169dcd46f..6a9372ca3fd 100644 --- a/apps/dav/tests/unit/Connector/Sabre/FilesReportPluginTest.php +++ b/apps/dav/tests/unit/Connector/Sabre/FilesReportPluginTest.php @@ -11,6 +11,7 @@ use OC\Files\View; use OCA\DAV\Connector\Sabre\Directory; use OCA\DAV\Connector\Sabre\FilesPlugin; use OCA\DAV\Connector\Sabre\FilesReportPlugin as FilesReportPluginImplementation; +use OCP\Accounts\IAccountManager; use OCP\App\IAppManager; use OCP\Files\File; use OCP\Files\FileInfo; @@ -389,6 +390,7 @@ class FilesReportPluginTest extends \Test\TestCase { ->getMock(); $validator = $this->createMock(IFilenameValidator::class); + $accountManager = $this->createMock(IAccountManager::class); $this->server->addPlugin( new FilesPlugin( @@ -398,6 +400,7 @@ class FilesReportPluginTest extends \Test\TestCase { $this->previewManager, $this->createMock(IUserSession::class), $validator, + $accountManager, ) ); $this->plugin->initialize($this->server); diff --git a/apps/dav/tests/unit/Service/DefaultContactServiceTest.php b/apps/dav/tests/unit/Service/DefaultContactServiceTest.php index 9540e77ce6c..68bbc02ed08 100644 --- a/apps/dav/tests/unit/Service/DefaultContactServiceTest.php +++ b/apps/dav/tests/unit/Service/DefaultContactServiceTest.php @@ -17,6 +17,7 @@ use OCP\Files\IAppData; use OCP\Files\NotFoundException; use OCP\Files\SimpleFS\ISimpleFile; use OCP\Files\SimpleFS\ISimpleFolder; +use OCP\IAppConfig; use PHPUnit\Framework\MockObject\MockObject; use Psr\Log\LoggerInterface; use Symfony\Component\Uid\Uuid; @@ -28,6 +29,7 @@ class DefaultContactServiceTest extends TestCase { private MockObject|IAppManager $appManager; private MockObject|IAppDataFactory $appDataFactory; private MockObject|LoggerInterface $logger; + private MockObject|IAppConfig $config; protected function setUp(): void { parent::setUp(); @@ -36,19 +38,21 @@ class DefaultContactServiceTest extends TestCase { $this->appManager = $this->createMock(IAppManager::class); $this->appDataFactory = $this->createMock(IAppDataFactory::class); $this->logger = $this->createMock(LoggerInterface::class); + $this->config = $this->createMock(IAppConfig::class); $this->service = new DefaultContactService( $this->cardDav, $this->appManager, $this->appDataFactory, - $this->logger + $this->config, + $this->logger, ); } public function testCreateDefaultContactWithInvalidCard(): void { // Invalid vCard missing required FN property $vcardContent = "BEGIN:VCARD\nVERSION:3.0\nEND:VCARD"; - + $this->config->method('getValueString')->willReturn('yes'); $appData = $this->createMock(IAppData::class); $folder = $this->createMock(ISimpleFolder::class); $file = $this->createMock(ISimpleFile::class); @@ -72,6 +76,7 @@ class DefaultContactServiceTest extends TestCase { $originalRev = '20200101T000000Z'; $vcardContent = "BEGIN:VCARD\nVERSION:3.0\nFN:Test User\nUID:$originalUid\nREV:$originalRev\nEND:VCARD"; + $this->config->method('getValueString')->willReturn('yes'); $appData = $this->createMock(IAppData::class); $folder = $this->createMock(ISimpleFolder::class); $file = $this->createMock(ISimpleFile::class); @@ -103,6 +108,7 @@ class DefaultContactServiceTest extends TestCase { public function testDefaultContactFileDoesNotExist(): void { $appData = $this->createMock(IAppData::class); + $this->config->method('getValueString')->willReturn('yes'); $appData->method('getFolder')->willThrowException(new NotFoundException()); $this->appDataFactory->method('get')->willReturn($appData); @@ -115,6 +121,7 @@ class DefaultContactServiceTest extends TestCase { public function testUidAndRevAreAddedIfMissing(): void { $vcardContent = "BEGIN:VCARD\nVERSION:3.0\nFN:Test User\nEND:VCARD"; + $this->config->method('getValueString')->willReturn('yes'); $appData = $this->createMock(IAppData::class); $folder = $this->createMock(ISimpleFolder::class); $file = $this->createMock(ISimpleFile::class); @@ -145,4 +152,14 @@ class DefaultContactServiceTest extends TestCase { $this->assertNotNull($vcard->UID); $this->assertTrue(Uuid::isValid($vcard->UID->getValue())); } + + public function testDefaultContactIsNotCreatedIfEnabled(): void { + $this->config->method('getValueString')->willReturn('no'); + $this->logger->expects($this->never()) + ->method('error'); + $this->cardDav->expects($this->never()) + ->method('createCard'); + + $this->service->createDefaultContact(123); + } } |