diff options
Diffstat (limited to 'tests/Wallabag/CoreBundle/Helper/DownloadImagesTest.php')
-rw-r--r-- | tests/Wallabag/CoreBundle/Helper/DownloadImagesTest.php | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/tests/Wallabag/CoreBundle/Helper/DownloadImagesTest.php b/tests/Wallabag/CoreBundle/Helper/DownloadImagesTest.php new file mode 100644 index 00000000..920c21d9 --- /dev/null +++ b/tests/Wallabag/CoreBundle/Helper/DownloadImagesTest.php | |||
@@ -0,0 +1,143 @@ | |||
1 | <?php | ||
2 | |||
3 | namespace Tests\Wallabag\CoreBundle\Helper; | ||
4 | |||
5 | use Wallabag\CoreBundle\Helper\DownloadImages; | ||
6 | use Psr\Log\NullLogger; | ||
7 | use Monolog\Logger; | ||
8 | use Monolog\Handler\TestHandler; | ||
9 | use GuzzleHttp\Client; | ||
10 | use GuzzleHttp\Subscriber\Mock; | ||
11 | use GuzzleHttp\Message\Response; | ||
12 | use GuzzleHttp\Stream\Stream; | ||
13 | |||
14 | class DownloadImagesTest extends \PHPUnit_Framework_TestCase | ||
15 | { | ||
16 | public function testProcessHtml() | ||
17 | { | ||
18 | $client = new Client(); | ||
19 | |||
20 | $mock = new Mock([ | ||
21 | new Response(200, ['content-type' => 'image/png'], Stream::factory(file_get_contents(__DIR__.'/../fixtures/unnamed.png'))), | ||
22 | ]); | ||
23 | |||
24 | $client->getEmitter()->attach($mock); | ||
25 | |||
26 | $logHandler = new TestHandler(); | ||
27 | $logger = new Logger('test', array($logHandler)); | ||
28 | |||
29 | $download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', 'http://wallabag.io/', $logger); | ||
30 | |||
31 | $res = $download->processHtml(123, '<div><img src="http://i.imgur.com/T9qgcHc.jpg" /></div>', 'http://imgur.com/gallery/WxtWY'); | ||
32 | |||
33 | $this->assertContains('http://wallabag.io/assets/images/9/b/9b0ead26/c638b4c2.png', $res); | ||
34 | } | ||
35 | |||
36 | public function testProcessHtmlWithBadImage() | ||
37 | { | ||
38 | $client = new Client(); | ||
39 | |||
40 | $mock = new Mock([ | ||
41 | new Response(200, ['content-type' => 'application/json'], Stream::factory('')), | ||
42 | ]); | ||
43 | |||
44 | $client->getEmitter()->attach($mock); | ||
45 | |||
46 | $logHandler = new TestHandler(); | ||
47 | $logger = new Logger('test', array($logHandler)); | ||
48 | |||
49 | $download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', 'http://wallabag.io/', $logger); | ||
50 | $res = $download->processHtml(123, '<div><img src="http://i.imgur.com/T9qgcHc.jpg" /></div>', 'http://imgur.com/gallery/WxtWY'); | ||
51 | |||
52 | $this->assertContains('http://i.imgur.com/T9qgcHc.jpg', $res, 'Image were not replace because of content-type'); | ||
53 | } | ||
54 | |||
55 | public function singleImage() | ||
56 | { | ||
57 | return [ | ||
58 | ['image/pjpeg', 'jpeg'], | ||
59 | ['image/jpeg', 'jpeg'], | ||
60 | ['image/png', 'png'], | ||
61 | ['image/gif', 'gif'], | ||
62 | ]; | ||
63 | } | ||
64 | |||
65 | /** | ||
66 | * @dataProvider singleImage | ||
67 | */ | ||
68 | public function testProcessSingleImage($header, $extension) | ||
69 | { | ||
70 | $client = new Client(); | ||
71 | |||
72 | $mock = new Mock([ | ||
73 | new Response(200, ['content-type' => $header], Stream::factory(file_get_contents(__DIR__.'/../fixtures/unnamed.png'))), | ||
74 | ]); | ||
75 | |||
76 | $client->getEmitter()->attach($mock); | ||
77 | |||
78 | $logHandler = new TestHandler(); | ||
79 | $logger = new Logger('test', array($logHandler)); | ||
80 | |||
81 | $download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', 'http://wallabag.io/', $logger); | ||
82 | $res = $download->processSingleImage(123, 'T9qgcHc.jpg', 'http://imgur.com/gallery/WxtWY'); | ||
83 | |||
84 | $this->assertContains('/assets/images/9/b/9b0ead26/ebe60399.'.$extension, $res); | ||
85 | } | ||
86 | |||
87 | public function testProcessSingleImageWithBadUrl() | ||
88 | { | ||
89 | $client = new Client(); | ||
90 | |||
91 | $mock = new Mock([ | ||
92 | new Response(404, []), | ||
93 | ]); | ||
94 | |||
95 | $client->getEmitter()->attach($mock); | ||
96 | |||
97 | $logHandler = new TestHandler(); | ||
98 | $logger = new Logger('test', array($logHandler)); | ||
99 | |||
100 | $download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', 'http://wallabag.io/', $logger); | ||
101 | $res = $download->processSingleImage(123, 'T9qgcHc.jpg', 'http://imgur.com/gallery/WxtWY'); | ||
102 | |||
103 | $this->assertFalse($res, 'Image can not be found, so it will not be replaced'); | ||
104 | } | ||
105 | |||
106 | public function testProcessSingleImageWithBadImage() | ||
107 | { | ||
108 | $client = new Client(); | ||
109 | |||
110 | $mock = new Mock([ | ||
111 | new Response(200, ['content-type' => 'image/png'], Stream::factory('')), | ||
112 | ]); | ||
113 | |||
114 | $client->getEmitter()->attach($mock); | ||
115 | |||
116 | $logHandler = new TestHandler(); | ||
117 | $logger = new Logger('test', array($logHandler)); | ||
118 | |||
119 | $download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', 'http://wallabag.io/', $logger); | ||
120 | $res = $download->processSingleImage(123, 'http://i.imgur.com/T9qgcHc.jpg', 'http://imgur.com/gallery/WxtWY'); | ||
121 | |||
122 | $this->assertFalse($res, 'Image can not be loaded, so it will not be replaced'); | ||
123 | } | ||
124 | |||
125 | public function testProcessSingleImageFailAbsolute() | ||
126 | { | ||
127 | $client = new Client(); | ||
128 | |||
129 | $mock = new Mock([ | ||
130 | new Response(200, ['content-type' => 'image/png'], Stream::factory(file_get_contents(__DIR__.'/../fixtures/unnamed.png'))), | ||
131 | ]); | ||
132 | |||
133 | $client->getEmitter()->attach($mock); | ||
134 | |||
135 | $logHandler = new TestHandler(); | ||
136 | $logger = new Logger('test', array($logHandler)); | ||
137 | |||
138 | $download = new DownloadImages($client, sys_get_temp_dir().'/wallabag_test', 'http://wallabag.io/', $logger); | ||
139 | $res = $download->processSingleImage(123, '/i.imgur.com/T9qgcHc.jpg', 'imgur.com/gallery/WxtWY'); | ||
140 | |||
141 | $this->assertFalse($res, 'Absolute image can not be determined, so it will not be replaced'); | ||
142 | } | ||
143 | } | ||