Add test on EntryControllerTest for #3442

Signed-off-by: Kevin Decherf <kevin@kdecherf.com>
This commit is contained in:
Kevin Decherf 2017-11-27 22:56:46 +01:00
parent af29e1bf07
commit 300f293cb1
2 changed files with 54 additions and 0 deletions

View file

@ -6,6 +6,7 @@ use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
use Wallabag\CoreBundle\Entity\Config; use Wallabag\CoreBundle\Entity\Config;
use Wallabag\CoreBundle\Entity\Entry; use Wallabag\CoreBundle\Entity\Entry;
use Wallabag\CoreBundle\Entity\SiteCredential; use Wallabag\CoreBundle\Entity\SiteCredential;
use Wallabag\CoreBundle\Helper\ContentProxy;
class EntryControllerTest extends WallabagCoreTestCase class EntryControllerTest extends WallabagCoreTestCase
{ {
@ -1429,4 +1430,52 @@ class EntryControllerTest extends WallabagCoreTestCase
$client->getContainer()->get('craue_config')->set('restricted_access', 0); $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());
}
} }

View file

@ -25,6 +25,11 @@ abstract class WallabagCoreTestCase extends WebTestCase
$this->client = static::createClient(); $this->client = static::createClient();
} }
public function getNewClient()
{
return $this->client = static::createClient();
}
public function getClient() public function getClient()
{ {
return $this->client; return $this->client;