mirror of
https://github.com/wallabag/wallabag.git
synced 2024-12-03 06:16:28 +00:00
910132fe72
Looks like lemonde.fr doesn't work anymore in wallabag for test. Switching to an other great media. Also update site configs.
155 lines
5.6 KiB
PHP
155 lines
5.6 KiB
PHP
<?php
|
|
|
|
namespace Tests\Wallabag\Controller\Import;
|
|
|
|
use Craue\ConfigBundle\Util\Config;
|
|
use Doctrine\ORM\EntityManagerInterface;
|
|
use Predis\Client;
|
|
use Symfony\Component\HttpFoundation\File\UploadedFile;
|
|
use Tests\Wallabag\WallabagTestCase;
|
|
use Wallabag\Entity\Entry;
|
|
|
|
class PocketHtmlControllerTest extends WallabagTestCase
|
|
{
|
|
public function testImportPocketHtml()
|
|
{
|
|
$this->logInAs('admin');
|
|
$client = $this->getTestClient();
|
|
|
|
$crawler = $client->request('GET', '/import/pocket_html');
|
|
|
|
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
|
$this->assertSame(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count());
|
|
$this->assertSame(1, $crawler->filter('input[type=file]')->count());
|
|
}
|
|
|
|
public function testImportPocketHtmlWithRabbitEnabled()
|
|
{
|
|
$this->logInAs('admin');
|
|
$client = $this->getTestClient();
|
|
|
|
$client->getContainer()->get(Config::class)->set('import_with_rabbitmq', 1);
|
|
|
|
$crawler = $client->request('GET', '/import/pocket_html');
|
|
|
|
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
|
$this->assertSame(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count());
|
|
$this->assertSame(1, $crawler->filter('input[type=file]')->count());
|
|
|
|
$client->getContainer()->get(Config::class)->set('import_with_rabbitmq', 0);
|
|
}
|
|
|
|
public function testImportPocketHtmlBadFile()
|
|
{
|
|
$this->logInAs('admin');
|
|
$client = $this->getTestClient();
|
|
|
|
$crawler = $client->request('GET', '/import/pocket_html');
|
|
$form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form();
|
|
|
|
$data = [
|
|
'upload_import_file[file]' => '',
|
|
];
|
|
|
|
$client->submit($form, $data);
|
|
|
|
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
|
}
|
|
|
|
public function testImportPocketHtmlWithRedisEnabled()
|
|
{
|
|
$this->checkRedis();
|
|
$this->logInAs('admin');
|
|
$client = $this->getTestClient();
|
|
$client->getContainer()->get(Config::class)->set('import_with_redis', 1);
|
|
|
|
$crawler = $client->request('GET', '/import/pocket_html');
|
|
|
|
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
|
$this->assertSame(1, $crawler->filter('form[name=upload_import_file] > button[type=submit]')->count());
|
|
$this->assertSame(1, $crawler->filter('input[type=file]')->count());
|
|
|
|
$form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form();
|
|
|
|
$file = new UploadedFile(__DIR__ . '/../../fixtures/Import/ril_export.html', 'Bookmarks');
|
|
|
|
$data = [
|
|
'upload_import_file[file]' => $file,
|
|
];
|
|
|
|
$client->submit($form, $data);
|
|
|
|
$this->assertSame(302, $client->getResponse()->getStatusCode());
|
|
|
|
$crawler = $client->followRedirect();
|
|
|
|
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
|
$this->assertStringContainsString('flashes.import.notice.summary', $body[0]);
|
|
|
|
$this->assertNotEmpty($client->getContainer()->get(Client::class)->lpop('wallabag.import.pocket_html'));
|
|
|
|
$client->getContainer()->get(Config::class)->set('import_with_redis', 0);
|
|
}
|
|
|
|
public function testImportWallabagWithPocketHtmlFile()
|
|
{
|
|
$this->logInAs('admin');
|
|
$client = $this->getTestClient();
|
|
|
|
$crawler = $client->request('GET', '/import/pocket_html');
|
|
$form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form();
|
|
|
|
$file = new UploadedFile(__DIR__ . '/../../fixtures/Import/ril_export.html', 'Bookmarks');
|
|
|
|
$data = [
|
|
'upload_import_file[file]' => $file,
|
|
];
|
|
|
|
$client->submit($form, $data);
|
|
|
|
$this->assertSame(302, $client->getResponse()->getStatusCode());
|
|
|
|
$crawler = $client->followRedirect();
|
|
|
|
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
|
$this->assertStringContainsString('flashes.import.notice.summary', $body[0]);
|
|
|
|
$content = $client->getContainer()
|
|
->get(EntityManagerInterface::class)
|
|
->getRepository(Entry::class)
|
|
->findByUrlAndUserId(
|
|
'https://www.20minutes.fr/sport/4002755-20220928-tarn-lapins-ravagent-terrain-match-rugby-doit-etre-annule',
|
|
$this->getLoggedInUserId()
|
|
);
|
|
|
|
$this->assertInstanceOf(Entry::class, $content);
|
|
$this->assertNotEmpty($content->getMimetype(), 'Mimetype for 20minutes.fr is ok');
|
|
$this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for 20minutes.fr is ok');
|
|
$this->assertNotEmpty($content->getLanguage(), 'Language for 20minutes.fr is ok');
|
|
$this->assertCount(3, $content->getTags());
|
|
}
|
|
|
|
public function testImportWallabagWithEmptyFile()
|
|
{
|
|
$this->logInAs('admin');
|
|
$client = $this->getTestClient();
|
|
|
|
$crawler = $client->request('GET', '/import/pocket_html');
|
|
$form = $crawler->filter('form[name=upload_import_file] > button[type=submit]')->form();
|
|
|
|
$file = new UploadedFile(__DIR__ . '/../../fixtures/Import/test.html', 'test.html');
|
|
|
|
$data = [
|
|
'upload_import_file[file]' => $file,
|
|
];
|
|
|
|
$client->submit($form, $data);
|
|
|
|
$this->assertSame(302, $client->getResponse()->getStatusCode());
|
|
|
|
$crawler = $client->followRedirect();
|
|
|
|
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
|
$this->assertStringContainsString('flashes.import.notice.failed', $body[0]);
|
|
}
|
|
}
|