updated plugin W3 Total Cache
version 2.3.3
This commit is contained in:
287
wp-content/plugins/w3-total-cache/vendor/guzzlehttp/psr7/tests/UploadedFileTest.php
vendored
Normal file
287
wp-content/plugins/w3-total-cache/vendor/guzzlehttp/psr7/tests/UploadedFileTest.php
vendored
Normal file
@ -0,0 +1,287 @@
|
||||
<?php
|
||||
|
||||
namespace GuzzleHttp\Tests\Psr7;
|
||||
|
||||
use GuzzleHttp\Psr7\Stream;
|
||||
use GuzzleHttp\Psr7\UploadedFile;
|
||||
use ReflectionProperty;
|
||||
|
||||
/**
|
||||
* @covers GuzzleHttp\Psr7\UploadedFile
|
||||
*/
|
||||
class UploadedFileTest extends BaseTest
|
||||
{
|
||||
private $cleanup;
|
||||
|
||||
/**
|
||||
* @before
|
||||
*/
|
||||
public function setUpTest()
|
||||
{
|
||||
$this->cleanup = [];
|
||||
}
|
||||
|
||||
/**
|
||||
* @after
|
||||
*/
|
||||
public function tearDownTest()
|
||||
{
|
||||
foreach ($this->cleanup as $file) {
|
||||
if (is_scalar($file) && file_exists($file)) {
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function invalidStreams()
|
||||
{
|
||||
return [
|
||||
'null' => [null],
|
||||
'true' => [true],
|
||||
'false' => [false],
|
||||
'int' => [1],
|
||||
'float' => [1.1],
|
||||
'array' => [['filename']],
|
||||
'object' => [(object) ['filename']],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider invalidStreams
|
||||
*/
|
||||
public function testRaisesExceptionOnInvalidStreamOrFile($streamOrFile)
|
||||
{
|
||||
$this->expectExceptionGuzzle('InvalidArgumentException');
|
||||
|
||||
new UploadedFile($streamOrFile, 0, UPLOAD_ERR_OK);
|
||||
}
|
||||
|
||||
public function invalidSizes()
|
||||
{
|
||||
return [
|
||||
'null' => [null],
|
||||
'float' => [1.1],
|
||||
'array' => [[1]],
|
||||
'object' => [(object) [1]],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider invalidSizes
|
||||
*/
|
||||
public function testRaisesExceptionOnInvalidSize($size)
|
||||
{
|
||||
$this->expectExceptionGuzzle('InvalidArgumentException', 'size');
|
||||
|
||||
new UploadedFile(fopen('php://temp', 'wb+'), $size, UPLOAD_ERR_OK);
|
||||
}
|
||||
|
||||
public function invalidErrorStatuses()
|
||||
{
|
||||
return [
|
||||
'null' => [null],
|
||||
'true' => [true],
|
||||
'false' => [false],
|
||||
'float' => [1.1],
|
||||
'string' => ['1'],
|
||||
'array' => [[1]],
|
||||
'object' => [(object) [1]],
|
||||
'negative' => [-1],
|
||||
'too-big' => [9],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider invalidErrorStatuses
|
||||
*/
|
||||
public function testRaisesExceptionOnInvalidErrorStatus($status)
|
||||
{
|
||||
$this->expectExceptionGuzzle('InvalidArgumentException', 'status');
|
||||
|
||||
new UploadedFile(fopen('php://temp', 'wb+'), 0, $status);
|
||||
}
|
||||
|
||||
public function invalidFilenamesAndMediaTypes()
|
||||
{
|
||||
return [
|
||||
'true' => [true],
|
||||
'false' => [false],
|
||||
'int' => [1],
|
||||
'float' => [1.1],
|
||||
'array' => [['string']],
|
||||
'object' => [(object) ['string']],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider invalidFilenamesAndMediaTypes
|
||||
*/
|
||||
public function testRaisesExceptionOnInvalidClientFilename($filename)
|
||||
{
|
||||
$this->expectExceptionGuzzle('InvalidArgumentException', 'filename');
|
||||
|
||||
new UploadedFile(fopen('php://temp', 'wb+'), 0, UPLOAD_ERR_OK, $filename);
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider invalidFilenamesAndMediaTypes
|
||||
*/
|
||||
public function testRaisesExceptionOnInvalidClientMediaType($mediaType)
|
||||
{
|
||||
$this->expectExceptionGuzzle('InvalidArgumentException', 'media type');
|
||||
|
||||
new UploadedFile(fopen('php://temp', 'wb+'), 0, UPLOAD_ERR_OK, 'foobar.baz', $mediaType);
|
||||
}
|
||||
|
||||
public function testGetStreamReturnsOriginalStreamObject()
|
||||
{
|
||||
$stream = new Stream(fopen('php://temp', 'r'));
|
||||
$upload = new UploadedFile($stream, 0, UPLOAD_ERR_OK);
|
||||
|
||||
self::assertSame($stream, $upload->getStream());
|
||||
}
|
||||
|
||||
public function testGetStreamReturnsWrappedPhpStream()
|
||||
{
|
||||
$stream = fopen('php://temp', 'wb+');
|
||||
$upload = new UploadedFile($stream, 0, UPLOAD_ERR_OK);
|
||||
$uploadStream = $upload->getStream()->detach();
|
||||
|
||||
self::assertSame($stream, $uploadStream);
|
||||
}
|
||||
|
||||
public function testGetStreamReturnsStreamForFile()
|
||||
{
|
||||
$this->cleanup[] = $stream = tempnam(sys_get_temp_dir(), 'stream_file');
|
||||
$upload = new UploadedFile($stream, 0, UPLOAD_ERR_OK);
|
||||
$uploadStream = $upload->getStream();
|
||||
$r = new ReflectionProperty($uploadStream, 'filename');
|
||||
$r->setAccessible(true);
|
||||
|
||||
self::assertSame($stream, $r->getValue($uploadStream));
|
||||
}
|
||||
|
||||
public function testSuccessful()
|
||||
{
|
||||
$stream = \GuzzleHttp\Psr7\Utils::streamFor('Foo bar!');
|
||||
$upload = new UploadedFile($stream, $stream->getSize(), UPLOAD_ERR_OK, 'filename.txt', 'text/plain');
|
||||
|
||||
self::assertSame($stream->getSize(), $upload->getSize());
|
||||
self::assertSame('filename.txt', $upload->getClientFilename());
|
||||
self::assertSame('text/plain', $upload->getClientMediaType());
|
||||
|
||||
$this->cleanup[] = $to = tempnam(sys_get_temp_dir(), 'successful');
|
||||
$upload->moveTo($to);
|
||||
self::assertFileExists($to);
|
||||
self::assertSame($stream->__toString(), file_get_contents($to));
|
||||
}
|
||||
|
||||
public function invalidMovePaths()
|
||||
{
|
||||
return [
|
||||
'null' => [null],
|
||||
'true' => [true],
|
||||
'false' => [false],
|
||||
'int' => [1],
|
||||
'float' => [1.1],
|
||||
'empty' => [''],
|
||||
'array' => [['filename']],
|
||||
'object' => [(object) ['filename']],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider invalidMovePaths
|
||||
*/
|
||||
public function testMoveRaisesExceptionForInvalidPath($path)
|
||||
{
|
||||
$stream = \GuzzleHttp\Psr7\Utils::streamFor('Foo bar!');
|
||||
$upload = new UploadedFile($stream, 0, UPLOAD_ERR_OK);
|
||||
|
||||
$this->cleanup[] = $path;
|
||||
|
||||
$this->expectExceptionGuzzle('InvalidArgumentException', 'path');
|
||||
$upload->moveTo($path);
|
||||
}
|
||||
|
||||
public function testMoveCannotBeCalledMoreThanOnce()
|
||||
{
|
||||
$stream = \GuzzleHttp\Psr7\Utils::streamFor('Foo bar!');
|
||||
$upload = new UploadedFile($stream, 0, UPLOAD_ERR_OK);
|
||||
|
||||
$this->cleanup[] = $to = tempnam(sys_get_temp_dir(), 'diac');
|
||||
$upload->moveTo($to);
|
||||
self::assertFileExists($to);
|
||||
|
||||
$this->expectExceptionGuzzle('RuntimeException', 'moved');
|
||||
$upload->moveTo($to);
|
||||
}
|
||||
|
||||
public function testCannotRetrieveStreamAfterMove()
|
||||
{
|
||||
$stream = \GuzzleHttp\Psr7\Utils::streamFor('Foo bar!');
|
||||
$upload = new UploadedFile($stream, 0, UPLOAD_ERR_OK);
|
||||
|
||||
$this->cleanup[] = $to = tempnam(sys_get_temp_dir(), 'diac');
|
||||
$upload->moveTo($to);
|
||||
self::assertFileExists($to);
|
||||
|
||||
$this->expectExceptionGuzzle('RuntimeException', 'moved');
|
||||
$upload->getStream();
|
||||
}
|
||||
|
||||
public function nonOkErrorStatus()
|
||||
{
|
||||
return [
|
||||
'UPLOAD_ERR_INI_SIZE' => [ UPLOAD_ERR_INI_SIZE ],
|
||||
'UPLOAD_ERR_FORM_SIZE' => [ UPLOAD_ERR_FORM_SIZE ],
|
||||
'UPLOAD_ERR_PARTIAL' => [ UPLOAD_ERR_PARTIAL ],
|
||||
'UPLOAD_ERR_NO_FILE' => [ UPLOAD_ERR_NO_FILE ],
|
||||
'UPLOAD_ERR_NO_TMP_DIR' => [ UPLOAD_ERR_NO_TMP_DIR ],
|
||||
'UPLOAD_ERR_CANT_WRITE' => [ UPLOAD_ERR_CANT_WRITE ],
|
||||
'UPLOAD_ERR_EXTENSION' => [ UPLOAD_ERR_EXTENSION ],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider nonOkErrorStatus
|
||||
*/
|
||||
public function testConstructorDoesNotRaiseExceptionForInvalidStreamWhenErrorStatusPresent($status)
|
||||
{
|
||||
$uploadedFile = new UploadedFile('not ok', 0, $status);
|
||||
self::assertSame($status, $uploadedFile->getError());
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider nonOkErrorStatus
|
||||
*/
|
||||
public function testMoveToRaisesExceptionWhenErrorStatusPresent($status)
|
||||
{
|
||||
$uploadedFile = new UploadedFile('not ok', 0, $status);
|
||||
$this->expectExceptionGuzzle('RuntimeException', 'upload error');
|
||||
$uploadedFile->moveTo(__DIR__ . '/' . sha1(uniqid('', true)));
|
||||
}
|
||||
|
||||
/**
|
||||
* @dataProvider nonOkErrorStatus
|
||||
*/
|
||||
public function testGetStreamRaisesExceptionWhenErrorStatusPresent($status)
|
||||
{
|
||||
$uploadedFile = new UploadedFile('not ok', 0, $status);
|
||||
$this->expectExceptionGuzzle('RuntimeException', 'upload error');
|
||||
$uploadedFile->getStream();
|
||||
}
|
||||
|
||||
public function testMoveToCreatesStreamIfOnlyAFilenameWasProvided()
|
||||
{
|
||||
$this->cleanup[] = $from = tempnam(sys_get_temp_dir(), 'copy_from');
|
||||
$this->cleanup[] = $to = tempnam(sys_get_temp_dir(), 'copy_to');
|
||||
|
||||
copy(__FILE__, $from);
|
||||
|
||||
$uploadedFile = new UploadedFile($from, 100, UPLOAD_ERR_OK, basename($from), 'text/plain');
|
||||
$uploadedFile->moveTo($to);
|
||||
|
||||
self::assertFileEquals(__FILE__, $to);
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user