[TESTS] Many tests fixes (already fixed the dependant code)

This commit is contained in:
Hugo Sales 2021-11-15 19:27:39 +00:00
parent d254147988
commit 1dd86a2302
No known key found for this signature in database
GPG Key ID: 7D0C7EAFC9D835A0
8 changed files with 132 additions and 78 deletions

View File

@ -62,8 +62,9 @@ class Reply extends NoteHandlerPlugin
$type = Router::ABSOLUTE_PATH; $type = Router::ABSOLUTE_PATH;
$reply_action_url = Router::url('reply_add', $args, $type); $reply_action_url = Router::url('reply_add', $args, $type);
$query_string = $request->getQueryString();
// Concatenating get parameter to redirect the user to where he came from // Concatenating get parameter to redirect the user to where he came from
$reply_action_url .= '?from=' . mb_substr($request->getQueryString(), 2); $reply_action_url .= !\is_null($query_string) ? '?from=' . mb_substr($query_string, 2) : '';
$reply_action = [ $reply_action = [
'url' => $reply_action_url, 'url' => $reply_action_url,

View File

@ -21,7 +21,7 @@ declare(strict_types = 1);
// }}} // }}}
namespace App\Tests\Core; namespace App\Tests\Controller;
use App\Controller\Network; use App\Controller\Network;
use App\Core\DB\DB; use App\Core\DB\DB;
@ -55,15 +55,16 @@ class NetworkTest extends GNUsocialTestCase
$this->testRoute('network', fn ($vis) => $vis->public); $this->testRoute('network', fn ($vis) => $vis->public);
} }
public function testReplies() // TODO replies, re-enable
{ // public function testReplies()
$this->testRoute('replies', fn ($vis) => $vis->public, [], function () { // {
$user = DB::findOneBy('local_user', ['nickname' => 'taken_user']); // $this->testRoute('replies', fn ($vis) => $vis->public, [], function () {
$sec = $this->getMockBuilder(SSecurity::class)->setConstructorArgs([self::$kernel->getContainer()])->getMock(); // $user = DB::findOneBy('local_user', ['nickname' => 'taken_user']);
$sec->method('getUser')->willReturn($user); // $sec = $this->getMockBuilder(SSecurity::class)->setConstructorArgs([self::$kernel->getContainer()])->getMock();
Security::setHelper($sec, null); // $sec->method('getUser')->willReturn($user);
}); // Security::setHelper($sec, null);
} // });
// }
private function testRoute(string $route, callable $visibility, array $extra_args = [], ?callable $setup_login = null) private function testRoute(string $route, callable $visibility, array $extra_args = [], ?callable $setup_login = null)
{ {
@ -78,7 +79,7 @@ class NetworkTest extends GNUsocialTestCase
static::assertThrows(ClientException::class, fn () => $network->home($req, 'username_not_taken')); static::assertThrows(ClientException::class, fn () => $network->home($req, 'username_not_taken'));
} }
$result = $network->{$route}($req, ...$extra_args); $result = $network->{$route}($req, ...$extra_args);
static::assertSame($result['_template'], 'network/public.html.twig'); static::assertSame($result['_template'], 'network/feed.html.twig');
foreach ($result['notes'] as $n) { foreach ($result['notes'] as $n) {
static::assertIsArray($n['replies']); static::assertIsArray($n['replies']);
} }

View File

@ -21,7 +21,7 @@ declare(strict_types = 1);
// }}} // }}}
namespace App\Tests\Core; namespace App\Tests\Controller;
use App\Core\DB\DB; use App\Core\DB\DB;
use App\Util\GNUsocialTestCase; use App\Util\GNUsocialTestCase;
@ -83,7 +83,6 @@ class UserPanelTest extends GNUsocialTestCase
'save_account_info[old_password]' => 'some password', 'save_account_info[old_password]' => 'some password',
'save_account_info[password][first]' => 'this is some test password', 'save_account_info[password][first]' => 'this is some test password',
'save_account_info[password][second]' => 'this is some test password', 'save_account_info[password][second]' => 'this is some test password',
'save_account_info[language]' => 'pt',
'save_account_info[phone_number]' => '+351908555842', // from fakenumber.net 'save_account_info[phone_number]' => '+351908555842', // from fakenumber.net
]); ]);
@ -129,20 +128,20 @@ class UserPanelTest extends GNUsocialTestCase
$client->request('GET', '/settings'); $client->request('GET', '/settings');
$this->assertResponseIsSuccessful(); $this->assertResponseIsSuccessful();
$crawler = $client->submitForm('Save notification settings for Email', [ $crawler = $client->submitForm('Save notification settings for Email', [
'save_email[activity_by_followed]' => false, 'save_email[activity_by_subscribed]' => false,
'save_email[mention]' => true, 'save_email[mention]' => true,
'save_email[reply]' => false, 'save_email[reply]' => false,
'save_email[follow]' => true, 'save_email[subscription]' => true,
'save_email[favorite]' => false, 'save_email[favorite]' => false,
'save_email[nudge]' => true, 'save_email[nudge]' => true,
'save_email[dm]' => false, 'save_email[dm]' => false,
'save_email[enable_posting]' => true, 'save_email[enable_posting]' => true,
]); ]);
$settings = DB::findOneBy('user_notification_prefs', ['user_id' => $user->getId(), 'transport' => 'email']); $settings = DB::findOneBy('user_notification_prefs', ['user_id' => $user->getId(), 'transport' => 'email']);
static::assertSame($settings->getActivityByFollowed(), false); static::assertSame($settings->getActivityBySubscribed(), false);
static::assertSame($settings->getMention(), true); static::assertSame($settings->getMention(), true);
static::assertSame($settings->getReply(), false); static::assertSame($settings->getReply(), false);
static::assertSame($settings->getFollow(), true); static::assertSame($settings->getSubscription(), true);
static::assertSame($settings->getFavorite(), false); static::assertSame($settings->getFavorite(), false);
static::assertSame($settings->getNudge(), true); static::assertSame($settings->getNudge(), true);
static::assertSame($settings->getDm(), false); static::assertSame($settings->getDm(), false);

View File

@ -128,13 +128,14 @@ class CacheTest extends KernelTestCase
self::doTest(['file' => 'filesystem://test'], ['file' => \Symfony\Component\Cache\Adapter\FilesystemAdapter::class]); self::doTest(['file' => 'filesystem://test'], ['file' => \Symfony\Component\Cache\Adapter\FilesystemAdapter::class]);
$key = 'test' . time(); $key = 'test' . time();
Cache::setList("{$key}-other", ['foo', 'bar'], pool: 'file'); static::assertSame([], Cache::getList($key . '0', fn ($i) => [], pool: 'file'));
static::assertSame(['foo', 'bar'], Cache::getList("{$key}-other", function ($i) { $this->assertFalse('should not be called'); }, pool: 'file')); static::assertSame(['foo'], Cache::getList($key . '1', fn ($i) => ['foo'], pool: 'file'));
static::assertSame(['foo', 'bar'], Cache::getList($key, fn ($i) => ['foo', 'bar'], pool: 'file')); static::assertSame(['foo', 'bar'], Cache::getList($key, fn ($i) => ['foo', 'bar'], pool: 'file'));
static::assertSame(['foo', 'bar'], Cache::getList($key, function () { $this->assertFalse('should not be called'); }, pool: 'file')); // Repeat to test no recompute lrange
Cache::pushList($key, 'quux', pool: 'file'); Cache::pushList($key, 'quux', pool: 'file');
static::assertSame(['foo', 'bar', 'quux'], Cache::getList($key, function ($i) { $this->assertFalse('should not be called'); }, pool: 'file')); static::assertSame(['quux', 'foo', 'bar'], Cache::getList($key, function ($i) { $this->assertFalse('should not be called'); }, pool: 'file'));
Cache::pushList($key, 'foobar', pool: 'file', max_count: 2); Cache::pushList($key, 'foobar', max_count: 2, pool: 'file');
static::assertSame(['quux', 'foobar'], Cache::getList($key, function ($i) { $this->assertFalse('should not be called'); }, pool: 'file')); static::assertSame(['foobar', 'quux'], Cache::getList($key, function ($i) { $this->assertFalse('should not be called'); }, pool: 'file'));
static::assertTrue(Cache::deleteList($key, pool: 'file')); static::assertTrue(Cache::deleteList($key, pool: 'file'));
} }
} }

View File

@ -94,13 +94,13 @@ class FormTest extends GNUsocialTestCase
*/ */
public function testCreateUpdateObject() public function testCreateUpdateObject()
{ {
$nick = 'form_testing_new_user'; $nick = 'form_testing_new_user';
$user = Actor::create(['nickname' => $nick, 'normalized_nickname' => $nick]); $actor = Actor::create(['nickname' => $nick, 'fullname' => $nick]);
$form = Form::create([ $form = Form::create([
['nickname', TextareaType::class, []], ['nickname', TextareaType::class, []],
['normalized_nickname', TextareaType::class, []], ['fullname', TextareaType::class, []],
['testpost', SubmitType::class, []], ['testpost', SubmitType::class, []],
], target: $user); ], target: $actor);
$options = $form['nickname']->getConfig()->getOptions(); $options = $form['nickname']->getConfig()->getOptions();
static::assertSame($nick, $options['data']); static::assertSame($nick, $options['data']);
} }
@ -118,11 +118,11 @@ class FormTest extends GNUsocialTestCase
$ret = Form::handle(form_definition: [/* not normal usage */], request: $mock_request, target: null, extra_args: [], extra_step: null, create_args: [], testing_only_form: $mock_form); $ret = Form::handle(form_definition: [/* not normal usage */], request: $mock_request, target: null, extra_args: [], extra_step: null, create_args: [], testing_only_form: $mock_form);
static::assertSame($data, $ret); static::assertSame($data, $ret);
$user = Actor::create(['nickname' => 'form_testing_new_user', 'normalized_nickname' => 'form_testing_new_user']); $actor = Actor::create(['nickname' => 'form_testing_new_user']);
DB::persist($user); DB::persist($actor);
$ret = Form::handle(form_definition: [/* not normal usage */], request: $mock_request, target: $user, extra_args: [], extra_step: null, create_args: [], testing_only_form: $mock_form); $ret = Form::handle(form_definition: [/* not normal usage */], request: $mock_request, target: $actor, extra_args: [], extra_step: null, create_args: [], testing_only_form: $mock_form);
static::assertSame($mock_form, $ret); static::assertSame($mock_form, $ret);
static::assertSame($data['fullname'], $user->getFullname()); static::assertSame($data['fullname'], $actor->getFullname());
static::assertSame($data['homepage'], $user->getHomepage()); static::assertSame($data['homepage'], $actor->getHomepage());
} }
} }

View File

@ -24,7 +24,6 @@ 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;
@ -48,7 +47,6 @@ class AttachmentThumbnailTest extends GNUsocialTestCase
$thumbs = [ $thumbs = [
AttachmentThumbnail::getOrCreate($attachment, 'small', crop: false), AttachmentThumbnail::getOrCreate($attachment, 'small', crop: false),
AttachmentThumbnail::getOrCreate($attachment, 'medium', crop: false), AttachmentThumbnail::getOrCreate($attachment, 'medium', crop: false),
AttachmentThumbnail::getOrCreate($attachment, 'medium', crop: false),
$thumb = AttachmentThumbnail::getOrCreate($attachment, 'big', crop: false), $thumb = AttachmentThumbnail::getOrCreate($attachment, 'big', crop: false),
]; ];
@ -66,52 +64,105 @@ class AttachmentThumbnailTest extends GNUsocialTestCase
$attachment->deleteStorage(); $attachment->deleteStorage();
// This was deleted earlier, and the backed storage as well, so we can't generate another thumbnail foreach (array_reverse($thumbs) as $t) {
// Since we still have thumbnails, those will be used as the new thumbnail, even though we don't have the original
$new = AttachmentThumbnail::getOrCreate($attachment, 'big', crop: false);
static::assertSame([$t->getFilename(), $t->getSize()], [$new->getFilename(), $new->getSize()]);
$t->delete(flush: true);
}
// Since the backed storage was deleted and we don't have any more previous thumnbs, we can't generate another thumbnail
static::assertThrows(NotStoredLocallyException::class, fn () => AttachmentThumbnail::getOrCreate($attachment, 'big', crop: false)); static::assertThrows(NotStoredLocallyException::class, fn () => AttachmentThumbnail::getOrCreate($attachment, 'big', crop: false));
$attachment->kill(); $attachment->kill();
// static::assertThrows(NotStoredLocallyException::class, fn () => AttachmentThumbnail::getOrCreate($attachment, 'big', crop: false));
} }
public function testInvalidThumbnail() public function testInvalidThumbnail()
{ {
parent::bootKernel(); parent::bootKernel();
$file = new SplFileInfo(INSTALLDIR . '/tests/sample-uploads/spreadsheet.ods'); $file = new SplFileInfo(INSTALLDIR . '/tests/sample-uploads/spreadsheet.ods');
$hash = null; $hash = null;
Event::handle('HashFile', [$file->getPathname(), &$hash]); Event::handle('HashFile', [$file->getPathname(), &$hash]);
$attachment = DB::findOneBy('attachment', ['filehash' => $hash]); $attachment = DB::findOneBy('attachment', ['filehash' => $hash]);
static::assertNull(AttachmentThumbnail::getOrCreate($attachment, 'small', crop: false));
static::assertThrows(ClientException::class, fn () => AttachmentThumbnail::getOrCreate($attachment, 'small', crop: false));
} }
// public function testPredictScalingValues() public function testPredictScalingValues()
// { {
// // Test without cropping parent::bootKernel();
// static::assertSame([100, 50], AttachmentThumbnail::predictScalingValues(existing_width: 400, existing_height: 200, requested_size: 'small', crop: false)); // TODO test with cropping
// static::assertSame([200, 100], AttachmentThumbnail::predictScalingValues(existing_width: 400, existing_height: 200, requested_size: 'small', crop: false));
// static::assertSame([300, 150], AttachmentThumbnail::predictScalingValues(existing_width: 400, existing_height: 200, requested_size: 'medium', crop: false));
// static::assertSame([400, 200], AttachmentThumbnail::predictScalingValues(existing_width: 400, existing_height: 200, requested_size: 'medium', crop: false));
// static::assertSame([400, 200], AttachmentThumbnail::predictScalingValues(existing_width: 400, existing_height: 200, requested_size: 'big', crop: false));
// // Test with cropping $inputs = [
// static::assertSame([100, 100], AttachmentThumbnail::predictScalingValues(existing_width: 400, existing_height: 200, requested_size: 'small', crop: true)); [100, 100],
// static::assertSame([200, 200], AttachmentThumbnail::predictScalingValues(existing_width: 400, existing_height: 200, requested_size: 'small', crop: true)); [400, 200],
// static::assertSame([300, 200], AttachmentThumbnail::predictScalingValues(existing_width: 400, existing_height: 200, requested_size: 'medium', crop: true)); [800, 400],
// static::assertSame([400, 200], AttachmentThumbnail::predictScalingValues(existing_width: 400, existing_height: 200, requested_size: 'medium', crop: true)); [1600, 800],
// static::assertSame([400, 200], AttachmentThumbnail::predictScalingValues(existing_width: 400, existing_height: 200, requested_size: 'big', crop: true)); [1600, 1600],
// } // 16:9 video
[854, 480],
[1280, 720],
[1920, 1080],
[2560, 1440],
[3840, 2160],
];
// TODO re-enable test $outputs = [
// public function testGetHTMLAttributes() 'small' => [
// { [100, 100],
// parent::bootKernel(); [400, 200],
// $attachment = DB::findBy('attachment', ['mimetype' => 'image/png'], limit: 1)[0]; [32, 14],
// $w = $attachment->getWidth(); [32, 14],
// $h = $attachment->getHeight(); [32, 32],
// $thumb = AttachmentThumbnail::getOrCreate($attachment, width: $w, height: $h, crop: false); // 16:9 video
// $id = $attachment->getId(); [32, 21],
// $url = "/attachment/{$id}/thumbnail?w={$w}&h={$h}"; [32, 21],
// static::assertSame($url, $thumb->getUrl()); [32, 21],
// static::assertSame(['height' => $h, 'width' => $w, 'src' => $url], $thumb->getHTMLAttributes()); [32, 21],
// } [32, 21],
],
'medium' => [
[100, 100],
[400, 200],
[256, 116],
[256, 116],
[256, 256],
// 16:9 video
[256, 170],
[256, 170],
[256, 170],
[256, 170],
[256, 170],
],
'big' => [
[100, 100],
[400, 200],
[496, 225],
[496, 225],
[496, 496],
// 16:9 video
[496, 330],
[496, 330],
[496, 330],
[496, 330],
[496, 330],
],
];
foreach (['small', 'medium', 'big'] as $size) {
foreach (F\zip($inputs, $outputs[$size]) as [$existing, $results]) {
static::assertSame($results, AttachmentThumbnail::predictScalingValues(existing_width: $existing[0], existing_height: $existing[1], requested_size: $size, crop: false));
}
}
}
public function testGetUrl()
{
parent::bootKernel();
$attachment = DB::findBy('attachment', ['mimetype' => 'image/png'], limit: 1)[0];
$thumb = AttachmentThumbnail::getOrCreate($attachment, 'big', crop: false);
$id = $attachment->getId();
$url = "/attachment/{$id}/thumbnail/big";
static::assertSame($url, $thumb->getUrl());
}
} }

View File

@ -57,7 +57,7 @@ class NoteTest extends GNUsocialTestCase
static::assertFalse($note_visible_to_1->isVisibleTo($actor2)); static::assertFalse($note_visible_to_1->isVisibleTo($actor2));
static::assertFalse($note_visible_to_1->isVisibleTo($actor3)); static::assertFalse($note_visible_to_1->isVisibleTo($actor3));
$note_public = DB::findBy('note', ['actor_id' => $actor1->getId(), 'content' => 'some content', 'reply_to' => null], limit: 1)[0]; $note_public = DB::findBy('note', ['actor_id' => $actor1->getId(), 'content' => 'some content'], limit: 1)[0];
static::assertTrue($note_public->isVisibleTo($actor1)); static::assertTrue($note_public->isVisibleTo($actor1));
static::assertTrue($note_public->isVisibleTo($actor2)); static::assertTrue($note_public->isVisibleTo($actor2));
static::assertTrue($note_public->isVisibleTo($actor3)); static::assertTrue($note_public->isVisibleTo($actor3));

View File

@ -120,7 +120,8 @@ class CommonTest extends GNUsocialTestCase
{ {
static::bootKernel(); static::bootKernel();
static::assertTrue(Common::isSystemPath('login')); static::assertTrue(Common::isSystemPath('main/login'));
static::assertTrue(Common::isSystemPath('main/all'));
static::assertFalse(Common::isSystemPath('non-existent-path')); static::assertFalse(Common::isSystemPath('non-existent-path'));
} }
@ -170,7 +171,7 @@ class CommonTest extends GNUsocialTestCase
// These limits can only be set in the config files // These limits can only be set in the config files
// $post_max_size = ini_set('post_max_size', Common::sizeStrToInt('6M')); // $post_max_size = ini_set('post_max_size', Common::sizeStrToInt('6M'));
// $upload_max_filesize = ini_set('upload_max_filesize', Common::sizeStrToInt('1M')); // $upload_max_filesize = ini_set('upload_max_filesize', Common::sizeStrToInt('1M'));
$memory_limit = ini_set('memory_limit', Common::sizeStrToInt('128M')); $memory_limit = ini_set('memory_limit', (string) Common::sizeStrToInt('128M'));
// 2M is the default for upload_max_filesize, the lowest considered // 2M is the default for upload_max_filesize, the lowest considered
static::assertSame(Common::sizeStrToInt('2M'), Common::getPreferredPhpUploadLimit()); static::assertSame(Common::sizeStrToInt('2M'), Common::getPreferredPhpUploadLimit());