fix tests and replace file_exists

This commit is contained in:
Dennis Eichhorn 2020-10-08 15:12:24 +02:00
parent 654d3d8a9e
commit b6e6aabacd
10 changed files with 124 additions and 11 deletions

View File

@ -49,17 +49,15 @@ final class Installer extends InstallerAbstract
try {
$dbPool->get()->con->query('select 1 from `media`');
} catch (\Exception $e) {
return;
return; // @codeCoverageIgnore
}
$mediaFile = \file_get_contents($data['path'] ?? '');
if ($mediaFile === false) {
throw new PathException($data['path'] ?? '');
}
$mediaData = \json_decode($mediaFile, true);
if ($mediaData === false) {
throw new \Exception();
}

View File

@ -158,7 +158,7 @@ class UploadFile
$result[$key]['filename'] = $this->fileName;
}
if (empty($this->fileName) || \file_exists($path . '/' . $this->fileName)) {
if (empty($this->fileName) || \is_file($path . '/' . $this->fileName)) {
try {
$this->fileName = $this->createFileName($path, $f['tmp_name'], $extension);
$result[$key]['filename'] = $this->fileName;
@ -271,7 +271,7 @@ class UploadFile
$fileName = $sha;
$rnd = \mt_rand();
++$limit;
} while (\file_exists($path . '/' . $fileName) && $limit < self::PATH_GENERATION_LIMIT);
} while (\is_file($path . '/' . $fileName) && $limit < self::PATH_GENERATION_LIMIT);
if ($limit >= self::PATH_GENERATION_LIMIT) {
throw new \Exception('No file path could be found. Potential attack!');
@ -328,7 +328,7 @@ class UploadFile
{
do {
$rndPath = \str_pad(\dechex(\mt_rand(0, 65535)), 4, '0', \STR_PAD_LEFT);
} while (\file_exists($this->outputDir . '/' . $rndPath));
} while (\is_dir($this->outputDir . '/' . $rndPath));
return $this->outputDir . '/' . $rndPath;
}

View File

@ -131,7 +131,7 @@ echo $this->getData('nav')->render();
<?php elseif ($this->isTextFile($media, $path)) : ?>
<!-- if markdown show markdown editor, if image show image editor, if text file show textarea only on edit -->
<?php if (!\file_exists(($media->isAbsolute() ? '' : __DIR__ . '/../../../../') . $media->getPath())) : ?>
<?php if (!\is_file(($media->isAbsolute() ? '' : __DIR__ . '/../../../../') . $media->getPath())) : ?>
<div class="centerText"><i class="fa fa-question fa-5x"></i></div>
<?php else : ?>
<template id="iMediaUpdateTpl">

View File

@ -14,6 +14,8 @@ declare(strict_types=1);
namespace Modules\Media\tests\Admin;
use Modules\Media\Admin\Installer;
/**
* @internal
*/
@ -24,4 +26,18 @@ class AdminTest extends \PHPUnit\Framework\TestCase
protected const URI_LOAD = 'http://127.0.0.1/en/backend/media';
use \Modules\tests\ModuleTestTrait;
public function testInvalidMediaInstallPath() : void
{
$this->expectException(\phpOMS\System\File\PathException::class);
Installer::installExternal($GLOBALS['dbpool'], ['path' => 'invalid.json']);
}
public function testInvalidMediaInstallJsonFile() : void
{
$this->expectException(\PathException::class);
Installer::installExternal($GLOBALS['dbpool'], ['path' => 'invalidJson.json']);
}
}

View File

@ -0,0 +1,3 @@
{
"test": [],
}

View File

@ -34,7 +34,7 @@ trait ApiControllerCollectionTrait
$request->getHeader()->setAccount(1);
$request->setData('name', 'Test Upload');
if (!\file_exists(__DIR__ . '/temp')) {
if (!\is_dir(__DIR__ . '/temp')) {
\mkdir(__DIR__ . '/temp');
}
@ -62,7 +62,7 @@ trait ApiControllerCollectionTrait
$this->module->apiMediaUpload($request, $response);
if (\file_exists(__DIR__ . '/temp')) {
if (\is_dir(__DIR__ . '/temp')) {
Directory::delete(__DIR__ . '/temp');
}

View File

@ -72,7 +72,7 @@ trait ApiControllerMediaTrait
$request->getHeader()->setAccount(1);
$request->setData('name', 'Test Upload');
if (!\file_exists(__DIR__ . '/temp')) {
if (!\is_dir(__DIR__ . '/temp')) {
\mkdir(__DIR__ . '/temp');
}
@ -100,7 +100,7 @@ trait ApiControllerMediaTrait
$this->module->apiMediaUpload($request, $response);
if (\file_exists(__DIR__ . '/temp')) {
if (\is_dir(__DIR__ . '/temp')) {
Directory::delete(__DIR__ . '/temp');
}

View File

@ -30,6 +30,10 @@ class CollectionTest extends \PHPUnit\Framework\TestCase
$this->media = new Collection();
}
/**
* @covers Modules\Media\Models\Collection
* @group module
*/
public function testDefault() : void
{
self::assertEquals(0, $this->media->getId());
@ -44,18 +48,30 @@ class CollectionTest extends \PHPUnit\Framework\TestCase
self::assertEquals([], $this->media->getSources());
}
/**
* @covers Modules\Media\Models\Collection
* @group module
*/
public function testCreatedByInputOutput() : void
{
$this->media->setCreatedBy(new NullAccount(1));
self::assertEquals(1, $this->media->getCreatedBy()->getId());
}
/**
* @covers Modules\Media\Models\Collection
* @group module
*/
public function testExtensionInputOutput() : void
{
$this->media->setExtension('pdf');
self::assertEquals('collection', $this->media->getExtension());
}
/**
* @covers Modules\Media\Models\Collection
* @group module
*/
public function testPathInputOutput() : void
{
$this->media->setPath('/home/root');
@ -65,30 +81,50 @@ class CollectionTest extends \PHPUnit\Framework\TestCase
self::assertEquals('/home/root', $this->media->getPath());
}
/**
* @covers Modules\Media\Models\Collection
* @group module
*/
public function testDescriptionInputOutput() : void
{
$this->media->setDescription('This is a description');
self::assertEquals('This is a description', $this->media->getDescription());
}
/**
* @covers Modules\Media\Models\Collection
* @group module
*/
public function testSizeInputOutput() : void
{
$this->media->setSize(11);
self::assertEquals(11, $this->media->getSize());
}
/**
* @covers Modules\Media\Models\Collection
* @group module
*/
public function testVersionedInputOutput() : void
{
$this->media->setVersioned(true);
self::assertFalse($this->media->isVersioned());
}
/**
* @covers Modules\Media\Models\Collection
* @group module
*/
public function testSourceInputOutput() : void
{
$this->media->setSources([$a = new NullMedia(1), $b = new NullMedia(2), $c = new NullMedia(3)]);
self::assertEquals([$a, $b, $c], $this->media->getSources());
}
/**
* @covers Modules\Media\Models\Collection
* @group module
*/
public function testSourceAddInputOutput() : void
{
$this->media->setSources([$a = new NullMedia(1), $b = new NullMedia(2), $c = new NullMedia(3)]);

View File

@ -23,6 +23,10 @@ use Modules\Media\Models\MediaMapper;
*/
class MediaMapperTest extends \PHPUnit\Framework\TestCase
{
/**
* @covers Modules\Media\Models\MediaMapper
* @group module
*/
public function testCR() : void
{
$media = new Media();
@ -50,6 +54,10 @@ class MediaMapperTest extends \PHPUnit\Framework\TestCase
self::assertEquals($media->getName(), $mediaR->getName());
}
/**
* @covers Modules\Media\Models\MediaMapper
* @group module
*/
public function testAbsolute() : void
{
$media = new Media();
@ -76,6 +84,10 @@ class MediaMapperTest extends \PHPUnit\Framework\TestCase
self::assertEquals($media->getName(), $mediaR->getName());
}
/**
* @covers Modules\Media\Models\MediaMapper
* @group module
*/
public function testDirectoryMapping() : void
{
$media = new Media();

View File

@ -29,6 +29,10 @@ class MediaTest extends \PHPUnit\Framework\TestCase
$this->media = new Media();
}
/**
* @covers Modules\Media\Models\Media
* @group module
*/
public function testDefault() : void
{
self::assertEquals(0, $this->media->getId());
@ -45,18 +49,30 @@ class MediaTest extends \PHPUnit\Framework\TestCase
self::assertFalse($this->media->isVersioned());
}
/**
* @covers Modules\Media\Models\Media
* @group module
*/
public function testCreatedByInputOutput() : void
{
$this->media->setCreatedBy(new NullAccount(1));
self::assertEquals(1, $this->media->getCreatedBy()->getId());
}
/**
* @covers Modules\Media\Models\Media
* @group module
*/
public function testExtensionInputOutput() : void
{
$this->media->setExtension('pdf');
self::assertEquals('pdf', $this->media->getExtension());
}
/**
* @covers Modules\Media\Models\Media
* @group module
*/
public function testPathInputOutput() : void
{
$this->media->setPath('/home/root');
@ -66,48 +82,80 @@ class MediaTest extends \PHPUnit\Framework\TestCase
self::assertEquals('/home/root', $this->media->getPath());
}
/**
* @covers Modules\Media\Models\Media
* @group module
*/
public function testAbsolutePathInputOutput() : void
{
$this->media->setAbsolute(true);
self::assertTrue($this->media->isAbsolute());
}
/**
* @covers Modules\Media\Models\Media
* @group module
*/
public function testNameInputOutput() : void
{
$this->media->setName('Report');
self::assertEquals('Report', $this->media->getName());
}
/**
* @covers Modules\Media\Models\Media
* @group module
*/
public function testDescriptionInputOutput() : void
{
$this->media->setDescription('This is a description');
self::assertEquals('This is a description', $this->media->getDescription());
}
/**
* @covers Modules\Media\Models\Media
* @group module
*/
public function testDescriptionRawInputOutput() : void
{
$this->media->setDescriptionRaw('This is a description raw');
self::assertEquals('This is a description raw', $this->media->getDescriptionRaw());
}
/**
* @covers Modules\Media\Models\Media
* @group module
*/
public function testSizeInputOutput() : void
{
$this->media->setSize(11);
self::assertEquals(11, $this->media->getSize());
}
/**
* @covers Modules\Media\Models\Media
* @group module
*/
public function testVersionedInputOutput() : void
{
$this->media->setVersioned(true);
self::assertTrue($this->media->isVersioned());
}
/**
* @covers Modules\Media\Models\Media
* @group module
*/
public function testVirtualPathInputOutput() : void
{
$this->media->setVirtualPath('/test/path');
self::assertEquals('/test/path', $this->media->getVirtualPath());
}
/**
* @covers Modules\Media\Models\Media
* @group module
*/
public function testHiddenInputOutput() : void
{
$this->media->setHidden(true);