/**
  * @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());
 }