3 namespace Tests\Wallabag\CoreBundle\Helper
;
5 use Wallabag\CoreBundle\Helper\DownloadImages
;
7 use Monolog\Handler\TestHandler
;
9 use GuzzleHttp\Subscriber\Mock
;
10 use GuzzleHttp\Message\Response
;
11 use GuzzleHttp\Stream\Stream
;
13 class DownloadImagesTest
extends \PHPUnit_Framework_TestCase
15 public function dataForSuccessImage()
19 '<div><img src="http://i.imgur.com/T9qgcHc.jpg" /></div>',
20 'http://imgur.com/gallery/WxtWY',
23 '<div><img src="https://i2.wp.com/www.tvaddons.ag/wp-content/uploads/2017/01/Screen-Shot-2017-01-07-at-10.17.40-PM.jpg?w=640&ssl=1" /></div>',
24 'https://www.tvaddons.ag/realdebrid-kodi-jarvis/',
30 * @dataProvider dataForSuccessImage
32 public function testProcessHtml($html, $url)
34 $client = new Client();
37 new Response(200, ['content-type' => 'image/png'], Stream
::factory(file_get_contents(__DIR__
.'/../fixtures/unnamed.png'))),
40 $client->getEmitter()->attach($mock);
42 $logHandler = new TestHandler();
43 $logger = new Logger('test', array($logHandler));
45 $download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', 'http://wallabag.io/', $logger);
47 $res = $download->processHtml(123, $html, $url);
49 // this the base path of all image (since it's calculated using the entry id: 123)
50 $this->assertContains('http://wallabag.io/assets/images/9/b/9b0ead26/', $res);
53 public function testProcessHtmlWithBadImage()
55 $client = new Client();
58 new Response(200, ['content-type' => 'application/json'], Stream
::factory('')),
61 $client->getEmitter()->attach($mock);
63 $logHandler = new TestHandler();
64 $logger = new Logger('test', array($logHandler));
66 $download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', 'http://wallabag.io/', $logger);
67 $res = $download->processHtml(123, '<div><img src="http://i.imgur.com/T9qgcHc.jpg" /></div>', 'http://imgur.com/gallery/WxtWY');
69 $this->assertContains('http://i.imgur.com/T9qgcHc.jpg', $res, 'Image were not replace because of content-type');
72 public function singleImage()
75 ['image/pjpeg', 'jpeg'],
76 ['image/jpeg', 'jpeg'],
83 * @dataProvider singleImage
85 public function testProcessSingleImage($header, $extension)
87 $client = new Client();
90 new Response(200, ['content-type' => $header], Stream
::factory(file_get_contents(__DIR__
.'/../fixtures/unnamed.png'))),
93 $client->getEmitter()->attach($mock);
95 $logHandler = new TestHandler();
96 $logger = new Logger('test', array($logHandler));
98 $download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', 'http://wallabag.io/', $logger);
99 $res = $download->processSingleImage(123, 'T9qgcHc.jpg', 'http://imgur.com/gallery/WxtWY');
101 $this->assertContains('/assets/images/9/b/9b0ead26/ebe60399.'.$extension, $res);
104 public function testProcessSingleImageWithBadUrl()
106 $client = new Client();
109 new Response(404, []),
112 $client->getEmitter()->attach($mock);
114 $logHandler = new TestHandler();
115 $logger = new Logger('test', array($logHandler));
117 $download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', 'http://wallabag.io/', $logger);
118 $res = $download->processSingleImage(123, 'T9qgcHc.jpg', 'http://imgur.com/gallery/WxtWY');
120 $this->assertFalse($res, 'Image can not be found, so it will not be replaced');
123 public function testProcessSingleImageWithBadImage()
125 $client = new Client();
128 new Response(200, ['content-type' => 'image/png'], Stream
::factory('')),
131 $client->getEmitter()->attach($mock);
133 $logHandler = new TestHandler();
134 $logger = new Logger('test', array($logHandler));
136 $download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', 'http://wallabag.io/', $logger);
137 $res = $download->processSingleImage(123, 'http://i.imgur.com/T9qgcHc.jpg', 'http://imgur.com/gallery/WxtWY');
139 $this->assertFalse($res, 'Image can not be loaded, so it will not be replaced');
142 public function testProcessSingleImageFailAbsolute()
144 $client = new Client();
147 new Response(200, ['content-type' => 'image/png'], Stream
::factory(file_get_contents(__DIR__
.'/../fixtures/unnamed.png'))),
150 $client->getEmitter()->attach($mock);
152 $logHandler = new TestHandler();
153 $logger = new Logger('test', array($logHandler));
155 $download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', 'http://wallabag.io/', $logger);
156 $res = $download->processSingleImage(123, '/i.imgur.com/T9qgcHc.jpg', 'imgur.com/gallery/WxtWY');
158 $this->assertFalse($res, 'Absolute image can not be determined, so it will not be replaced');