View source
<?php
namespace Unit;
use Flow\File;
use Flow\FustyRequest;
use Flow\Config;
use org\bovigo\vfs\vfsStreamWrapper;
use org\bovigo\vfs\vfsStreamDirectory;
use org\bovigo\vfs\vfsStream;
class FustyRequestTest extends FlowUnitCase {
protected $vfs;
protected function setUp() {
parent::setUp();
vfsStreamWrapper::register();
$this->vfs = new vfsStreamDirectory('chunks');
vfsStreamWrapper::setRoot($this->vfs);
}
public function testFustyRequest_construct() {
$firstChunk = vfsStream::newFile('temp_file');
$firstChunk
->setContent('1234567890');
$this->vfs
->addChild($firstChunk);
$fileInfo = new \ArrayObject(array(
'size' => 10,
'error' => UPLOAD_ERR_OK,
'tmp_name' => $firstChunk
->url(),
));
$request = new \ArrayObject(array(
'flowIdentifier' => '13632-prettifyjs',
'flowFilename' => 'prettify.js',
'flowRelativePath' => 'home/prettify.js',
));
$fustyRequest = new FustyRequest($request, $fileInfo);
$this
->assertSame('prettify.js', $fustyRequest
->getFileName());
$this
->assertSame('13632-prettifyjs', $fustyRequest
->getIdentifier());
$this
->assertSame('home/prettify.js', $fustyRequest
->getRelativePath());
$this
->assertSame(1, $fustyRequest
->getCurrentChunkNumber());
$this
->assertTrue($fustyRequest
->isFustyFlowRequest());
$this
->assertSame(10, $fustyRequest
->getTotalSize());
$this
->assertSame(10, $fustyRequest
->getDefaultChunkSize());
$this
->assertSame(10, $fustyRequest
->getCurrentChunkSize());
$this
->assertSame(1, $fustyRequest
->getTotalChunks());
}
public function testFustyRequest_ValidateUpload() {
$firstChunk = vfsStream::newFile('temp_file');
$firstChunk
->setContent('1234567890');
$this->vfs
->addChild($firstChunk);
$fileInfo = new \ArrayObject(array(
'size' => 10,
'error' => UPLOAD_ERR_OK,
'tmp_name' => $firstChunk
->url(),
));
$request = new \ArrayObject(array(
'flowIdentifier' => '13632-prettifyjs',
'flowFilename' => 'prettify.js',
'flowRelativePath' => 'home/prettify.js',
));
$fustyRequest = new FustyRequest($request, $fileInfo);
$config = new Config();
$config
->setTempDir($this->vfs
->url());
$file = $this
->getMock('Flow\\File', array(
'_move_uploaded_file',
), array(
$config,
$fustyRequest,
));
$file
->expects($this
->once())
->method('_move_uploaded_file')
->will($this
->returnCallback(function ($filename, $destination) {
return rename($filename, $destination);
}));
$this
->assertTrue($file
->validateChunk());
$this
->assertFalse($file
->validateFile());
$this
->assertTrue($file
->saveChunk());
$this
->assertTrue($file
->validateFile());
$path = $this->vfs
->url() . DIRECTORY_SEPARATOR . 'new';
$this
->assertTrue($file
->save($path));
$this
->assertEquals(10, filesize($path));
}
}