]> git.immae.eu Git - github/wallabag/wallabag.git/commitdiff
Add a live test for restricted article
authorJeremy Benoist <jeremy.benoist@gmail.com>
Wed, 3 May 2017 08:23:49 +0000 (10:23 +0200)
committerJeremy Benoist <jeremy.benoist@gmail.com>
Tue, 20 Jun 2017 14:03:20 +0000 (16:03 +0200)
It is not aimed to test if we can get the full article (since we aren't using real login/password)
but mostly to test the full work (with authentication, etc.)

Do not clean fixtured to avoid SQLite to re-use id for entry tag relation ðŸ˜“

src/Wallabag/CoreBundle/Controller/SiteCredentialController.php
src/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilder.php
tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php
tests/Wallabag/CoreBundle/Controller/SiteCredentialControllerTest.php
tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php

index 429f529ab554e73047619c1e1d551503497d1de5..dc8e723da590f92a3d87f2924db5a75ef6fab388 100644 (file)
@@ -24,9 +24,7 @@ class SiteCredentialController extends Controller
      */
     public function indexAction()
     {
-        $em = $this->getDoctrine()->getManager();
-
-        $credentials = $em->getRepository('WallabagCoreBundle:SiteCredential')->findByUser($this->getUser());
+        $credentials = $this->get('wallabag_core.site_credential_repository')->findByUser($this->getUser());
 
         return $this->render('WallabagCoreBundle:SiteCredential:index.html.twig', array(
             'credentials' => $credentials,
index ae69492d4d9f477d3a50b77e80e899b1ad5f08d8..62a3bc1319fc0bf89a7a69d6e2c984a605ec7ba4 100644 (file)
@@ -31,14 +31,13 @@ class GrabySiteConfigBuilder implements SiteConfigBuilder
      */
     private $currentUser;
 
-
     /**
      * GrabySiteConfigBuilder constructor.
      *
      * @param ConfigBuilder            $grabyConfigBuilder
-     * @param TokenStorage                     $token
+     * @param TokenStorage             $token
      * @param SiteCredentialRepository $credentialRepository
-     * @param LoggerInterface $logger
+     * @param LoggerInterface          $logger
      */
     public function __construct(ConfigBuilder $grabyConfigBuilder, TokenStorage $token, SiteCredentialRepository $credentialRepository, LoggerInterface $logger)
     {
index 8f5c372d83bc92356b2ab8e9daec60fb371a3640..104f60f175efb58db53e1f5a5bc287c1b15cf26f 100644 (file)
@@ -5,6 +5,7 @@ namespace Tests\Wallabag\CoreBundle\Controller;
 use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
 use Wallabag\CoreBundle\Entity\Config;
 use Wallabag\CoreBundle\Entity\Entry;
+use Wallabag\CoreBundle\Entity\SiteCredential;
 
 class EntryControllerTest extends WallabagCoreTestCase
 {
@@ -1321,4 +1322,56 @@ class EntryControllerTest extends WallabagCoreTestCase
         $this->assertEquals($url, $content->getUrl());
         $this->assertEquals($expectedLanguage, $content->getLanguage());
     }
+
+    /**
+     * This test will require an internet connection.
+     */
+    public function testRestrictedArticle()
+    {
+        $url = 'http://www.monde-diplomatique.fr/2017/05/BONNET/57475';
+        $this->logInAs('admin');
+        $client = $this->getClient();
+        $em = $client->getContainer()->get('doctrine.orm.entity_manager');
+
+        // enable restricted access
+        $client->getContainer()->get('craue_config')->set('restricted_access', 1);
+
+        // create a new site_credential
+        $user = $client->getContainer()->get('security.token_storage')->getToken()->getUser();
+        $credential = new SiteCredential($user);
+        $credential->setHost('monde-diplomatique.fr');
+        $credential->setUsername('foo');
+        $credential->setPassword('bar');
+
+        $em->persist($credential);
+        $em->flush();
+
+        $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());
+
+        $crawler = $client->followRedirect();
+
+        $this->assertEquals(200, $client->getResponse()->getStatusCode());
+        $this->assertContains('flashes.entry.notice.entry_saved', $crawler->filter('body')->extract(['_text'])[0]);
+
+        $content = $em
+            ->getRepository('WallabagCoreBundle:Entry')
+            ->findByUrlAndUserId($url, $this->getLoggedInUserId());
+
+        $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content);
+        $this->assertSame('Crimes et réformes aux Philippines', $content->getTitle());
+
+        $client->getContainer()->get('craue_config')->set('restricted_access', 0);
+    }
 }
index 47bf0907a12c59bccd0164572b0d1e2aa0004a90..7e6dafee654539d18a4d619a3fc710d245c85cb7 100644 (file)
@@ -2,7 +2,9 @@
 
 namespace Tests\Wallabag\CoreBundle\Controller;
 
+use Symfony\Bundle\FrameworkBundle\Client;
 use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
+use Wallabag\CoreBundle\Entity\SiteCredential;
 
 class SiteCredentialControllerTest extends WallabagCoreTestCase
 {
@@ -52,18 +54,12 @@ class SiteCredentialControllerTest extends WallabagCoreTestCase
         $this->assertContains('flashes.site_credential.notice.added', $crawler->filter('body')->extract(['_text'])[0]);
     }
 
-    /**
-     * @depends testNewSiteCredential
-     */
     public function testEditSiteCredential()
     {
         $this->logInAs('admin');
         $client = $this->getClient();
 
-        $credential = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->getRepository('WallabagCoreBundle:SiteCredential')
-            ->findOneByHost('google.io');
+        $credential = $this->createSiteCredential($client);
 
         $crawler = $client->request('GET', '/site-credentials/'.$credential->getId().'/edit');
 
@@ -92,36 +88,26 @@ class SiteCredentialControllerTest extends WallabagCoreTestCase
         $this->assertContains('larry', $crawler->filter('input[id=site_credential_username]')->attr('value'));
     }
 
-    /**
-     * @depends testNewSiteCredential
-     */
     public function testEditFromADifferentUserSiteCredential()
     {
-        $this->logInAs('bob');
+        $this->logInAs('admin');
         $client = $this->getClient();
 
-        $credential = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->getRepository('WallabagCoreBundle:SiteCredential')
-            ->findOneByHost('google.io');
+        $credential = $this->createSiteCredential($client);
+
+        $this->logInAs('bob');
 
         $client->request('GET', '/site-credentials/'.$credential->getId().'/edit');
 
         $this->assertEquals(403, $client->getResponse()->getStatusCode());
     }
 
-    /**
-     * @depends testNewSiteCredential
-     */
     public function testDeleteSiteCredential()
     {
         $this->logInAs('admin');
         $client = $this->getClient();
 
-        $credential = $client->getContainer()
-            ->get('doctrine.orm.entity_manager')
-            ->getRepository('WallabagCoreBundle:SiteCredential')
-            ->findOneByHost('google.io');
+        $credential = $this->createSiteCredential($client);
 
         $crawler = $client->request('GET', '/site-credentials/'.$credential->getId().'/edit');
 
@@ -137,4 +123,18 @@ class SiteCredentialControllerTest extends WallabagCoreTestCase
 
         $this->assertContains('flashes.site_credential.notice.deleted', $crawler->filter('body')->extract(['_text'])[0]);
     }
+
+    private function createSiteCredential(Client $client)
+    {
+        $credential = new SiteCredential($this->getLoggedInUser());
+        $credential->setHost('google.io');
+        $credential->setUsername('sergei');
+        $credential->setPassword('microsoft');
+
+        $em = $client->getContainer()->get('doctrine.orm.entity_manager');
+        $em->persist($credential);
+        $em->flush();
+
+        return $credential;
+    }
 }
index 980f75793b9cb1efa6d229f459225bfd951f6935..1e1e8989b76417e9220db8b95094db7626103deb 100644 (file)
@@ -25,7 +25,7 @@ class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase
 
         $grabySiteConfig = new GrabySiteConfig();
         $grabySiteConfig->requires_login = true;
-        $grabySiteConfig->login_uri = 'http://example.com/login';
+        $grabySiteConfig->login_uri = 'http://www.example.com/login';
         $grabySiteConfig->login_username_field = 'login';
         $grabySiteConfig->login_password_field = 'password';
         $grabySiteConfig->login_extra_fields = ['field=value'];
@@ -67,13 +67,13 @@ class GrabySiteConfigBuilderTest extends PHPUnit_Framework_TestCase
             $logger
         );
 
-        $config = $this->builder->buildForHost('example.com');
+        $config = $this->builder->buildForHost('www.example.com');
 
         $this->assertEquals(
             new SiteConfig([
                 'host' => 'example.com',
                 'requiresLogin' => true,
-                'loginUri' => 'http://example.com/login',
+                'loginUri' => 'http://www.example.com/login',
                 'usernameField' => 'login',
                 'passwordField' => 'password',
                 'extraFields' => ['field' => 'value'],