From 300f293cb1b7c2e2a94e3d716c75faf4b2a9b823 Mon Sep 17 00:00:00 2001 From: Kevin Decherf Date: Mon, 27 Nov 2017 22:56:46 +0100 Subject: [PATCH] Add test on EntryControllerTest for #3442 Signed-off-by: Kevin Decherf --- .../Controller/EntryControllerTest.php | 49 +++++++++++++++++++ .../CoreBundle/WallabagCoreTestCase.php | 5 ++ 2 files changed, 54 insertions(+) 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; -- 2.41.0