From af29e1bf07aabaa6a4e4653c1a3b5c10ce831bb6 Mon Sep 17 00:00:00 2001 From: Kevin Decherf Date: Sun, 26 Nov 2017 23:20:23 +0100 Subject: Fix empty title and domain_name when exception is thrown during fetch Add a new helper to set a default title when it's empty: 1/ use basename part of entry's path, if any 2/ or use domain name Fixes #2053 Signed-off-by: Kevin Decherf --- tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php | 2 ++ 1 file changed, 2 insertions(+) (limited to 'tests/Wallabag') diff --git a/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php b/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php index b0d4c4e1..5c7b988c 100644 --- a/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php +++ b/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php @@ -501,6 +501,8 @@ class EntryRestControllerTest extends WallabagApiTestCase $content = json_decode($this->client->getResponse()->getContent(), true); $this->assertGreaterThan(0, $content['id']); $this->assertSame('http://www.example.com/', $content['url']); + $this->assertSame('www.example.com', $content['domain_name']); + $this->assertSame('www.example.com', $content['title']); } finally { // Remove the created entry to avoid side effects on other tests if (isset($content['id'])) { -- cgit v1.2.3 From 300f293cb1b7c2e2a94e3d716c75faf4b2a9b823 Mon Sep 17 00:00:00 2001 From: Kevin Decherf Date: Mon, 27 Nov 2017 22:56:46 +0100 Subject: Add test on EntryControllerTest for #3442 Signed-off-by: Kevin Decherf --- .../CoreBundle/Controller/EntryControllerTest.php | 49 ++++++++++++++++++++++ tests/Wallabag/CoreBundle/WallabagCoreTestCase.php | 5 +++ 2 files changed, 54 insertions(+) (limited to 'tests/Wallabag') diff --git a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php index 4ac4548b..a02f9699 100644 --- a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php @@ -6,6 +6,7 @@ use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; use Wallabag\CoreBundle\Entity\Config; use Wallabag\CoreBundle\Entity\Entry; use Wallabag\CoreBundle\Entity\SiteCredential; +use Wallabag\CoreBundle\Helper\ContentProxy; class EntryControllerTest extends WallabagCoreTestCase { @@ -1429,4 +1430,52 @@ class EntryControllerTest extends WallabagCoreTestCase $client->getContainer()->get('craue_config')->set('restricted_access', 0); } + + public function testPostEntryWhenFetchFails() + { + $url = 'http://example.com/papers/email_tracking.pdf'; + $this->logInAs('admin'); + $client = $this->getClient(); + + $container = $client->getContainer(); + $contentProxy = $this->getMockBuilder(ContentProxy::class) + ->disableOriginalConstructor() + ->setMethods(['updateEntry']) + ->getMock(); + $contentProxy->expects($this->any()) + ->method('updateEntry') + ->willThrowException(new \Exception('Test Fetch content fails')); + + $crawler = $client->request('GET', '/new'); + + $this->assertSame(200, $client->getResponse()->getStatusCode()); + + $form = $crawler->filter('form[name=entry]')->form(); + + $data = [ + 'entry[url]' => $url, + ]; + + /** + * We generate a new client to be able to use Mock ContentProxy + * Also we reinject the cookie from the previous client to keep the + * session. + */ + $cookie = $client->getCookieJar()->all(); + $client = $this->getNewClient(); + $client->getCookieJar()->set($cookie[0]); + $client->getContainer()->set('wallabag_core.content_proxy', $contentProxy); + $client->submit($form, $data); + + $this->assertSame(302, $client->getResponse()->getStatusCode()); + + $content = $client->getContainer() + ->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:Entry') + ->findByUrlAndUserId($url, $this->getLoggedInUserId()); + + $authors = $content->getPublishedBy(); + $this->assertSame('email_tracking.pdf', $content->getTitle()); + $this->assertSame('example.com', $content->getDomainName()); + } } diff --git a/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php b/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php index 1eda5199..6e1163c5 100644 --- a/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php +++ b/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php @@ -25,6 +25,11 @@ abstract class WallabagCoreTestCase extends WebTestCase $this->client = static::createClient(); } + public function getNewClient() + { + return $this->client = static::createClient(); + } + public function getClient() { return $this->client; -- cgit v1.2.3