+
+ public function testShareEntryPublicly()
+ {
+ $this->logInAs('admin');
+ $client = $this->getClient();
+
+ $content = $client->getContainer()
+ ->get('doctrine.orm.entity_manager')
+ ->getRepository('WallabagCoreBundle:Entry')
+ ->findOneByUser($this->getLoggedInUserId());
+
+ // no uuid
+ $client->request('GET', '/share/'.$content->getUuid());
+ $this->assertEquals(404, $client->getResponse()->getStatusCode());
+
+ // generating the uuid
+ $client->request('GET', '/share/'.$content->getId());
+ $this->assertEquals(302, $client->getResponse()->getStatusCode());
+
+ // follow link with uuid
+ $crawler = $client->followRedirect();
+ $this->assertEquals(200, $client->getResponse()->getStatusCode());
+ $this->assertContains('max-age=25200', $client->getResponse()->headers->get('cache-control'));
+ $this->assertContains('public', $client->getResponse()->headers->get('cache-control'));
+ $this->assertContains('s-maxage=25200', $client->getResponse()->headers->get('cache-control'));
+ $this->assertNotContains('no-cache', $client->getResponse()->headers->get('cache-control'));
+ $this->assertContains('og:title', $client->getResponse()->getContent());
+ $this->assertContains('og:type', $client->getResponse()->getContent());
+ $this->assertContains('og:url', $client->getResponse()->getContent());
+ $this->assertContains('og:image', $client->getResponse()->getContent());
+
+ // sharing is now disabled
+ $client->getContainer()->get('craue_config')->set('share_public', 0);
+ $client->request('GET', '/share/'.$content->getUuid());
+ $this->assertEquals(404, $client->getResponse()->getStatusCode());
+
+ $client->request('GET', '/view/'.$content->getId());
+ $this->assertContains('no-cache', $client->getResponse()->headers->get('cache-control'));
+
+ // removing the share
+ $client->request('GET', '/share/delete/'.$content->getId());
+ $this->assertEquals(302, $client->getResponse()->getStatusCode());
+
+ // share is now disable
+ $client->request('GET', '/share/'.$content->getUuid());
+ $this->assertEquals(404, $client->getResponse()->getStatusCode());
+ }
+
+ public function testNewEntryWithDownloadImagesEnabled()
+ {
+ $this->logInAs('admin');
+ $client = $this->getClient();
+
+ $url = 'http://www.20minutes.fr/montpellier/1952003-20161030-video-car-tombe-panne-rugbymen-perpignan-improvisent-melee-route';
+ $client->getContainer()->get('craue_config')->set('download_images_enabled', 1);
+
+ $crawler = $client->request('GET', '/new');
+
+ $this->assertEquals(200, $client->getResponse()->getStatusCode());
+
+ $form = $crawler->filter('form[name=entry]')->form();
+
+ $data = [
+ 'entry[url]' => $url,
+ ];
+
+ $client->submit($form, $data);
+
+ $this->assertEquals(302, $client->getResponse()->getStatusCode());
+
+ $em = $client->getContainer()
+ ->get('doctrine.orm.entity_manager');
+
+ $entry = $em
+ ->getRepository('WallabagCoreBundle:Entry')
+ ->findByUrlAndUserId($url, $this->getLoggedInUserId());
+
+ $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $entry);
+ $this->assertEquals($url, $entry->getUrl());
+ $this->assertContains('Perpignan', $entry->getTitle());
+ $this->assertContains('/d9bc0fcd.jpeg', $entry->getContent());
+
+ $client->getContainer()->get('craue_config')->set('download_images_enabled', 0);
+ }
+
+ /**
+ * @depends testNewEntryWithDownloadImagesEnabled
+ */
+ public function testRemoveEntryWithDownloadImagesEnabled()
+ {
+ $this->logInAs('admin');
+ $client = $this->getClient();
+
+ $url = 'http://www.20minutes.fr/montpellier/1952003-20161030-video-car-tombe-panne-rugbymen-perpignan-improvisent-melee-route';
+ $client->getContainer()->get('craue_config')->set('download_images_enabled', 1);
+
+ $content = $client->getContainer()
+ ->get('doctrine.orm.entity_manager')
+ ->getRepository('WallabagCoreBundle:Entry')
+ ->findByUrlAndUserId($url, $this->getLoggedInUserId());
+
+ $client->request('GET', '/delete/'.$content->getId());
+
+ $this->assertEquals(302, $client->getResponse()->getStatusCode());
+
+ $client->getContainer()->get('craue_config')->set('download_images_enabled', 0);
+ }