diff options
author | Jérémy Benoist <j0k3r@users.noreply.github.com> | 2017-10-23 11:09:17 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-10-23 11:09:17 +0200 |
commit | 1953a872932a63792293b4aec087880265ba89f7 (patch) | |
tree | fd16599e737fcdaf193c933ef3ec4a4ee248b117 /tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php | |
parent | d83d25dadec2c38460a32d96f5d2903426fec9d3 (diff) | |
parent | 702f2d67d60ca963492b90dad74cb5f8dcc84e51 (diff) | |
download | wallabag-1953a872932a63792293b4aec087880265ba89f7.tar.gz wallabag-1953a872932a63792293b4aec087880265ba89f7.tar.zst wallabag-1953a872932a63792293b4aec087880265ba89f7.zip |
Merge pull request #3011 from wallabag/2.3
wallabag 2.3.0
Diffstat (limited to 'tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php')
-rw-r--r-- | tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php | 717 |
1 files changed, 484 insertions, 233 deletions
diff --git a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php index 7db4cf1f..ca275b32 100644 --- a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php +++ b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php | |||
@@ -5,18 +5,35 @@ namespace Tests\Wallabag\CoreBundle\Controller; | |||
5 | use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; | 5 | use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; |
6 | use Wallabag\CoreBundle\Entity\Config; | 6 | use Wallabag\CoreBundle\Entity\Config; |
7 | use Wallabag\CoreBundle\Entity\Entry; | 7 | use Wallabag\CoreBundle\Entity\Entry; |
8 | use Wallabag\CoreBundle\Entity\SiteCredential; | ||
8 | 9 | ||
9 | class EntryControllerTest extends WallabagCoreTestCase | 10 | class EntryControllerTest extends WallabagCoreTestCase |
10 | { | 11 | { |
12 | public $downloadImagesEnabled = false; | ||
11 | public $url = 'http://www.lemonde.fr/pixels/article/2015/03/28/plongee-dans-l-univers-d-ingress-le-jeu-de-google-aux-frontieres-du-reel_4601155_4408996.html'; | 13 | public $url = 'http://www.lemonde.fr/pixels/article/2015/03/28/plongee-dans-l-univers-d-ingress-le-jeu-de-google-aux-frontieres-du-reel_4601155_4408996.html'; |
12 | 14 | ||
15 | /** | ||
16 | * @after | ||
17 | * | ||
18 | * Ensure download_images_enabled is disabled after each script | ||
19 | */ | ||
20 | public function tearDownImagesEnabled() | ||
21 | { | ||
22 | if ($this->downloadImagesEnabled) { | ||
23 | $client = static::createClient(); | ||
24 | $client->getContainer()->get('craue_config')->set('download_images_enabled', 0); | ||
25 | |||
26 | $this->downloadImagesEnabled = false; | ||
27 | } | ||
28 | } | ||
29 | |||
13 | public function testLogin() | 30 | public function testLogin() |
14 | { | 31 | { |
15 | $client = $this->getClient(); | 32 | $client = $this->getClient(); |
16 | 33 | ||
17 | $client->request('GET', '/new'); | 34 | $client->request('GET', '/new'); |
18 | 35 | ||
19 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 36 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
20 | $this->assertContains('login', $client->getResponse()->headers->get('location')); | 37 | $this->assertContains('login', $client->getResponse()->headers->get('location')); |
21 | } | 38 | } |
22 | 39 | ||
@@ -26,16 +43,17 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
26 | $client = $this->getClient(); | 43 | $client = $this->getClient(); |
27 | 44 | ||
28 | $client->request('GET', '/unread/list'); | 45 | $client->request('GET', '/unread/list'); |
46 | $this->assertSame(302, $client->getResponse()->getStatusCode()); | ||
29 | $crawler = $client->followRedirect(); | 47 | $crawler = $client->followRedirect(); |
30 | 48 | ||
31 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 49 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
32 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | 50 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); |
33 | $this->assertContains('quickstart.intro.title', $body[0]); | 51 | $this->assertContains('quickstart.intro.title', $body[0]); |
34 | 52 | ||
35 | // Test if quickstart is disabled when user has 1 entry | 53 | // Test if quickstart is disabled when user has 1 entry |
36 | $crawler = $client->request('GET', '/new'); | 54 | $crawler = $client->request('GET', '/new'); |
37 | 55 | ||
38 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 56 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
39 | 57 | ||
40 | $form = $crawler->filter('form[name=entry]')->form(); | 58 | $form = $crawler->filter('form[name=entry]')->form(); |
41 | 59 | ||
@@ -44,7 +62,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
44 | ]; | 62 | ]; |
45 | 63 | ||
46 | $client->submit($form, $data); | 64 | $client->submit($form, $data); |
47 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 65 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
48 | $client->followRedirect(); | 66 | $client->followRedirect(); |
49 | 67 | ||
50 | $crawler = $client->request('GET', '/unread/list'); | 68 | $crawler = $client->request('GET', '/unread/list'); |
@@ -55,11 +73,12 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
55 | public function testGetNew() | 73 | public function testGetNew() |
56 | { | 74 | { |
57 | $this->logInAs('admin'); | 75 | $this->logInAs('admin'); |
76 | $this->useTheme('baggy'); | ||
58 | $client = $this->getClient(); | 77 | $client = $this->getClient(); |
59 | 78 | ||
60 | $crawler = $client->request('GET', '/new'); | 79 | $crawler = $client->request('GET', '/new'); |
61 | 80 | ||
62 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 81 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
63 | 82 | ||
64 | $this->assertCount(1, $crawler->filter('input[type=url]')); | 83 | $this->assertCount(1, $crawler->filter('input[type=url]')); |
65 | $this->assertCount(1, $crawler->filter('form[name=entry]')); | 84 | $this->assertCount(1, $crawler->filter('form[name=entry]')); |
@@ -68,6 +87,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
68 | public function testPostNewViaBookmarklet() | 87 | public function testPostNewViaBookmarklet() |
69 | { | 88 | { |
70 | $this->logInAs('admin'); | 89 | $this->logInAs('admin'); |
90 | $this->useTheme('baggy'); | ||
71 | $client = $this->getClient(); | 91 | $client = $this->getClient(); |
72 | 92 | ||
73 | $crawler = $client->request('GET', '/'); | 93 | $crawler = $client->request('GET', '/'); |
@@ -76,7 +96,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
76 | 96 | ||
77 | // Good URL | 97 | // Good URL |
78 | $client->request('GET', '/bookmarklet', ['url' => $this->url]); | 98 | $client->request('GET', '/bookmarklet', ['url' => $this->url]); |
79 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 99 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
80 | $client->followRedirect(); | 100 | $client->followRedirect(); |
81 | $crawler = $client->request('GET', '/'); | 101 | $crawler = $client->request('GET', '/'); |
82 | $this->assertCount(5, $crawler->filter('div[class=entry]')); | 102 | $this->assertCount(5, $crawler->filter('div[class=entry]')); |
@@ -97,15 +117,15 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
97 | 117 | ||
98 | $crawler = $client->request('GET', '/new'); | 118 | $crawler = $client->request('GET', '/new'); |
99 | 119 | ||
100 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 120 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
101 | 121 | ||
102 | $form = $crawler->filter('form[name=entry]')->form(); | 122 | $form = $crawler->filter('form[name=entry]')->form(); |
103 | 123 | ||
104 | $crawler = $client->submit($form); | 124 | $crawler = $client->submit($form); |
105 | 125 | ||
106 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 126 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
107 | $this->assertCount(1, $alert = $crawler->filter('form ul li')->extract(['_text'])); | 127 | $this->assertCount(1, $alert = $crawler->filter('form ul li')->extract(['_text'])); |
108 | $this->assertEquals('This value should not be blank.', $alert[0]); | 128 | $this->assertSame('This value should not be blank.', $alert[0]); |
109 | } | 129 | } |
110 | 130 | ||
111 | /** | 131 | /** |
@@ -118,7 +138,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
118 | 138 | ||
119 | $crawler = $client->request('GET', '/new'); | 139 | $crawler = $client->request('GET', '/new'); |
120 | 140 | ||
121 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 141 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
122 | 142 | ||
123 | $form = $crawler->filter('form[name=entry]')->form(); | 143 | $form = $crawler->filter('form[name=entry]')->form(); |
124 | 144 | ||
@@ -128,26 +148,70 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
128 | 148 | ||
129 | $client->submit($form, $data); | 149 | $client->submit($form, $data); |
130 | 150 | ||
131 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 151 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
132 | 152 | ||
133 | $content = $client->getContainer() | 153 | $content = $client->getContainer() |
134 | ->get('doctrine.orm.entity_manager') | 154 | ->get('doctrine.orm.entity_manager') |
135 | ->getRepository('WallabagCoreBundle:Entry') | 155 | ->getRepository('WallabagCoreBundle:Entry') |
136 | ->findByUrlAndUserId($this->url, $this->getLoggedInUserId()); | 156 | ->findByUrlAndUserId($this->url, $this->getLoggedInUserId()); |
137 | 157 | ||
158 | $author = $content->getPublishedBy(); | ||
159 | |||
138 | $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content); | 160 | $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content); |
139 | $this->assertEquals($this->url, $content->getUrl()); | 161 | $this->assertSame($this->url, $content->getUrl()); |
140 | $this->assertContains('Google', $content->getTitle()); | 162 | $this->assertContains('Google', $content->getTitle()); |
163 | $this->assertSame('fr', $content->getLanguage()); | ||
164 | $this->assertSame('2015-03-28 15:37:39', $content->getPublishedAt()->format('Y-m-d H:i:s')); | ||
165 | $this->assertSame('Morgane Tual', $author[0]); | ||
166 | $this->assertArrayHasKey('x-varnish1', $content->getHeaders()); | ||
167 | } | ||
168 | |||
169 | public function testPostWithMultipleAuthors() | ||
170 | { | ||
171 | $url = 'http://www.liberation.fr/planete/2017/04/05/donald-trump-et-xi-jinping-tentative-de-flirt-en-floride_1560768'; | ||
172 | $this->logInAs('admin'); | ||
173 | $client = $this->getClient(); | ||
174 | |||
175 | $crawler = $client->request('GET', '/new'); | ||
176 | |||
177 | $this->assertSame(200, $client->getResponse()->getStatusCode()); | ||
178 | |||
179 | $form = $crawler->filter('form[name=entry]')->form(); | ||
180 | |||
181 | $data = [ | ||
182 | 'entry[url]' => $url, | ||
183 | ]; | ||
184 | |||
185 | $client->submit($form, $data); | ||
186 | |||
187 | $this->assertSame(302, $client->getResponse()->getStatusCode()); | ||
188 | |||
189 | $content = $client->getContainer() | ||
190 | ->get('doctrine.orm.entity_manager') | ||
191 | ->getRepository('WallabagCoreBundle:Entry') | ||
192 | ->findByUrlAndUserId($url, $this->getLoggedInUserId()); | ||
193 | |||
194 | $authors = $content->getPublishedBy(); | ||
195 | $this->assertSame('2017-04-05 19:26:13', $content->getPublishedAt()->format('Y-m-d H:i:s')); | ||
196 | $this->assertSame('fr', $content->getLanguage()); | ||
197 | $this->assertSame('Raphaël Balenieri, correspondant à Pékin', $authors[0]); | ||
198 | $this->assertSame('Frédéric Autran, correspondant à New York', $authors[1]); | ||
141 | } | 199 | } |
142 | 200 | ||
143 | public function testPostNewOkUrlExist() | 201 | public function testPostNewOkUrlExist() |
144 | { | 202 | { |
145 | $this->logInAs('admin'); | 203 | $this->logInAs('admin'); |
204 | |||
205 | $entry = new Entry($this->getLoggedInUser()); | ||
206 | $entry->setUrl($this->url); | ||
207 | $this->getEntityManager()->persist($entry); | ||
208 | $this->getEntityManager()->flush(); | ||
209 | |||
146 | $client = $this->getClient(); | 210 | $client = $this->getClient(); |
147 | 211 | ||
148 | $crawler = $client->request('GET', '/new'); | 212 | $crawler = $client->request('GET', '/new'); |
149 | 213 | ||
150 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 214 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
151 | 215 | ||
152 | $form = $crawler->filter('form[name=entry]')->form(); | 216 | $form = $crawler->filter('form[name=entry]')->form(); |
153 | 217 | ||
@@ -157,7 +221,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
157 | 221 | ||
158 | $client->submit($form, $data); | 222 | $client->submit($form, $data); |
159 | 223 | ||
160 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 224 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
161 | $this->assertContains('/view/', $client->getResponse()->getTargetUrl()); | 225 | $this->assertContains('/view/', $client->getResponse()->getTargetUrl()); |
162 | } | 226 | } |
163 | 227 | ||
@@ -170,7 +234,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
170 | 234 | ||
171 | $crawler = $client->request('GET', '/new'); | 235 | $crawler = $client->request('GET', '/new'); |
172 | 236 | ||
173 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 237 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
174 | 238 | ||
175 | $form = $crawler->filter('form[name=entry]')->form(); | 239 | $form = $crawler->filter('form[name=entry]')->form(); |
176 | 240 | ||
@@ -182,7 +246,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
182 | 246 | ||
183 | $crawler = $client->request('GET', '/new'); | 247 | $crawler = $client->request('GET', '/new'); |
184 | 248 | ||
185 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 249 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
186 | 250 | ||
187 | $form = $crawler->filter('form[name=entry]')->form(); | 251 | $form = $crawler->filter('form[name=entry]')->form(); |
188 | 252 | ||
@@ -192,17 +256,8 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
192 | 256 | ||
193 | $client->submit($form, $data); | 257 | $client->submit($form, $data); |
194 | 258 | ||
195 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 259 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
196 | $this->assertContains('/view/', $client->getResponse()->getTargetUrl()); | 260 | $this->assertContains('/view/', $client->getResponse()->getTargetUrl()); |
197 | |||
198 | $em = $client->getContainer() | ||
199 | ->get('doctrine.orm.entity_manager'); | ||
200 | $entry = $em | ||
201 | ->getRepository('WallabagCoreBundle:Entry') | ||
202 | ->findOneByUrl(urldecode($url)); | ||
203 | |||
204 | $em->remove($entry); | ||
205 | $em->flush(); | ||
206 | } | 261 | } |
207 | 262 | ||
208 | /** | 263 | /** |
@@ -215,7 +270,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
215 | 270 | ||
216 | $crawler = $client->request('GET', '/new'); | 271 | $crawler = $client->request('GET', '/new'); |
217 | 272 | ||
218 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 273 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
219 | 274 | ||
220 | $form = $crawler->filter('form[name=entry]')->form(); | 275 | $form = $crawler->filter('form[name=entry]')->form(); |
221 | 276 | ||
@@ -225,7 +280,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
225 | 280 | ||
226 | $client->submit($form, $data); | 281 | $client->submit($form, $data); |
227 | 282 | ||
228 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 283 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
229 | $this->assertContains('/', $client->getResponse()->getTargetUrl()); | 284 | $this->assertContains('/', $client->getResponse()->getTargetUrl()); |
230 | 285 | ||
231 | $em = $client->getContainer() | 286 | $em = $client->getContainer() |
@@ -235,8 +290,9 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
235 | ->findOneByUrl($url); | 290 | ->findOneByUrl($url); |
236 | $tags = $entry->getTags(); | 291 | $tags = $entry->getTags(); |
237 | 292 | ||
238 | $this->assertCount(1, $tags); | 293 | $this->assertCount(2, $tags); |
239 | $this->assertEquals('wallabag', $tags[0]->getLabel()); | 294 | $this->assertContains('wallabag', $tags); |
295 | $this->assertSame('en', $entry->getLanguage()); | ||
240 | 296 | ||
241 | $em->remove($entry); | 297 | $em->remove($entry); |
242 | $em->flush(); | 298 | $em->flush(); |
@@ -245,7 +301,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
245 | // related https://github.com/wallabag/wallabag/issues/2121 | 301 | // related https://github.com/wallabag/wallabag/issues/2121 |
246 | $crawler = $client->request('GET', '/new'); | 302 | $crawler = $client->request('GET', '/new'); |
247 | 303 | ||
248 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 304 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
249 | 305 | ||
250 | $form = $crawler->filter('form[name=entry]')->form(); | 306 | $form = $crawler->filter('form[name=entry]')->form(); |
251 | 307 | ||
@@ -255,7 +311,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
255 | 311 | ||
256 | $client->submit($form, $data); | 312 | $client->submit($form, $data); |
257 | 313 | ||
258 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 314 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
259 | $this->assertContains('/', $client->getResponse()->getTargetUrl()); | 315 | $this->assertContains('/', $client->getResponse()->getTargetUrl()); |
260 | 316 | ||
261 | $entry = $em | 317 | $entry = $em |
@@ -264,8 +320,8 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
264 | 320 | ||
265 | $tags = $entry->getTags(); | 321 | $tags = $entry->getTags(); |
266 | 322 | ||
267 | $this->assertCount(1, $tags); | 323 | $this->assertCount(2, $tags); |
268 | $this->assertEquals('wallabag', $tags[0]->getLabel()); | 324 | $this->assertContains('wallabag', $tags); |
269 | 325 | ||
270 | $em->remove($entry); | 326 | $em->remove($entry); |
271 | $em->flush(); | 327 | $em->flush(); |
@@ -278,7 +334,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
278 | 334 | ||
279 | $client->request('GET', '/archive/list'); | 335 | $client->request('GET', '/archive/list'); |
280 | 336 | ||
281 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 337 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
282 | } | 338 | } |
283 | 339 | ||
284 | public function testUntagged() | 340 | public function testUntagged() |
@@ -288,7 +344,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
288 | 344 | ||
289 | $client->request('GET', '/untagged/list'); | 345 | $client->request('GET', '/untagged/list'); |
290 | 346 | ||
291 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 347 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
292 | } | 348 | } |
293 | 349 | ||
294 | public function testStarred() | 350 | public function testStarred() |
@@ -298,7 +354,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
298 | 354 | ||
299 | $client->request('GET', '/starred/list'); | 355 | $client->request('GET', '/starred/list'); |
300 | 356 | ||
301 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 357 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
302 | } | 358 | } |
303 | 359 | ||
304 | public function testRangeException() | 360 | public function testRangeException() |
@@ -308,33 +364,30 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
308 | 364 | ||
309 | $client->request('GET', '/all/list/900'); | 365 | $client->request('GET', '/all/list/900'); |
310 | 366 | ||
311 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 367 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
312 | $this->assertEquals('/all/list', $client->getResponse()->getTargetUrl()); | 368 | $this->assertSame('/all/list', $client->getResponse()->getTargetUrl()); |
313 | } | 369 | } |
314 | 370 | ||
315 | /** | ||
316 | * @depends testPostNewOk | ||
317 | */ | ||
318 | public function testView() | 371 | public function testView() |
319 | { | 372 | { |
320 | $this->logInAs('admin'); | 373 | $this->logInAs('admin'); |
321 | $client = $this->getClient(); | 374 | $client = $this->getClient(); |
322 | 375 | ||
323 | $content = $client->getContainer() | 376 | $entry = new Entry($this->getLoggedInUser()); |
324 | ->get('doctrine.orm.entity_manager') | 377 | $entry->setUrl('http://example.com/foo'); |
325 | ->getRepository('WallabagCoreBundle:Entry') | 378 | $entry->setTitle('title foo'); |
326 | ->findByUrlAndUserId($this->url, $this->getLoggedInUserId()); | 379 | $entry->setContent('foo bar baz'); |
380 | $this->getEntityManager()->persist($entry); | ||
381 | $this->getEntityManager()->flush(); | ||
327 | 382 | ||
328 | $crawler = $client->request('GET', '/view/'.$content->getId()); | 383 | $crawler = $client->request('GET', '/view/' . $entry->getId()); |
329 | 384 | ||
330 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 385 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
331 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); | 386 | $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); |
332 | $this->assertContains($content->getTitle(), $body[0]); | 387 | $this->assertContains($entry->getTitle(), $body[0]); |
333 | } | 388 | } |
334 | 389 | ||
335 | /** | 390 | /** |
336 | * @depends testPostNewOk | ||
337 | * | ||
338 | * This test will require an internet connection. | 391 | * This test will require an internet connection. |
339 | */ | 392 | */ |
340 | public function testReload() | 393 | public function testReload() |
@@ -342,65 +395,47 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
342 | $this->logInAs('admin'); | 395 | $this->logInAs('admin'); |
343 | $client = $this->getClient(); | 396 | $client = $this->getClient(); |
344 | 397 | ||
345 | $em = $client->getContainer() | 398 | $entry = new Entry($this->getLoggedInUser()); |
346 | ->get('doctrine.orm.entity_manager'); | 399 | $entry->setUrl($this->url); |
347 | 400 | $entry->setTitle('title foo'); | |
348 | $content = $em | 401 | $entry->setContent(''); |
349 | ->getRepository('WallabagCoreBundle:Entry') | 402 | $this->getEntityManager()->persist($entry); |
350 | ->findByUrlAndUserId($this->url, $this->getLoggedInUserId()); | 403 | $this->getEntityManager()->flush(); |
351 | 404 | $this->getEntityManager()->clear(); | |
352 | // empty content | ||
353 | $content->setContent(''); | ||
354 | $em->persist($content); | ||
355 | $em->flush(); | ||
356 | 405 | ||
357 | $client->request('GET', '/reload/'.$content->getId()); | 406 | $client->request('GET', '/reload/' . $entry->getId()); |
358 | 407 | ||
359 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 408 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
360 | 409 | ||
361 | $content = $em | 410 | $entry = $this->getEntityManager() |
362 | ->getRepository('WallabagCoreBundle:Entry') | 411 | ->getRepository('WallabagCoreBundle:Entry') |
363 | ->find($content->getId()); | 412 | ->find($entry->getId()); |
364 | 413 | ||
365 | $this->assertNotEmpty($content->getContent()); | 414 | $this->assertNotEmpty($entry->getContent()); |
366 | } | 415 | } |
367 | 416 | ||
368 | /** | ||
369 | * @depends testPostNewOk | ||
370 | */ | ||
371 | public function testReloadWithFetchingFailed() | 417 | public function testReloadWithFetchingFailed() |
372 | { | 418 | { |
373 | $this->logInAs('admin'); | 419 | $this->logInAs('admin'); |
374 | $client = $this->getClient(); | 420 | $client = $this->getClient(); |
375 | 421 | ||
376 | $em = $client->getContainer() | 422 | $entry = new Entry($this->getLoggedInUser()); |
377 | ->get('doctrine.orm.entity_manager'); | 423 | $entry->setUrl('http://0.0.0.0/failed.html'); |
424 | $this->getEntityManager()->persist($entry); | ||
425 | $this->getEntityManager()->flush(); | ||
378 | 426 | ||
379 | $content = $em | 427 | $client->request('GET', '/reload/' . $entry->getId()); |
380 | ->getRepository('WallabagCoreBundle:Entry') | ||
381 | ->findByUrlAndUserId($this->url, $this->getLoggedInUserId()); | ||
382 | 428 | ||
383 | // put a known failed url | 429 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
384 | $content->setUrl('http://0.0.0.0/failed.html'); | ||
385 | $em->persist($content); | ||
386 | $em->flush(); | ||
387 | |||
388 | $client->request('GET', '/reload/'.$content->getId()); | ||
389 | |||
390 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | ||
391 | 430 | ||
392 | // force EntityManager to clear previous entity | 431 | // force EntityManager to clear previous entity |
393 | // otherwise, retrieve the same entity will retrieve change from the previous request :0 | 432 | // otherwise, retrieve the same entity will retrieve change from the previous request :0 |
394 | $em->clear(); | 433 | $this->getEntityManager()->clear(); |
395 | $newContent = $em | 434 | $newContent = $this->getEntityManager() |
396 | ->getRepository('WallabagCoreBundle:Entry') | 435 | ->getRepository('WallabagCoreBundle:Entry') |
397 | ->find($content->getId()); | 436 | ->find($entry->getId()); |
398 | 437 | ||
399 | $newContent->setUrl($this->url); | 438 | $this->assertNotSame($client->getContainer()->getParameter('wallabag_core.fetching_error_message'), $newContent->getContent()); |
400 | $em->persist($newContent); | ||
401 | $em->flush(); | ||
402 | |||
403 | $this->assertNotEquals($client->getContainer()->getParameter('wallabag_core.fetching_error_message'), $newContent->getContent()); | ||
404 | } | 439 | } |
405 | 440 | ||
406 | public function testEdit() | 441 | public function testEdit() |
@@ -408,14 +443,14 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
408 | $this->logInAs('admin'); | 443 | $this->logInAs('admin'); |
409 | $client = $this->getClient(); | 444 | $client = $this->getClient(); |
410 | 445 | ||
411 | $content = $client->getContainer() | 446 | $entry = new Entry($this->getLoggedInUser()); |
412 | ->get('doctrine.orm.entity_manager') | 447 | $entry->setUrl($this->url); |
413 | ->getRepository('WallabagCoreBundle:Entry') | 448 | $this->getEntityManager()->persist($entry); |
414 | ->findByUrlAndUserId($this->url, $this->getLoggedInUserId()); | 449 | $this->getEntityManager()->flush(); |
415 | 450 | ||
416 | $crawler = $client->request('GET', '/edit/'.$content->getId()); | 451 | $crawler = $client->request('GET', '/edit/' . $entry->getId()); |
417 | 452 | ||
418 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 453 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
419 | 454 | ||
420 | $this->assertCount(1, $crawler->filter('input[id=entry_title]')); | 455 | $this->assertCount(1, $crawler->filter('input[id=entry_title]')); |
421 | $this->assertCount(1, $crawler->filter('button[id=entry_save]')); | 456 | $this->assertCount(1, $crawler->filter('button[id=entry_save]')); |
@@ -426,14 +461,14 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
426 | $this->logInAs('admin'); | 461 | $this->logInAs('admin'); |
427 | $client = $this->getClient(); | 462 | $client = $this->getClient(); |
428 | 463 | ||
429 | $content = $client->getContainer() | 464 | $entry = new Entry($this->getLoggedInUser()); |
430 | ->get('doctrine.orm.entity_manager') | 465 | $entry->setUrl($this->url); |
431 | ->getRepository('WallabagCoreBundle:Entry') | 466 | $this->getEntityManager()->persist($entry); |
432 | ->findByUrlAndUserId($this->url, $this->getLoggedInUserId()); | 467 | $this->getEntityManager()->flush(); |
433 | 468 | ||
434 | $crawler = $client->request('GET', '/edit/'.$content->getId()); | 469 | $crawler = $client->request('GET', '/edit/' . $entry->getId()); |
435 | 470 | ||
436 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 471 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
437 | 472 | ||
438 | $form = $crawler->filter('button[type=submit]')->form(); | 473 | $form = $crawler->filter('button[type=submit]')->form(); |
439 | 474 | ||
@@ -443,7 +478,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
443 | 478 | ||
444 | $client->submit($form, $data); | 479 | $client->submit($form, $data); |
445 | 480 | ||
446 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 481 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
447 | 482 | ||
448 | $crawler = $client->followRedirect(); | 483 | $crawler = $client->followRedirect(); |
449 | 484 | ||
@@ -456,21 +491,22 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
456 | $this->logInAs('admin'); | 491 | $this->logInAs('admin'); |
457 | $client = $this->getClient(); | 492 | $client = $this->getClient(); |
458 | 493 | ||
459 | $content = $client->getContainer() | 494 | $entry = new Entry($this->getLoggedInUser()); |
460 | ->get('doctrine.orm.entity_manager') | 495 | $entry->setUrl($this->url); |
461 | ->getRepository('WallabagCoreBundle:Entry') | 496 | $this->getEntityManager()->persist($entry); |
462 | ->findByUrlAndUserId($this->url, $this->getLoggedInUserId()); | 497 | $this->getEntityManager()->flush(); |
498 | $this->getEntityManager()->clear(); | ||
463 | 499 | ||
464 | $client->request('GET', '/archive/'.$content->getId()); | 500 | $client->request('GET', '/archive/' . $entry->getId()); |
465 | 501 | ||
466 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 502 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
467 | 503 | ||
468 | $res = $client->getContainer() | 504 | $res = $client->getContainer() |
469 | ->get('doctrine.orm.entity_manager') | 505 | ->get('doctrine.orm.entity_manager') |
470 | ->getRepository('WallabagCoreBundle:Entry') | 506 | ->getRepository('WallabagCoreBundle:Entry') |
471 | ->find($content->getId()); | 507 | ->find($entry->getId()); |
472 | 508 | ||
473 | $this->assertEquals($res->isArchived(), true); | 509 | $this->assertSame(1, $res->isArchived()); |
474 | } | 510 | } |
475 | 511 | ||
476 | public function testToggleStar() | 512 | public function testToggleStar() |
@@ -478,21 +514,22 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
478 | $this->logInAs('admin'); | 514 | $this->logInAs('admin'); |
479 | $client = $this->getClient(); | 515 | $client = $this->getClient(); |
480 | 516 | ||
481 | $content = $client->getContainer() | 517 | $entry = new Entry($this->getLoggedInUser()); |
482 | ->get('doctrine.orm.entity_manager') | 518 | $entry->setUrl($this->url); |
483 | ->getRepository('WallabagCoreBundle:Entry') | 519 | $this->getEntityManager()->persist($entry); |
484 | ->findByUrlAndUserId($this->url, $this->getLoggedInUserId()); | 520 | $this->getEntityManager()->flush(); |
521 | $this->getEntityManager()->clear(); | ||
485 | 522 | ||
486 | $client->request('GET', '/star/'.$content->getId()); | 523 | $client->request('GET', '/star/' . $entry->getId()); |
487 | 524 | ||
488 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 525 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
489 | 526 | ||
490 | $res = $client->getContainer() | 527 | $res = $client->getContainer() |
491 | ->get('doctrine.orm.entity_manager') | 528 | ->get('doctrine.orm.entity_manager') |
492 | ->getRepository('WallabagCoreBundle:Entry') | 529 | ->getRepository('WallabagCoreBundle:Entry') |
493 | ->findOneById($content->getId()); | 530 | ->findOneById($entry->getId()); |
494 | 531 | ||
495 | $this->assertEquals($res->isStarred(), true); | 532 | $this->assertSame(1, $res->isStarred()); |
496 | } | 533 | } |
497 | 534 | ||
498 | public function testDelete() | 535 | public function testDelete() |
@@ -500,18 +537,18 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
500 | $this->logInAs('admin'); | 537 | $this->logInAs('admin'); |
501 | $client = $this->getClient(); | 538 | $client = $this->getClient(); |
502 | 539 | ||
503 | $content = $client->getContainer() | 540 | $entry = new Entry($this->getLoggedInUser()); |
504 | ->get('doctrine.orm.entity_manager') | 541 | $entry->setUrl($this->url); |
505 | ->getRepository('WallabagCoreBundle:Entry') | 542 | $this->getEntityManager()->persist($entry); |
506 | ->findByUrlAndUserId($this->url, $this->getLoggedInUserId()); | 543 | $this->getEntityManager()->flush(); |
507 | 544 | ||
508 | $client->request('GET', '/delete/'.$content->getId()); | 545 | $client->request('GET', '/delete/' . $entry->getId()); |
509 | 546 | ||
510 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 547 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
511 | 548 | ||
512 | $client->request('GET', '/delete/'.$content->getId()); | 549 | $client->request('GET', '/delete/' . $entry->getId()); |
513 | 550 | ||
514 | $this->assertEquals(404, $client->getResponse()->getStatusCode()); | 551 | $this->assertSame(404, $client->getResponse()->getStatusCode()); |
515 | } | 552 | } |
516 | 553 | ||
517 | /** | 554 | /** |
@@ -547,14 +584,14 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
547 | $em->persist($content); | 584 | $em->persist($content); |
548 | $em->flush(); | 585 | $em->flush(); |
549 | 586 | ||
550 | $client->request('GET', '/view/'.$content->getId()); | 587 | $client->request('GET', '/view/' . $content->getId()); |
551 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 588 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
552 | 589 | ||
553 | $client->request('GET', '/delete/'.$content->getId()); | 590 | $client->request('GET', '/delete/' . $content->getId()); |
554 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 591 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
555 | 592 | ||
556 | $client->followRedirect(); | 593 | $client->followRedirect(); |
557 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 594 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
558 | } | 595 | } |
559 | 596 | ||
560 | public function testViewOtherUserEntry() | 597 | public function testViewOtherUserEntry() |
@@ -567,15 +604,21 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
567 | ->getRepository('WallabagCoreBundle:Entry') | 604 | ->getRepository('WallabagCoreBundle:Entry') |
568 | ->findOneByUsernameAndNotArchived('bob'); | 605 | ->findOneByUsernameAndNotArchived('bob'); |
569 | 606 | ||
570 | $client->request('GET', '/view/'.$content->getId()); | 607 | $client->request('GET', '/view/' . $content->getId()); |
571 | 608 | ||
572 | $this->assertEquals(403, $client->getResponse()->getStatusCode()); | 609 | $this->assertSame(403, $client->getResponse()->getStatusCode()); |
573 | } | 610 | } |
574 | 611 | ||
575 | public function testFilterOnReadingTime() | 612 | public function testFilterOnReadingTime() |
576 | { | 613 | { |
577 | $this->logInAs('admin'); | 614 | $this->logInAs('admin'); |
615 | $this->useTheme('baggy'); | ||
578 | $client = $this->getClient(); | 616 | $client = $this->getClient(); |
617 | $entry = new Entry($this->getLoggedInUser()); | ||
618 | $entry->setUrl($this->url); | ||
619 | $entry->setReadingTime(22); | ||
620 | $this->getEntityManager()->persist($entry); | ||
621 | $this->getEntityManager()->flush(); | ||
579 | 622 | ||
580 | $crawler = $client->request('GET', '/unread/list'); | 623 | $crawler = $client->request('GET', '/unread/list'); |
581 | 624 | ||
@@ -614,9 +657,20 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
614 | public function testFilterOnReadingTimeOnlyUpper() | 657 | public function testFilterOnReadingTimeOnlyUpper() |
615 | { | 658 | { |
616 | $this->logInAs('admin'); | 659 | $this->logInAs('admin'); |
660 | $this->useTheme('baggy'); | ||
617 | $client = $this->getClient(); | 661 | $client = $this->getClient(); |
618 | 662 | ||
619 | $crawler = $client->request('GET', '/unread/list'); | 663 | $crawler = $client->request('GET', '/all/list'); |
664 | $this->assertCount(5, $crawler->filter('div[class=entry]')); | ||
665 | |||
666 | $entry = new Entry($this->getLoggedInUser()); | ||
667 | $entry->setUrl($this->url); | ||
668 | $entry->setReadingTime(23); | ||
669 | $this->getEntityManager()->persist($entry); | ||
670 | $this->getEntityManager()->flush(); | ||
671 | |||
672 | $crawler = $client->request('GET', '/all/list'); | ||
673 | $this->assertCount(6, $crawler->filter('div[class=entry]')); | ||
620 | 674 | ||
621 | $form = $crawler->filter('button[id=submit-filter]')->form(); | 675 | $form = $crawler->filter('button[id=submit-filter]')->form(); |
622 | 676 | ||
@@ -626,12 +680,13 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
626 | 680 | ||
627 | $crawler = $client->submit($form, $data); | 681 | $crawler = $client->submit($form, $data); |
628 | 682 | ||
629 | $this->assertCount(2, $crawler->filter('div[class=entry]')); | 683 | $this->assertCount(5, $crawler->filter('div[class=entry]')); |
630 | } | 684 | } |
631 | 685 | ||
632 | public function testFilterOnReadingTimeOnlyLower() | 686 | public function testFilterOnReadingTimeOnlyLower() |
633 | { | 687 | { |
634 | $this->logInAs('admin'); | 688 | $this->logInAs('admin'); |
689 | $this->useTheme('baggy'); | ||
635 | $client = $this->getClient(); | 690 | $client = $this->getClient(); |
636 | 691 | ||
637 | $crawler = $client->request('GET', '/unread/list'); | 692 | $crawler = $client->request('GET', '/unread/list'); |
@@ -644,12 +699,22 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
644 | 699 | ||
645 | $crawler = $client->submit($form, $data); | 700 | $crawler = $client->submit($form, $data); |
646 | 701 | ||
647 | $this->assertCount(4, $crawler->filter('div[class=entry]')); | 702 | $this->assertCount(0, $crawler->filter('div[class=entry]')); |
703 | |||
704 | $entry = new Entry($this->getLoggedInUser()); | ||
705 | $entry->setUrl($this->url); | ||
706 | $entry->setReadingTime(23); | ||
707 | $this->getEntityManager()->persist($entry); | ||
708 | $this->getEntityManager()->flush(); | ||
709 | |||
710 | $crawler = $client->submit($form, $data); | ||
711 | $this->assertCount(1, $crawler->filter('div[class=entry]')); | ||
648 | } | 712 | } |
649 | 713 | ||
650 | public function testFilterOnUnreadStatus() | 714 | public function testFilterOnUnreadStatus() |
651 | { | 715 | { |
652 | $this->logInAs('admin'); | 716 | $this->logInAs('admin'); |
717 | $this->useTheme('baggy'); | ||
653 | $client = $this->getClient(); | 718 | $client = $this->getClient(); |
654 | 719 | ||
655 | $crawler = $client->request('GET', '/all/list'); | 720 | $crawler = $client->request('GET', '/all/list'); |
@@ -663,11 +728,22 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
663 | $crawler = $client->submit($form, $data); | 728 | $crawler = $client->submit($form, $data); |
664 | 729 | ||
665 | $this->assertCount(4, $crawler->filter('div[class=entry]')); | 730 | $this->assertCount(4, $crawler->filter('div[class=entry]')); |
731 | |||
732 | $entry = new Entry($this->getLoggedInUser()); | ||
733 | $entry->setUrl($this->url); | ||
734 | $entry->setArchived(false); | ||
735 | $this->getEntityManager()->persist($entry); | ||
736 | $this->getEntityManager()->flush(); | ||
737 | |||
738 | $crawler = $client->submit($form, $data); | ||
739 | |||
740 | $this->assertCount(5, $crawler->filter('div[class=entry]')); | ||
666 | } | 741 | } |
667 | 742 | ||
668 | public function testFilterOnCreationDate() | 743 | public function testFilterOnCreationDate() |
669 | { | 744 | { |
670 | $this->logInAs('admin'); | 745 | $this->logInAs('admin'); |
746 | $this->useTheme('baggy'); | ||
671 | $client = $this->getClient(); | 747 | $client = $this->getClient(); |
672 | 748 | ||
673 | $crawler = $client->request('GET', '/unread/list'); | 749 | $crawler = $client->request('GET', '/unread/list'); |
@@ -718,7 +794,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
718 | 794 | ||
719 | $parameters = '?entry_filter%5BreadingTime%5D%5Bleft_number%5D=&entry_filter%5BreadingTime%5D%5Bright_number%5D='; | 795 | $parameters = '?entry_filter%5BreadingTime%5D%5Bleft_number%5D=&entry_filter%5BreadingTime%5D%5Bright_number%5D='; |
720 | 796 | ||
721 | $client->request('GET', 'unread/list'.$parameters); | 797 | $client->request('GET', 'unread/list' . $parameters); |
722 | 798 | ||
723 | $this->assertContains($parameters, $client->getResponse()->getContent()); | 799 | $this->assertContains($parameters, $client->getResponse()->getContent()); |
724 | 800 | ||
@@ -734,6 +810,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
734 | public function testFilterOnDomainName() | 810 | public function testFilterOnDomainName() |
735 | { | 811 | { |
736 | $this->logInAs('admin'); | 812 | $this->logInAs('admin'); |
813 | $this->useTheme('baggy'); | ||
737 | $client = $this->getClient(); | 814 | $client = $this->getClient(); |
738 | 815 | ||
739 | $crawler = $client->request('GET', '/unread/list'); | 816 | $crawler = $client->request('GET', '/unread/list'); |
@@ -766,6 +843,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
766 | public function testFilterOnStatus() | 843 | public function testFilterOnStatus() |
767 | { | 844 | { |
768 | $this->logInAs('admin'); | 845 | $this->logInAs('admin'); |
846 | $this->useTheme('baggy'); | ||
769 | $client = $this->getClient(); | 847 | $client = $this->getClient(); |
770 | 848 | ||
771 | $crawler = $client->request('GET', '/unread/list'); | 849 | $crawler = $client->request('GET', '/unread/list'); |
@@ -784,9 +862,24 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
784 | $this->assertCount(1, $crawler->filter('div[class=entry]')); | 862 | $this->assertCount(1, $crawler->filter('div[class=entry]')); |
785 | } | 863 | } |
786 | 864 | ||
865 | public function testFilterOnIsPublic() | ||
866 | { | ||
867 | $this->logInAs('admin'); | ||
868 | $this->useTheme('baggy'); | ||
869 | $client = $this->getClient(); | ||
870 | |||
871 | $crawler = $client->request('GET', '/unread/list'); | ||
872 | $form = $crawler->filter('button[id=submit-filter]')->form(); | ||
873 | $form['entry_filter[isPublic]']->tick(); | ||
874 | |||
875 | $crawler = $client->submit($form); | ||
876 | $this->assertCount(0, $crawler->filter('div[class=entry]')); | ||
877 | } | ||
878 | |||
787 | public function testPreviewPictureFilter() | 879 | public function testPreviewPictureFilter() |
788 | { | 880 | { |
789 | $this->logInAs('admin'); | 881 | $this->logInAs('admin'); |
882 | $this->useTheme('baggy'); | ||
790 | $client = $this->getClient(); | 883 | $client = $this->getClient(); |
791 | 884 | ||
792 | $crawler = $client->request('GET', '/unread/list'); | 885 | $crawler = $client->request('GET', '/unread/list'); |
@@ -800,8 +893,15 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
800 | public function testFilterOnLanguage() | 893 | public function testFilterOnLanguage() |
801 | { | 894 | { |
802 | $this->logInAs('admin'); | 895 | $this->logInAs('admin'); |
896 | $this->useTheme('baggy'); | ||
803 | $client = $this->getClient(); | 897 | $client = $this->getClient(); |
804 | 898 | ||
899 | $entry = new Entry($this->getLoggedInUser()); | ||
900 | $entry->setUrl($this->url); | ||
901 | $entry->setLanguage('fr'); | ||
902 | $this->getEntityManager()->persist($entry); | ||
903 | $this->getEntityManager()->flush(); | ||
904 | |||
805 | $crawler = $client->request('GET', '/unread/list'); | 905 | $crawler = $client->request('GET', '/unread/list'); |
806 | $form = $crawler->filter('button[id=submit-filter]')->form(); | 906 | $form = $crawler->filter('button[id=submit-filter]')->form(); |
807 | $data = [ | 907 | $data = [ |
@@ -809,7 +909,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
809 | ]; | 909 | ]; |
810 | 910 | ||
811 | $crawler = $client->submit($form, $data); | 911 | $crawler = $client->submit($form, $data); |
812 | $this->assertCount(2, $crawler->filter('div[class=entry]')); | 912 | $this->assertCount(3, $crawler->filter('div[class=entry]')); |
813 | 913 | ||
814 | $form = $crawler->filter('button[id=submit-filter]')->form(); | 914 | $form = $crawler->filter('button[id=submit-filter]')->form(); |
815 | $data = [ | 915 | $data = [ |
@@ -825,22 +925,26 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
825 | $this->logInAs('admin'); | 925 | $this->logInAs('admin'); |
826 | $client = $this->getClient(); | 926 | $client = $this->getClient(); |
827 | 927 | ||
828 | $content = $client->getContainer() | 928 | // sharing is enabled |
829 | ->get('doctrine.orm.entity_manager') | 929 | $client->getContainer()->get('craue_config')->set('share_public', 1); |
830 | ->getRepository('WallabagCoreBundle:Entry') | 930 | |
831 | ->findOneByUser($this->getLoggedInUserId()); | 931 | $content = new Entry($this->getLoggedInUser()); |
932 | $content->setUrl($this->url); | ||
933 | $this->getEntityManager()->persist($content); | ||
934 | $this->getEntityManager()->flush(); | ||
935 | $this->getEntityManager()->clear(); | ||
832 | 936 | ||
833 | // no uid | 937 | // no uid |
834 | $client->request('GET', '/share/'.$content->getUid()); | 938 | $client->request('GET', '/share/' . $content->getUid()); |
835 | $this->assertEquals(404, $client->getResponse()->getStatusCode()); | 939 | $this->assertSame(404, $client->getResponse()->getStatusCode()); |
836 | 940 | ||
837 | // generating the uid | 941 | // generating the uid |
838 | $client->request('GET', '/share/'.$content->getId()); | 942 | $client->request('GET', '/share/' . $content->getId()); |
839 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 943 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
840 | 944 | ||
841 | // follow link with uid | 945 | // follow link with uid |
842 | $crawler = $client->followRedirect(); | 946 | $crawler = $client->followRedirect(); |
843 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 947 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
844 | $this->assertContains('max-age=25200', $client->getResponse()->headers->get('cache-control')); | 948 | $this->assertContains('max-age=25200', $client->getResponse()->headers->get('cache-control')); |
845 | $this->assertContains('public', $client->getResponse()->headers->get('cache-control')); | 949 | $this->assertContains('public', $client->getResponse()->headers->get('cache-control')); |
846 | $this->assertContains('s-maxage=25200', $client->getResponse()->headers->get('cache-control')); | 950 | $this->assertContains('s-maxage=25200', $client->getResponse()->headers->get('cache-control')); |
@@ -852,23 +956,24 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
852 | 956 | ||
853 | // sharing is now disabled | 957 | // sharing is now disabled |
854 | $client->getContainer()->get('craue_config')->set('share_public', 0); | 958 | $client->getContainer()->get('craue_config')->set('share_public', 0); |
855 | $client->request('GET', '/share/'.$content->getUid()); | 959 | $client->request('GET', '/share/' . $content->getUid()); |
856 | $this->assertEquals(404, $client->getResponse()->getStatusCode()); | 960 | $this->assertSame(404, $client->getResponse()->getStatusCode()); |
857 | 961 | ||
858 | $client->request('GET', '/view/'.$content->getId()); | 962 | $client->request('GET', '/view/' . $content->getId()); |
859 | $this->assertContains('no-cache', $client->getResponse()->headers->get('cache-control')); | 963 | $this->assertContains('no-cache', $client->getResponse()->headers->get('cache-control')); |
860 | 964 | ||
861 | // removing the share | 965 | // removing the share |
862 | $client->request('GET', '/share/delete/'.$content->getId()); | 966 | $client->request('GET', '/share/delete/' . $content->getId()); |
863 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 967 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
864 | 968 | ||
865 | // share is now disable | 969 | // share is now disable |
866 | $client->request('GET', '/share/'.$content->getUid()); | 970 | $client->request('GET', '/share/' . $content->getUid()); |
867 | $this->assertEquals(404, $client->getResponse()->getStatusCode()); | 971 | $this->assertSame(404, $client->getResponse()->getStatusCode()); |
868 | } | 972 | } |
869 | 973 | ||
870 | public function testNewEntryWithDownloadImagesEnabled() | 974 | public function testNewEntryWithDownloadImagesEnabled() |
871 | { | 975 | { |
976 | $this->downloadImagesEnabled = true; | ||
872 | $this->logInAs('admin'); | 977 | $this->logInAs('admin'); |
873 | $client = $this->getClient(); | 978 | $client = $this->getClient(); |
874 | 979 | ||
@@ -877,7 +982,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
877 | 982 | ||
878 | $crawler = $client->request('GET', '/new'); | 983 | $crawler = $client->request('GET', '/new'); |
879 | 984 | ||
880 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | 985 | $this->assertSame(200, $client->getResponse()->getStatusCode()); |
881 | 986 | ||
882 | $form = $crawler->filter('form[name=entry]')->form(); | 987 | $form = $crawler->filter('form[name=entry]')->form(); |
883 | 988 | ||
@@ -887,7 +992,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
887 | 992 | ||
888 | $client->submit($form, $data); | 993 | $client->submit($form, $data); |
889 | 994 | ||
890 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 995 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
891 | 996 | ||
892 | $em = $client->getContainer() | 997 | $em = $client->getContainer() |
893 | ->get('doctrine.orm.entity_manager'); | 998 | ->get('doctrine.orm.entity_manager'); |
@@ -897,9 +1002,10 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
897 | ->findByUrlAndUserId($url, $this->getLoggedInUserId()); | 1002 | ->findByUrlAndUserId($url, $this->getLoggedInUserId()); |
898 | 1003 | ||
899 | $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $entry); | 1004 | $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $entry); |
900 | $this->assertEquals($url, $entry->getUrl()); | 1005 | $this->assertSame($url, $entry->getUrl()); |
901 | $this->assertContains('Perpignan', $entry->getTitle()); | 1006 | $this->assertContains('Perpignan', $entry->getTitle()); |
902 | $this->assertContains('/d9bc0fcd.jpeg', $entry->getContent()); | 1007 | // instead of checking for the filename (which might change) check that the image is now local |
1008 | $this->assertContains($client->getContainer()->getParameter('domain_name') . '/assets/images/', $entry->getContent()); | ||
903 | 1009 | ||
904 | $client->getContainer()->get('craue_config')->set('download_images_enabled', 0); | 1010 | $client->getContainer()->get('craue_config')->set('download_images_enabled', 0); |
905 | } | 1011 | } |
@@ -909,20 +1015,35 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
909 | */ | 1015 | */ |
910 | public function testRemoveEntryWithDownloadImagesEnabled() | 1016 | public function testRemoveEntryWithDownloadImagesEnabled() |
911 | { | 1017 | { |
1018 | $this->downloadImagesEnabled = true; | ||
912 | $this->logInAs('admin'); | 1019 | $this->logInAs('admin'); |
913 | $client = $this->getClient(); | 1020 | $client = $this->getClient(); |
914 | 1021 | ||
915 | $url = 'http://www.20minutes.fr/montpellier/1952003-20161030-video-car-tombe-panne-rugbymen-perpignan-improvisent-melee-route'; | 1022 | $url = 'http://www.20minutes.fr/montpellier/1952003-20161030-video-car-tombe-panne-rugbymen-perpignan-improvisent-melee-route'; |
916 | $client->getContainer()->get('craue_config')->set('download_images_enabled', 1); | 1023 | $client->getContainer()->get('craue_config')->set('download_images_enabled', 1); |
917 | 1024 | ||
1025 | $crawler = $client->request('GET', '/new'); | ||
1026 | |||
1027 | $this->assertSame(200, $client->getResponse()->getStatusCode()); | ||
1028 | |||
1029 | $form = $crawler->filter('form[name=entry]')->form(); | ||
1030 | |||
1031 | $data = [ | ||
1032 | 'entry[url]' => $url, | ||
1033 | ]; | ||
1034 | |||
1035 | $client->submit($form, $data); | ||
1036 | |||
1037 | $this->assertSame(302, $client->getResponse()->getStatusCode()); | ||
1038 | |||
918 | $content = $client->getContainer() | 1039 | $content = $client->getContainer() |
919 | ->get('doctrine.orm.entity_manager') | 1040 | ->get('doctrine.orm.entity_manager') |
920 | ->getRepository('WallabagCoreBundle:Entry') | 1041 | ->getRepository('WallabagCoreBundle:Entry') |
921 | ->findByUrlAndUserId($url, $this->getLoggedInUserId()); | 1042 | ->findByUrlAndUserId($url, $this->getLoggedInUserId()); |
922 | 1043 | ||
923 | $client->request('GET', '/delete/'.$content->getId()); | 1044 | $client->request('GET', '/delete/' . $content->getId()); |
924 | 1045 | ||
925 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 1046 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
926 | 1047 | ||
927 | $client->getContainer()->get('craue_config')->set('download_images_enabled', 0); | 1048 | $client->getContainer()->get('craue_config')->set('download_images_enabled', 0); |
928 | } | 1049 | } |
@@ -932,31 +1053,22 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
932 | $this->logInAs('empty'); | 1053 | $this->logInAs('empty'); |
933 | $client = $this->getClient(); | 1054 | $client = $this->getClient(); |
934 | 1055 | ||
935 | $em = $client->getContainer()->get('doctrine.orm.entity_manager'); | ||
936 | $user = $em | ||
937 | ->getRepository('WallabagUserBundle:User') | ||
938 | ->find($this->getLoggedInUserId()); | ||
939 | |||
940 | if (!$user) { | ||
941 | $this->markTestSkipped('No user found in db.'); | ||
942 | } | ||
943 | |||
944 | // Redirect to homepage | 1056 | // Redirect to homepage |
945 | $config = $user->getConfig(); | 1057 | $config = $this->getLoggedInUser()->getConfig(); |
946 | $config->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE); | 1058 | $config->setActionMarkAsRead(Config::REDIRECT_TO_HOMEPAGE); |
947 | $em->persist($config); | 1059 | $this->getEntityManager()->persist($config); |
948 | $em->flush(); | ||
949 | 1060 | ||
950 | $content = $client->getContainer() | 1061 | $entry = new Entry($this->getLoggedInUser()); |
951 | ->get('doctrine.orm.entity_manager') | 1062 | $entry->setUrl($this->url); |
952 | ->getRepository('WallabagCoreBundle:Entry') | 1063 | $this->getEntityManager()->persist($entry); |
953 | ->findByUrlAndUserId($this->url, $this->getLoggedInUserId()); | 1064 | |
1065 | $this->getEntityManager()->flush(); | ||
954 | 1066 | ||
955 | $client->request('GET', '/view/'.$content->getId()); | 1067 | $client->request('GET', '/view/' . $entry->getId()); |
956 | $client->request('GET', '/archive/'.$content->getId()); | 1068 | $client->request('GET', '/archive/' . $entry->getId()); |
957 | 1069 | ||
958 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 1070 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
959 | $this->assertEquals('/', $client->getResponse()->headers->get('location')); | 1071 | $this->assertSame('/', $client->getResponse()->headers->get('location')); |
960 | } | 1072 | } |
961 | 1073 | ||
962 | public function testRedirectToCurrentPage() | 1074 | public function testRedirectToCurrentPage() |
@@ -964,46 +1076,36 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
964 | $this->logInAs('empty'); | 1076 | $this->logInAs('empty'); |
965 | $client = $this->getClient(); | 1077 | $client = $this->getClient(); |
966 | 1078 | ||
967 | $em = $client->getContainer()->get('doctrine.orm.entity_manager'); | ||
968 | $user = $em | ||
969 | ->getRepository('WallabagUserBundle:User') | ||
970 | ->find($this->getLoggedInUserId()); | ||
971 | |||
972 | if (!$user) { | ||
973 | $this->markTestSkipped('No user found in db.'); | ||
974 | } | ||
975 | |||
976 | // Redirect to current page | 1079 | // Redirect to current page |
977 | $config = $user->getConfig(); | 1080 | $config = $this->getLoggedInUser()->getConfig(); |
978 | $config->setActionMarkAsRead(Config::REDIRECT_TO_CURRENT_PAGE); | 1081 | $config->setActionMarkAsRead(Config::REDIRECT_TO_CURRENT_PAGE); |
979 | $em->persist($config); | 1082 | $this->getEntityManager()->persist($config); |
980 | $em->flush(); | ||
981 | 1083 | ||
982 | $content = $client->getContainer() | 1084 | $entry = new Entry($this->getLoggedInUser()); |
983 | ->get('doctrine.orm.entity_manager') | 1085 | $entry->setUrl($this->url); |
984 | ->getRepository('WallabagCoreBundle:Entry') | 1086 | $this->getEntityManager()->persist($entry); |
985 | ->findByUrlAndUserId($this->url, $this->getLoggedInUserId()); | 1087 | |
1088 | $this->getEntityManager()->flush(); | ||
986 | 1089 | ||
987 | $client->request('GET', '/view/'.$content->getId()); | 1090 | $client->request('GET', '/view/' . $entry->getId()); |
988 | $client->request('GET', '/archive/'.$content->getId()); | 1091 | $client->request('GET', '/archive/' . $entry->getId()); |
989 | 1092 | ||
990 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | 1093 | $this->assertSame(302, $client->getResponse()->getStatusCode()); |
991 | $this->assertContains('/view/'.$content->getId(), $client->getResponse()->headers->get('location')); | 1094 | $this->assertContains('/view/' . $entry->getId(), $client->getResponse()->headers->get('location')); |
992 | } | 1095 | } |
993 | 1096 | ||
994 | public function testFilterOnHttpStatus() | 1097 | public function testFilterOnHttpStatus() |
995 | { | 1098 | { |
996 | $this->logInAs('admin'); | 1099 | $this->logInAs('admin'); |
1100 | $this->useTheme('baggy'); | ||
997 | $client = $this->getClient(); | 1101 | $client = $this->getClient(); |
998 | 1102 | ||
999 | $crawler = $client->request('GET', '/new'); | 1103 | $entry = new Entry($this->getLoggedInUser()); |
1000 | $form = $crawler->filter('form[name=entry]')->form(); | 1104 | $entry->setUrl('http://www.lemonde.fr/incorrect-url/'); |
1105 | $entry->setHttpStatus(404); | ||
1106 | $this->getEntityManager()->persist($entry); | ||
1001 | 1107 | ||
1002 | $data = [ | 1108 | $this->getEntityManager()->flush(); |
1003 | 'entry[url]' => 'http://www.lemonde.fr/incorrect-url/', | ||
1004 | ]; | ||
1005 | |||
1006 | $client->submit($form, $data); | ||
1007 | 1109 | ||
1008 | $crawler = $client->request('GET', '/all/list'); | 1110 | $crawler = $client->request('GET', '/all/list'); |
1009 | $form = $crawler->filter('button[id=submit-filter]')->form(); | 1111 | $form = $crawler->filter('button[id=submit-filter]')->form(); |
@@ -1016,14 +1118,17 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
1016 | 1118 | ||
1017 | $this->assertCount(1, $crawler->filter('div[class=entry]')); | 1119 | $this->assertCount(1, $crawler->filter('div[class=entry]')); |
1018 | 1120 | ||
1019 | $crawler = $client->request('GET', '/new'); | 1121 | $entry = new Entry($this->getLoggedInUser()); |
1020 | $form = $crawler->filter('form[name=entry]')->form(); | 1122 | $entry->setUrl($this->url); |
1123 | $entry->setHttpStatus(200); | ||
1124 | $this->getEntityManager()->persist($entry); | ||
1021 | 1125 | ||
1022 | $data = [ | 1126 | $entry = new Entry($this->getLoggedInUser()); |
1023 | 'entry[url]' => 'http://www.nextinpact.com/news/101235-wallabag-alternative-libre-a-pocket-creuse-petit-a-petit-son-nid.htm', | 1127 | $entry->setUrl('http://www.nextinpact.com/news/101235-wallabag-alternative-libre-a-pocket-creuse-petit-a-petit-son-nid.htm'); |
1024 | ]; | 1128 | $entry->setHttpStatus(200); |
1129 | $this->getEntityManager()->persist($entry); | ||
1025 | 1130 | ||
1026 | $client->submit($form, $data); | 1131 | $this->getEntityManager()->flush(); |
1027 | 1132 | ||
1028 | $crawler = $client->request('GET', '/all/list'); | 1133 | $crawler = $client->request('GET', '/all/list'); |
1029 | $form = $crawler->filter('button[id=submit-filter]')->form(); | 1134 | $form = $crawler->filter('button[id=submit-filter]')->form(); |
@@ -1034,7 +1139,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
1034 | 1139 | ||
1035 | $crawler = $client->submit($form, $data); | 1140 | $crawler = $client->submit($form, $data); |
1036 | 1141 | ||
1037 | $this->assertCount(1, $crawler->filter('div[class=entry]')); | 1142 | $this->assertCount(2, $crawler->filter('div[class=entry]')); |
1038 | 1143 | ||
1039 | $crawler = $client->request('GET', '/all/list'); | 1144 | $crawler = $client->request('GET', '/all/list'); |
1040 | $form = $crawler->filter('button[id=submit-filter]')->form(); | 1145 | $form = $crawler->filter('button[id=submit-filter]')->form(); |
@@ -1045,14 +1150,21 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
1045 | 1150 | ||
1046 | $crawler = $client->submit($form, $data); | 1151 | $crawler = $client->submit($form, $data); |
1047 | 1152 | ||
1048 | $this->assertCount(7, $crawler->filter('div[class=entry]')); | 1153 | $this->assertCount(8, $crawler->filter('div[class=entry]')); |
1049 | } | 1154 | } |
1050 | 1155 | ||
1051 | public function testSearch() | 1156 | public function testSearch() |
1052 | { | 1157 | { |
1053 | $this->logInAs('admin'); | 1158 | $this->logInAs('admin'); |
1159 | $this->useTheme('baggy'); | ||
1054 | $client = $this->getClient(); | 1160 | $client = $this->getClient(); |
1055 | 1161 | ||
1162 | $entry = new Entry($this->getLoggedInUser()); | ||
1163 | $entry->setUrl($this->url); | ||
1164 | $entry->setTitle('test'); | ||
1165 | $this->getEntityManager()->persist($entry); | ||
1166 | $this->getEntityManager()->flush(); | ||
1167 | |||
1056 | // Search on unread list | 1168 | // Search on unread list |
1057 | $crawler = $client->request('GET', '/unread/list'); | 1169 | $crawler = $client->request('GET', '/unread/list'); |
1058 | 1170 | ||
@@ -1063,35 +1175,37 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
1063 | 1175 | ||
1064 | $crawler = $client->submit($form, $data); | 1176 | $crawler = $client->submit($form, $data); |
1065 | 1177 | ||
1066 | $this->assertCount(5, $crawler->filter('div[class=entry]')); | 1178 | $this->assertCount(4, $crawler->filter('div[class=entry]')); |
1067 | 1179 | ||
1068 | // Search on starred list | 1180 | // Search on starred list |
1069 | $crawler = $client->request('GET', '/starred/list'); | 1181 | $crawler = $client->request('GET', '/starred/list'); |
1070 | 1182 | ||
1183 | $entry = new Entry($this->getLoggedInUser()); | ||
1184 | $entry->setUrl('http://localhost/foo/bar'); | ||
1185 | $entry->setTitle('testeur'); | ||
1186 | $entry->setStarred(true); | ||
1187 | $this->getEntityManager()->persist($entry); | ||
1188 | $this->getEntityManager()->flush(); | ||
1189 | |||
1071 | $form = $crawler->filter('form[name=search]')->form(); | 1190 | $form = $crawler->filter('form[name=search]')->form(); |
1072 | $data = [ | 1191 | $data = [ |
1073 | 'search_entry[term]' => 'title', | 1192 | 'search_entry[term]' => 'testeur', |
1074 | ]; | 1193 | ]; |
1075 | 1194 | ||
1076 | $crawler = $client->submit($form, $data); | 1195 | $crawler = $client->submit($form, $data); |
1077 | 1196 | ||
1078 | $this->assertCount(1, $crawler->filter('div[class=entry]')); | 1197 | $this->assertCount(1, $crawler->filter('div[class=entry]')); |
1079 | 1198 | ||
1080 | // Added new article to test on archive list | ||
1081 | $crawler = $client->request('GET', '/new'); | ||
1082 | $form = $crawler->filter('form[name=entry]')->form(); | ||
1083 | $data = [ | ||
1084 | 'entry[url]' => $this->url, | ||
1085 | ]; | ||
1086 | $client->submit($form, $data); | ||
1087 | $content = $client->getContainer() | ||
1088 | ->get('doctrine.orm.entity_manager') | ||
1089 | ->getRepository('WallabagCoreBundle:Entry') | ||
1090 | ->findByUrlAndUserId($this->url, $this->getLoggedInUserId()); | ||
1091 | $client->request('GET', '/archive/'.$content->getId()); | ||
1092 | |||
1093 | $crawler = $client->request('GET', '/archive/list'); | 1199 | $crawler = $client->request('GET', '/archive/list'); |
1094 | 1200 | ||
1201 | // Added new article to test on archive list | ||
1202 | $entry = new Entry($this->getLoggedInUser()); | ||
1203 | $entry->setUrl('http://0.0.0.0/foo/baz/qux'); | ||
1204 | $entry->setTitle('Le manège'); | ||
1205 | $entry->setArchived(true); | ||
1206 | $this->getEntityManager()->persist($entry); | ||
1207 | $this->getEntityManager()->flush(); | ||
1208 | |||
1095 | $form = $crawler->filter('form[name=search]')->form(); | 1209 | $form = $crawler->filter('form[name=search]')->form(); |
1096 | $data = [ | 1210 | $data = [ |
1097 | 'search_entry[term]' => 'manège', | 1211 | 'search_entry[term]' => 'manège', |
@@ -1100,7 +1214,7 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
1100 | $crawler = $client->submit($form, $data); | 1214 | $crawler = $client->submit($form, $data); |
1101 | 1215 | ||
1102 | $this->assertCount(1, $crawler->filter('div[class=entry]')); | 1216 | $this->assertCount(1, $crawler->filter('div[class=entry]')); |
1103 | $client->request('GET', '/delete/'.$content->getId()); | 1217 | $client->request('GET', '/delete/' . $entry->getId()); |
1104 | 1218 | ||
1105 | // test on list of all articles | 1219 | // test on list of all articles |
1106 | $crawler = $client->request('GET', '/all/list'); | 1220 | $crawler = $client->request('GET', '/all/list'); |
@@ -1115,6 +1229,13 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
1115 | $this->assertCount(0, $crawler->filter('div[class=entry]')); | 1229 | $this->assertCount(0, $crawler->filter('div[class=entry]')); |
1116 | 1230 | ||
1117 | // test url search on list of all articles | 1231 | // test url search on list of all articles |
1232 | $entry = new Entry($this->getLoggedInUser()); | ||
1233 | $entry->setUrl('http://domain/qux'); | ||
1234 | $entry->setTitle('Le manège'); | ||
1235 | $entry->setArchived(true); | ||
1236 | $this->getEntityManager()->persist($entry); | ||
1237 | $this->getEntityManager()->flush(); | ||
1238 | |||
1118 | $crawler = $client->request('GET', '/all/list'); | 1239 | $crawler = $client->request('GET', '/all/list'); |
1119 | 1240 | ||
1120 | $form = $crawler->filter('form[name=search]')->form(); | 1241 | $form = $crawler->filter('form[name=search]')->form(); |
@@ -1138,4 +1259,134 @@ class EntryControllerTest extends WallabagCoreTestCase | |||
1138 | 1259 | ||
1139 | $this->assertCount(1, $crawler->filter('div[class=entry]')); | 1260 | $this->assertCount(1, $crawler->filter('div[class=entry]')); |
1140 | } | 1261 | } |
1262 | |||
1263 | public function dataForLanguage() | ||
1264 | { | ||
1265 | return [ | ||
1266 | 'ru' => [ | ||
1267 | 'https://www.pravda.ru/world/09-06-2017/1337283-qatar-0/', | ||
1268 | 'ru', | ||
1269 | ], | ||
1270 | 'fr-FR' => [ | ||
1271 | 'https://www.zataz.com/90-des-dossiers-medicaux-des-coreens-du-sud-vendus-a-des-entreprises-privees/', | ||
1272 | 'fr_FR', | ||
1273 | ], | ||
1274 | 'de' => [ | ||
1275 | 'http://www.bild.de/politik/ausland/theresa-may/wahlbeben-grossbritannien-analyse-52108924.bild.html', | ||
1276 | 'de', | ||
1277 | ], | ||
1278 | 'it' => [ | ||
1279 | 'http://www.ansa.it/sito/notizie/mondo/europa/2017/06/08/voto-gb-seggi-aperti-misure-sicurezza-rafforzate_0cb71f7f-e23b-4d5f-95ca-bc12296419f0.html', | ||
1280 | 'it', | ||
1281 | ], | ||
1282 | 'zh_CN' => [ | ||
1283 | 'http://www.hao123.com/shequ?__noscript__-=1', | ||
1284 | 'zh_CN', | ||
1285 | ], | ||
1286 | 'de_AT' => [ | ||
1287 | 'https://buy.garmin.com/de-AT/AT/catalog/product/compareResult.ep?compareProduct=112885&compareProduct=36728', | ||
1288 | 'de_AT', | ||
1289 | ], | ||
1290 | 'ru_RU' => [ | ||
1291 | 'http://netler.ru/ikt/windows-error-reporting.htm', | ||
1292 | 'ru_RU', | ||
1293 | ], | ||
1294 | 'pt_BR' => [ | ||
1295 | 'http://precodoscombustiveis.com.br/postos/cidade/4121/pr/maringa', | ||
1296 | 'pt_BR', | ||
1297 | ], | ||
1298 | 'fucked_list_of_languages' => [ | ||
1299 | 'http://geocatalog.webservice-energy.org/geonetwork/srv/eng/main.home', | ||
1300 | null, | ||
1301 | ], | ||
1302 | 'es-ES' => [ | ||
1303 | 'https://www.muylinux.com/2015/04/17/odf-reino-unido-microsoft-google/', | ||
1304 | 'es_ES', | ||
1305 | ], | ||
1306 | ]; | ||
1307 | } | ||
1308 | |||
1309 | /** | ||
1310 | * @dataProvider dataForLanguage | ||
1311 | */ | ||
1312 | public function testLanguageValidation($url, $expectedLanguage) | ||
1313 | { | ||
1314 | $this->logInAs('admin'); | ||
1315 | $client = $this->getClient(); | ||
1316 | |||
1317 | $crawler = $client->request('GET', '/new'); | ||
1318 | |||
1319 | $this->assertSame(200, $client->getResponse()->getStatusCode()); | ||
1320 | |||
1321 | $form = $crawler->filter('form[name=entry]')->form(); | ||
1322 | |||
1323 | $data = [ | ||
1324 | 'entry[url]' => $url, | ||
1325 | ]; | ||
1326 | |||
1327 | $client->submit($form, $data); | ||
1328 | |||
1329 | $this->assertSame(302, $client->getResponse()->getStatusCode()); | ||
1330 | |||
1331 | $content = $client->getContainer() | ||
1332 | ->get('doctrine.orm.entity_manager') | ||
1333 | ->getRepository('WallabagCoreBundle:Entry') | ||
1334 | ->findByUrlAndUserId($url, $this->getLoggedInUserId()); | ||
1335 | |||
1336 | $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content); | ||
1337 | $this->assertSame($url, $content->getUrl()); | ||
1338 | $this->assertSame($expectedLanguage, $content->getLanguage()); | ||
1339 | } | ||
1340 | |||
1341 | /** | ||
1342 | * This test will require an internet connection. | ||
1343 | */ | ||
1344 | public function testRestrictedArticle() | ||
1345 | { | ||
1346 | $url = 'https://www.monde-diplomatique.fr/2017/05/BONNET/57475'; | ||
1347 | $this->logInAs('admin'); | ||
1348 | $client = $this->getClient(); | ||
1349 | $em = $client->getContainer()->get('doctrine.orm.entity_manager'); | ||
1350 | |||
1351 | // enable restricted access | ||
1352 | $client->getContainer()->get('craue_config')->set('restricted_access', 1); | ||
1353 | |||
1354 | // create a new site_credential | ||
1355 | $user = $client->getContainer()->get('security.token_storage')->getToken()->getUser(); | ||
1356 | $credential = new SiteCredential($user); | ||
1357 | $credential->setHost('monde-diplomatique.fr'); | ||
1358 | $credential->setUsername($client->getContainer()->get('wallabag_core.helper.crypto_proxy')->crypt('foo')); | ||
1359 | $credential->setPassword($client->getContainer()->get('wallabag_core.helper.crypto_proxy')->crypt('bar')); | ||
1360 | |||
1361 | $em->persist($credential); | ||
1362 | $em->flush(); | ||
1363 | |||
1364 | $crawler = $client->request('GET', '/new'); | ||
1365 | |||
1366 | $this->assertSame(200, $client->getResponse()->getStatusCode()); | ||
1367 | |||
1368 | $form = $crawler->filter('form[name=entry]')->form(); | ||
1369 | |||
1370 | $data = [ | ||
1371 | 'entry[url]' => $url, | ||
1372 | ]; | ||
1373 | |||
1374 | $client->submit($form, $data); | ||
1375 | |||
1376 | $this->assertSame(302, $client->getResponse()->getStatusCode()); | ||
1377 | |||
1378 | $crawler = $client->followRedirect(); | ||
1379 | |||
1380 | $this->assertSame(200, $client->getResponse()->getStatusCode()); | ||
1381 | $this->assertContains('flashes.entry.notice.entry_saved', $crawler->filter('body')->extract(['_text'])[0]); | ||
1382 | |||
1383 | $content = $em | ||
1384 | ->getRepository('WallabagCoreBundle:Entry') | ||
1385 | ->findByUrlAndUserId($url, $this->getLoggedInUserId()); | ||
1386 | |||
1387 | $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content); | ||
1388 | $this->assertSame('Crimes et réformes aux Philippines', $content->getTitle()); | ||
1389 | |||
1390 | $client->getContainer()->get('craue_config')->set('restricted_access', 0); | ||
1391 | } | ||
1141 | } | 1392 | } |