Fixing tests

This commit is contained in:
Jeremy Benoist 2016-10-30 11:27:09 +01:00
parent 7f55941856
commit 48656e0eaa
No known key found for this signature in database
GPG Key ID: BCA73962457ACC3C
7 changed files with 63 additions and 23 deletions

View File

@ -49,22 +49,23 @@ class DownloadImagesSubscriber implements EventSubscriber
return; return;
} }
$em = $args->getEntityManager(); $config = new $this->configClass();
$config->setEntityManager($args->getEntityManager());
// field content has been updated // field content has been updated
if ($args->hasChangedField('content')) { if ($args->hasChangedField('content')) {
$html = $this->downloadImages($em, $entity); $html = $this->downloadImages($config, $entity);
if (null !== $html) { if (false !== $html) {
$args->setNewValue('content', $html); $args->setNewValue('content', $html);
} }
} }
// field preview picture has been updated // field preview picture has been updated
if ($args->hasChangedField('previewPicture')) { if ($args->hasChangedField('previewPicture')) {
$previewPicture = $this->downloadPreviewImage($em, $entity); $previewPicture = $this->downloadPreviewImage($config, $entity);
if (null !== $previewPicture) { if (false !== $previewPicture) {
$entity->setPreviewPicture($previewPicture); $entity->setPreviewPicture($previewPicture);
} }
} }
@ -88,17 +89,25 @@ class DownloadImagesSubscriber implements EventSubscriber
// update all images inside the html // update all images inside the html
$html = $this->downloadImages($config, $entity); $html = $this->downloadImages($config, $entity);
if (null !== $html) { if (false !== $html) {
$entity->setContent($html); $entity->setContent($html);
} }
// update preview picture // update preview picture
$previewPicture = $this->downloadPreviewImage($config, $entity); $previewPicture = $this->downloadPreviewImage($config, $entity);
if (null !== $previewPicture) { if (false !== $previewPicture) {
$entity->setPreviewPicture($previewPicture); $entity->setPreviewPicture($previewPicture);
} }
} }
/**
* Download all images from the html.
*
* @param Config $config
* @param Entry $entry
*
* @return string|false False in case of async
*/
public function downloadImages(Config $config, Entry $entry) public function downloadImages(Config $config, Entry $entry)
{ {
// if ($config->get('download_images_with_rabbitmq')) { // if ($config->get('download_images_with_rabbitmq')) {
@ -113,6 +122,14 @@ class DownloadImagesSubscriber implements EventSubscriber
); );
} }
/**
* Download the preview picture.
*
* @param Config $config
* @param Entry $entry
*
* @return string|false False in case of async
*/
public function downloadPreviewImage(Config $config, Entry $entry) public function downloadPreviewImage(Config $config, Entry $entry)
{ {
// if ($config->get('download_images_with_rabbitmq')) { // if ($config->get('download_images_with_rabbitmq')) {

View File

@ -65,6 +65,7 @@ class ContentProxy
$entry->setUrl($content['url'] ?: $url); $entry->setUrl($content['url'] ?: $url);
$entry->setTitle($title); $entry->setTitle($title);
$entry->setContent($html);
$entry->setLanguage($content['language']); $entry->setLanguage($content['language']);
$entry->setMimetype($content['content_type']); $entry->setMimetype($content['content_type']);
@ -75,8 +76,6 @@ class ContentProxy
$entry->setDomainName($domainName); $entry->setDomainName($domainName);
} }
$entry->setContent($html);
if (isset($content['open_graph']['og_image'])) { if (isset($content['open_graph']['og_image'])) {
$entry->setPreviewPicture($content['open_graph']['og_image']); $entry->setPreviewPicture($content['open_graph']['og_image']);
} }

View File

@ -91,20 +91,23 @@ class DownloadImages
// build image path // build image path
$absolutePath = $this->getAbsoluteLink($url, $imagePath); $absolutePath = $this->getAbsoluteLink($url, $imagePath);
if (false === $absolutePath) { if (false === $absolutePath) {
$this->logger->log('debug', 'Can not determine the absolute path for that image, skipping.'); $this->logger->log('error', 'Can not determine the absolute path for that image, skipping.');
return false; return false;
} }
$res = $this->client->get( try {
$absolutePath, $res = $this->client->get($absolutePath);
['exceptions' => false] } catch (\Exception $e) {
); $this->logger->log('error', 'Can not retrieve image, skipping.', ['exception' => $e]);
return false;
}
$ext = $this->mimeGuesser->guess($res->getHeader('content-type')); $ext = $this->mimeGuesser->guess($res->getHeader('content-type'));
$this->logger->log('debug', 'Checking extension', ['ext' => $ext, 'header' => $res->getHeader('content-type')]); $this->logger->log('debug', 'Checking extension', ['ext' => $ext, 'header' => $res->getHeader('content-type')]);
if (!in_array($ext, ['jpeg', 'jpg', 'gif', 'png'])) { if (!in_array($ext, ['jpeg', 'jpg', 'gif', 'png'], true)) {
$this->logger->log('debug', 'Processed image with not allowed extension. Skipping '.$imagePath); $this->logger->log('error', 'Processed image with not allowed extension. Skipping '.$imagePath);
return false; return false;
} }
@ -117,7 +120,7 @@ class DownloadImages
$im = false; $im = false;
} }
if ($im === false) { if (false === $im) {
$this->logger->log('error', 'Error while regenerating image', ['path' => $localPath]); $this->logger->log('error', 'Error while regenerating image', ['path' => $localPath]);
return false; return false;
@ -193,6 +196,8 @@ class DownloadImages
return $absolute->get_uri(); return $absolute->get_uri();
} }
$this->logger->log('error', 'Can not make an absolute link', ['base' => $base, 'url' => $url]);
return false; return false;
} }
} }

View File

@ -1,6 +1,6 @@
<?php <?php
namespace Tests\Wallabag\CoreBundle\EventListener; namespace Tests\Wallabag\CoreBundle\Event\Listener;
use Symfony\Component\EventDispatcher\EventDispatcher; use Symfony\Component\EventDispatcher\EventDispatcher;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
@ -9,7 +9,7 @@ use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
use Symfony\Component\HttpKernel\Event\GetResponseEvent; use Symfony\Component\HttpKernel\Event\GetResponseEvent;
use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\KernelEvents; use Symfony\Component\HttpKernel\KernelEvents;
use Wallabag\CoreBundle\EventListener\LocaleListener; use Wallabag\CoreBundle\Event\Listener\LocaleListener;
class LocaleListenerTest extends \PHPUnit_Framework_TestCase class LocaleListenerTest extends \PHPUnit_Framework_TestCase
{ {

View File

@ -1,6 +1,6 @@
<?php <?php
namespace Tests\Wallabag\CoreBundle\EventListener; namespace Tests\Wallabag\CoreBundle\Event\Listener;
use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session; use Symfony\Component\HttpFoundation\Session\Session;
@ -8,7 +8,7 @@ use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken; use Symfony\Component\Security\Core\Authentication\Token\UsernamePasswordToken;
use Symfony\Component\Security\Http\Event\InteractiveLoginEvent; use Symfony\Component\Security\Http\Event\InteractiveLoginEvent;
use Wallabag\CoreBundle\Entity\Config; use Wallabag\CoreBundle\Entity\Config;
use Wallabag\CoreBundle\EventListener\UserLocaleListener; use Wallabag\CoreBundle\Event\Listener\UserLocaleListener;
use Wallabag\UserBundle\Entity\User; use Wallabag\UserBundle\Entity\User;
class UserLocaleListenerTest extends \PHPUnit_Framework_TestCase class UserLocaleListenerTest extends \PHPUnit_Framework_TestCase

View File

@ -1,11 +1,11 @@
<?php <?php
namespace Tests\Wallabag\CoreBundle\Subscriber; namespace Tests\Wallabag\CoreBundle\Event\Subscriber;
use Doctrine\Common\EventManager; use Doctrine\Common\EventManager;
use Doctrine\ORM\Event\LoadClassMetadataEventArgs; use Doctrine\ORM\Event\LoadClassMetadataEventArgs;
use Doctrine\ORM\Mapping\ClassMetadata; use Doctrine\ORM\Mapping\ClassMetadata;
use Wallabag\CoreBundle\Subscriber\TablePrefixSubscriber; use Wallabag\CoreBundle\Event\Subscriber\TablePrefixSubscriber;
class TablePrefixSubscriberTest extends \PHPUnit_Framework_TestCase class TablePrefixSubscriberTest extends \PHPUnit_Framework_TestCase
{ {

View File

@ -83,6 +83,25 @@ class DownloadImagesTest extends \PHPUnit_Framework_TestCase
$this->assertContains('/assets/images/4/2/4258f71e/ebe60399.'.$extension, $res); $this->assertContains('/assets/images/4/2/4258f71e/ebe60399.'.$extension, $res);
} }
public function testProcessSingleImageWithBadUrl()
{
$client = new Client();
$mock = new Mock([
new Response(404, []),
]);
$client->getEmitter()->attach($mock);
$logHandler = new TestHandler();
$logger = new Logger('test', array($logHandler));
$download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', $logger);
$res = $download->processSingleImage('T9qgcHc.jpg', 'http://imgur.com/gallery/WxtWY');
$this->assertFalse($res, 'Image can not be found, so it will not be replaced');
}
public function testProcessSingleImageWithBadImage() public function testProcessSingleImageWithBadImage()
{ {
$client = new Client(); $client = new Client();