forked from wallabag/wallabag
Merge branch 'master' into feat_referer_to_session_redirect
This commit is contained in:
@ -797,7 +797,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
||||
$this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
|
||||
$this->assertStringNotContainsString('config.form_user.delete.button', $body[0]);
|
||||
|
||||
$client->request('GET', '/account/delete');
|
||||
$client->request('POST', '/account/delete');
|
||||
$this->assertSame(403, $client->getResponse()->getStatusCode());
|
||||
|
||||
$user = $em
|
||||
@ -862,9 +862,9 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
||||
|
||||
$crawler = $client->request('GET', '/config');
|
||||
|
||||
$deleteLink = $crawler->filter('.delete-account')->last()->link();
|
||||
$deleteForm = $crawler->filter('form[name=delete-account]')->form();
|
||||
|
||||
$client->click($deleteLink);
|
||||
$client->submit($deleteForm);
|
||||
$this->assertSame(302, $client->getResponse()->getStatusCode());
|
||||
|
||||
$em = $client->getContainer()->get(EntityManagerInterface::class);
|
||||
@ -936,7 +936,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
||||
|
||||
$annotationsReset = $em
|
||||
->getRepository(Annotation::class)
|
||||
->findAnnotationsByPageId($entry->getId(), $user->getId());
|
||||
->findByEntryIdAndUserId($entry->getId(), $user->getId());
|
||||
|
||||
$this->assertEmpty($annotationsReset, 'Annotations were reset');
|
||||
|
||||
@ -1046,7 +1046,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
||||
|
||||
$annotationsReset = $em
|
||||
->getRepository(Annotation::class)
|
||||
->findAnnotationsByPageId($annotationArchived->getId(), $user->getId());
|
||||
->findByEntryIdAndUserId($annotationArchived->getId(), $user->getId());
|
||||
|
||||
$this->assertEmpty($annotationsReset, 'Annotations were reset');
|
||||
}
|
||||
@ -1105,7 +1105,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
||||
|
||||
$annotationsReset = $em
|
||||
->getRepository(Annotation::class)
|
||||
->findAnnotationsByPageId($entry->getId(), $user->getId());
|
||||
->findByEntryIdAndUserId($entry->getId(), $user->getId());
|
||||
|
||||
$this->assertEmpty($annotationsReset, 'Annotations were reset');
|
||||
}
|
||||
@ -1354,4 +1354,40 @@ class ConfigControllerTest extends WallabagCoreTestCase
|
||||
$this->assertCount(5, $taggingRules);
|
||||
$this->assertSame('title matches "football"', $taggingRules[4]->getRule());
|
||||
}
|
||||
|
||||
public function testSwitchDisplayThumbnails()
|
||||
{
|
||||
$this->logInAs('admin');
|
||||
$client = $this->getTestClient();
|
||||
|
||||
// Change configuration to show thumbnails
|
||||
$crawler = $client->request('GET', '/config');
|
||||
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
||||
$form = $crawler->filter('button[id=config_save]')->form();
|
||||
$data = [
|
||||
'config[display_thumbnails]' => true,
|
||||
];
|
||||
$client->submit($form, $data);
|
||||
$client->followRedirect();
|
||||
|
||||
$client->request('GET', '/unread/list');
|
||||
|
||||
$this->assertStringContainsString('class="preview"', $client->getResponse()->getContent());
|
||||
|
||||
// Change configuration to hide thumbnails
|
||||
$crawler = $client->request('GET', '/config');
|
||||
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
||||
$form = $crawler->filter('button[id=config_save]')->form();
|
||||
$data = [
|
||||
'config[display_thumbnails]' => false,
|
||||
];
|
||||
$client->submit($form, $data);
|
||||
$client->followRedirect();
|
||||
|
||||
$client->request('GET', '/unread/list');
|
||||
|
||||
$this->assertStringNotContainsString('class="preview"', $client->getResponse()->getContent());
|
||||
|
||||
$client->request('GET', '/config/view-mode');
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,7 +17,7 @@ use Wallabag\UserBundle\Entity\User;
|
||||
|
||||
class EntryControllerTest extends WallabagCoreTestCase
|
||||
{
|
||||
const AN_URL_CONTAINING_AN_ARTICLE_WITH_IMAGE = 'https://www.lemonde.fr/judo/article/2017/11/11/judo-la-decima-de-teddy-riner_5213605_1556020.html';
|
||||
public const AN_URL_CONTAINING_AN_ARTICLE_WITH_IMAGE = 'https://www.lemonde.fr/judo/article/2017/11/11/judo-la-decima-de-teddy-riner_5213605_1556020.html';
|
||||
public $downloadImagesEnabled = false;
|
||||
public $url = 'https://www.lemonde.fr/pixels/article/2019/06/18/ce-qu-il-faut-savoir-sur-le-libra-la-cryptomonnaie-de-facebook_5477887_4408996.html';
|
||||
private $entryDataTestAttribute = '[data-test="entry"]';
|
||||
@ -591,8 +591,8 @@ class EntryControllerTest extends WallabagCoreTestCase
|
||||
|
||||
$this->assertGreaterThan(1, $title = $crawler->filter('div[id=article] h1')->extract(['_text']));
|
||||
$this->assertStringContainsString('My updated title hehe :)', $title[0]);
|
||||
$this->assertGreaterThan(1, $stats = $crawler->filter('div[class="tools grey-text"] ul[class=stats] li a[class="tool grey-text"]')->extract(['_text']));
|
||||
$this->assertStringContainsString('example.io', trim($stats[1]));
|
||||
$originUrl = $crawler->filter('[data-tests="entry-origin-url"]')->text();
|
||||
$this->assertStringContainsString('example.io', $originUrl);
|
||||
}
|
||||
|
||||
public function testEditRemoveOriginUrl()
|
||||
@ -626,9 +626,8 @@ class EntryControllerTest extends WallabagCoreTestCase
|
||||
$this->assertGreaterThan(1, $title);
|
||||
$this->assertStringContainsString('My updated title hehe :)', $title[0]);
|
||||
|
||||
$stats = $crawler->filter('div[class="tools grey-text"] ul[class=stats] li a[class="tool grey-text"]')->extract(['_text']);
|
||||
$this->assertCount(1, $stats);
|
||||
$this->assertStringNotContainsString('example.io', trim($stats[0]));
|
||||
$originUrl = $crawler->filter('[data-tests="entry-origin-url"]')->extract(['_text']);
|
||||
$this->assertCount(0, $originUrl);
|
||||
}
|
||||
|
||||
public function testToggleArchive()
|
||||
@ -1502,7 +1501,7 @@ class EntryControllerTest extends WallabagCoreTestCase
|
||||
'pt_BR',
|
||||
],
|
||||
'es-ES' => [
|
||||
'https://elpais.com/internacional/2022-10-09/ultima-hora-de-la-guerra-en-ucrania-hoy-en-directo.html',
|
||||
'https://elpais.com/internacional/2022-11-03/ultima-hora-de-la-guerra-entre-rusia-y-ucrania-hoy-en-directo.html',
|
||||
'es',
|
||||
],
|
||||
];
|
||||
|
||||
@ -10,6 +10,8 @@ class ExportControllerTest extends WallabagCoreTestCase
|
||||
{
|
||||
private $adminEntry;
|
||||
private $bobEntry;
|
||||
private $sameDomainEntry;
|
||||
private $sameDomainEntry2;
|
||||
|
||||
public function testLogin()
|
||||
{
|
||||
@ -58,7 +60,7 @@ class ExportControllerTest extends WallabagCoreTestCase
|
||||
$this->assertSame(404, $client->getResponse()->getStatusCode());
|
||||
}
|
||||
|
||||
public function testBadEntryId()
|
||||
public function testNonExistingEntryId()
|
||||
{
|
||||
$this->logInAs('admin');
|
||||
$client = $this->getTestClient();
|
||||
@ -68,6 +70,21 @@ class ExportControllerTest extends WallabagCoreTestCase
|
||||
$this->assertSame(404, $client->getResponse()->getStatusCode());
|
||||
}
|
||||
|
||||
public function testForbiddenEntryId()
|
||||
{
|
||||
$this->logInAs('admin');
|
||||
$client = $this->getTestClient();
|
||||
|
||||
$content = $client->getContainer()
|
||||
->get('doctrine.orm.entity_manager')
|
||||
->getRepository(Entry::class)
|
||||
->findOneByUsernameAndNotArchived('bob');
|
||||
|
||||
$client->request('GET', '/export/' . $content->getId() . '.mobi');
|
||||
|
||||
$this->assertSame(404, $client->getResponse()->getStatusCode());
|
||||
}
|
||||
|
||||
public function testEpubExport()
|
||||
{
|
||||
$this->logInAs('admin');
|
||||
@ -124,7 +141,7 @@ class ExportControllerTest extends WallabagCoreTestCase
|
||||
$this->assertSame('binary', $headers->get('content-transfer-encoding'));
|
||||
|
||||
ob_start();
|
||||
$crawler = $client->request('GET', '/export/tag_entries.pdf?tag=foo-bar');
|
||||
$crawler = $client->request('GET', '/export/tag_entries.pdf?tag=t:foo-bar');
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
||||
@ -311,6 +328,26 @@ class ExportControllerTest extends WallabagCoreTestCase
|
||||
$this->assertNotEmpty('updated_at', (string) $content->entry[0]->updated_at);
|
||||
}
|
||||
|
||||
public function testJsonExportFromSameDomain()
|
||||
{
|
||||
$this->logInAs('admin');
|
||||
$client = $this->getTestClient();
|
||||
|
||||
ob_start();
|
||||
$crawler = $client->request('GET', '/export/same_domain.json?entry=1');
|
||||
ob_end_clean();
|
||||
|
||||
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
||||
|
||||
$headers = $client->getResponse()->headers;
|
||||
$this->assertSame('application/json', $headers->get('content-type'));
|
||||
$this->assertSame('attachment; filename="Same domain articles.json"', $headers->get('content-disposition'));
|
||||
$this->assertSame('UTF-8', $headers->get('content-transfer-encoding'));
|
||||
|
||||
$content = json_decode($client->getResponse()->getContent(), true);
|
||||
$this->assertCount(4, $content);
|
||||
}
|
||||
|
||||
private function setUpForJsonExportFromSearch()
|
||||
{
|
||||
$client = $this->getTestClient();
|
||||
|
||||
@ -237,42 +237,46 @@ class FeedControllerTest extends WallabagCoreTestCase
|
||||
$entry1->setCreatedAt($day1);
|
||||
$entry4->setCreatedAt($day2);
|
||||
|
||||
$property = (new \ReflectionObject($entry1))->getProperty('updatedAt');
|
||||
$property->setAccessible(true);
|
||||
$property->setValue($entry1, $day4);
|
||||
|
||||
$property = (new \ReflectionObject($entry4))->getProperty('updatedAt');
|
||||
$property->setAccessible(true);
|
||||
$property->setValue($entry4, $day3);
|
||||
|
||||
// We have to flush and sleep here to be sure that $entry1 and $entry4 have different updatedAt values
|
||||
$em->flush();
|
||||
sleep(2);
|
||||
|
||||
$property = (new \ReflectionObject($entry1))->getProperty('updatedAt');
|
||||
$property->setAccessible(true);
|
||||
$property->setValue($entry1, $day4);
|
||||
|
||||
$em->flush();
|
||||
|
||||
$client = $this->getTestClient();
|
||||
|
||||
// tag foo - without sort
|
||||
$crawler = $client->request('GET', '/feed/admin/SUPERTOKEN/tags/foo');
|
||||
$crawler = $client->request('GET', '/feed/admin/SUPERTOKEN/tags/t:foo');
|
||||
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
||||
$this->assertSame('test title entry4', $crawler->filterXPath('//feed/entry[1]/title')->text());
|
||||
$this->assertSame('test title entry1', $crawler->filterXPath('//feed/entry[2]/title')->text());
|
||||
|
||||
// tag foo - with sort created
|
||||
$crawler = $client->request('GET', '/feed/admin/SUPERTOKEN/tags/foo?sort=created');
|
||||
$crawler = $client->request('GET', '/feed/admin/SUPERTOKEN/tags/t:foo?sort=created');
|
||||
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
||||
$this->assertSame('test title entry4', $crawler->filterXPath('//feed/entry[1]/title')->text());
|
||||
$this->assertSame('test title entry1', $crawler->filterXPath('//feed/entry[2]/title')->text());
|
||||
|
||||
// tag foo - with sort updated
|
||||
$crawler = $client->request('GET', '/feed/admin/SUPERTOKEN/tags/foo?sort=updated');
|
||||
$crawler = $client->request('GET', '/feed/admin/SUPERTOKEN/tags/t:foo?sort=updated');
|
||||
$this->assertSame(200, $client->getResponse()->getStatusCode());
|
||||
$this->assertSame('test title entry1', $crawler->filterXPath('//feed/entry[1]/title')->text());
|
||||
$this->assertSame('test title entry4', $crawler->filterXPath('//feed/entry[2]/title')->text());
|
||||
|
||||
// tag foo - with invalid sort
|
||||
$client->request('GET', '/feed/admin/SUPERTOKEN/tags/foo?sort=invalid');
|
||||
$client->request('GET', '/feed/admin/SUPERTOKEN/tags/t:foo?sort=invalid');
|
||||
$this->assertSame(400, $client->getResponse()->getStatusCode());
|
||||
|
||||
// tag foo/3000
|
||||
$client->request('GET', '/feed/admin/SUPERTOKEN/tags/foo/3000');
|
||||
$client->request('GET', '/feed/admin/SUPERTOKEN/tags/t:foo/3000');
|
||||
$this->assertSame(302, $client->getResponse()->getStatusCode());
|
||||
}
|
||||
|
||||
|
||||
@ -32,12 +32,6 @@ class SecurityControllerTest extends WallabagCoreTestCase
|
||||
{
|
||||
$client = $this->getTestClient();
|
||||
|
||||
if (!$client->getContainer()->getParameter('twofactor_auth')) {
|
||||
$this->markTestSkipped('twofactor_auth is not enabled.');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$client->followRedirects();
|
||||
|
||||
$em = $client->getContainer()->get(EntityManagerInterface::class);
|
||||
@ -65,12 +59,6 @@ class SecurityControllerTest extends WallabagCoreTestCase
|
||||
{
|
||||
$client = $this->getTestClient();
|
||||
|
||||
if (!$client->getContainer()->getParameter('twofactor_auth')) {
|
||||
$this->markTestSkipped('twofactor_auth is not enabled.');
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
$client->followRedirects();
|
||||
|
||||
$em = $client->getContainer()->get(EntityManagerInterface::class);
|
||||
|
||||
@ -560,5 +560,12 @@ class TagControllerTest extends WallabagCoreTestCase
|
||||
|
||||
$this->assertContains('title', $tags);
|
||||
}
|
||||
|
||||
$tag = $client->getContainer()
|
||||
->get(EntityManagerInterface::class)
|
||||
->getRepository(Tag::class)
|
||||
->findByLabelsAndUser(['title'], $this->getLoggedInUserId());
|
||||
|
||||
$this->assertCount(1, $tag);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user