diff --git a/Admin/Installer.php b/Admin/Installer.php
index c7c1c1f..565689f 100755
--- a/Admin/Installer.php
+++ b/Admin/Installer.php
@@ -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();
}
diff --git a/Models/UploadFile.php b/Models/UploadFile.php
index 631445d..dafb9b6 100755
--- a/Models/UploadFile.php
+++ b/Models/UploadFile.php
@@ -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;
}
diff --git a/Theme/Backend/media-single.tpl.php b/Theme/Backend/media-single.tpl.php
index f4958cb..1db8b51 100755
--- a/Theme/Backend/media-single.tpl.php
+++ b/Theme/Backend/media-single.tpl.php
@@ -131,7 +131,7 @@ echo $this->getData('nav')->render();
isTextFile($media, $path)) : ?>
- isAbsolute() ? '' : __DIR__ . '/../../../../') . $media->getPath())) : ?>
+ isAbsolute() ? '' : __DIR__ . '/../../../../') . $media->getPath())) : ?>
diff --git a/tests/Admin/AdminTest.php b/tests/Admin/AdminTest.php
index 7fb7b78..ba8e330 100755
--- a/tests/Admin/AdminTest.php
+++ b/tests/Admin/AdminTest.php
@@ -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']);
+ }
}
diff --git a/tests/Admin/invalidJson.json b/tests/Admin/invalidJson.json
new file mode 100644
index 0000000..fa613c1
--- /dev/null
+++ b/tests/Admin/invalidJson.json
@@ -0,0 +1,3 @@
+{
+ "test": [],
+}
\ No newline at end of file
diff --git a/tests/Controller/Api/ApiControllerCollectionTrait.php b/tests/Controller/Api/ApiControllerCollectionTrait.php
index 0a28b4f..23fe6d0 100755
--- a/tests/Controller/Api/ApiControllerCollectionTrait.php
+++ b/tests/Controller/Api/ApiControllerCollectionTrait.php
@@ -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');
}
diff --git a/tests/Controller/Api/ApiControllerMediaTrait.php b/tests/Controller/Api/ApiControllerMediaTrait.php
index 0cfc186..ea26c02 100755
--- a/tests/Controller/Api/ApiControllerMediaTrait.php
+++ b/tests/Controller/Api/ApiControllerMediaTrait.php
@@ -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');
}
diff --git a/tests/Models/CollectionTest.php b/tests/Models/CollectionTest.php
index fe4f5d0..15b22bc 100755
--- a/tests/Models/CollectionTest.php
+++ b/tests/Models/CollectionTest.php
@@ -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)]);
diff --git a/tests/Models/MediaMapperTest.php b/tests/Models/MediaMapperTest.php
index 9666196..deef31d 100755
--- a/tests/Models/MediaMapperTest.php
+++ b/tests/Models/MediaMapperTest.php
@@ -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();
diff --git a/tests/Models/MediaTest.php b/tests/Models/MediaTest.php
index da58875..cacab57 100755
--- a/tests/Models/MediaTest.php
+++ b/tests/Models/MediaTest.php
@@ -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);