161 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			161 lines
		
	
	
		
			5.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| use Mockery as m;
 | |
| use PHPUnit\Framework\TestCase;
 | |
| use Symfony\Component\HttpFoundation\File\UploadedFile;
 | |
| use UniSharp\LaravelFilemanager\Exceptions\DuplicateFileNameException;
 | |
| use UniSharp\LaravelFilemanager\Exceptions\EmptyFileException;
 | |
| use UniSharp\LaravelFilemanager\Exceptions\ExcutableFileException;
 | |
| use UniSharp\LaravelFilemanager\Exceptions\FileFailedToUploadException;
 | |
| use UniSharp\LaravelFilemanager\Exceptions\FileSizeExceedConfigurationMaximumException;
 | |
| use UniSharp\LaravelFilemanager\Exceptions\FileSizeExceedIniMaximumException;
 | |
| use UniSharp\LaravelFilemanager\Exceptions\InvalidMimeTypeException;
 | |
| use UniSharp\LaravelFilemanager\LfmPath;
 | |
| use UniSharp\LaravelFilemanager\LfmUploadValidator;
 | |
| 
 | |
| function trans()
 | |
| {
 | |
|     // leave empty
 | |
| }
 | |
| 
 | |
| class LfmUploadValidatorTest extends TestCase
 | |
| {
 | |
|     public function testPassesSizeLowerThanIniMaximum()
 | |
|     {
 | |
|         $uploaded_file = m::mock(UploadedFile::class);
 | |
|         $uploaded_file->shouldReceive('getError')->andReturn(UPLOAD_ERR_OK);
 | |
| 
 | |
|         $validator = new LfmUploadValidator($uploaded_file);
 | |
| 
 | |
|         $this->assertEquals($validator->sizeLowerThanIniMaximum(), $validator);
 | |
|     }
 | |
| 
 | |
|     public function testFailsSizeLowerThanIniMaximum()
 | |
|     {
 | |
|         $uploaded_file = m::mock(UploadedFile::class);
 | |
|         $uploaded_file->shouldReceive('getError')->andReturn(UPLOAD_ERR_INI_SIZE);
 | |
| 
 | |
|         $validator = new LfmUploadValidator($uploaded_file);
 | |
| 
 | |
|         $this->expectException(FileSizeExceedIniMaximumException::class);
 | |
| 
 | |
|         $validator->sizeLowerThanIniMaximum();
 | |
|     }
 | |
| 
 | |
|     public function testPassesUploadWasSuccessful()
 | |
|     {
 | |
|         $uploaded_file = m::mock(UploadedFile::class);
 | |
|         $uploaded_file->shouldReceive('getError')->andReturn(UPLOAD_ERR_OK);
 | |
| 
 | |
|         $validator = new LfmUploadValidator($uploaded_file);
 | |
| 
 | |
|         $this->assertEquals($validator->uploadWasSuccessful(), $validator);
 | |
|     }
 | |
| 
 | |
|     public function testFailsUploadWasSuccessful()
 | |
|     {
 | |
|         $uploaded_file = m::mock(UploadedFile::class);
 | |
|         $uploaded_file->shouldReceive('getError')->andReturn(UPLOAD_ERR_PARTIAL);
 | |
| 
 | |
|         $validator = new LfmUploadValidator($uploaded_file);
 | |
| 
 | |
|         $this->expectException(FileFailedToUploadException::class);
 | |
| 
 | |
|         $validator->uploadWasSuccessful();
 | |
|     }
 | |
| 
 | |
|     public function testPassesNameIsNotDuplicate()
 | |
|     {
 | |
|         $uploaded_file = m::mock(UploadedFile::class);
 | |
| 
 | |
|         $lfm_path = m::mock(LfmPath::class);
 | |
|         $lfm_path->shouldReceive('setName')->andReturn($lfm_path);
 | |
|         $lfm_path->shouldReceive('exists')->andReturn(false);
 | |
| 
 | |
|         $validator = new LfmUploadValidator($uploaded_file);
 | |
| 
 | |
|         $this->assertEquals($validator->nameIsNotDuplicate('new_file_name', $lfm_path), $validator);
 | |
|     }
 | |
| 
 | |
|     public function testFailsNameIsNotDuplicate()
 | |
|     {
 | |
|         $uploaded_file = m::mock(UploadedFile::class);
 | |
| 
 | |
|         $lfm_path = m::mock(LfmPath::class);
 | |
|         $lfm_path->shouldReceive('setName')->andReturn($lfm_path);
 | |
|         $lfm_path->shouldReceive('exists')->andReturn(true);
 | |
| 
 | |
|         $validator = new LfmUploadValidator($uploaded_file);
 | |
| 
 | |
|         $this->expectException(DuplicateFileNameException::class);
 | |
| 
 | |
|         $validator->nameIsNotDuplicate('new_file_name', $lfm_path);
 | |
|     }
 | |
| 
 | |
|     public function testPassesIsNotExcutable()
 | |
|     {
 | |
|         $uploaded_file = m::mock(UploadedFile::class);
 | |
|         $uploaded_file->shouldReceive('getMimeType')->andReturn('image/jpeg');
 | |
| 
 | |
|         $validator = new LfmUploadValidator($uploaded_file);
 | |
| 
 | |
|         $this->assertEquals($validator->isNotExcutable(), $validator);
 | |
|     }
 | |
| 
 | |
|     public function testFailsIsNotExcutable()
 | |
|     {
 | |
|         $uploaded_file = m::mock(UploadedFile::class);
 | |
|         $uploaded_file->shouldReceive('getMimeType')->andReturn('text/x-php');
 | |
| 
 | |
|         $validator = new LfmUploadValidator($uploaded_file);
 | |
| 
 | |
|         $this->expectException(ExcutableFileException::class);
 | |
| 
 | |
|         $validator->isNotExcutable();
 | |
|     }
 | |
| 
 | |
|     public function testPassesMimeTypeIsValid()
 | |
|     {
 | |
|         $uploaded_file = m::mock(UploadedFile::class);
 | |
|         $uploaded_file->shouldReceive('getMimeType')->andReturn('image/jpeg');
 | |
| 
 | |
|         $validator = new LfmUploadValidator($uploaded_file);
 | |
| 
 | |
|         $this->assertEquals($validator->mimeTypeIsValid(['image/jpeg']), $validator);
 | |
|     }
 | |
| 
 | |
|     public function testFailsMimeTypeIsValid()
 | |
|     {
 | |
|         $uploaded_file = m::mock(UploadedFile::class);
 | |
|         $uploaded_file->shouldReceive('getMimeType')->andReturn('image/jpeg');
 | |
| 
 | |
|         $validator = new LfmUploadValidator($uploaded_file);
 | |
| 
 | |
|         $this->expectException(InvalidMimeTypeException::class);
 | |
| 
 | |
|         $validator->mimeTypeIsValid(['image/png']);
 | |
|     }
 | |
| 
 | |
|     public function testPassesSizeIsLowerThanConfiguredMaximum()
 | |
|     {
 | |
|         $uploaded_file = m::mock(UploadedFile::class);
 | |
|         $uploaded_file->shouldReceive('getSize')->andReturn(500 * 1000);
 | |
| 
 | |
|         $validator = new LfmUploadValidator($uploaded_file);
 | |
| 
 | |
|         $this->assertEquals($validator->sizeIsLowerThanConfiguredMaximum(1000), $validator);
 | |
|     }
 | |
| 
 | |
|     public function testFailsSizeIsLowerThanConfiguredMaximum()
 | |
|     {
 | |
|         $uploaded_file = m::mock(UploadedFile::class);
 | |
|         $uploaded_file->shouldReceive('getSize')->andReturn(2000 * 1000);
 | |
| 
 | |
|         $validator = new LfmUploadValidator($uploaded_file);
 | |
| 
 | |
|         $this->expectException(FileSizeExceedConfigurationMaximumException::class);
 | |
| 
 | |
|         $validator->sizeIsLowerThanConfiguredMaximum(1000);
 | |
|     }
 | |
| }
 | 
