mirror of
https://github.com/Respect/Validation.git
synced 2024-06-26 09:10:08 +02:00
Previously, the MimeTypeTest was matching UNIX-style file slashes in its PHPUnit Expected Exception. This change fixes it to ignore the slash and match only the file name and pass on Windows platforms as well.
106 lines
2.7 KiB
PHP
106 lines
2.7 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of Respect/Validation.
|
|
*
|
|
* (c) Alexandre Gomes Gaigalas <alexandre@gaigalas.net>
|
|
*
|
|
* For the full copyright and license information, please view the "LICENSE.md"
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Respect\Validation\Rules;
|
|
|
|
use PHPUnit_Framework_TestCase;
|
|
use SplFileInfo;
|
|
|
|
/**
|
|
* @author Henrique Moody <henriquemoody@gmail.com>
|
|
* @group rule
|
|
* @covers Respect\Validation\Rules\Mimetype
|
|
* @covers Respect\Validation\Exceptions\MimetypeException
|
|
*/
|
|
class MimetypeTest extends PHPUnit_Framework_TestCase
|
|
{
|
|
private $filename;
|
|
|
|
protected function setUp()
|
|
{
|
|
$this->filename = sprintf('%s/validation.txt', sys_get_temp_dir());
|
|
|
|
file_put_contents($this->filename, 'File content');
|
|
}
|
|
|
|
protected function tearDown()
|
|
{
|
|
unlink($this->filename);
|
|
}
|
|
|
|
public function testShouldValidateMimetype()
|
|
{
|
|
$mimetype = 'plain/text';
|
|
|
|
$fileInfoMock = $this
|
|
->getMockBuilder('finfo')
|
|
->disableOriginalConstructor()
|
|
->setMethods(array('file'))
|
|
->getMock();
|
|
|
|
$fileInfoMock
|
|
->expects($this->once())
|
|
->method('file')
|
|
->with($this->filename)
|
|
->will($this->returnValue($mimetype));
|
|
|
|
$rule = new Mimetype($mimetype, $fileInfoMock);
|
|
|
|
$rule->validate($this->filename);
|
|
}
|
|
|
|
public function testShouldValidateSplFileInfoMimetype()
|
|
{
|
|
$fileInfo = new SplFileInfo($this->filename);
|
|
$mimetype = 'plain/text';
|
|
|
|
$fileInfoMock = $this
|
|
->getMockBuilder('finfo')
|
|
->disableOriginalConstructor()
|
|
->setMethods(array('file'))
|
|
->getMock();
|
|
|
|
$fileInfoMock
|
|
->expects($this->once())
|
|
->method('file')
|
|
->with($fileInfo->getPathname())
|
|
->will($this->returnValue($mimetype));
|
|
|
|
$rule = new Mimetype($mimetype, $fileInfoMock);
|
|
|
|
$this->assertTrue($rule->validate($fileInfo));
|
|
}
|
|
|
|
public function testShouldInvalidateWhenNotStringNorSplFileInfo()
|
|
{
|
|
$rule = new Mimetype('application/octet-stream');
|
|
|
|
$this->assertFalse($rule->validate(array(__FILE__)));
|
|
}
|
|
|
|
public function testShouldInvalidateWhenItIsNotAValidFile()
|
|
{
|
|
$rule = new Mimetype('application/octet-stream');
|
|
|
|
$this->assertFalse($rule->validate(__DIR__));
|
|
}
|
|
|
|
/**
|
|
* @expectedException Respect\Validation\Exceptions\MimetypeException
|
|
* @expectedExceptionMessageRegExp #".+MimetypeTest.php" must have "application.?/json" mimetype#
|
|
*/
|
|
public function testShouldThrowMimetypeExceptionWhenCheckingValue()
|
|
{
|
|
$rule = new Mimetype('application/json');
|
|
$rule->check(__FILE__);
|
|
}
|
|
}
|