[TESTS] Fix broken tests and expand tests around Attachments
This commit is contained in:
parent
f1bd4db495
commit
56e5d5c4a0
|
@ -24,8 +24,10 @@ namespace App\Tests\Core;
|
||||||
use App\Core\DB\DB;
|
use App\Core\DB\DB;
|
||||||
use App\Core\Form;
|
use App\Core\Form;
|
||||||
use App\Entity\GSActor;
|
use App\Entity\GSActor;
|
||||||
|
use App\Util\Exception\ServerException;
|
||||||
use App\Util\Form\ArrayTransformer;
|
use App\Util\Form\ArrayTransformer;
|
||||||
use App\Util\GNUsocialTestCase;
|
use App\Util\GNUsocialTestCase;
|
||||||
|
use Jchook\AssertThrows\AssertThrows;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
|
||||||
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
|
||||||
use Symfony\Component\Form\Form as SymfForm;
|
use Symfony\Component\Form\Form as SymfForm;
|
||||||
|
@ -33,13 +35,15 @@ use Symfony\Component\HttpFoundation\Request;
|
||||||
|
|
||||||
class FormTest extends GNUsocialTestCase
|
class FormTest extends GNUsocialTestCase
|
||||||
{
|
{
|
||||||
|
use AssertThrows;
|
||||||
|
|
||||||
public function testCreate()
|
public function testCreate()
|
||||||
{
|
{
|
||||||
parent::bootKernel();
|
parent::bootKernel();
|
||||||
$form = Form::create($form_array = [
|
$form = Form::create($form_array = [
|
||||||
['content', TextareaType::class, ['label' => ' ', 'data' => '', 'attr' => ['placeholder' => 'placeholder']]],
|
['content', TextareaType::class, ['label' => ' ', 'data' => '', 'attr' => ['placeholder' => 'placeholder']]],
|
||||||
['array_trans', TextareaType::class, ['data' => ['foo', 'bar'], 'transformer' => ArrayTransformer::class]],
|
['array_trans', TextareaType::class, ['data' => ['foo', 'bar'], 'transformer' => ArrayTransformer::class]],
|
||||||
['testpost', SubmitType::class, ['label' => 'Post']],
|
['testpost', SubmitType::class, ['label' => 'Post']],
|
||||||
]);
|
]);
|
||||||
static::assertSame(get_class($form), 'Symfony\\Component\\Form\\Form');
|
static::assertSame(get_class($form), 'Symfony\\Component\\Form\\Form');
|
||||||
foreach ($form as $name => $f) {
|
foreach ($form as $name => $f) {
|
||||||
|
@ -74,6 +78,15 @@ class FormTest extends GNUsocialTestCase
|
||||||
static::assertTrue(Form::isRequired($form_array, 'content'));
|
static::assertTrue(Form::isRequired($form_array, 'content'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Using 'save' or 'submit' as a form name is not allowed, becuase then they're likely to
|
||||||
|
* collide with other forms in the same page
|
||||||
|
*/
|
||||||
|
public function testDisallowedGenericFormName()
|
||||||
|
{
|
||||||
|
static::assertThrows(ServerException::class, fn () => Form::create([['save', SubmitType::class, []]]));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Test creating a form with default values pulled from an existing object. Can be used in conjunction with `Form::hanlde` to update said object
|
* Test creating a form with default values pulled from an existing object. Can be used in conjunction with `Form::hanlde` to update said object
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -20,12 +20,14 @@
|
||||||
namespace App\Tests\Entity;
|
namespace App\Tests\Entity;
|
||||||
|
|
||||||
use App\Core\DB\DB;
|
use App\Core\DB\DB;
|
||||||
|
use App\Core\Event;
|
||||||
use App\Core\GSFile;
|
use App\Core\GSFile;
|
||||||
use App\Entity\AttachmentToNote;
|
use App\Entity\AttachmentToNote;
|
||||||
use App\Entity\Note;
|
use App\Entity\Note;
|
||||||
use App\Util\GNUsocialTestCase;
|
use App\Util\GNUsocialTestCase;
|
||||||
use App\Util\TemporaryFile;
|
use App\Util\TemporaryFile;
|
||||||
use Jchook\AssertThrows\AssertThrows;
|
use Jchook\AssertThrows\AssertThrows;
|
||||||
|
use Symfony\Component\HttpFoundation\File\File;
|
||||||
|
|
||||||
class AttachmentTest extends GNUsocialTestCase
|
class AttachmentTest extends GNUsocialTestCase
|
||||||
{
|
{
|
||||||
|
@ -69,6 +71,26 @@ class AttachmentTest extends GNUsocialTestCase
|
||||||
static::assertSame([], DB::findBy('attachment', ['filehash' => $hash]));
|
static::assertSame([], DB::findBy('attachment', ['filehash' => $hash]));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testSanitizeAndStoreFileAsAttachment()
|
||||||
|
{
|
||||||
|
$test = function (string $method) {
|
||||||
|
$temp_file = new TemporaryFile();
|
||||||
|
$temp_file->write(file_get_contents(INSTALLDIR . '/tests/sample-uploads/gnu-logo.png'));
|
||||||
|
Event::handle('HashFile', [$temp_file->getPathname(), &$hash]);
|
||||||
|
$attachment = DB::findOneBy('attachment', ['filehash' => $hash]);
|
||||||
|
$attachment->{$method}();
|
||||||
|
DB::flush();
|
||||||
|
|
||||||
|
$file = new File($temp_file->getRealPath());
|
||||||
|
GSFile::sanitizeAndStoreFileAsAttachment($file);
|
||||||
|
static::assertNotNull($attachment->getFilename());
|
||||||
|
static::assertTrue(file_exists($attachment->getPath()));
|
||||||
|
};
|
||||||
|
|
||||||
|
$test('deleteStorage');
|
||||||
|
$test('kill');
|
||||||
|
}
|
||||||
|
|
||||||
public function testGetBestTitle()
|
public function testGetBestTitle()
|
||||||
{
|
{
|
||||||
$attachment = DB::findBy('attachment', ['mimetype' => 'image/png'], limit: 1)[0];
|
$attachment = DB::findBy('attachment', ['mimetype' => 'image/png'], limit: 1)[0];
|
||||||
|
@ -92,4 +114,20 @@ class AttachmentTest extends GNUsocialTestCase
|
||||||
$id = $attachment->getId();
|
$id = $attachment->getId();
|
||||||
static::assertSame("/attachment/{$id}/view", $attachment->getUrl());
|
static::assertSame("/attachment/{$id}/view", $attachment->getUrl());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testMimetype()
|
||||||
|
{
|
||||||
|
$file = new \SplFileInfo(INSTALLDIR . '/tests/sample-uploads/image.jpg');
|
||||||
|
Event::handle('HashFile', [$file->getPathname(), &$hash]);
|
||||||
|
$attachment = DB::findOneBy('attachment', ['filehash' => $hash]);
|
||||||
|
|
||||||
|
static::assertSame('image', $attachment->getMimetypeMajor());
|
||||||
|
static::assertSame('jpeg', $attachment->getMimetypeMinor());
|
||||||
|
|
||||||
|
$mimetype = $attachment->getMimetype();
|
||||||
|
$attachment->setMimetype(null);
|
||||||
|
static::assertNull($attachment->getMimetypeMajor());
|
||||||
|
static::assertNull($attachment->getMimetypeMinor());
|
||||||
|
$attachment->setMimetype($mimetype);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,6 +22,7 @@ namespace App\Tests\Entity;
|
||||||
use App\Core\DB\DB;
|
use App\Core\DB\DB;
|
||||||
use App\Core\Event;
|
use App\Core\Event;
|
||||||
use App\Entity\AttachmentThumbnail;
|
use App\Entity\AttachmentThumbnail;
|
||||||
|
use App\Util\Exception\ClientException;
|
||||||
use App\Util\Exception\NotStoredLocallyException;
|
use App\Util\Exception\NotStoredLocallyException;
|
||||||
use App\Util\GNUsocialTestCase;
|
use App\Util\GNUsocialTestCase;
|
||||||
use Functional as F;
|
use Functional as F;
|
||||||
|
@ -67,6 +68,17 @@ class AttachmentThumbnailTest extends GNUsocialTestCase
|
||||||
$attachment->kill();
|
$attachment->kill();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testInvalidThumbnail()
|
||||||
|
{
|
||||||
|
parent::bootKernel();
|
||||||
|
|
||||||
|
$file = new \SplFileInfo(INSTALLDIR . '/tests/sample-uploads/spreadsheet.ods');
|
||||||
|
Event::handle('HashFile', [$file->getPathname(), &$hash]);
|
||||||
|
$attachment = DB::findOneBy('attachment', ['filehash' => $hash]);
|
||||||
|
|
||||||
|
static::assertThrows(ClientException::class, fn () => AttachmentThumbnail::getOrCreate($attachment, width: 1, height: 1, crop: false));
|
||||||
|
}
|
||||||
|
|
||||||
public function testPredictScalingValues()
|
public function testPredictScalingValues()
|
||||||
{
|
{
|
||||||
// Test without cropping
|
// Test without cropping
|
||||||
|
|
BIN
tests/sample-uploads/gnu-logo.png
Normal file
BIN
tests/sample-uploads/gnu-logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 388 KiB |
Loading…
Reference in New Issue
Block a user