/** * @test * @group integration * @TODO: Rewrite or move to functional suite */ public function setFileContentsUpdatesObjectProperties() { $this->markTestSkipped('This test does way to much and is mocked incomplete. Skipped for now.'); $this->initializeVfs(); $driverObject = $this->getMockForAbstractClass(AbstractDriver::class, array(), '', false); $this->subject = $this->getMock(ResourceStorage::class, array('getFileIndexRepository', 'checkFileActionPermission'), array($driverObject, array())); $this->subject->expects($this->any())->method('checkFileActionPermission')->will($this->returnValue(true)); $fileInfo = array('storage' => 'A', 'identifier' => 'B', 'mtime' => 'C', 'ctime' => 'D', 'mimetype' => 'E', 'size' => 'F', 'name' => 'G'); $newProperties = array('storage' => $fileInfo['storage'], 'identifier' => $fileInfo['identifier'], 'tstamp' => $fileInfo['mtime'], 'crdate' => $fileInfo['ctime'], 'mime_type' => $fileInfo['mimetype'], 'size' => $fileInfo['size'], 'name' => $fileInfo['name']); $hash = 'asdfg'; /** @var $mockedDriver LocalDriver|\PHPUnit_Framework_MockObject_MockObject */ $mockedDriver = $this->getMock(LocalDriver::class, array(), array(array('basePath' => $this->getMountRootUrl()))); $mockedDriver->expects($this->once())->method('getFileInfoByIdentifier')->will($this->returnValue($fileInfo)); $mockedDriver->expects($this->once())->method('hash')->will($this->returnValue($hash)); $this->subject->setDriver($mockedDriver); $indexFileRepositoryMock = $this->getMock(FileIndexRepository::class); $this->subject->expects($this->any())->method('getFileIndexRepository')->will($this->returnValue($indexFileRepositoryMock)); /** @var $mockedFile File|\PHPUnit_Framework_MockObject_MockObject */ $mockedFile = $this->getMock(File::class, array(), array(), '', false); $mockedFile->expects($this->any())->method('getIdentifier')->will($this->returnValue($fileInfo['identifier'])); // called by indexer because the properties are updated $this->subject->expects($this->any())->method('getFileInfoByIdentifier')->will($this->returnValue($newProperties)); $mockedFile->expects($this->any())->method('getStorage')->will($this->returnValue($this->subject)); $mockedFile->expects($this->any())->method('getProperties')->will($this->returnValue(array_keys($fileInfo))); $mockedFile->expects($this->any())->method('getUpdatedProperties')->will($this->returnValue(array_keys($newProperties))); // do not update directly; that's up to the indexer $indexFileRepositoryMock->expects($this->never())->method('update'); $this->subject->setFileContents($mockedFile, $this->getUniqueId()); }
/** * @test * @group integration * @TODO: Rewrite or move to functional suite */ public function setFileContentsUpdatesObjectProperties() { $this->markTestSkipped('This test does way to much and is mocked incomplete. Skipped for now.'); $this->initializeVfs(); $driverObject = $this->getMockForAbstractClass('TYPO3\\CMS\\Core\\Resource\\Driver\\AbstractDriver', array(), '', FALSE); $this->fixture = $this->getMock('TYPO3\\CMS\\Core\\Resource\\ResourceStorage', array('getFileIndexRepository', 'checkFileActionPermission'), array($driverObject, array())); $this->fixture->expects($this->any())->method('checkFileActionPermission')->will($this->returnValue(TRUE)); $fileInfo = array('storage' => 'A', 'identifier' => 'B', 'mtime' => 'C', 'ctime' => 'D', 'mimetype' => 'E', 'size' => 'F', 'name' => 'G'); $newProperties = array('storage' => $fileInfo['storage'], 'identifier' => $fileInfo['identifier'], 'tstamp' => $fileInfo['mtime'], 'crdate' => $fileInfo['ctime'], 'mime_type' => $fileInfo['mimetype'], 'size' => $fileInfo['size'], 'name' => $fileInfo['name']); $hash = 'asdfg'; $driver = $this->getMock('TYPO3\\CMS\\Core\\Resource\\Driver\\LocalDriver', array(), array(array('basePath' => $this->getMountRootUrl()))); $driver->expects($this->once())->method('getFileInfoByIdentifier')->will($this->returnValue($fileInfo)); $driver->expects($this->once())->method('hash')->will($this->returnValue($hash)); $this->fixture->setDriver($driver); $indexFileRepositoryMock = $this->getMock('TYPO3\\CMS\\Core\\Resource\\Index\\FileIndexRepository'); $this->fixture->expects($this->any())->method('getFileIndexRepository')->will($this->returnValue($indexFileRepositoryMock)); $mockedFile = $this->getMock('TYPO3\\CMS\\Core\\Resource\\File', array(), array(), '', FALSE); $mockedFile->expects($this->any())->method('getIdentifier')->will($this->returnValue($fileInfo['identifier'])); // called by indexer because the properties are updated $this->fixture->expects($this->any())->method('getFileInfoByIdentifier')->will($this->returnValue($newProperties)); $mockedFile->expects($this->any())->method('getStorage')->will($this->returnValue($this->fixture)); $mockedFile->expects($this->any())->method('getProperties')->will($this->returnValue(array_keys($fileInfo))); $mockedFile->expects($this->any())->method('getUpdatedProperties')->will($this->returnValue(array_keys($newProperties))); // do not update directly; that's up to the indexer $indexFileRepositoryMock->expects($this->never())->method('update'); $this->fixture->setFileContents($mockedFile, uniqid()); }
/** * @test * @group integration */ public function setFileContentsUpdatesObjectProperties() { $fileContents = 'asdf'; $this->initializeVfs(); $this->prepareFixture(array(), TRUE); $fileProperties = array('someProperty' => 'value', 'someOtherProperty' => 42); $hash = 'asdfg'; $driver = $this->getMock('TYPO3\\CMS\\Core\\Resource\\Driver\\LocalDriver', array(), array(array('basePath' => $this->getMountRootUrl()))); $driver->expects($this->once())->method('getFileInfo')->will($this->returnValue($fileProperties)); $driver->expects($this->once())->method('hash')->will($this->returnValue($hash)); $this->fixture->setDriver($driver); $mockedFile = $this->getMock('TYPO3\\CMS\\Core\\Resource\\File', array(), array(), '', FALSE); $mockedFile->expects($this->any())->method('getIdentifier')->will($this->returnValue('/file.ext')); $mockedFile->expects($this->once())->method('updateProperties')->with($this->equalTo(array_merge($fileProperties, array('sha1' => $hash)))); $this->fixture->setFileContents($mockedFile, uniqid()); }