* This file is licensed under the Affero General Public License version 3 or * later. * See the COPYING-README file. */ class Test_CryptStream extends UnitTestCase { private $tmpFiles=array(); function testStream() { $stream=$this->getStream('test1','w',strlen('foobar')); fwrite($stream,'foobar'); fclose($stream); $stream=$this->getStream('test1','r',strlen('foobar')); $data=fread($stream,6); fclose($stream); $this->assertEqual('foobar',$data); $file=OC::$SERVERROOT.'/3rdparty/MDB2.php'; $source=fopen($file,'r'); $target=$this->getStream('test2','w',0); OCP\Files::streamCopy($source,$target); fclose($target); fclose($source); $stream=$this->getStream('test2','r',filesize($file)); $data=stream_get_contents($stream); $original=file_get_contents($file); $this->assertEqual(strlen($original),strlen($data)); $this->assertEqual($original,$data); } /** * get a cryptstream to a temporary file * @param string $id * @param string $mode * @param int size * @return resource */ function getStream($id,$mode,$size) { if($id==='') { $id=uniqid(); } if(!isset($this->tmpFiles[$id])) { $file=OCP\Files::tmpFile(); $this->tmpFiles[$id]=$file; }else{ $file=$this->tmpFiles[$id]; } $stream=fopen($file,$mode); OC_CryptStream::$sourceStreams[$id]=array('path'=>'dummy'.$id,'stream'=>$stream,'size'=>$size); return fopen('crypt://streams/'.$id,$mode); } function testBinary() { $file=__DIR__.'/binary'; $source=file_get_contents($file); $stream=$this->getStream('test','w',strlen($source)); fwrite($stream,$source); fclose($stream); $stream=$this->getStream('test','r',strlen($source)); $data=stream_get_contents($stream); fclose($stream); $this->assertEqual(strlen($data),strlen($source)); $this->assertEqual($source,$data); $file=__DIR__.'/zeros'; $source=file_get_contents($file); $stream=$this->getStream('test2','w',strlen($source)); fwrite($stream,$source); fclose($stream); $stream=$this->getStream('test2','r',strlen($source)); $data=stream_get_contents($stream); fclose($stream); $this->assertEqual(strlen($data),strlen($source)); $this->assertEqual($source,$data); } }