diff --git a/tests/unit/Cron/DeleteCronTest.php b/tests/unit/Cron/DeleteCronTest.php index e037cb1a4..f7cdde4b4 100644 --- a/tests/unit/Cron/DeleteCronTest.php +++ b/tests/unit/Cron/DeleteCronTest.php @@ -27,6 +27,7 @@ use OCA\Deck\Db\Attachment; use OCA\Deck\Db\AttachmentMapper; use OCA\Deck\Db\Board; use OCA\Deck\Db\BoardMapper; +use OCA\Deck\InvalidAttachmentType; use OCA\Deck\Service\AttachmentService; use OCA\Deck\Service\IAttachmentService; @@ -97,4 +98,24 @@ class DeleteCronTest extends \Test\TestCase { ->with($attachment); $this->invokePrivate($this->deleteCron, 'run', [null]); } + + public function testDeleteCronInvalidAttachment() { + $boards = []; + $this->boardMapper->expects($this->once()) + ->method('findToDelete') + ->willReturn($boards); + + $attachment = new Attachment(); + $attachment->setType('deck_file_invalid'); + $this->attachmentMapper->expects($this->once()) + ->method('findToDelete') + ->willReturn([$attachment]); + $this->attachmentService->expects($this->once()) + ->method('getService') + ->will($this->throwException(new InvalidAttachmentType('deck_file_invalid'))); + $this->attachmentMapper->expects($this->once()) + ->method('delete') + ->with($attachment); + $this->invokePrivate($this->deleteCron, 'run', [null]); + } } \ No newline at end of file diff --git a/tests/unit/Service/AttachmentServiceTest.php b/tests/unit/Service/AttachmentServiceTest.php index 9a0c86292..5346d7543 100644 --- a/tests/unit/Service/AttachmentServiceTest.php +++ b/tests/unit/Service/AttachmentServiceTest.php @@ -160,6 +160,36 @@ class AttachmentServiceTest extends TestCase { $this->assertEquals($attachments, $this->attachmentService->findAll(123, false)); } + public function testFindAllWithDeleted() { + $this->mockPermission(Acl::PERMISSION_READ); + $attachments = [ + $this->createAttachment('deck_file','file1'), + $this->createAttachment('deck_file','file2'), + $this->createAttachment('deck_file_invalid','file3'), + ]; + $attachmentsDeleted = [ + $this->createAttachment('deck_file','file4'), + $this->createAttachment('deck_file','file5'), + $this->createAttachment('deck_file_invalid','file6'), + ]; + $this->attachmentMapper->expects($this->once()) + ->method('findAll') + ->with(123) + ->willReturn($attachments); + $this->attachmentMapper->expects($this->once()) + ->method('findToDelete') + ->with(123, false) + ->willReturn($attachmentsDeleted); + + $this->attachmentServiceImpl->expects($this->at(0)) + ->method('extendData') + ->with($attachments[0]); + $this->attachmentServiceImpl->expects($this->at(1)) + ->method('extendData') + ->with($attachments[1]); + $this->assertEquals(array_merge($attachments, $attachmentsDeleted), $this->attachmentService->findAll(123, true)); + } + public function testCount() { $this->cache->expects($this->once())->method('get')->with('card-123')->willReturn(null); $this->attachmentMapper->expects($this->once())->method('findAll')->willReturn([1,2,3,4]); diff --git a/tests/unit/Service/FileServiceTest.php b/tests/unit/Service/FileServiceTest.php index f0bf0e9e8..3885fbc06 100644 --- a/tests/unit/Service/FileServiceTest.php +++ b/tests/unit/Service/FileServiceTest.php @@ -44,6 +44,7 @@ use OCP\Files\SimpleFS\ISimpleFile; use OCP\Files\SimpleFS\ISimpleFolder; use OCP\ICacheFactory; use OCP\IL10N; +use OCP\ILogger; use OCP\IRequest; use PHPUnit\Framework\MockObject\MockObject; use Test\TestCase; @@ -56,6 +57,8 @@ class FileServiceTest extends TestCase { private $appData; /** @var IRequest|MockObject */ private $request; + /** @var ILogger|MockObject */ + private $logger; /** @var FileService */ private $fileService; @@ -64,7 +67,8 @@ class FileServiceTest extends TestCase { $this->request = $this->createMock(IRequest::class); $this->appData = $this->createMock(IAppData::class); $this->l10n = $this->createMock(IL10N::class); - $this->fileService = new FileService($this->l10n, $this->appData, $this->request); + $this->logger = $this->createMock(ILogger::class); + $this->fileService = new FileService($this->l10n, $this->appData, $this->request, $this->logger); } public function mockGetFolder($cardId) { @@ -75,6 +79,18 @@ class FileServiceTest extends TestCase { ->willReturn($folder); return $folder; } + public function mockGetFolderFailure($cardId) { + $folder = $this->createMock(ISimpleFolder::class); + $this->appData->expects($this->once()) + ->method('getFolder') + ->with('file-card-' . $cardId) + ->will($this->throwException(new \OCP\Files\NotFoundException())); + $this->appData->expects($this->once()) + ->method('newFolder') + ->with('file-card-' . $cardId) + ->willReturn($folder); + return $folder; + } private function getAttachment() { $attachment = new Attachment(); @@ -102,6 +118,39 @@ class FileServiceTest extends TestCase { ]); } + public function testExtendDataNotFound() { + $attachment = $this->getAttachment(); + $folder = $this->mockGetFolder(123); + $folder->expects($this->once())->method('getFile')->will($this->throwException(new \OCP\Files\NotFoundException())); + $this->assertEquals($attachment, $this->fileService->extendData($attachment)); + } + + public function testExtendDataNotPermitted() { + $attachment = $this->getAttachment(); + $folder = $this->mockGetFolder(123); + $folder->expects($this->once())->method('getFile')->will($this->throwException(new \OCP\Files\NotPermittedException())); + $this->assertEquals($attachment, $this->fileService->extendData($attachment)); + } + + public function testExtendData() { + $attachment = $this->getAttachment(); + $expected = $this->getAttachment(); + $expected->setExtendedData([ + 'filesize' => 100, + 'mimetype' => 'image/jpeg', + 'info' => pathinfo(__FILE__) + ]); + + $file = $this->createMock(ISimpleFile::class); + $file->expects($this->once())->method('getSize')->willReturn(100); + $file->expects($this->once())->method('getMimeType')->willReturn('image/jpeg'); + $file->expects($this->once())->method('getName')->willReturn(__FILE__); + + $folder = $this->mockGetFolder(123); + $folder->expects($this->once())->method('getFile')->willReturn($file); + $this->assertEquals($expected, $this->fileService->extendData($attachment)); + } + /** * @expectedException \Exception */ @@ -144,6 +193,24 @@ class FileServiceTest extends TestCase { $this->fileService->create($attachment); } + public function testCreateNoFolder() { + $attachment = $this->getAttachment(); + $this->mockGetUploadedFile(); + $folder = $this->mockGetFolderFailure(123); + $folder->expects($this->once()) + ->method('fileExists') + ->willReturn(false); + $file = $this->createMock(ISimpleFile::class); + $file->expects($this->once()) + ->method('putContent') + ->with(file_get_contents(__FILE__, 'r')); + $folder->expects($this->once()) + ->method('newFile') + ->willReturn($file); + + $this->fileService->create($attachment); + } + /** * @expectedException \Exception * @expectedExceptionMessage File already exists.