aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/Wallabag
diff options
context:
space:
mode:
Diffstat (limited to 'tests/Wallabag')
-rw-r--r--tests/Wallabag/AnnotationBundle/Controller/AnnotationControllerTest.php5
-rw-r--r--tests/Wallabag/AnnotationBundle/WallabagAnnotationTestCase.php4
-rw-r--r--tests/Wallabag/ApiBundle/Controller/DeveloperControllerTest.php2
-rw-r--r--tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php141
-rw-r--r--tests/Wallabag/ApiBundle/Controller/SearchRestControllerTest.php69
-rw-r--r--tests/Wallabag/ApiBundle/Controller/WallabagRestControllerTest.php17
-rw-r--r--tests/Wallabag/ApiBundle/WallabagApiTestCase.php23
-rw-r--r--tests/Wallabag/CoreBundle/Command/GenerateUrlHashesCommandTest.php98
-rw-r--r--tests/Wallabag/CoreBundle/Command/InstallCommandTest.php18
-rw-r--r--tests/Wallabag/CoreBundle/Command/ReloadEntryCommandTest.php6
-rw-r--r--tests/Wallabag/CoreBundle/Command/ShowUserCommandTest.php3
-rw-r--r--tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php152
-rw-r--r--tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php57
-rw-r--r--tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php2
-rw-r--r--tests/Wallabag/CoreBundle/Controller/FeedControllerTest.php261
-rw-r--r--tests/Wallabag/CoreBundle/Controller/RssControllerTest.php221
-rw-r--r--tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php32
-rw-r--r--tests/Wallabag/CoreBundle/Controller/TagControllerTest.php45
-rw-r--r--tests/Wallabag/CoreBundle/Event/Listener/UserLocaleListenerTest.php23
-rw-r--r--tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php77
-rw-r--r--tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php100
-rw-r--r--tests/Wallabag/CoreBundle/Helper/RedirectTest.php3
-rw-r--r--tests/Wallabag/CoreBundle/ParamConverter/UsernameFeedTokenConverterTest.php (renamed from tests/Wallabag/CoreBundle/ParamConverter/UsernameRssTokenConverterTest.php)58
-rw-r--r--tests/Wallabag/CoreBundle/Twig/WallabagExtensionTest.php25
-rw-r--r--tests/Wallabag/CoreBundle/WallabagCoreTestCase.php4
-rw-r--r--tests/Wallabag/ImportBundle/Command/ImportCommandTest.php4
-rw-r--r--tests/Wallabag/ImportBundle/Consumer/AMQPEntryConsumerTest.php2
-rw-r--r--tests/Wallabag/ImportBundle/Consumer/RedisEntryConsumerTest.php2
-rw-r--r--tests/Wallabag/ImportBundle/Controller/ChromeControllerTest.php2
-rw-r--r--tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php2
-rw-r--r--tests/Wallabag/ImportBundle/Controller/InstapaperControllerTest.php4
-rw-r--r--tests/Wallabag/ImportBundle/Controller/PinboardControllerTest.php2
-rw-r--r--tests/Wallabag/ImportBundle/Controller/ReadabilityControllerTest.php2
-rw-r--r--tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php4
-rw-r--r--tests/Wallabag/ImportBundle/Controller/WallabagV2ControllerTest.php4
-rw-r--r--tests/Wallabag/UserBundle/Controller/ManageControllerTest.php2
-rw-r--r--tests/Wallabag/UserBundle/EventListener/CreateConfigListenerTest.php10
-rw-r--r--tests/Wallabag/UserBundle/Mailer/AuthCodeMailerTest.php18
-rw-r--r--tests/Wallabag/UserBundle/Mailer/CountableMemorySpool.php19
39 files changed, 1136 insertions, 387 deletions
diff --git a/tests/Wallabag/AnnotationBundle/Controller/AnnotationControllerTest.php b/tests/Wallabag/AnnotationBundle/Controller/AnnotationControllerTest.php
index 96474468..2c46e0a1 100644
--- a/tests/Wallabag/AnnotationBundle/Controller/AnnotationControllerTest.php
+++ b/tests/Wallabag/AnnotationBundle/Controller/AnnotationControllerTest.php
@@ -1,6 +1,6 @@
1<?php 1<?php
2 2
3namespace Tests\AnnotationBundle\Controller; 3namespace Tests\Wallabag\AnnotationBundle\Controller;
4 4
5use Tests\Wallabag\AnnotationBundle\WallabagAnnotationTestCase; 5use Tests\Wallabag\AnnotationBundle\WallabagAnnotationTestCase;
6use Wallabag\AnnotationBundle\Entity\Annotation; 6use Wallabag\AnnotationBundle\Entity\Annotation;
@@ -100,8 +100,7 @@ class AnnotationControllerTest extends WallabagAnnotationTestCase
100 $this->assertSame('my quote', $content['quote']); 100 $this->assertSame('my quote', $content['quote']);
101 101
102 /** @var Annotation $annotation */ 102 /** @var Annotation $annotation */
103 $annotation = $this->client->getContainer() 103 $annotation = $em
104 ->get('doctrine.orm.entity_manager')
105 ->getRepository('WallabagAnnotationBundle:Annotation') 104 ->getRepository('WallabagAnnotationBundle:Annotation')
106 ->findLastAnnotationByPageId($entry->getId(), 1); 105 ->findLastAnnotationByPageId($entry->getId(), 1);
107 106
diff --git a/tests/Wallabag/AnnotationBundle/WallabagAnnotationTestCase.php b/tests/Wallabag/AnnotationBundle/WallabagAnnotationTestCase.php
index 105e8add..9c7aba6b 100644
--- a/tests/Wallabag/AnnotationBundle/WallabagAnnotationTestCase.php
+++ b/tests/Wallabag/AnnotationBundle/WallabagAnnotationTestCase.php
@@ -43,9 +43,9 @@ abstract class WallabagAnnotationTestCase extends WebTestCase
43 $container = $client->getContainer(); 43 $container = $client->getContainer();
44 44
45 /** @var $userManager \FOS\UserBundle\Doctrine\UserManager */ 45 /** @var $userManager \FOS\UserBundle\Doctrine\UserManager */
46 $userManager = $container->get('fos_user.user_manager'); 46 $userManager = $container->get('fos_user.user_manager.test');
47 /** @var $loginManager \FOS\UserBundle\Security\LoginManager */ 47 /** @var $loginManager \FOS\UserBundle\Security\LoginManager */
48 $loginManager = $container->get('fos_user.security.login_manager'); 48 $loginManager = $container->get('fos_user.security.login_manager.test');
49 $firewallName = $container->getParameter('fos_user.firewall_name'); 49 $firewallName = $container->getParameter('fos_user.firewall_name');
50 50
51 $this->user = $userManager->findUserBy(['username' => 'admin']); 51 $this->user = $userManager->findUserBy(['username' => 'admin']);
diff --git a/tests/Wallabag/ApiBundle/Controller/DeveloperControllerTest.php b/tests/Wallabag/ApiBundle/Controller/DeveloperControllerTest.php
index e1a0ac7e..5586c70d 100644
--- a/tests/Wallabag/ApiBundle/Controller/DeveloperControllerTest.php
+++ b/tests/Wallabag/ApiBundle/Controller/DeveloperControllerTest.php
@@ -135,7 +135,7 @@ class DeveloperControllerTest extends WallabagCoreTestCase
135 { 135 {
136 $client = $this->getClient(); 136 $client = $this->getClient();
137 $em = $client->getContainer()->get('doctrine.orm.entity_manager'); 137 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
138 $userManager = $client->getContainer()->get('fos_user.user_manager'); 138 $userManager = $client->getContainer()->get('fos_user.user_manager.test');
139 $user = $userManager->findUserBy(['username' => $username]); 139 $user = $userManager->findUserBy(['username' => $username]);
140 $apiClient = new Client($user); 140 $apiClient = new Client($user);
141 $apiClient->setName('My app'); 141 $apiClient->setName('My app');
diff --git a/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php b/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php
index 46b5f460..8b7898ee 100644
--- a/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php
+++ b/tests/Wallabag/ApiBundle/Controller/EntryRestControllerTest.php
@@ -15,7 +15,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
15 $entry = $this->client->getContainer() 15 $entry = $this->client->getContainer()
16 ->get('doctrine.orm.entity_manager') 16 ->get('doctrine.orm.entity_manager')
17 ->getRepository('WallabagCoreBundle:Entry') 17 ->getRepository('WallabagCoreBundle:Entry')
18 ->findOneBy(['user' => 1, 'isArchived' => false]); 18 ->findOneBy(['user' => $this->getUserId(), 'isArchived' => false]);
19 19
20 if (!$entry) { 20 if (!$entry) {
21 $this->markTestSkipped('No content found in db.'); 21 $this->markTestSkipped('No content found in db.');
@@ -41,7 +41,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
41 $entry = $this->client->getContainer() 41 $entry = $this->client->getContainer()
42 ->get('doctrine.orm.entity_manager') 42 ->get('doctrine.orm.entity_manager')
43 ->getRepository('WallabagCoreBundle:Entry') 43 ->getRepository('WallabagCoreBundle:Entry')
44 ->findOneBy(['user' => 1, 'url' => 'http://0.0.0.0/entry2']); 44 ->findOneBy(['user' => $this->getUserId(), 'url' => 'http://0.0.0.0/entry2']);
45 45
46 if (!$entry) { 46 if (!$entry) {
47 $this->markTestSkipped('No content found in db.'); 47 $this->markTestSkipped('No content found in db.');
@@ -60,7 +60,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
60 $entry = $this->client->getContainer() 60 $entry = $this->client->getContainer()
61 ->get('doctrine.orm.entity_manager') 61 ->get('doctrine.orm.entity_manager')
62 ->getRepository('WallabagCoreBundle:Entry') 62 ->getRepository('WallabagCoreBundle:Entry')
63 ->findOneBy(['user' => 1, 'isArchived' => false]); 63 ->findOneBy(['user' => $this->getUserId(), 'isArchived' => false]);
64 64
65 if (!$entry) { 65 if (!$entry) {
66 $this->markTestSkipped('No content found in db.'); 66 $this->markTestSkipped('No content found in db.');
@@ -108,7 +108,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
108 $entry = $this->client->getContainer() 108 $entry = $this->client->getContainer()
109 ->get('doctrine.orm.entity_manager') 109 ->get('doctrine.orm.entity_manager')
110 ->getRepository('WallabagCoreBundle:Entry') 110 ->getRepository('WallabagCoreBundle:Entry')
111 ->findOneBy(['user' => 2, 'isArchived' => false]); 111 ->findOneBy(['user' => $this->getUserId('bob'), 'isArchived' => false]);
112 112
113 if (!$entry) { 113 if (!$entry) {
114 $this->markTestSkipped('No content found in db.'); 114 $this->markTestSkipped('No content found in db.');
@@ -133,6 +133,27 @@ class EntryRestControllerTest extends WallabagApiTestCase
133 $this->assertSame(1, $content['page']); 133 $this->assertSame(1, $content['page']);
134 $this->assertGreaterThanOrEqual(1, $content['pages']); 134 $this->assertGreaterThanOrEqual(1, $content['pages']);
135 135
136 $this->assertNotNull($content['_embedded']['items'][0]['content']);
137
138 $this->assertSame('application/json', $this->client->getResponse()->headers->get('Content-Type'));
139 }
140
141 public function testGetEntriesDetailMetadata()
142 {
143 $this->client->request('GET', '/api/entries?detail=metadata');
144
145 $this->assertSame(200, $this->client->getResponse()->getStatusCode());
146
147 $content = json_decode($this->client->getResponse()->getContent(), true);
148
149 $this->assertGreaterThanOrEqual(1, \count($content));
150 $this->assertNotEmpty($content['_embedded']['items']);
151 $this->assertGreaterThanOrEqual(1, $content['total']);
152 $this->assertSame(1, $content['page']);
153 $this->assertGreaterThanOrEqual(1, $content['pages']);
154
155 $this->assertNull($content['_embedded']['items'][0]['content']);
156
136 $this->assertSame('application/json', $this->client->getResponse()->headers->get('Content-Type')); 157 $this->assertSame('application/json', $this->client->getResponse()->headers->get('Content-Type'));
137 } 158 }
138 159
@@ -185,7 +206,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
185 $entry = $this->client->getContainer() 206 $entry = $this->client->getContainer()
186 ->get('doctrine.orm.entity_manager') 207 ->get('doctrine.orm.entity_manager')
187 ->getRepository('WallabagCoreBundle:Entry') 208 ->getRepository('WallabagCoreBundle:Entry')
188 ->findOneByUser(1); 209 ->findOneByUser($this->getUserId());
189 210
190 if (!$entry) { 211 if (!$entry) {
191 $this->markTestSkipped('No content found in db.'); 212 $this->markTestSkipped('No content found in db.');
@@ -489,8 +510,9 @@ class EntryRestControllerTest extends WallabagApiTestCase
489 $this->assertSame(0, $content['is_archived']); 510 $this->assertSame(0, $content['is_archived']);
490 $this->assertSame(0, $content['is_starred']); 511 $this->assertSame(0, $content['is_starred']);
491 $this->assertNull($content['starred_at']); 512 $this->assertNull($content['starred_at']);
513 $this->assertNull($content['archived_at']);
492 $this->assertSame('New title for my article', $content['title']); 514 $this->assertSame('New title for my article', $content['title']);
493 $this->assertSame(1, $content['user_id']); 515 $this->assertSame($this->getUserId(), $content['user_id']);
494 $this->assertCount(2, $content['tags']); 516 $this->assertCount(2, $content['tags']);
495 $this->assertNull($content['origin_url']); 517 $this->assertNull($content['origin_url']);
496 $this->assertSame('my content', $content['content']); 518 $this->assertSame('my content', $content['content']);
@@ -505,7 +527,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
505 public function testPostSameEntry() 527 public function testPostSameEntry()
506 { 528 {
507 $em = $this->client->getContainer()->get('doctrine.orm.entity_manager'); 529 $em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
508 $entry = new Entry($em->getReference(User::class, 1)); 530 $entry = new Entry($em->getReference(User::class, $this->getUserId()));
509 $entry->setUrl('https://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'); 531 $entry->setUrl('https://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');
510 $entry->setArchived(true); 532 $entry->setArchived(true);
511 $entry->addTag((new Tag())->setLabel('google')); 533 $entry->addTag((new Tag())->setLabel('google'));
@@ -584,7 +606,8 @@ class EntryRestControllerTest extends WallabagApiTestCase
584 $this->assertSame(1, $content['is_archived']); 606 $this->assertSame(1, $content['is_archived']);
585 $this->assertSame(1, $content['is_starred']); 607 $this->assertSame(1, $content['is_starred']);
586 $this->assertGreaterThanOrEqual($now->getTimestamp(), (new \DateTime($content['starred_at']))->getTimestamp()); 608 $this->assertGreaterThanOrEqual($now->getTimestamp(), (new \DateTime($content['starred_at']))->getTimestamp());
587 $this->assertSame(1, $content['user_id']); 609 $this->assertGreaterThanOrEqual($now->getTimestamp(), (new \DateTime($content['archived_at']))->getTimestamp());
610 $this->assertSame($this->getUserId(), $content['user_id']);
588 } 611 }
589 612
590 public function testPostArchivedAndStarredEntryWithoutQuotes() 613 public function testPostArchivedAndStarredEntryWithoutQuotes()
@@ -633,7 +656,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
633 $entry = $this->client->getContainer() 656 $entry = $this->client->getContainer()
634 ->get('doctrine.orm.entity_manager') 657 ->get('doctrine.orm.entity_manager')
635 ->getRepository('WallabagCoreBundle:Entry') 658 ->getRepository('WallabagCoreBundle:Entry')
636 ->findOneByUser(1); 659 ->findOneByUser($this->getUserId());
637 660
638 if (!$entry) { 661 if (!$entry) {
639 $this->markTestSkipped('No content found in db.'); 662 $this->markTestSkipped('No content found in db.');
@@ -660,7 +683,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
660 $this->assertSame($entry->getUrl(), $content['url']); 683 $this->assertSame($entry->getUrl(), $content['url']);
661 $this->assertSame('New awesome title', $content['title']); 684 $this->assertSame('New awesome title', $content['title']);
662 $this->assertGreaterThanOrEqual(1, \count($content['tags']), 'We force only one tag'); 685 $this->assertGreaterThanOrEqual(1, \count($content['tags']), 'We force only one tag');
663 $this->assertSame(1, $content['user_id']); 686 $this->assertSame($this->getUserId(), $content['user_id']);
664 $this->assertSame('de_AT', $content['language']); 687 $this->assertSame('de_AT', $content['language']);
665 $this->assertSame('http://preview.io/picture.jpg', $content['preview_picture']); 688 $this->assertSame('http://preview.io/picture.jpg', $content['preview_picture']);
666 $this->assertContains('sponge', $content['published_by']); 689 $this->assertContains('sponge', $content['published_by']);
@@ -675,7 +698,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
675 $entry = $this->client->getContainer() 698 $entry = $this->client->getContainer()
676 ->get('doctrine.orm.entity_manager') 699 ->get('doctrine.orm.entity_manager')
677 ->getRepository('WallabagCoreBundle:Entry') 700 ->getRepository('WallabagCoreBundle:Entry')
678 ->findOneByUser(1); 701 ->findOneByUser($this->getUserId());
679 702
680 if (!$entry) { 703 if (!$entry) {
681 $this->markTestSkipped('No content found in db.'); 704 $this->markTestSkipped('No content found in db.');
@@ -709,7 +732,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
709 $entry = $this->client->getContainer() 732 $entry = $this->client->getContainer()
710 ->get('doctrine.orm.entity_manager') 733 ->get('doctrine.orm.entity_manager')
711 ->getRepository('WallabagCoreBundle:Entry') 734 ->getRepository('WallabagCoreBundle:Entry')
712 ->findOneByUser(1); 735 ->findOneByUser($this->getUserId());
713 736
714 if (!$entry) { 737 if (!$entry) {
715 $this->markTestSkipped('No content found in db.'); 738 $this->markTestSkipped('No content found in db.');
@@ -740,7 +763,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
740 $entry = $this->client->getContainer() 763 $entry = $this->client->getContainer()
741 ->get('doctrine.orm.entity_manager') 764 ->get('doctrine.orm.entity_manager')
742 ->getRepository('WallabagCoreBundle:Entry') 765 ->getRepository('WallabagCoreBundle:Entry')
743 ->findOneByUser(1); 766 ->findOneByUser($this->getUserId());
744 767
745 if (!$entry) { 768 if (!$entry) {
746 $this->markTestSkipped('No content found in db.'); 769 $this->markTestSkipped('No content found in db.');
@@ -772,7 +795,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
772 $entry = $this->client->getContainer() 795 $entry = $this->client->getContainer()
773 ->get('doctrine.orm.entity_manager') 796 ->get('doctrine.orm.entity_manager')
774 ->getRepository('WallabagCoreBundle:Entry') 797 ->getRepository('WallabagCoreBundle:Entry')
775 ->findOneByUser(1); 798 ->findOneByUser($this->getUserId());
776 799
777 if (!$entry) { 800 if (!$entry) {
778 $this->markTestSkipped('No content found in db.'); 801 $this->markTestSkipped('No content found in db.');
@@ -817,7 +840,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
817 $entry = $this->client->getContainer() 840 $entry = $this->client->getContainer()
818 ->get('doctrine.orm.entity_manager') 841 ->get('doctrine.orm.entity_manager')
819 ->getRepository('WallabagCoreBundle:Entry') 842 ->getRepository('WallabagCoreBundle:Entry')
820 ->findOneByUser(1); 843 ->findOneByUser($this->getUserId());
821 844
822 if (!$entry) { 845 if (!$entry) {
823 $this->markTestSkipped('No content found in db.'); 846 $this->markTestSkipped('No content found in db.');
@@ -834,7 +857,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
834 $content = json_decode($this->client->getResponse()->getContent(), true); 857 $content = json_decode($this->client->getResponse()->getContent(), true);
835 858
836 $this->assertArrayHasKey('tags', $content); 859 $this->assertArrayHasKey('tags', $content);
837 $this->assertSame($nbTags + 3, \count($content['tags'])); 860 $this->assertCount($nbTags + 3, $content['tags']);
838 861
839 $entryDB = $this->client->getContainer() 862 $entryDB = $this->client->getContainer()
840 ->get('doctrine.orm.entity_manager') 863 ->get('doctrine.orm.entity_manager')
@@ -874,7 +897,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
874 $content = json_decode($this->client->getResponse()->getContent(), true); 897 $content = json_decode($this->client->getResponse()->getContent(), true);
875 898
876 $this->assertArrayHasKey('tags', $content); 899 $this->assertArrayHasKey('tags', $content);
877 $this->assertSame($nbTags - 1, \count($content['tags'])); 900 $this->assertCount($nbTags - 1, $content['tags']);
878 } 901 }
879 902
880 public function testSaveIsArchivedAfterPost() 903 public function testSaveIsArchivedAfterPost()
@@ -882,7 +905,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
882 $entry = $this->client->getContainer() 905 $entry = $this->client->getContainer()
883 ->get('doctrine.orm.entity_manager') 906 ->get('doctrine.orm.entity_manager')
884 ->getRepository('WallabagCoreBundle:Entry') 907 ->getRepository('WallabagCoreBundle:Entry')
885 ->findOneBy(['user' => 1, 'isArchived' => true]); 908 ->findOneBy(['user' => $this->getUserId(), 'isArchived' => true]);
886 909
887 if (!$entry) { 910 if (!$entry) {
888 $this->markTestSkipped('No content found in db.'); 911 $this->markTestSkipped('No content found in db.');
@@ -904,7 +927,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
904 $entry = $this->client->getContainer() 927 $entry = $this->client->getContainer()
905 ->get('doctrine.orm.entity_manager') 928 ->get('doctrine.orm.entity_manager')
906 ->getRepository('WallabagCoreBundle:Entry') 929 ->getRepository('WallabagCoreBundle:Entry')
907 ->findOneBy(['user' => 1, 'isStarred' => true]); 930 ->findOneBy(['user' => $this->getUserId(), 'isStarred' => true]);
908 931
909 if (!$entry) { 932 if (!$entry) {
910 $this->markTestSkipped('No content found in db.'); 933 $this->markTestSkipped('No content found in db.');
@@ -926,7 +949,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
926 $entry = $this->client->getContainer() 949 $entry = $this->client->getContainer()
927 ->get('doctrine.orm.entity_manager') 950 ->get('doctrine.orm.entity_manager')
928 ->getRepository('WallabagCoreBundle:Entry') 951 ->getRepository('WallabagCoreBundle:Entry')
929 ->findOneBy(['user' => 1, 'isArchived' => true]); 952 ->findOneBy(['user' => $this->getUserId(), 'isArchived' => true]);
930 953
931 if (!$entry) { 954 if (!$entry) {
932 $this->markTestSkipped('No content found in db.'); 955 $this->markTestSkipped('No content found in db.');
@@ -952,7 +975,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
952 $entry = $this->client->getContainer() 975 $entry = $this->client->getContainer()
953 ->get('doctrine.orm.entity_manager') 976 ->get('doctrine.orm.entity_manager')
954 ->getRepository('WallabagCoreBundle:Entry') 977 ->getRepository('WallabagCoreBundle:Entry')
955 ->findOneBy(['user' => 1, 'isStarred' => true]); 978 ->findOneBy(['user' => $this->getUserId(), 'isStarred' => true]);
956 979
957 if (!$entry) { 980 if (!$entry) {
958 $this->markTestSkipped('No content found in db.'); 981 $this->markTestSkipped('No content found in db.');
@@ -971,6 +994,8 @@ class EntryRestControllerTest extends WallabagApiTestCase
971 994
972 public function dataForEntriesExistWithUrl() 995 public function dataForEntriesExistWithUrl()
973 { 996 {
997 $url = hash('sha1', 'http://0.0.0.0/entry2');
998
974 return [ 999 return [
975 'with_id' => [ 1000 'with_id' => [
976 'url' => '/api/entries/exists?url=http://0.0.0.0/entry2&return_id=1', 1001 'url' => '/api/entries/exists?url=http://0.0.0.0/entry2&return_id=1',
@@ -980,6 +1005,14 @@ class EntryRestControllerTest extends WallabagApiTestCase
980 'url' => '/api/entries/exists?url=http://0.0.0.0/entry2', 1005 'url' => '/api/entries/exists?url=http://0.0.0.0/entry2',
981 'expectedValue' => true, 1006 'expectedValue' => true,
982 ], 1007 ],
1008 'hashed_url_with_id' => [
1009 'url' => '/api/entries/exists?hashed_url=' . $url . '&return_id=1',
1010 'expectedValue' => 2,
1011 ],
1012 'hashed_url_without_id' => [
1013 'url' => '/api/entries/exists?hashed_url=' . $url . '',
1014 'expectedValue' => true,
1015 ],
983 ]; 1016 ];
984 } 1017 }
985 1018
@@ -1001,6 +1034,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
1001 { 1034 {
1002 $url1 = 'http://0.0.0.0/entry2'; 1035 $url1 = 'http://0.0.0.0/entry2';
1003 $url2 = 'http://0.0.0.0/entry10'; 1036 $url2 = 'http://0.0.0.0/entry10';
1037
1004 $this->client->request('GET', '/api/entries/exists?urls[]=' . $url1 . '&urls[]=' . $url2 . '&return_id=1'); 1038 $this->client->request('GET', '/api/entries/exists?urls[]=' . $url1 . '&urls[]=' . $url2 . '&return_id=1');
1005 1039
1006 $this->assertSame(200, $this->client->getResponse()->getStatusCode()); 1040 $this->assertSame(200, $this->client->getResponse()->getStatusCode());
@@ -1009,7 +1043,8 @@ class EntryRestControllerTest extends WallabagApiTestCase
1009 1043
1010 $this->assertArrayHasKey($url1, $content); 1044 $this->assertArrayHasKey($url1, $content);
1011 $this->assertArrayHasKey($url2, $content); 1045 $this->assertArrayHasKey($url2, $content);
1012 $this->assertSame(2, $content[$url1]); 1046 // it returns a database id, we don't know it, so we only check it's greater than the lowest possible value
1047 $this->assertGreaterThan(1, $content[$url1]);
1013 $this->assertNull($content[$url2]); 1048 $this->assertNull($content[$url2]);
1014 } 1049 }
1015 1050
@@ -1029,6 +1064,38 @@ class EntryRestControllerTest extends WallabagApiTestCase
1029 $this->assertFalse($content[$url2]); 1064 $this->assertFalse($content[$url2]);
1030 } 1065 }
1031 1066
1067 public function testGetEntriesExistsWithManyUrlsHashed()
1068 {
1069 $url1 = 'http://0.0.0.0/entry2';
1070 $url2 = 'http://0.0.0.0/entry10';
1071 $this->client->request('GET', '/api/entries/exists?hashed_urls[]=' . hash('sha1', $url1) . '&hashed_urls[]=' . hash('sha1', $url2) . '&return_id=1');
1072
1073 $this->assertSame(200, $this->client->getResponse()->getStatusCode());
1074
1075 $content = json_decode($this->client->getResponse()->getContent(), true);
1076
1077 $this->assertArrayHasKey(hash('sha1', $url1), $content);
1078 $this->assertArrayHasKey(hash('sha1', $url2), $content);
1079 $this->assertSame(2, $content[hash('sha1', $url1)]);
1080 $this->assertNull($content[hash('sha1', $url2)]);
1081 }
1082
1083 public function testGetEntriesExistsWithManyUrlsHashedReturnBool()
1084 {
1085 $url1 = 'http://0.0.0.0/entry2';
1086 $url2 = 'http://0.0.0.0/entry10';
1087 $this->client->request('GET', '/api/entries/exists?hashed_urls[]=' . hash('sha1', $url1) . '&hashed_urls[]=' . hash('sha1', $url2));
1088
1089 $this->assertSame(200, $this->client->getResponse()->getStatusCode());
1090
1091 $content = json_decode($this->client->getResponse()->getContent(), true);
1092
1093 $this->assertArrayHasKey(hash('sha1', $url1), $content);
1094 $this->assertArrayHasKey(hash('sha1', $url2), $content);
1095 $this->assertTrue($content[hash('sha1', $url1)]);
1096 $this->assertFalse($content[hash('sha1', $url2)]);
1097 }
1098
1032 public function testGetEntriesExistsWhichDoesNotExists() 1099 public function testGetEntriesExistsWhichDoesNotExists()
1033 { 1100 {
1034 $this->client->request('GET', '/api/entries/exists?url=http://google.com/entry2'); 1101 $this->client->request('GET', '/api/entries/exists?url=http://google.com/entry2');
@@ -1040,6 +1107,17 @@ class EntryRestControllerTest extends WallabagApiTestCase
1040 $this->assertFalse($content['exists']); 1107 $this->assertFalse($content['exists']);
1041 } 1108 }
1042 1109
1110 public function testGetEntriesExistsWhichDoesNotExistsWithHashedUrl()
1111 {
1112 $this->client->request('GET', '/api/entries/exists?hashed_url=' . hash('sha1', 'http://google.com/entry2'));
1113
1114 $this->assertSame(200, $this->client->getResponse()->getStatusCode());
1115
1116 $content = json_decode($this->client->getResponse()->getContent(), true);
1117
1118 $this->assertFalse($content['exists']);
1119 }
1120
1043 public function testGetEntriesExistsWithNoUrl() 1121 public function testGetEntriesExistsWithNoUrl()
1044 { 1122 {
1045 $this->client->request('GET', '/api/entries/exists?url='); 1123 $this->client->request('GET', '/api/entries/exists?url=');
@@ -1047,11 +1125,18 @@ class EntryRestControllerTest extends WallabagApiTestCase
1047 $this->assertSame(403, $this->client->getResponse()->getStatusCode()); 1125 $this->assertSame(403, $this->client->getResponse()->getStatusCode());
1048 } 1126 }
1049 1127
1128 public function testGetEntriesExistsWithNoHashedUrl()
1129 {
1130 $this->client->request('GET', '/api/entries/exists?hashed_url=');
1131
1132 $this->assertSame(403, $this->client->getResponse()->getStatusCode());
1133 }
1134
1050 public function testReloadEntryErrorWhileFetching() 1135 public function testReloadEntryErrorWhileFetching()
1051 { 1136 {
1052 $entry = $this->client->getContainer()->get('doctrine.orm.entity_manager') 1137 $entry = $this->client->getContainer()->get('doctrine.orm.entity_manager')
1053 ->getRepository('WallabagCoreBundle:Entry') 1138 ->getRepository('WallabagCoreBundle:Entry')
1054 ->findByUrlAndUserId('http://0.0.0.0/entry4', 1); 1139 ->findByUrlAndUserId('http://0.0.0.0/entry4', $this->getUserId());
1055 1140
1056 if (!$entry) { 1141 if (!$entry) {
1057 $this->markTestSkipped('No content found in db.'); 1142 $this->markTestSkipped('No content found in db.');
@@ -1087,7 +1172,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
1087 { 1172 {
1088 $entry = $this->client->getContainer()->get('doctrine.orm.entity_manager') 1173 $entry = $this->client->getContainer()->get('doctrine.orm.entity_manager')
1089 ->getRepository('WallabagCoreBundle:Entry') 1174 ->getRepository('WallabagCoreBundle:Entry')
1090 ->findByUrlAndUserId('http://0.0.0.0/entry4', 1); 1175 ->findByUrlAndUserId('http://0.0.0.0/entry4', $this->getUserId());
1091 1176
1092 $tags = $entry->getTags(); 1177 $tags = $entry->getTags();
1093 1178
@@ -1111,7 +1196,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
1111 1196
1112 $entry = $this->client->getContainer()->get('doctrine.orm.entity_manager') 1197 $entry = $this->client->getContainer()->get('doctrine.orm.entity_manager')
1113 ->getRepository('WallabagCoreBundle:Entry') 1198 ->getRepository('WallabagCoreBundle:Entry')
1114 ->findByUrlAndUserId('http://0.0.0.0/entry4', 1); 1199 ->findByUrlAndUserId('http://0.0.0.0/entry4', $this->getUserId());
1115 1200
1116 $tags = $entry->getTags(); 1201 $tags = $entry->getTags();
1117 $this->assertCount(4, $tags); 1202 $this->assertCount(4, $tags);
@@ -1131,7 +1216,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
1131 public function testDeleteEntriesTagsListAction() 1216 public function testDeleteEntriesTagsListAction()
1132 { 1217 {
1133 $em = $this->client->getContainer()->get('doctrine.orm.entity_manager'); 1218 $em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
1134 $entry = new Entry($em->getReference(User::class, 1)); 1219 $entry = new Entry($em->getReference(User::class, $this->getUserId()));
1135 $entry->setUrl('http://0.0.0.0/test-entry'); 1220 $entry->setUrl('http://0.0.0.0/test-entry');
1136 $entry->addTag((new Tag())->setLabel('foo-tag')); 1221 $entry->addTag((new Tag())->setLabel('foo-tag'));
1137 $entry->addTag((new Tag())->setLabel('bar-tag')); 1222 $entry->addTag((new Tag())->setLabel('bar-tag'));
@@ -1199,7 +1284,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
1199 public function testDeleteEntriesListAction() 1284 public function testDeleteEntriesListAction()
1200 { 1285 {
1201 $em = $this->client->getContainer()->get('doctrine.orm.entity_manager'); 1286 $em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
1202 $em->persist((new Entry($em->getReference(User::class, 1)))->setUrl('http://0.0.0.0/test-entry1')); 1287 $em->persist((new Entry($em->getReference(User::class, $this->getUserId())))->setUrl('http://0.0.0.0/test-entry1'));
1203 1288
1204 $em->flush(); 1289 $em->flush();
1205 $em->clear(); 1290 $em->clear();
@@ -1257,7 +1342,7 @@ class EntryRestControllerTest extends WallabagApiTestCase
1257 public function testRePostEntryAndReUsePublishedAt() 1342 public function testRePostEntryAndReUsePublishedAt()
1258 { 1343 {
1259 $em = $this->client->getContainer()->get('doctrine.orm.entity_manager'); 1344 $em = $this->client->getContainer()->get('doctrine.orm.entity_manager');
1260 $entry = new Entry($em->getReference(User::class, 1)); 1345 $entry = new Entry($em->getReference(User::class, $this->getUserId()));
1261 $entry->setTitle('Antoine de Caunes : « Je veux avoir le droit de tâtonner »'); 1346 $entry->setTitle('Antoine de Caunes : « Je veux avoir le droit de tâtonner »');
1262 $entry->setContent('hihi'); 1347 $entry->setContent('hihi');
1263 $entry->setUrl('https://www.lemonde.fr/m-perso/article/2017/06/25/antoine-de-caunes-je-veux-avoir-le-droit-de-tatonner_5150728_4497916.html'); 1348 $entry->setUrl('https://www.lemonde.fr/m-perso/article/2017/06/25/antoine-de-caunes-je-veux-avoir-le-droit-de-tatonner_5150728_4497916.html');
diff --git a/tests/Wallabag/ApiBundle/Controller/SearchRestControllerTest.php b/tests/Wallabag/ApiBundle/Controller/SearchRestControllerTest.php
new file mode 100644
index 00000000..fd524639
--- /dev/null
+++ b/tests/Wallabag/ApiBundle/Controller/SearchRestControllerTest.php
@@ -0,0 +1,69 @@
1<?php
2
3namespace Tests\Wallabag\ApiBundle\Controller;
4
5use Tests\Wallabag\ApiBundle\WallabagApiTestCase;
6
7class SearchRestControllerTest extends WallabagApiTestCase
8{
9 public function testGetSearchWithFullOptions()
10 {
11 $this->client->request('GET', '/api/search', [
12 'page' => 1,
13 'perPage' => 2,
14 'term' => 'entry', // 6 results
15 ]);
16
17 $this->assertSame(200, $this->client->getResponse()->getStatusCode());
18
19 $content = json_decode($this->client->getResponse()->getContent(), true);
20
21 $this->assertGreaterThanOrEqual(1, \count($content));
22 $this->assertArrayHasKey('items', $content['_embedded']);
23 $this->assertGreaterThanOrEqual(0, $content['total']);
24 $this->assertSame(1, $content['page']);
25 $this->assertSame(2, $content['limit']);
26 $this->assertGreaterThanOrEqual(1, $content['pages']);
27
28 $this->assertArrayHasKey('_links', $content);
29 $this->assertArrayHasKey('self', $content['_links']);
30 $this->assertArrayHasKey('first', $content['_links']);
31 $this->assertArrayHasKey('last', $content['_links']);
32
33 foreach (['self', 'first', 'last'] as $link) {
34 $this->assertArrayHasKey('href', $content['_links'][$link]);
35 $this->assertContains('term=entry', $content['_links'][$link]['href']);
36 }
37
38 $this->assertSame('application/json', $this->client->getResponse()->headers->get('Content-Type'));
39 }
40
41 public function testGetSearchWithNoLimit()
42 {
43 $this->client->request('GET', '/api/search', [
44 'term' => 'entry',
45 ]);
46
47 $this->assertSame(200, $this->client->getResponse()->getStatusCode());
48
49 $content = json_decode($this->client->getResponse()->getContent(), true);
50
51 $this->assertGreaterThanOrEqual(1, \count($content));
52 $this->assertArrayHasKey('items', $content['_embedded']);
53 $this->assertGreaterThanOrEqual(0, $content['total']);
54 $this->assertSame(1, $content['page']);
55 $this->assertGreaterThanOrEqual(1, $content['pages']);
56
57 $this->assertArrayHasKey('_links', $content);
58 $this->assertArrayHasKey('self', $content['_links']);
59 $this->assertArrayHasKey('first', $content['_links']);
60 $this->assertArrayHasKey('last', $content['_links']);
61
62 foreach (['self', 'first', 'last'] as $link) {
63 $this->assertArrayHasKey('href', $content['_links'][$link]);
64 $this->assertContains('term=entry', $content['_links'][$link]['href']);
65 }
66
67 $this->assertSame('application/json', $this->client->getResponse()->headers->get('Content-Type'));
68 }
69}
diff --git a/tests/Wallabag/ApiBundle/Controller/WallabagRestControllerTest.php b/tests/Wallabag/ApiBundle/Controller/WallabagRestControllerTest.php
index ac4d6cdc..8b49c0ae 100644
--- a/tests/Wallabag/ApiBundle/Controller/WallabagRestControllerTest.php
+++ b/tests/Wallabag/ApiBundle/Controller/WallabagRestControllerTest.php
@@ -18,4 +18,21 @@ class WallabagRestControllerTest extends WallabagApiTestCase
18 18
19 $this->assertSame($client->getContainer()->getParameter('wallabag_core.version'), $content); 19 $this->assertSame($client->getContainer()->getParameter('wallabag_core.version'), $content);
20 } 20 }
21
22 public function testGetInfo()
23 {
24 // create a new client instead of using $this->client to be sure client isn't authenticated
25 $client = static::createClient();
26 $client->request('GET', '/api/info');
27
28 $this->assertSame(200, $client->getResponse()->getStatusCode());
29
30 $content = json_decode($client->getResponse()->getContent(), true);
31
32 $this->assertArrayHasKey('appname', $content);
33 $this->assertArrayHasKey('version', $content);
34 $this->assertArrayHasKey('allowed_registration', $content);
35
36 $this->assertSame('wallabag', $content['appname']);
37 }
21} 38}
diff --git a/tests/Wallabag/ApiBundle/WallabagApiTestCase.php b/tests/Wallabag/ApiBundle/WallabagApiTestCase.php
index 8a188e1c..fd2e113e 100644
--- a/tests/Wallabag/ApiBundle/WallabagApiTestCase.php
+++ b/tests/Wallabag/ApiBundle/WallabagApiTestCase.php
@@ -31,9 +31,9 @@ abstract class WallabagApiTestCase extends WebTestCase
31 $container = $client->getContainer(); 31 $container = $client->getContainer();
32 32
33 /** @var $userManager \FOS\UserBundle\Doctrine\UserManager */ 33 /** @var $userManager \FOS\UserBundle\Doctrine\UserManager */
34 $userManager = $container->get('fos_user.user_manager'); 34 $userManager = $container->get('fos_user.user_manager.test');
35 /** @var $loginManager \FOS\UserBundle\Security\LoginManager */ 35 /** @var $loginManager \FOS\UserBundle\Security\LoginManager */
36 $loginManager = $container->get('fos_user.security.login_manager'); 36 $loginManager = $container->get('fos_user.security.login_manager.test');
37 $firewallName = $container->getParameter('fos_user.firewall_name'); 37 $firewallName = $container->getParameter('fos_user.firewall_name');
38 38
39 $this->user = $userManager->findUserBy(['username' => 'admin']); 39 $this->user = $userManager->findUserBy(['username' => 'admin']);
@@ -48,4 +48,23 @@ abstract class WallabagApiTestCase extends WebTestCase
48 48
49 return $client; 49 return $client;
50 } 50 }
51
52 /**
53 * Return the ID for the user admin.
54 * Used because on heavy testing we don't want to re-create the database on each run.
55 * Which means "admin" user won't have id 1 all the time.
56 *
57 * @param string $username
58 *
59 * @return int
60 */
61 protected function getUserId($username = 'admin')
62 {
63 return $this->client
64 ->getContainer()
65 ->get('doctrine.orm.entity_manager')
66 ->getRepository('WallabagUserBundle:User')
67 ->findOneByUserName($username)
68 ->getId();
69 }
51} 70}
diff --git a/tests/Wallabag/CoreBundle/Command/GenerateUrlHashesCommandTest.php b/tests/Wallabag/CoreBundle/Command/GenerateUrlHashesCommandTest.php
new file mode 100644
index 00000000..17eed210
--- /dev/null
+++ b/tests/Wallabag/CoreBundle/Command/GenerateUrlHashesCommandTest.php
@@ -0,0 +1,98 @@
1<?php
2
3namespace Tests\Wallabag\CoreBundle\Command;
4
5use Symfony\Bundle\FrameworkBundle\Console\Application;
6use Symfony\Component\Console\Tester\CommandTester;
7use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
8use Wallabag\CoreBundle\Command\GenerateUrlHashesCommand;
9use Wallabag\CoreBundle\Entity\Entry;
10
11class GenerateUrlHashesCommandTest extends WallabagCoreTestCase
12{
13 public function testRunGenerateUrlHashesCommand()
14 {
15 $application = new Application($this->getClient()->getKernel());
16 $application->add(new GenerateUrlHashesCommand());
17
18 $command = $application->find('wallabag:generate-hashed-urls');
19
20 $tester = new CommandTester($command);
21 $tester->execute([
22 'command' => $command->getName(),
23 ]);
24
25 $this->assertContains('Generating hashed urls for "3" users', $tester->getDisplay());
26 $this->assertContains('Finished generated hashed urls', $tester->getDisplay());
27 }
28
29 public function testRunGenerateUrlHashesCommandWithBadUsername()
30 {
31 $application = new Application($this->getClient()->getKernel());
32 $application->add(new GenerateUrlHashesCommand());
33
34 $command = $application->find('wallabag:generate-hashed-urls');
35
36 $tester = new CommandTester($command);
37 $tester->execute([
38 'command' => $command->getName(),
39 'username' => 'unknown',
40 ]);
41
42 $this->assertContains('User "unknown" not found', $tester->getDisplay());
43 }
44
45 public function testRunGenerateUrlHashesCommandForUser()
46 {
47 $application = new Application($this->getClient()->getKernel());
48 $application->add(new GenerateUrlHashesCommand());
49
50 $command = $application->find('wallabag:generate-hashed-urls');
51
52 $tester = new CommandTester($command);
53 $tester->execute([
54 'command' => $command->getName(),
55 'username' => 'admin',
56 ]);
57
58 $this->assertContains('Generated hashed urls for user: admin', $tester->getDisplay());
59 }
60
61 public function testGenerateUrls()
62 {
63 $url = 'http://www.lemonde.fr/sport/visuel/2017/05/05/rondelle-prison-blanchissage-comprendre-le-hockey-sur-glace_5122587_3242.html';
64 $client = $this->getClient();
65 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
66
67 $this->logInAs('admin');
68
69 $user = $em->getRepository('WallabagUserBundle:User')->findOneById($this->getLoggedInUserId());
70
71 $entry1 = new Entry($user);
72 $entry1->setUrl($url);
73
74 $em->persist($entry1);
75 $em->flush();
76
77 $application = new Application($this->getClient()->getKernel());
78 $application->add(new GenerateUrlHashesCommand());
79
80 $command = $application->find('wallabag:generate-hashed-urls');
81
82 $tester = new CommandTester($command);
83 $tester->execute([
84 'command' => $command->getName(),
85 'username' => 'admin',
86 ]);
87
88 $this->assertContains('Generated hashed urls for user: admin', $tester->getDisplay());
89
90 $entry = $em->getRepository('WallabagCoreBundle:Entry')->findOneByUrl($url);
91
92 $this->assertSame($entry->getHashedUrl(), hash('sha1', $url));
93
94 $query = $em->createQuery('DELETE FROM Wallabag\CoreBundle\Entity\Entry e WHERE e.url = :url');
95 $query->setParameter('url', $url);
96 $query->execute();
97 }
98}
diff --git a/tests/Wallabag/CoreBundle/Command/InstallCommandTest.php b/tests/Wallabag/CoreBundle/Command/InstallCommandTest.php
index bd351b18..d8928451 100644
--- a/tests/Wallabag/CoreBundle/Command/InstallCommandTest.php
+++ b/tests/Wallabag/CoreBundle/Command/InstallCommandTest.php
@@ -18,6 +18,18 @@ use Wallabag\CoreBundle\Command\InstallCommand;
18 18
19class InstallCommandTest extends WallabagCoreTestCase 19class InstallCommandTest extends WallabagCoreTestCase
20{ 20{
21 public static function setUpBeforeClass()
22 {
23 // disable doctrine-test-bundle
24 StaticDriver::setKeepStaticConnections(false);
25 }
26
27 public static function tearDownAfterClass()
28 {
29 // enable doctrine-test-bundle
30 StaticDriver::setKeepStaticConnections(true);
31 }
32
21 public function setUp() 33 public function setUp()
22 { 34 {
23 parent::setUp(); 35 parent::setUp();
@@ -51,9 +63,6 @@ class InstallCommandTest extends WallabagCoreTestCase
51 parent::setUp(); 63 parent::setUp();
52 } 64 }
53 65
54 // disable doctrine-test-bundle
55 StaticDriver::setKeepStaticConnections(false);
56
57 $this->resetDatabase($this->getClient()); 66 $this->resetDatabase($this->getClient());
58 } 67 }
59 68
@@ -62,6 +71,7 @@ class InstallCommandTest extends WallabagCoreTestCase
62 $databasePath = getenv('TEST_DATABASE_PATH'); 71 $databasePath = getenv('TEST_DATABASE_PATH');
63 // Remove variable environnement 72 // Remove variable environnement
64 putenv('TEST_DATABASE_PATH'); 73 putenv('TEST_DATABASE_PATH');
74
65 if ($databasePath && file_exists($databasePath)) { 75 if ($databasePath && file_exists($databasePath)) {
66 unlink($databasePath); 76 unlink($databasePath);
67 } else { 77 } else {
@@ -71,8 +81,6 @@ class InstallCommandTest extends WallabagCoreTestCase
71 $this->resetDatabase($client); 81 $this->resetDatabase($client);
72 } 82 }
73 83
74 // enable doctrine-test-bundle
75 StaticDriver::setKeepStaticConnections(true);
76 parent::tearDown(); 84 parent::tearDown();
77 } 85 }
78 86
diff --git a/tests/Wallabag/CoreBundle/Command/ReloadEntryCommandTest.php b/tests/Wallabag/CoreBundle/Command/ReloadEntryCommandTest.php
index b13f6519..c4bd6dac 100644
--- a/tests/Wallabag/CoreBundle/Command/ReloadEntryCommandTest.php
+++ b/tests/Wallabag/CoreBundle/Command/ReloadEntryCommandTest.php
@@ -26,7 +26,7 @@ class ReloadEntryCommandTest extends WallabagCoreTestCase
26 { 26 {
27 parent::setUp(); 27 parent::setUp();
28 28
29 $userRepository = $this->getClient()->getContainer()->get('wallabag_user.user_repository'); 29 $userRepository = $this->getClient()->getContainer()->get('wallabag_user.user_repository.test');
30 30
31 $user = $userRepository->findOneByUserName('admin'); 31 $user = $userRepository->findOneByUserName('admin');
32 $this->adminEntry = new Entry($user); 32 $this->adminEntry = new Entry($user);
@@ -60,7 +60,7 @@ class ReloadEntryCommandTest extends WallabagCoreTestCase
60 60
61 $reloadedEntries = $this->getClient() 61 $reloadedEntries = $this->getClient()
62 ->getContainer() 62 ->getContainer()
63 ->get('wallabag_core.entry_repository') 63 ->get('wallabag_core.entry_repository.test')
64 ->findById([$this->adminEntry->getId(), $this->bobEntry->getId()]); 64 ->findById([$this->adminEntry->getId(), $this->bobEntry->getId()]);
65 65
66 foreach ($reloadedEntries as $reloadedEntry) { 66 foreach ($reloadedEntries as $reloadedEntry) {
@@ -84,7 +84,7 @@ class ReloadEntryCommandTest extends WallabagCoreTestCase
84 'interactive' => false, 84 'interactive' => false,
85 ]); 85 ]);
86 86
87 $entryRepository = $this->getClient()->getContainer()->get('wallabag_core.entry_repository'); 87 $entryRepository = $this->getClient()->getContainer()->get('wallabag_core.entry_repository.test');
88 88
89 $reloadedAdminEntry = $entryRepository->find($this->adminEntry->getId()); 89 $reloadedAdminEntry = $entryRepository->find($this->adminEntry->getId());
90 $this->assertNotEmpty($reloadedAdminEntry->getContent()); 90 $this->assertNotEmpty($reloadedAdminEntry->getContent());
diff --git a/tests/Wallabag/CoreBundle/Command/ShowUserCommandTest.php b/tests/Wallabag/CoreBundle/Command/ShowUserCommandTest.php
index 9b34f2a0..ed383a2c 100644
--- a/tests/Wallabag/CoreBundle/Command/ShowUserCommandTest.php
+++ b/tests/Wallabag/CoreBundle/Command/ShowUserCommandTest.php
@@ -59,7 +59,8 @@ class ShowUserCommandTest extends WallabagCoreTestCase
59 $this->assertContains('Username: admin', $tester->getDisplay()); 59 $this->assertContains('Username: admin', $tester->getDisplay());
60 $this->assertContains('Email: bigboss@wallabag.org', $tester->getDisplay()); 60 $this->assertContains('Email: bigboss@wallabag.org', $tester->getDisplay());
61 $this->assertContains('Display name: Big boss', $tester->getDisplay()); 61 $this->assertContains('Display name: Big boss', $tester->getDisplay());
62 $this->assertContains('2FA activated: no', $tester->getDisplay()); 62 $this->assertContains('2FA (email) activated', $tester->getDisplay());
63 $this->assertContains('2FA (OTP) activated', $tester->getDisplay());
63 } 64 }
64 65
65 public function testShowUser() 66 public function testShowUser()
diff --git a/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php b/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php
index e07c57dd..d8478ce3 100644
--- a/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php
+++ b/tests/Wallabag/CoreBundle/Controller/ConfigControllerTest.php
@@ -1,6 +1,6 @@
1<?php 1<?php
2 2
3namespace tests\Wallabag\CoreBundle\Controller; 3namespace Tests\Wallabag\CoreBundle\Controller;
4 4
5use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; 5use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
6use Wallabag\AnnotationBundle\Entity\Annotation; 6use Wallabag\AnnotationBundle\Entity\Annotation;
@@ -33,7 +33,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
33 $this->assertCount(1, $crawler->filter('button[id=config_save]')); 33 $this->assertCount(1, $crawler->filter('button[id=config_save]'));
34 $this->assertCount(1, $crawler->filter('button[id=change_passwd_save]')); 34 $this->assertCount(1, $crawler->filter('button[id=change_passwd_save]'));
35 $this->assertCount(1, $crawler->filter('button[id=update_user_save]')); 35 $this->assertCount(1, $crawler->filter('button[id=update_user_save]'));
36 $this->assertCount(1, $crawler->filter('button[id=rss_config_save]')); 36 $this->assertCount(1, $crawler->filter('button[id=feed_config_save]'));
37 } 37 }
38 38
39 public function testUpdate() 39 public function testUpdate()
@@ -297,7 +297,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
297 $this->assertContains('flashes.config.notice.user_updated', $alert[0]); 297 $this->assertContains('flashes.config.notice.user_updated', $alert[0]);
298 } 298 }
299 299
300 public function testRssUpdateResetToken() 300 public function testFeedUpdateResetToken()
301 { 301 {
302 $this->logInAs('admin'); 302 $this->logInAs('admin');
303 $client = $this->getClient(); 303 $client = $this->getClient();
@@ -313,7 +313,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
313 } 313 }
314 314
315 $config = $user->getConfig(); 315 $config = $user->getConfig();
316 $config->setRssToken(null); 316 $config->setFeedToken(null);
317 $em->persist($config); 317 $em->persist($config);
318 $em->flush(); 318 $em->flush();
319 319
@@ -322,7 +322,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
322 $this->assertSame(200, $client->getResponse()->getStatusCode()); 322 $this->assertSame(200, $client->getResponse()->getStatusCode());
323 323
324 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); 324 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
325 $this->assertContains('config.form_rss.no_token', $body[0]); 325 $this->assertContains('config.form_feed.no_token', $body[0]);
326 326
327 $client->request('GET', '/generate-token'); 327 $client->request('GET', '/generate-token');
328 $this->assertSame(302, $client->getResponse()->getStatusCode()); 328 $this->assertSame(302, $client->getResponse()->getStatusCode());
@@ -330,7 +330,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
330 $crawler = $client->followRedirect(); 330 $crawler = $client->followRedirect();
331 331
332 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text'])); 332 $this->assertGreaterThan(1, $body = $crawler->filter('body')->extract(['_text']));
333 $this->assertNotContains('config.form_rss.no_token', $body[0]); 333 $this->assertNotContains('config.form_feed.no_token', $body[0]);
334 } 334 }
335 335
336 public function testGenerateTokenAjax() 336 public function testGenerateTokenAjax()
@@ -351,7 +351,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
351 $this->assertArrayHasKey('token', $content); 351 $this->assertArrayHasKey('token', $content);
352 } 352 }
353 353
354 public function testRssUpdate() 354 public function testFeedUpdate()
355 { 355 {
356 $this->logInAs('admin'); 356 $this->logInAs('admin');
357 $client = $this->getClient(); 357 $client = $this->getClient();
@@ -360,10 +360,10 @@ class ConfigControllerTest extends WallabagCoreTestCase
360 360
361 $this->assertSame(200, $client->getResponse()->getStatusCode()); 361 $this->assertSame(200, $client->getResponse()->getStatusCode());
362 362
363 $form = $crawler->filter('button[id=rss_config_save]')->form(); 363 $form = $crawler->filter('button[id=feed_config_save]')->form();
364 364
365 $data = [ 365 $data = [
366 'rss_config[rss_limit]' => 12, 366 'feed_config[feed_limit]' => 12,
367 ]; 367 ];
368 368
369 $client->submit($form, $data); 369 $client->submit($form, $data);
@@ -372,31 +372,31 @@ class ConfigControllerTest extends WallabagCoreTestCase
372 372
373 $crawler = $client->followRedirect(); 373 $crawler = $client->followRedirect();
374 374
375 $this->assertContains('flashes.config.notice.rss_updated', $crawler->filter('body')->extract(['_text'])[0]); 375 $this->assertContains('flashes.config.notice.feed_updated', $crawler->filter('body')->extract(['_text'])[0]);
376 } 376 }
377 377
378 public function dataForRssFailed() 378 public function dataForFeedFailed()
379 { 379 {
380 return [ 380 return [
381 [ 381 [
382 [ 382 [
383 'rss_config[rss_limit]' => 0, 383 'feed_config[feed_limit]' => 0,
384 ], 384 ],
385 'This value should be 1 or more.', 385 'This value should be 1 or more.',
386 ], 386 ],
387 [ 387 [
388 [ 388 [
389 'rss_config[rss_limit]' => 1000000000000, 389 'feed_config[feed_limit]' => 1000000000000,
390 ], 390 ],
391 'validator.rss_limit_too_high', 391 'validator.feed_limit_too_high',
392 ], 392 ],
393 ]; 393 ];
394 } 394 }
395 395
396 /** 396 /**
397 * @dataProvider dataForRssFailed 397 * @dataProvider dataForFeedFailed
398 */ 398 */
399 public function testRssFailed($data, $expectedMessage) 399 public function testFeedFailed($data, $expectedMessage)
400 { 400 {
401 $this->logInAs('admin'); 401 $this->logInAs('admin');
402 $client = $this->getClient(); 402 $client = $this->getClient();
@@ -405,7 +405,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
405 405
406 $this->assertSame(200, $client->getResponse()->getStatusCode()); 406 $this->assertSame(200, $client->getResponse()->getStatusCode());
407 407
408 $form = $crawler->filter('button[id=rss_config_save]')->form(); 408 $form = $crawler->filter('button[id=feed_config_save]')->form();
409 409
410 $crawler = $client->submit($form, $data); 410 $crawler = $client->submit($form, $data);
411 411
@@ -849,7 +849,7 @@ class ConfigControllerTest extends WallabagCoreTestCase
849 $entryArchived->setContent('Youhou'); 849 $entryArchived->setContent('Youhou');
850 $entryArchived->setTitle('Youhou'); 850 $entryArchived->setTitle('Youhou');
851 $entryArchived->addTag($tagArchived); 851 $entryArchived->addTag($tagArchived);
852 $entryArchived->setArchived(true); 852 $entryArchived->updateArchived(true);
853 $em->persist($entryArchived); 853 $em->persist($entryArchived);
854 854
855 $annotationArchived = new Annotation($user); 855 $annotationArchived = new Annotation($user);
@@ -965,4 +965,120 @@ class ConfigControllerTest extends WallabagCoreTestCase
965 965
966 $client->request('GET', '/config/view-mode'); 966 $client->request('GET', '/config/view-mode');
967 } 967 }
968
969 public function testChangeLocaleWithoutReferer()
970 {
971 $client = $this->getClient();
972
973 $client->request('GET', '/locale/de');
974 $client->followRedirect();
975
976 $this->assertSame('de', $client->getRequest()->getLocale());
977 $this->assertSame('de', $client->getContainer()->get('session')->get('_locale'));
978 }
979
980 public function testChangeLocaleWithReferer()
981 {
982 $client = $this->getClient();
983
984 $client->request('GET', '/login');
985 $client->request('GET', '/locale/de');
986 $client->followRedirect();
987
988 $this->assertSame('de', $client->getRequest()->getLocale());
989 $this->assertSame('de', $client->getContainer()->get('session')->get('_locale'));
990 }
991
992 public function testChangeLocaleToBadLocale()
993 {
994 $client = $this->getClient();
995
996 $client->request('GET', '/login');
997 $client->request('GET', '/locale/yuyuyuyu');
998 $client->followRedirect();
999
1000 $this->assertNotSame('yuyuyuyu', $client->getRequest()->getLocale());
1001 $this->assertNotSame('yuyuyuyu', $client->getContainer()->get('session')->get('_locale'));
1002 }
1003
1004 public function testUserEnable2faEmail()
1005 {
1006 $this->logInAs('admin');
1007 $client = $this->getClient();
1008
1009 $crawler = $client->request('GET', '/config/otp/email');
1010
1011 $this->assertSame(302, $client->getResponse()->getStatusCode());
1012
1013 $crawler = $client->followRedirect();
1014
1015 $this->assertGreaterThan(1, $alert = $crawler->filter('body')->extract(['_text']));
1016 $this->assertContains('flashes.config.notice.otp_enabled', $alert[0]);
1017
1018 // restore user
1019 $em = $this->getEntityManager();
1020 $user = $em
1021 ->getRepository('WallabagUserBundle:User')
1022 ->findOneByUsername('admin');
1023
1024 $this->assertTrue($user->isEmailTwoFactor());
1025
1026 $user->setEmailTwoFactor(false);
1027 $em->persist($user);
1028 $em->flush();
1029 }
1030
1031 public function testUserEnable2faGoogle()
1032 {
1033 $this->logInAs('admin');
1034 $client = $this->getClient();
1035
1036 $crawler = $client->request('GET', '/config/otp/app');
1037
1038 $this->assertSame(200, $client->getResponse()->getStatusCode());
1039
1040 // restore user
1041 $em = $this->getEntityManager();
1042 $user = $em
1043 ->getRepository('WallabagUserBundle:User')
1044 ->findOneByUsername('admin');
1045
1046 $this->assertTrue($user->isGoogleTwoFactor());
1047 $this->assertGreaterThan(0, $user->getBackupCodes());
1048
1049 $user->setGoogleAuthenticatorSecret(false);
1050 $user->setBackupCodes(null);
1051 $em->persist($user);
1052 $em->flush();
1053 }
1054
1055 public function testUserEnable2faGoogleCancel()
1056 {
1057 $this->logInAs('admin');
1058 $client = $this->getClient();
1059
1060 $crawler = $client->request('GET', '/config/otp/app');
1061
1062 $this->assertSame(200, $client->getResponse()->getStatusCode());
1063
1064 // restore user
1065 $em = $this->getEntityManager();
1066 $user = $em
1067 ->getRepository('WallabagUserBundle:User')
1068 ->findOneByUsername('admin');
1069
1070 $this->assertTrue($user->isGoogleTwoFactor());
1071 $this->assertGreaterThan(0, $user->getBackupCodes());
1072
1073 $crawler = $client->request('GET', '/config/otp/app/cancel');
1074
1075 $this->assertSame(302, $client->getResponse()->getStatusCode());
1076
1077 $user = $em
1078 ->getRepository('WallabagUserBundle:User')
1079 ->findOneByUsername('admin');
1080
1081 $this->assertFalse($user->isGoogleTwoFactor());
1082 $this->assertEmpty($user->getBackupCodes());
1083 }
968} 1084}
diff --git a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php
index 265e4205..9dee9891 100644
--- a/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php
+++ b/tests/Wallabag/CoreBundle/Controller/EntryControllerTest.php
@@ -522,9 +522,12 @@ class EntryControllerTest extends WallabagCoreTestCase
522 522
523 $crawler = $client->followRedirect(); 523 $crawler = $client->followRedirect();
524 524
525 $this->assertGreaterThan(1, $title = $crawler->filter('div[id=article] h1')->extract(['_text'])); 525 $title = $crawler->filter('div[id=article] h1')->extract(['_text']);
526 $this->assertGreaterThan(1, $title);
526 $this->assertContains('My updated title hehe :)', $title[0]); 527 $this->assertContains('My updated title hehe :)', $title[0]);
527 $this->assertSame(1, \count($stats = $crawler->filter('div[class=tools] ul[class=stats] li a[class=tool]')->extract(['_text']))); 528
529 $stats = $crawler->filter('div[class=tools] ul[class=stats] li a[class=tool]')->extract(['_text']);
530 $this->assertCount(1, $stats);
528 $this->assertNotContains('example.io', trim($stats[0])); 531 $this->assertNotContains('example.io', trim($stats[0]));
529 } 532 }
530 533
@@ -620,7 +623,7 @@ class EntryControllerTest extends WallabagCoreTestCase
620 $content->setMimetype('text/html'); 623 $content->setMimetype('text/html');
621 $content->setTitle('test title entry'); 624 $content->setTitle('test title entry');
622 $content->setContent('This is my content /o/'); 625 $content->setContent('This is my content /o/');
623 $content->setArchived(true); 626 $content->updateArchived(true);
624 $content->setLanguage('fr'); 627 $content->setLanguage('fr');
625 628
626 $em->persist($content); 629 $em->persist($content);
@@ -773,7 +776,7 @@ class EntryControllerTest extends WallabagCoreTestCase
773 776
774 $entry = new Entry($this->getLoggedInUser()); 777 $entry = new Entry($this->getLoggedInUser());
775 $entry->setUrl($this->url); 778 $entry->setUrl($this->url);
776 $entry->setArchived(false); 779 $entry->updateArchived(false);
777 $this->getEntityManager()->persist($entry); 780 $this->getEntityManager()->persist($entry);
778 $this->getEntityManager()->flush(); 781 $this->getEntityManager()->flush();
779 782
@@ -984,8 +987,13 @@ class EntryControllerTest extends WallabagCoreTestCase
984 $client->request('GET', '/share/' . $content->getId()); 987 $client->request('GET', '/share/' . $content->getId());
985 $this->assertSame(302, $client->getResponse()->getStatusCode()); 988 $this->assertSame(302, $client->getResponse()->getStatusCode());
986 989
987 // follow link with uid 990 $shareUrl = $client->getResponse()->getTargetUrl();
988 $crawler = $client->followRedirect(); 991
992 // use a new client to have a fresh empty session (instead of a logged one from the previous client)
993 $client->restart();
994
995 $client->request('GET', $shareUrl);
996
989 $this->assertSame(200, $client->getResponse()->getStatusCode()); 997 $this->assertSame(200, $client->getResponse()->getStatusCode());
990 $this->assertContains('max-age=25200', $client->getResponse()->headers->get('cache-control')); 998 $this->assertContains('max-age=25200', $client->getResponse()->headers->get('cache-control'));
991 $this->assertContains('public', $client->getResponse()->headers->get('cache-control')); 999 $this->assertContains('public', $client->getResponse()->headers->get('cache-control'));
@@ -1001,9 +1009,6 @@ class EntryControllerTest extends WallabagCoreTestCase
1001 $client->request('GET', '/share/' . $content->getUid()); 1009 $client->request('GET', '/share/' . $content->getUid());
1002 $this->assertSame(404, $client->getResponse()->getStatusCode()); 1010 $this->assertSame(404, $client->getResponse()->getStatusCode());
1003 1011
1004 $client->request('GET', '/view/' . $content->getId());
1005 $this->assertContains('no-cache', $client->getResponse()->headers->get('cache-control'));
1006
1007 // removing the share 1012 // removing the share
1008 $client->request('GET', '/share/delete/' . $content->getId()); 1013 $client->request('GET', '/share/delete/' . $content->getId());
1009 $this->assertSame(302, $client->getResponse()->getStatusCode()); 1014 $this->assertSame(302, $client->getResponse()->getStatusCode());
@@ -1244,7 +1249,7 @@ class EntryControllerTest extends WallabagCoreTestCase
1244 $entry = new Entry($this->getLoggedInUser()); 1249 $entry = new Entry($this->getLoggedInUser());
1245 $entry->setUrl('http://0.0.0.0/foo/baz/qux'); 1250 $entry->setUrl('http://0.0.0.0/foo/baz/qux');
1246 $entry->setTitle('Le manège'); 1251 $entry->setTitle('Le manège');
1247 $entry->setArchived(true); 1252 $entry->updateArchived(true);
1248 $this->getEntityManager()->persist($entry); 1253 $this->getEntityManager()->persist($entry);
1249 $this->getEntityManager()->flush(); 1254 $this->getEntityManager()->flush();
1250 1255
@@ -1274,7 +1279,7 @@ class EntryControllerTest extends WallabagCoreTestCase
1274 $entry = new Entry($this->getLoggedInUser()); 1279 $entry = new Entry($this->getLoggedInUser());
1275 $entry->setUrl('http://domain/qux'); 1280 $entry->setUrl('http://domain/qux');
1276 $entry->setTitle('Le manège'); 1281 $entry->setTitle('Le manège');
1277 $entry->setArchived(true); 1282 $entry->updateArchived(true);
1278 $this->getEntityManager()->persist($entry); 1283 $this->getEntityManager()->persist($entry);
1279 $this->getEntityManager()->flush(); 1284 $this->getEntityManager()->flush();
1280 1285
@@ -1325,10 +1330,6 @@ class EntryControllerTest extends WallabagCoreTestCase
1325 'http://www.hao123.com/shequ?__noscript__-=1', 1330 'http://www.hao123.com/shequ?__noscript__-=1',
1326 'zh_CN', 1331 'zh_CN',
1327 ], 1332 ],
1328 'ru' => [
1329 'https://www.kp.ru/daily/26879.7/3921982/',
1330 'ru',
1331 ],
1332 'pt_BR' => [ 1333 'pt_BR' => [
1333 'https://politica.estadao.com.br/noticias/eleicoes,campanha-catatonica,70002491983', 1334 'https://politica.estadao.com.br/noticias/eleicoes,campanha-catatonica,70002491983',
1334 'pt_BR', 1335 'pt_BR',
@@ -1494,4 +1495,30 @@ class EntryControllerTest extends WallabagCoreTestCase
1494 1495
1495 $this->assertSame(sprintf('/remove-tag/%s/%s', $entry->getId(), $tag->getId()), $link); 1496 $this->assertSame(sprintf('/remove-tag/%s/%s', $entry->getId(), $tag->getId()), $link);
1496 } 1497 }
1498
1499 public function testRandom()
1500 {
1501 $this->logInAs('admin');
1502 $client = $this->getClient();
1503
1504 $client->request('GET', '/unread/random');
1505 $this->assertSame(302, $client->getResponse()->getStatusCode());
1506 $this->assertContains('/view/', $client->getResponse()->getTargetUrl(), 'Unread random');
1507
1508 $client->request('GET', '/starred/random');
1509 $this->assertSame(302, $client->getResponse()->getStatusCode());
1510 $this->assertContains('/view/', $client->getResponse()->getTargetUrl(), 'Starred random');
1511
1512 $client->request('GET', '/archive/random');
1513 $this->assertSame(302, $client->getResponse()->getStatusCode());
1514 $this->assertContains('/view/', $client->getResponse()->getTargetUrl(), 'Archive random');
1515
1516 $client->request('GET', '/untagged/random');
1517 $this->assertSame(302, $client->getResponse()->getStatusCode());
1518 $this->assertContains('/view/', $client->getResponse()->getTargetUrl(), 'Untagged random');
1519
1520 $client->request('GET', '/all/random');
1521 $this->assertSame(302, $client->getResponse()->getStatusCode());
1522 $this->assertContains('/view/', $client->getResponse()->getTargetUrl(), 'All random');
1523 }
1497} 1524}
diff --git a/tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php b/tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php
index 0c3d4c83..d7ce7c45 100644
--- a/tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php
+++ b/tests/Wallabag/CoreBundle/Controller/ExportControllerTest.php
@@ -180,7 +180,7 @@ class ExportControllerTest extends WallabagCoreTestCase
180 180
181 $this->assertGreaterThan(1, $csv); 181 $this->assertGreaterThan(1, $csv);
182 // +1 for title line 182 // +1 for title line
183 $this->assertSame(\count($contentInDB) + 1, \count($csv)); 183 $this->assertCount(\count($contentInDB) + 1, $csv);
184 $this->assertSame('Title;URL;Content;Tags;"MIME Type";Language;"Creation date"', $csv[0]); 184 $this->assertSame('Title;URL;Content;Tags;"MIME Type";Language;"Creation date"', $csv[0]);
185 $this->assertContains($contentInDB[0]['title'], $csv[1]); 185 $this->assertContains($contentInDB[0]['title'], $csv[1]);
186 $this->assertContains($contentInDB[0]['url'], $csv[1]); 186 $this->assertContains($contentInDB[0]['url'], $csv[1]);
diff --git a/tests/Wallabag/CoreBundle/Controller/FeedControllerTest.php b/tests/Wallabag/CoreBundle/Controller/FeedControllerTest.php
new file mode 100644
index 00000000..d52d7bb8
--- /dev/null
+++ b/tests/Wallabag/CoreBundle/Controller/FeedControllerTest.php
@@ -0,0 +1,261 @@
1<?php
2
3namespace Tests\Wallabag\CoreBundle\Controller;
4
5use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
6
7class FeedControllerTest extends WallabagCoreTestCase
8{
9 public function validateDom($xml, $type, $nb = null, $tagValue = null)
10 {
11 $doc = new \DOMDocument();
12 $doc->loadXML($xml);
13
14 $xpath = new \DOMXPath($doc);
15 $xpath->registerNamespace('a', 'http://www.w3.org/2005/Atom');
16
17 if (null === $nb) {
18 $this->assertGreaterThan(0, $xpath->query('//a:entry')->length);
19 } else {
20 $this->assertSame($nb, $xpath->query('//a:entry')->length);
21 }
22
23 $this->assertSame(1, $xpath->query('/a:feed')->length);
24
25 $this->assertSame(1, $xpath->query('/a:feed/a:title')->length);
26 $this->assertContains('favicon.ico', $xpath->query('/a:feed/a:icon')->item(0)->nodeValue);
27 $this->assertContains('logo-square.png', $xpath->query('/a:feed/a:logo')->item(0)->nodeValue);
28
29 $this->assertSame(1, $xpath->query('/a:feed/a:updated')->length);
30
31 $this->assertSame(1, $xpath->query('/a:feed/a:generator')->length);
32 $this->assertSame('wallabag', $xpath->query('/a:feed/a:generator')->item(0)->nodeValue);
33 $this->assertSame('admin', $xpath->query('/a:feed/a:author/a:name')->item(0)->nodeValue);
34
35 $this->assertSame(1, $xpath->query('/a:feed/a:subtitle')->length);
36 if (null !== $tagValue && 0 === strpos($type, 'tag')) {
37 $this->assertSame('wallabag — ' . $type . ' ' . $tagValue . ' feed', $xpath->query('/a:feed/a:title')->item(0)->nodeValue);
38 $this->assertSame('Atom feed for entries tagged with ' . $tagValue, $xpath->query('/a:feed/a:subtitle')->item(0)->nodeValue);
39 } else {
40 $this->assertSame('wallabag — ' . $type . ' feed', $xpath->query('/a:feed/a:title')->item(0)->nodeValue);
41 $this->assertSame('Atom feed for ' . $type . ' entries', $xpath->query('/a:feed/a:subtitle')->item(0)->nodeValue);
42 }
43
44 $this->assertSame(1, $xpath->query('/a:feed/a:link[@rel="self"]')->length);
45 $this->assertContains($type, $xpath->query('/a:feed/a:link[@rel="self"]')->item(0)->getAttribute('href'));
46
47 $this->assertSame(1, $xpath->query('/a:feed/a:link[@rel="last"]')->length);
48
49 foreach ($xpath->query('//a:entry') as $item) {
50 $this->assertSame(1, $xpath->query('a:title', $item)->length);
51 $this->assertSame(1, $xpath->query('a:link[@rel="via"]', $item)->length);
52 $this->assertSame(1, $xpath->query('a:link[@rel="alternate"]', $item)->length);
53 $this->assertSame(1, $xpath->query('a:id', $item)->length);
54 $this->assertSame(1, $xpath->query('a:published', $item)->length);
55 $this->assertSame(1, $xpath->query('a:content', $item)->length);
56 }
57 }
58
59 public function dataForBadUrl()
60 {
61 return [
62 [
63 '/feed/admin/YZIOAUZIAO/unread',
64 ],
65 [
66 '/feed/wallace/YZIOAUZIAO/starred',
67 ],
68 [
69 '/feed/wallace/YZIOAUZIAO/archives',
70 ],
71 [
72 '/feed/wallace/YZIOAUZIAO/all',
73 ],
74 ];
75 }
76
77 /**
78 * @dataProvider dataForBadUrl
79 */
80 public function testBadUrl($url)
81 {
82 $client = $this->getClient();
83
84 $client->request('GET', $url);
85
86 $this->assertSame(404, $client->getResponse()->getStatusCode());
87 }
88
89 public function testUnread()
90 {
91 $client = $this->getClient();
92 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
93 $user = $em
94 ->getRepository('WallabagUserBundle:User')
95 ->findOneByUsername('admin');
96
97 $config = $user->getConfig();
98 $config->setFeedToken('SUPERTOKEN');
99 $config->setFeedLimit(2);
100 $em->persist($config);
101 $em->flush();
102
103 $client->request('GET', '/feed/admin/SUPERTOKEN/unread');
104
105 $this->assertSame(200, $client->getResponse()->getStatusCode());
106
107 $this->validateDom($client->getResponse()->getContent(), 'unread', 2);
108 }
109
110 public function testStarred()
111 {
112 $client = $this->getClient();
113 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
114 $user = $em
115 ->getRepository('WallabagUserBundle:User')
116 ->findOneByUsername('admin');
117
118 $config = $user->getConfig();
119 $config->setFeedToken('SUPERTOKEN');
120 $config->setFeedLimit(1);
121 $em->persist($config);
122 $em->flush();
123
124 $client = $this->getClient();
125 $client->request('GET', '/feed/admin/SUPERTOKEN/starred');
126
127 $this->assertSame(200, $client->getResponse()->getStatusCode(), 1);
128
129 $this->validateDom($client->getResponse()->getContent(), 'starred');
130 }
131
132 public function testArchives()
133 {
134 $client = $this->getClient();
135 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
136 $user = $em
137 ->getRepository('WallabagUserBundle:User')
138 ->findOneByUsername('admin');
139
140 $config = $user->getConfig();
141 $config->setFeedToken('SUPERTOKEN');
142 $config->setFeedLimit(null);
143 $em->persist($config);
144 $em->flush();
145
146 $client = $this->getClient();
147 $client->request('GET', '/feed/admin/SUPERTOKEN/archive');
148
149 $this->assertSame(200, $client->getResponse()->getStatusCode());
150
151 $this->validateDom($client->getResponse()->getContent(), 'archive');
152 }
153
154 public function testAll()
155 {
156 $client = $this->getClient();
157 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
158 $user = $em
159 ->getRepository('WallabagUserBundle:User')
160 ->findOneByUsername('admin');
161
162 $config = $user->getConfig();
163 $config->setFeedToken('SUPERTOKEN');
164 $config->setFeedLimit(null);
165 $em->persist($config);
166 $em->flush();
167
168 $client = $this->getClient();
169 $client->request('GET', '/feed/admin/SUPERTOKEN/all');
170
171 $this->assertSame(200, $client->getResponse()->getStatusCode());
172
173 $this->validateDom($client->getResponse()->getContent(), 'all');
174 }
175
176 public function testPagination()
177 {
178 $client = $this->getClient();
179 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
180 $user = $em
181 ->getRepository('WallabagUserBundle:User')
182 ->findOneByUsername('admin');
183
184 $config = $user->getConfig();
185 $config->setFeedToken('SUPERTOKEN');
186 $config->setFeedLimit(1);
187 $em->persist($config);
188 $em->flush();
189
190 $client = $this->getClient();
191
192 $client->request('GET', '/feed/admin/SUPERTOKEN/unread');
193 $this->assertSame(200, $client->getResponse()->getStatusCode());
194 $this->validateDom($client->getResponse()->getContent(), 'unread');
195
196 $client->request('GET', '/feed/admin/SUPERTOKEN/unread/2');
197 $this->assertSame(200, $client->getResponse()->getStatusCode());
198 $this->validateDom($client->getResponse()->getContent(), 'unread');
199
200 $client->request('GET', '/feed/admin/SUPERTOKEN/unread/3000');
201 $this->assertSame(302, $client->getResponse()->getStatusCode());
202 }
203
204 public function testTags()
205 {
206 $client = $this->getClient();
207 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
208 $user = $em
209 ->getRepository('WallabagUserBundle:User')
210 ->findOneByUsername('admin');
211
212 $config = $user->getConfig();
213 $config->setFeedToken('SUPERTOKEN');
214 $config->setFeedLimit(null);
215 $em->persist($config);
216 $em->flush();
217
218 $client = $this->getClient();
219 $client->request('GET', '/feed/admin/SUPERTOKEN/tags/foo');
220
221 $this->assertSame(200, $client->getResponse()->getStatusCode());
222
223 $this->validateDom($client->getResponse()->getContent(), 'tag', 2, 'foo');
224
225 $client->request('GET', '/feed/admin/SUPERTOKEN/tags/foo/3000');
226 $this->assertSame(302, $client->getResponse()->getStatusCode());
227 }
228
229 public function dataForRedirect()
230 {
231 return [
232 [
233 '/admin/YZIOAUZIAO/unread.xml',
234 ],
235 [
236 '/admin/YZIOAUZIAO/starred.xml',
237 ],
238 [
239 '/admin/YZIOAUZIAO/archive.xml',
240 ],
241 [
242 '/admin/YZIOAUZIAO/all.xml',
243 ],
244 [
245 '/admin/YZIOAUZIAO/tags/foo.xml',
246 ],
247 ];
248 }
249
250 /**
251 * @dataProvider dataForRedirect
252 */
253 public function testRedirectFromRssToAtom($url)
254 {
255 $client = $this->getClient();
256
257 $client->request('GET', $url);
258
259 $this->assertSame(301, $client->getResponse()->getStatusCode());
260 }
261}
diff --git a/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php b/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php
deleted file mode 100644
index 2af6e14f..00000000
--- a/tests/Wallabag/CoreBundle/Controller/RssControllerTest.php
+++ /dev/null
@@ -1,221 +0,0 @@
1<?php
2
3namespace Tests\Wallabag\CoreBundle\Controller;
4
5use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
6
7class RssControllerTest extends WallabagCoreTestCase
8{
9 public function validateDom($xml, $type, $urlPagination, $nb = null)
10 {
11 $doc = new \DOMDocument();
12 $doc->loadXML($xml);
13
14 $xpath = new \DOMXpath($doc);
15
16 if (null === $nb) {
17 $this->assertGreaterThan(0, $xpath->query('//item')->length);
18 } else {
19 $this->assertSame($nb, $xpath->query('//item')->length);
20 }
21
22 $this->assertSame(1, $xpath->query('/rss')->length);
23 $this->assertSame(1, $xpath->query('/rss/channel')->length);
24
25 $this->assertSame(1, $xpath->query('/rss/channel/title')->length);
26 $this->assertSame('wallabag - ' . $type . ' feed', $xpath->query('/rss/channel/title')->item(0)->nodeValue);
27
28 $this->assertSame(1, $xpath->query('/rss/channel/pubDate')->length);
29
30 $this->assertSame(1, $xpath->query('/rss/channel/generator')->length);
31 $this->assertSame('wallabag', $xpath->query('/rss/channel/generator')->item(0)->nodeValue);
32
33 $this->assertSame(1, $xpath->query('/rss/channel/description')->length);
34 $this->assertSame('wallabag ' . $type . ' elements', $xpath->query('/rss/channel/description')->item(0)->nodeValue);
35
36 $this->assertSame(1, $xpath->query('/rss/channel/link[@rel="self"]')->length);
37 $this->assertContains($urlPagination . '.xml', $xpath->query('/rss/channel/link[@rel="self"]')->item(0)->getAttribute('href'));
38
39 $this->assertSame(1, $xpath->query('/rss/channel/link[@rel="last"]')->length);
40 $this->assertContains($urlPagination . '.xml?page=', $xpath->query('/rss/channel/link[@rel="last"]')->item(0)->getAttribute('href'));
41
42 foreach ($xpath->query('//item') as $item) {
43 $this->assertSame(1, $xpath->query('title', $item)->length);
44 $this->assertSame(1, $xpath->query('source', $item)->length);
45 $this->assertSame(1, $xpath->query('link', $item)->length);
46 $this->assertSame(1, $xpath->query('guid', $item)->length);
47 $this->assertSame(1, $xpath->query('pubDate', $item)->length);
48 $this->assertSame(1, $xpath->query('description', $item)->length);
49 }
50 }
51
52 public function dataForBadUrl()
53 {
54 return [
55 [
56 '/admin/YZIOAUZIAO/unread.xml',
57 ],
58 [
59 '/wallace/YZIOAUZIAO/starred.xml',
60 ],
61 [
62 '/wallace/YZIOAUZIAO/archives.xml',
63 ],
64 [
65 '/wallace/YZIOAUZIAO/all.xml',
66 ],
67 ];
68 }
69
70 /**
71 * @dataProvider dataForBadUrl
72 */
73 public function testBadUrl($url)
74 {
75 $client = $this->getClient();
76
77 $client->request('GET', $url);
78
79 $this->assertSame(404, $client->getResponse()->getStatusCode());
80 }
81
82 public function testUnread()
83 {
84 $client = $this->getClient();
85 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
86 $user = $em
87 ->getRepository('WallabagUserBundle:User')
88 ->findOneByUsername('admin');
89
90 $config = $user->getConfig();
91 $config->setRssToken('SUPERTOKEN');
92 $config->setRssLimit(2);
93 $em->persist($config);
94 $em->flush();
95
96 $client->request('GET', '/admin/SUPERTOKEN/unread.xml');
97
98 $this->assertSame(200, $client->getResponse()->getStatusCode());
99
100 $this->validateDom($client->getResponse()->getContent(), 'unread', 'unread', 2);
101 }
102
103 public function testStarred()
104 {
105 $client = $this->getClient();
106 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
107 $user = $em
108 ->getRepository('WallabagUserBundle:User')
109 ->findOneByUsername('admin');
110
111 $config = $user->getConfig();
112 $config->setRssToken('SUPERTOKEN');
113 $config->setRssLimit(1);
114 $em->persist($config);
115 $em->flush();
116
117 $client = $this->getClient();
118 $client->request('GET', '/admin/SUPERTOKEN/starred.xml');
119
120 $this->assertSame(200, $client->getResponse()->getStatusCode(), 1);
121
122 $this->validateDom($client->getResponse()->getContent(), 'starred', 'starred');
123 }
124
125 public function testArchives()
126 {
127 $client = $this->getClient();
128 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
129 $user = $em
130 ->getRepository('WallabagUserBundle:User')
131 ->findOneByUsername('admin');
132
133 $config = $user->getConfig();
134 $config->setRssToken('SUPERTOKEN');
135 $config->setRssLimit(null);
136 $em->persist($config);
137 $em->flush();
138
139 $client = $this->getClient();
140 $client->request('GET', '/admin/SUPERTOKEN/archive.xml');
141
142 $this->assertSame(200, $client->getResponse()->getStatusCode());
143
144 $this->validateDom($client->getResponse()->getContent(), 'archive', 'archive');
145 }
146
147 public function testAll()
148 {
149 $client = $this->getClient();
150 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
151 $user = $em
152 ->getRepository('WallabagUserBundle:User')
153 ->findOneByUsername('admin');
154
155 $config = $user->getConfig();
156 $config->setRssToken('SUPERTOKEN');
157 $config->setRssLimit(null);
158 $em->persist($config);
159 $em->flush();
160
161 $client = $this->getClient();
162 $client->request('GET', '/admin/SUPERTOKEN/all.xml');
163
164 $this->assertSame(200, $client->getResponse()->getStatusCode());
165
166 $this->validateDom($client->getResponse()->getContent(), 'all', 'all');
167 }
168
169 public function testPagination()
170 {
171 $client = $this->getClient();
172 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
173 $user = $em
174 ->getRepository('WallabagUserBundle:User')
175 ->findOneByUsername('admin');
176
177 $config = $user->getConfig();
178 $config->setRssToken('SUPERTOKEN');
179 $config->setRssLimit(1);
180 $em->persist($config);
181 $em->flush();
182
183 $client = $this->getClient();
184
185 $client->request('GET', '/admin/SUPERTOKEN/unread.xml');
186 $this->assertSame(200, $client->getResponse()->getStatusCode());
187 $this->validateDom($client->getResponse()->getContent(), 'unread', 'unread');
188
189 $client->request('GET', '/admin/SUPERTOKEN/unread.xml?page=2');
190 $this->assertSame(200, $client->getResponse()->getStatusCode());
191 $this->validateDom($client->getResponse()->getContent(), 'unread', 'unread');
192
193 $client->request('GET', '/admin/SUPERTOKEN/unread.xml?page=3000');
194 $this->assertSame(302, $client->getResponse()->getStatusCode());
195 }
196
197 public function testTags()
198 {
199 $client = $this->getClient();
200 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
201 $user = $em
202 ->getRepository('WallabagUserBundle:User')
203 ->findOneByUsername('admin');
204
205 $config = $user->getConfig();
206 $config->setRssToken('SUPERTOKEN');
207 $config->setRssLimit(null);
208 $em->persist($config);
209 $em->flush();
210
211 $client = $this->getClient();
212 $client->request('GET', '/admin/SUPERTOKEN/tags/foo.xml');
213
214 $this->assertSame(200, $client->getResponse()->getStatusCode());
215
216 $this->validateDom($client->getResponse()->getContent(), 'tag (foo)', 'tags/foo');
217
218 $client->request('GET', '/admin/SUPERTOKEN/tags/foo.xml?page=3000');
219 $this->assertSame(302, $client->getResponse()->getStatusCode());
220 }
221}
diff --git a/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php b/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php
index 395208a2..93019b1f 100644
--- a/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php
+++ b/tests/Wallabag/CoreBundle/Controller/SecurityControllerTest.php
@@ -13,7 +13,7 @@ class SecurityControllerTest extends WallabagCoreTestCase
13 $client->followRedirects(); 13 $client->followRedirects();
14 14
15 $crawler = $client->request('GET', '/config'); 15 $crawler = $client->request('GET', '/config');
16 $this->assertContains('config.form_rss.description', $crawler->filter('body')->extract(['_text'])[0]); 16 $this->assertContains('config.form_feed.description', $crawler->filter('body')->extract(['_text'])[0]);
17 } 17 }
18 18
19 public function testLoginWithout2Factor() 19 public function testLoginWithout2Factor()
@@ -23,10 +23,10 @@ class SecurityControllerTest extends WallabagCoreTestCase
23 $client->followRedirects(); 23 $client->followRedirects();
24 24
25 $crawler = $client->request('GET', '/config'); 25 $crawler = $client->request('GET', '/config');
26 $this->assertContains('config.form_rss.description', $crawler->filter('body')->extract(['_text'])[0]); 26 $this->assertContains('config.form_feed.description', $crawler->filter('body')->extract(['_text'])[0]);
27 } 27 }
28 28
29 public function testLoginWith2Factor() 29 public function testLoginWith2FactorEmail()
30 { 30 {
31 $client = $this->getClient(); 31 $client = $this->getClient();
32 32
@@ -42,7 +42,7 @@ class SecurityControllerTest extends WallabagCoreTestCase
42 $user = $em 42 $user = $em
43 ->getRepository('WallabagUserBundle:User') 43 ->getRepository('WallabagUserBundle:User')
44 ->findOneByUsername('admin'); 44 ->findOneByUsername('admin');
45 $user->setTwoFactorAuthentication(true); 45 $user->setEmailTwoFactor(true);
46 $em->persist($user); 46 $em->persist($user);
47 $em->flush(); 47 $em->flush();
48 48
@@ -54,12 +54,12 @@ class SecurityControllerTest extends WallabagCoreTestCase
54 $user = $em 54 $user = $em
55 ->getRepository('WallabagUserBundle:User') 55 ->getRepository('WallabagUserBundle:User')
56 ->findOneByUsername('admin'); 56 ->findOneByUsername('admin');
57 $user->setTwoFactorAuthentication(false); 57 $user->setEmailTwoFactor(false);
58 $em->persist($user); 58 $em->persist($user);
59 $em->flush(); 59 $em->flush();
60 } 60 }
61 61
62 public function testTrustedComputer() 62 public function testLoginWith2FactorGoogle()
63 { 63 {
64 $client = $this->getClient(); 64 $client = $this->getClient();
65 65
@@ -69,15 +69,27 @@ class SecurityControllerTest extends WallabagCoreTestCase
69 return; 69 return;
70 } 70 }
71 71
72 $client->followRedirects();
73
72 $em = $client->getContainer()->get('doctrine.orm.entity_manager'); 74 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
73 $user = $em 75 $user = $em
74 ->getRepository('WallabagUserBundle:User') 76 ->getRepository('WallabagUserBundle:User')
75 ->findOneByUsername('admin'); 77 ->findOneByUsername('admin');
78 $user->setGoogleAuthenticatorSecret('26LDIHYGHNELOQEM');
79 $em->persist($user);
80 $em->flush();
81
82 $this->logInAsUsingHttp('admin');
83 $crawler = $client->request('GET', '/config');
84 $this->assertContains('scheb_two_factor.trusted', $crawler->filter('body')->extract(['_text'])[0]);
76 85
77 $date = new \DateTime(); 86 // restore user
78 $user->addTrustedComputer('ABCDEF', $date->add(new \DateInterval('P1M'))); 87 $user = $em
79 $this->assertTrue($user->isTrustedComputer('ABCDEF')); 88 ->getRepository('WallabagUserBundle:User')
80 $this->assertFalse($user->isTrustedComputer('FEDCBA')); 89 ->findOneByUsername('admin');
90 $user->setGoogleAuthenticatorSecret(null);
91 $em->persist($user);
92 $em->flush();
81 } 93 }
82 94
83 public function testEnabledRegistration() 95 public function testEnabledRegistration()
diff --git a/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php b/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php
index 768f4c07..be17dcf5 100644
--- a/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php
+++ b/tests/Wallabag/CoreBundle/Controller/TagControllerTest.php
@@ -176,4 +176,49 @@ class TagControllerTest extends WallabagCoreTestCase
176 $em->remove($tag); 176 $em->remove($tag);
177 $em->flush(); 177 $em->flush();
178 } 178 }
179
180 public function testRenameTagUsingTheFormInsideTagList()
181 {
182 $this->logInAs('admin');
183 $client = $this->getClient();
184
185 $tag = new Tag();
186 $tag->setLabel($this->tagName);
187 $entry = new Entry($this->getLoggedInUser());
188 $entry->setUrl('http://0.0.0.0/foo');
189 $entry->addTag($tag);
190 $this->getEntityManager()->persist($entry);
191 $this->getEntityManager()->flush();
192 $this->getEntityManager()->clear();
193
194 // We make a first request to set an history and test redirection after tag deletion
195 $crawler = $client->request('GET', '/tag/list');
196 $form = $crawler->filter('#tag-' . $tag->getId() . ' form')->form();
197
198 $data = [
199 'tag[label]' => 'specific label',
200 ];
201
202 $client->submit($form, $data);
203 $this->assertSame(302, $client->getResponse()->getStatusCode());
204
205 $freshEntry = $client->getContainer()
206 ->get('doctrine.orm.entity_manager')
207 ->getRepository('WallabagCoreBundle:Entry')
208 ->find($entry->getId());
209
210 $tags = $freshEntry->getTags()->toArray();
211 foreach ($tags as $key => $item) {
212 $tags[$key] = $item->getLabel();
213 }
214
215 $this->assertFalse(array_search($tag->getLabel(), $tags, true), 'Previous tag is not attach to entry anymore.');
216
217 $newTag = $client->getContainer()
218 ->get('doctrine.orm.entity_manager')
219 ->getRepository('WallabagCoreBundle:Tag')
220 ->findOneByLabel('specific label');
221 $this->assertInstanceOf(Tag::class, $newTag, 'Tag "specific label" exists.');
222 $this->assertTrue($newTag->hasEntry($freshEntry), 'Tag "specific label" is assigned to the entry.');
223 }
179} 224}
diff --git a/tests/Wallabag/CoreBundle/Event/Listener/UserLocaleListenerTest.php b/tests/Wallabag/CoreBundle/Event/Listener/UserLocaleListenerTest.php
index 93edfde8..ff0a9602 100644
--- a/tests/Wallabag/CoreBundle/Event/Listener/UserLocaleListenerTest.php
+++ b/tests/Wallabag/CoreBundle/Event/Listener/UserLocaleListenerTest.php
@@ -56,4 +56,27 @@ class UserLocaleListenerTest extends TestCase
56 56
57 $this->assertNull($session->get('_locale')); 57 $this->assertNull($session->get('_locale'));
58 } 58 }
59
60 public function testWithLanguageFromSession()
61 {
62 $session = new Session(new MockArraySessionStorage());
63 $listener = new UserLocaleListener($session);
64 $session->set('_locale', 'de');
65
66 $user = new User();
67 $user->setEnabled(true);
68
69 $config = new Config($user);
70 $config->setLanguage('fr');
71
72 $user->setConfig($config);
73
74 $userToken = new UsernamePasswordToken($user, '', 'test');
75 $request = Request::create('/');
76 $event = new InteractiveLoginEvent($request, $userToken);
77
78 $listener->onInteractiveLogin($event);
79
80 $this->assertSame('de', $session->get('_locale'));
81 }
59} 82}
diff --git a/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php b/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php
index 845762dc..9e0a9136 100644
--- a/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php
+++ b/tests/Wallabag/CoreBundle/GuzzleSiteAuthenticator/GrabySiteConfigBuilderTest.php
@@ -12,6 +12,8 @@ use Wallabag\CoreBundle\GuzzleSiteAuthenticator\GrabySiteConfigBuilder;
12 12
13class GrabySiteConfigBuilderTest extends WallabagCoreTestCase 13class GrabySiteConfigBuilderTest extends WallabagCoreTestCase
14{ 14{
15 private $builder;
16
15 public function testBuildConfigExists() 17 public function testBuildConfigExists()
16 { 18 {
17 $grabyConfigBuilderMock = $this->getMockBuilder('Graby\SiteConfig\ConfigBuilder') 19 $grabyConfigBuilderMock = $this->getMockBuilder('Graby\SiteConfig\ConfigBuilder')
@@ -29,7 +31,7 @@ class GrabySiteConfigBuilderTest extends WallabagCoreTestCase
29 $grabyConfigBuilderMock 31 $grabyConfigBuilderMock
30 ->method('buildForHost') 32 ->method('buildForHost')
31 ->with('api.example.com') 33 ->with('api.example.com')
32 ->will($this->returnValue($grabySiteConfig)); 34 ->willReturn($grabySiteConfig);
33 35
34 $logger = new Logger('foo'); 36 $logger = new Logger('foo');
35 $handler = new TestHandler(); 37 $handler = new TestHandler();
@@ -88,7 +90,7 @@ class GrabySiteConfigBuilderTest extends WallabagCoreTestCase
88 $grabyConfigBuilderMock 90 $grabyConfigBuilderMock
89 ->method('buildForHost') 91 ->method('buildForHost')
90 ->with('unknown.com') 92 ->with('unknown.com')
91 ->will($this->returnValue(new GrabySiteConfig())); 93 ->willReturn(new GrabySiteConfig());
92 94
93 $logger = new Logger('foo'); 95 $logger = new Logger('foo');
94 $handler = new TestHandler(); 96 $handler = new TestHandler();
@@ -130,6 +132,73 @@ class GrabySiteConfigBuilderTest extends WallabagCoreTestCase
130 $this->assertCount(1, $records, 'One log was recorded'); 132 $this->assertCount(1, $records, 'One log was recorded');
131 } 133 }
132 134
135 public function testBuildConfigWithBadExtraFields()
136 {
137 $grabyConfigBuilderMock = $this->getMockBuilder('Graby\SiteConfig\ConfigBuilder')
138 ->disableOriginalConstructor()
139 ->getMock();
140
141 $grabySiteConfig = new GrabySiteConfig();
142 $grabySiteConfig->requires_login = true;
143 $grabySiteConfig->login_uri = 'http://www.example.com/login';
144 $grabySiteConfig->login_username_field = 'login';
145 $grabySiteConfig->login_password_field = 'password';
146 $grabySiteConfig->login_extra_fields = ['field'];
147 $grabySiteConfig->not_logged_in_xpath = '//div[@class="need-login"]';
148
149 $grabyConfigBuilderMock
150 ->method('buildForHost')
151 ->with('example.com')
152 ->willReturn($grabySiteConfig);
153
154 $logger = new Logger('foo');
155 $handler = new TestHandler();
156 $logger->pushHandler($handler);
157
158 $siteCrentialRepo = $this->getMockBuilder('Wallabag\CoreBundle\Repository\SiteCredentialRepository')
159 ->disableOriginalConstructor()
160 ->getMock();
161 $siteCrentialRepo->expects($this->once())
162 ->method('findOneByHostsAndUser')
163 ->with(['example.com', '.com'], 1)
164 ->willReturn(['username' => 'foo', 'password' => 'bar']);
165
166 $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User')
167 ->disableOriginalConstructor()
168 ->getMock();
169 $user->expects($this->once())
170 ->method('getId')
171 ->willReturn(1);
172
173 $token = new UsernamePasswordToken($user, 'pass', 'provider');
174
175 $tokenStorage = new TokenStorage();
176 $tokenStorage->setToken($token);
177
178 $this->builder = new GrabySiteConfigBuilder(
179 $grabyConfigBuilderMock,
180 $tokenStorage,
181 $siteCrentialRepo,
182 $logger
183 );
184
185 $config = $this->builder->buildForHost('www.example.com');
186
187 $this->assertSame('example.com', $config->getHost());
188 $this->assertTrue($config->requiresLogin());
189 $this->assertSame('http://www.example.com/login', $config->getLoginUri());
190 $this->assertSame('login', $config->getUsernameField());
191 $this->assertSame('password', $config->getPasswordField());
192 $this->assertSame([], $config->getExtraFields());
193 $this->assertSame('//div[@class="need-login"]', $config->getNotLoggedInXpath());
194 $this->assertSame('foo', $config->getUsername());
195 $this->assertSame('bar', $config->getPassword());
196
197 $records = $handler->getRecords();
198
199 $this->assertCount(1, $records, 'One log was recorded');
200 }
201
133 public function testBuildConfigUserNotDefined() 202 public function testBuildConfigUserNotDefined()
134 { 203 {
135 $grabyConfigBuilderMock = $this->getMockBuilder('\Graby\SiteConfig\ConfigBuilder') 204 $grabyConfigBuilderMock = $this->getMockBuilder('\Graby\SiteConfig\ConfigBuilder')
@@ -139,7 +208,7 @@ class GrabySiteConfigBuilderTest extends WallabagCoreTestCase
139 $grabyConfigBuilderMock 208 $grabyConfigBuilderMock
140 ->method('buildForHost') 209 ->method('buildForHost')
141 ->with('unknown.com') 210 ->with('unknown.com')
142 ->will($this->returnValue(new GrabySiteConfig())); 211 ->willReturn(new GrabySiteConfig());
143 212
144 $logger = new Logger('foo'); 213 $logger = new Logger('foo');
145 $handler = new TestHandler(); 214 $handler = new TestHandler();
@@ -210,7 +279,7 @@ class GrabySiteConfigBuilderTest extends WallabagCoreTestCase
210 $grabyConfigBuilderMock 279 $grabyConfigBuilderMock
211 ->method('buildForHost') 280 ->method('buildForHost')
212 ->with($host) 281 ->with($host)
213 ->will($this->returnValue($grabySiteConfig)); 282 ->willReturn($grabySiteConfig);
214 283
215 $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User') 284 $user = $this->getMockBuilder('Wallabag\UserBundle\Entity\User')
216 ->disableOriginalConstructor() 285 ->disableOriginalConstructor()
diff --git a/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php b/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php
index 3dd9273c..c7caac1d 100644
--- a/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php
+++ b/tests/Wallabag/CoreBundle/Helper/ContentProxyTest.php
@@ -163,7 +163,7 @@ class ContentProxyTest extends TestCase
163 163
164 $this->assertSame('http://1.1.1.1', $entry->getUrl()); 164 $this->assertSame('http://1.1.1.1', $entry->getUrl());
165 $this->assertSame('this is my title', $entry->getTitle()); 165 $this->assertSame('this is my title', $entry->getTitle());
166 $this->assertContains('this is my content', $entry->getContent()); 166 $this->assertContains('content', $entry->getContent());
167 $this->assertSame('http://3.3.3.3/cover.jpg', $entry->getPreviewPicture()); 167 $this->assertSame('http://3.3.3.3/cover.jpg', $entry->getPreviewPicture());
168 $this->assertSame('text/html', $entry->getMimetype()); 168 $this->assertSame('text/html', $entry->getMimetype());
169 $this->assertSame('fr', $entry->getLanguage()); 169 $this->assertSame('fr', $entry->getLanguage());
@@ -205,7 +205,7 @@ class ContentProxyTest extends TestCase
205 205
206 $this->assertSame('http://1.1.1.1', $entry->getUrl()); 206 $this->assertSame('http://1.1.1.1', $entry->getUrl());
207 $this->assertSame('this is my title', $entry->getTitle()); 207 $this->assertSame('this is my title', $entry->getTitle());
208 $this->assertContains('this is my content', $entry->getContent()); 208 $this->assertContains('content', $entry->getContent());
209 $this->assertNull($entry->getPreviewPicture()); 209 $this->assertNull($entry->getPreviewPicture());
210 $this->assertSame('text/html', $entry->getMimetype()); 210 $this->assertSame('text/html', $entry->getMimetype());
211 $this->assertSame('fr', $entry->getLanguage()); 211 $this->assertSame('fr', $entry->getLanguage());
@@ -214,6 +214,90 @@ class ContentProxyTest extends TestCase
214 $this->assertSame('1.1.1.1', $entry->getDomainName()); 214 $this->assertSame('1.1.1.1', $entry->getDomainName());
215 } 215 }
216 216
217 public function testWithContentAndContentImage()
218 {
219 $tagger = $this->getTaggerMock();
220 $tagger->expects($this->once())
221 ->method('tag');
222
223 $graby = $this->getMockBuilder('Graby\Graby')
224 ->setMethods(['fetchContent'])
225 ->disableOriginalConstructor()
226 ->getMock();
227
228 $graby->expects($this->any())
229 ->method('fetchContent')
230 ->willReturn([
231 'html' => "<h1>Test</h1><p><img src='http://3.3.3.3/cover.jpg'/></p>",
232 'title' => 'this is my title',
233 'url' => 'http://1.1.1.1',
234 'content_type' => 'text/html',
235 'language' => 'fr',
236 'status' => '200',
237 'open_graph' => [
238 'og_title' => 'my OG title',
239 'og_description' => 'OG desc',
240 'og_image' => null,
241 ],
242 ]);
243
244 $proxy = new ContentProxy($graby, $tagger, $this->getValidator(), $this->getLogger(), $this->fetchingErrorMessage);
245 $entry = new Entry(new User());
246 $proxy->updateEntry($entry, 'http://0.0.0.0');
247
248 $this->assertSame('http://1.1.1.1', $entry->getUrl());
249 $this->assertSame('this is my title', $entry->getTitle());
250 $this->assertSame("<h1>Test</h1><p><img src='http://3.3.3.3/cover.jpg'/></p>", $entry->getContent());
251 $this->assertSame('http://3.3.3.3/cover.jpg', $entry->getPreviewPicture());
252 $this->assertSame('text/html', $entry->getMimetype());
253 $this->assertSame('fr', $entry->getLanguage());
254 $this->assertSame('200', $entry->getHttpStatus());
255 $this->assertSame(0.0, $entry->getReadingTime());
256 $this->assertSame('1.1.1.1', $entry->getDomainName());
257 }
258
259 public function testWithContentImageAndOgImage()
260 {
261 $tagger = $this->getTaggerMock();
262 $tagger->expects($this->once())
263 ->method('tag');
264
265 $graby = $this->getMockBuilder('Graby\Graby')
266 ->setMethods(['fetchContent'])
267 ->disableOriginalConstructor()
268 ->getMock();
269
270 $graby->expects($this->any())
271 ->method('fetchContent')
272 ->willReturn([
273 'html' => "<h1>Test</h1><p><img src='http://3.3.3.3/nevermind.jpg'/></p>",
274 'title' => 'this is my title',
275 'url' => 'http://1.1.1.1',
276 'content_type' => 'text/html',
277 'language' => 'fr',
278 'status' => '200',
279 'open_graph' => [
280 'og_title' => 'my OG title',
281 'og_description' => 'OG desc',
282 'og_image' => 'http://3.3.3.3/cover.jpg',
283 ],
284 ]);
285
286 $proxy = new ContentProxy($graby, $tagger, $this->getValidator(), $this->getLogger(), $this->fetchingErrorMessage);
287 $entry = new Entry(new User());
288 $proxy->updateEntry($entry, 'http://0.0.0.0');
289
290 $this->assertSame('http://1.1.1.1', $entry->getUrl());
291 $this->assertSame('this is my title', $entry->getTitle());
292 $this->assertSame("<h1>Test</h1><p><img src='http://3.3.3.3/nevermind.jpg'/></p>", $entry->getContent());
293 $this->assertSame('http://3.3.3.3/cover.jpg', $entry->getPreviewPicture());
294 $this->assertSame('text/html', $entry->getMimetype());
295 $this->assertSame('fr', $entry->getLanguage());
296 $this->assertSame('200', $entry->getHttpStatus());
297 $this->assertSame(0.0, $entry->getReadingTime());
298 $this->assertSame('1.1.1.1', $entry->getDomainName());
299 }
300
217 public function testWithContentAndBadLanguage() 301 public function testWithContentAndBadLanguage()
218 { 302 {
219 $tagger = $this->getTaggerMock(); 303 $tagger = $this->getTaggerMock();
@@ -247,7 +331,7 @@ class ContentProxyTest extends TestCase
247 331
248 $this->assertSame('http://1.1.1.1', $entry->getUrl()); 332 $this->assertSame('http://1.1.1.1', $entry->getUrl());
249 $this->assertSame('this is my title', $entry->getTitle()); 333 $this->assertSame('this is my title', $entry->getTitle());
250 $this->assertContains('this is my content', $entry->getContent()); 334 $this->assertContains('content', $entry->getContent());
251 $this->assertSame('text/html', $entry->getMimetype()); 335 $this->assertSame('text/html', $entry->getMimetype());
252 $this->assertNull($entry->getLanguage()); 336 $this->assertNull($entry->getLanguage());
253 $this->assertSame('200', $entry->getHttpStatus()); 337 $this->assertSame('200', $entry->getHttpStatus());
@@ -296,7 +380,7 @@ class ContentProxyTest extends TestCase
296 380
297 $this->assertSame('http://1.1.1.1', $entry->getUrl()); 381 $this->assertSame('http://1.1.1.1', $entry->getUrl());
298 $this->assertSame('this is my title', $entry->getTitle()); 382 $this->assertSame('this is my title', $entry->getTitle());
299 $this->assertContains('this is my content', $entry->getContent()); 383 $this->assertContains('content', $entry->getContent());
300 $this->assertNull($entry->getPreviewPicture()); 384 $this->assertNull($entry->getPreviewPicture());
301 $this->assertSame('text/html', $entry->getMimetype()); 385 $this->assertSame('text/html', $entry->getMimetype());
302 $this->assertSame('fr', $entry->getLanguage()); 386 $this->assertSame('fr', $entry->getLanguage());
@@ -332,7 +416,7 @@ class ContentProxyTest extends TestCase
332 416
333 $this->assertSame('http://1.1.1.1', $entry->getUrl()); 417 $this->assertSame('http://1.1.1.1', $entry->getUrl());
334 $this->assertSame('this is my title', $entry->getTitle()); 418 $this->assertSame('this is my title', $entry->getTitle());
335 $this->assertContains('this is my content', $entry->getContent()); 419 $this->assertContains('content', $entry->getContent());
336 $this->assertSame('text/html', $entry->getMimetype()); 420 $this->assertSame('text/html', $entry->getMimetype());
337 $this->assertSame('fr', $entry->getLanguage()); 421 $this->assertSame('fr', $entry->getLanguage());
338 $this->assertSame(4.0, $entry->getReadingTime()); 422 $this->assertSame(4.0, $entry->getReadingTime());
@@ -371,7 +455,7 @@ class ContentProxyTest extends TestCase
371 455
372 $this->assertSame('http://1.1.1.1', $entry->getUrl()); 456 $this->assertSame('http://1.1.1.1', $entry->getUrl());
373 $this->assertSame('this is my title', $entry->getTitle()); 457 $this->assertSame('this is my title', $entry->getTitle());
374 $this->assertContains('this is my content', $entry->getContent()); 458 $this->assertContains('content', $entry->getContent());
375 $this->assertSame('text/html', $entry->getMimetype()); 459 $this->assertSame('text/html', $entry->getMimetype());
376 $this->assertSame('fr', $entry->getLanguage()); 460 $this->assertSame('fr', $entry->getLanguage());
377 $this->assertSame(4.0, $entry->getReadingTime()); 461 $this->assertSame(4.0, $entry->getReadingTime());
@@ -406,7 +490,7 @@ class ContentProxyTest extends TestCase
406 490
407 $this->assertSame('http://1.1.1.1', $entry->getUrl()); 491 $this->assertSame('http://1.1.1.1', $entry->getUrl());
408 $this->assertSame('this is my title', $entry->getTitle()); 492 $this->assertSame('this is my title', $entry->getTitle());
409 $this->assertContains('this is my content', $entry->getContent()); 493 $this->assertContains('content', $entry->getContent());
410 $this->assertSame('text/html', $entry->getMimetype()); 494 $this->assertSame('text/html', $entry->getMimetype());
411 $this->assertSame('fr', $entry->getLanguage()); 495 $this->assertSame('fr', $entry->getLanguage());
412 $this->assertSame(4.0, $entry->getReadingTime()); 496 $this->assertSame(4.0, $entry->getReadingTime());
@@ -415,7 +499,7 @@ class ContentProxyTest extends TestCase
415 499
416 $records = $handler->getRecords(); 500 $records = $handler->getRecords();
417 501
418 $this->assertCount(1, $records); 502 $this->assertCount(3, $records);
419 $this->assertContains('Error while defining date', $records[0]['message']); 503 $this->assertContains('Error while defining date', $records[0]['message']);
420 } 504 }
421 505
diff --git a/tests/Wallabag/CoreBundle/Helper/RedirectTest.php b/tests/Wallabag/CoreBundle/Helper/RedirectTest.php
index 04e1a59c..29e12cbe 100644
--- a/tests/Wallabag/CoreBundle/Helper/RedirectTest.php
+++ b/tests/Wallabag/CoreBundle/Helper/RedirectTest.php
@@ -17,6 +17,9 @@ class RedirectTest extends TestCase
17 /** @var Redirect */ 17 /** @var Redirect */
18 private $redirect; 18 private $redirect;
19 19
20 /** @var UsernamePasswordToken */
21 private $token;
22
20 public function setUp() 23 public function setUp()
21 { 24 {
22 $this->routerMock = $this->getMockBuilder('Symfony\Component\Routing\Router') 25 $this->routerMock = $this->getMockBuilder('Symfony\Component\Routing\Router')
diff --git a/tests/Wallabag/CoreBundle/ParamConverter/UsernameRssTokenConverterTest.php b/tests/Wallabag/CoreBundle/ParamConverter/UsernameFeedTokenConverterTest.php
index b044a700..48c82dde 100644
--- a/tests/Wallabag/CoreBundle/ParamConverter/UsernameRssTokenConverterTest.php
+++ b/tests/Wallabag/CoreBundle/ParamConverter/UsernameFeedTokenConverterTest.php
@@ -1,19 +1,19 @@
1<?php 1<?php
2 2
3namespace Tests\Wallabag\CoreBundle\Command; 3namespace Tests\Wallabag\CoreBundle\ParamConverter;
4 4
5use PHPUnit\Framework\TestCase; 5use PHPUnit\Framework\TestCase;
6use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter; 6use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
7use Symfony\Component\HttpFoundation\Request; 7use Symfony\Component\HttpFoundation\Request;
8use Wallabag\CoreBundle\ParamConverter\UsernameRssTokenConverter; 8use Wallabag\CoreBundle\ParamConverter\UsernameFeedTokenConverter;
9use Wallabag\UserBundle\Entity\User; 9use Wallabag\UserBundle\Entity\User;
10 10
11class UsernameRssTokenConverterTest extends TestCase 11class UsernameFeedTokenConverterTest extends TestCase
12{ 12{
13 public function testSupportsWithNoRegistry() 13 public function testSupportsWithNoRegistry()
14 { 14 {
15 $params = new ParamConverter([]); 15 $params = new ParamConverter([]);
16 $converter = new UsernameRssTokenConverter(); 16 $converter = new UsernameFeedTokenConverter();
17 17
18 $this->assertFalse($converter->supports($params)); 18 $this->assertFalse($converter->supports($params));
19 } 19 }
@@ -26,10 +26,10 @@ class UsernameRssTokenConverterTest extends TestCase
26 26
27 $registry->expects($this->once()) 27 $registry->expects($this->once())
28 ->method('getManagers') 28 ->method('getManagers')
29 ->will($this->returnValue([])); 29 ->willReturn([]);
30 30
31 $params = new ParamConverter([]); 31 $params = new ParamConverter([]);
32 $converter = new UsernameRssTokenConverter($registry); 32 $converter = new UsernameFeedTokenConverter($registry);
33 33
34 $this->assertFalse($converter->supports($params)); 34 $this->assertFalse($converter->supports($params));
35 } 35 }
@@ -42,10 +42,10 @@ class UsernameRssTokenConverterTest extends TestCase
42 42
43 $registry->expects($this->once()) 43 $registry->expects($this->once())
44 ->method('getManagers') 44 ->method('getManagers')
45 ->will($this->returnValue(['default' => null])); 45 ->willReturn(['default' => null]);
46 46
47 $params = new ParamConverter([]); 47 $params = new ParamConverter([]);
48 $converter = new UsernameRssTokenConverter($registry); 48 $converter = new UsernameFeedTokenConverter($registry);
49 49
50 $this->assertFalse($converter->supports($params)); 50 $this->assertFalse($converter->supports($params));
51 } 51 }
@@ -58,7 +58,7 @@ class UsernameRssTokenConverterTest extends TestCase
58 58
59 $meta->expects($this->once()) 59 $meta->expects($this->once())
60 ->method('getName') 60 ->method('getName')
61 ->will($this->returnValue('nothingrelated')); 61 ->willReturn('nothingrelated');
62 62
63 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager') 63 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager')
64 ->disableOriginalConstructor() 64 ->disableOriginalConstructor()
@@ -67,7 +67,7 @@ class UsernameRssTokenConverterTest extends TestCase
67 $em->expects($this->once()) 67 $em->expects($this->once())
68 ->method('getClassMetadata') 68 ->method('getClassMetadata')
69 ->with('superclass') 69 ->with('superclass')
70 ->will($this->returnValue($meta)); 70 ->willReturn($meta);
71 71
72 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry') 72 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
73 ->disableOriginalConstructor() 73 ->disableOriginalConstructor()
@@ -75,15 +75,15 @@ class UsernameRssTokenConverterTest extends TestCase
75 75
76 $registry->expects($this->once()) 76 $registry->expects($this->once())
77 ->method('getManagers') 77 ->method('getManagers')
78 ->will($this->returnValue(['default' => null])); 78 ->willReturn(['default' => null]);
79 79
80 $registry->expects($this->once()) 80 $registry->expects($this->once())
81 ->method('getManagerForClass') 81 ->method('getManagerForClass')
82 ->with('superclass') 82 ->with('superclass')
83 ->will($this->returnValue($em)); 83 ->willReturn($em);
84 84
85 $params = new ParamConverter(['class' => 'superclass']); 85 $params = new ParamConverter(['class' => 'superclass']);
86 $converter = new UsernameRssTokenConverter($registry); 86 $converter = new UsernameFeedTokenConverter($registry);
87 87
88 $this->assertFalse($converter->supports($params)); 88 $this->assertFalse($converter->supports($params));
89 } 89 }
@@ -96,7 +96,7 @@ class UsernameRssTokenConverterTest extends TestCase
96 96
97 $meta->expects($this->once()) 97 $meta->expects($this->once())
98 ->method('getName') 98 ->method('getName')
99 ->will($this->returnValue('Wallabag\UserBundle\Entity\User')); 99 ->willReturn('Wallabag\UserBundle\Entity\User');
100 100
101 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager') 101 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager')
102 ->disableOriginalConstructor() 102 ->disableOriginalConstructor()
@@ -105,7 +105,7 @@ class UsernameRssTokenConverterTest extends TestCase
105 $em->expects($this->once()) 105 $em->expects($this->once())
106 ->method('getClassMetadata') 106 ->method('getClassMetadata')
107 ->with('WallabagUserBundle:User') 107 ->with('WallabagUserBundle:User')
108 ->will($this->returnValue($meta)); 108 ->willReturn($meta);
109 109
110 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry') 110 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
111 ->disableOriginalConstructor() 111 ->disableOriginalConstructor()
@@ -113,15 +113,15 @@ class UsernameRssTokenConverterTest extends TestCase
113 113
114 $registry->expects($this->once()) 114 $registry->expects($this->once())
115 ->method('getManagers') 115 ->method('getManagers')
116 ->will($this->returnValue(['default' => null])); 116 ->willReturn(['default' => null]);
117 117
118 $registry->expects($this->once()) 118 $registry->expects($this->once())
119 ->method('getManagerForClass') 119 ->method('getManagerForClass')
120 ->with('WallabagUserBundle:User') 120 ->with('WallabagUserBundle:User')
121 ->will($this->returnValue($em)); 121 ->willReturn($em);
122 122
123 $params = new ParamConverter(['class' => 'WallabagUserBundle:User']); 123 $params = new ParamConverter(['class' => 'WallabagUserBundle:User']);
124 $converter = new UsernameRssTokenConverter($registry); 124 $converter = new UsernameFeedTokenConverter($registry);
125 125
126 $this->assertTrue($converter->supports($params)); 126 $this->assertTrue($converter->supports($params));
127 } 127 }
@@ -129,7 +129,7 @@ class UsernameRssTokenConverterTest extends TestCase
129 public function testApplyEmptyRequest() 129 public function testApplyEmptyRequest()
130 { 130 {
131 $params = new ParamConverter([]); 131 $params = new ParamConverter([]);
132 $converter = new UsernameRssTokenConverter(); 132 $converter = new UsernameFeedTokenConverter();
133 133
134 $res = $converter->apply(new Request(), $params); 134 $res = $converter->apply(new Request(), $params);
135 135
@@ -147,9 +147,9 @@ class UsernameRssTokenConverterTest extends TestCase
147 ->getMock(); 147 ->getMock();
148 148
149 $repo->expects($this->once()) 149 $repo->expects($this->once())
150 ->method('findOneByUsernameAndRsstoken') 150 ->method('findOneByUsernameAndFeedToken')
151 ->with('test', 'test') 151 ->with('test', 'test')
152 ->will($this->returnValue(null)); 152 ->willReturn(null);
153 153
154 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager') 154 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager')
155 ->disableOriginalConstructor() 155 ->disableOriginalConstructor()
@@ -158,7 +158,7 @@ class UsernameRssTokenConverterTest extends TestCase
158 $em->expects($this->once()) 158 $em->expects($this->once())
159 ->method('getRepository') 159 ->method('getRepository')
160 ->with('WallabagUserBundle:User') 160 ->with('WallabagUserBundle:User')
161 ->will($this->returnValue($repo)); 161 ->willReturn($repo);
162 162
163 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry') 163 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
164 ->disableOriginalConstructor() 164 ->disableOriginalConstructor()
@@ -167,10 +167,10 @@ class UsernameRssTokenConverterTest extends TestCase
167 $registry->expects($this->once()) 167 $registry->expects($this->once())
168 ->method('getManagerForClass') 168 ->method('getManagerForClass')
169 ->with('WallabagUserBundle:User') 169 ->with('WallabagUserBundle:User')
170 ->will($this->returnValue($em)); 170 ->willReturn($em);
171 171
172 $params = new ParamConverter(['class' => 'WallabagUserBundle:User']); 172 $params = new ParamConverter(['class' => 'WallabagUserBundle:User']);
173 $converter = new UsernameRssTokenConverter($registry); 173 $converter = new UsernameFeedTokenConverter($registry);
174 $request = new Request([], [], ['username' => 'test', 'token' => 'test']); 174 $request = new Request([], [], ['username' => 'test', 'token' => 'test']);
175 175
176 $converter->apply($request, $params); 176 $converter->apply($request, $params);
@@ -185,9 +185,9 @@ class UsernameRssTokenConverterTest extends TestCase
185 ->getMock(); 185 ->getMock();
186 186
187 $repo->expects($this->once()) 187 $repo->expects($this->once())
188 ->method('findOneByUsernameAndRsstoken') 188 ->method('findOneByUsernameAndFeedtoken')
189 ->with('test', 'test') 189 ->with('test', 'test')
190 ->will($this->returnValue($user)); 190 ->willReturn($user);
191 191
192 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager') 192 $em = $this->getMockBuilder('Doctrine\Common\Persistence\ObjectManager')
193 ->disableOriginalConstructor() 193 ->disableOriginalConstructor()
@@ -196,7 +196,7 @@ class UsernameRssTokenConverterTest extends TestCase
196 $em->expects($this->once()) 196 $em->expects($this->once())
197 ->method('getRepository') 197 ->method('getRepository')
198 ->with('WallabagUserBundle:User') 198 ->with('WallabagUserBundle:User')
199 ->will($this->returnValue($repo)); 199 ->willReturn($repo);
200 200
201 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry') 201 $registry = $this->getMockBuilder('Doctrine\Common\Persistence\ManagerRegistry')
202 ->disableOriginalConstructor() 202 ->disableOriginalConstructor()
@@ -205,10 +205,10 @@ class UsernameRssTokenConverterTest extends TestCase
205 $registry->expects($this->once()) 205 $registry->expects($this->once())
206 ->method('getManagerForClass') 206 ->method('getManagerForClass')
207 ->with('WallabagUserBundle:User') 207 ->with('WallabagUserBundle:User')
208 ->will($this->returnValue($em)); 208 ->willReturn($em);
209 209
210 $params = new ParamConverter(['class' => 'WallabagUserBundle:User', 'name' => 'user']); 210 $params = new ParamConverter(['class' => 'WallabagUserBundle:User', 'name' => 'user']);
211 $converter = new UsernameRssTokenConverter($registry); 211 $converter = new UsernameFeedTokenConverter($registry);
212 $request = new Request([], [], ['username' => 'test', 'token' => 'test']); 212 $request = new Request([], [], ['username' => 'test', 'token' => 'test']);
213 213
214 $converter->apply($request, $params); 214 $converter->apply($request, $params);
diff --git a/tests/Wallabag/CoreBundle/Twig/WallabagExtensionTest.php b/tests/Wallabag/CoreBundle/Twig/WallabagExtensionTest.php
index bb92f745..39fcec16 100644
--- a/tests/Wallabag/CoreBundle/Twig/WallabagExtensionTest.php
+++ b/tests/Wallabag/CoreBundle/Twig/WallabagExtensionTest.php
@@ -32,6 +32,31 @@ class WallabagExtensionTest extends TestCase
32 $this->assertSame('gist.github.com', $extension->removeWww('gist.github.com')); 32 $this->assertSame('gist.github.com', $extension->removeWww('gist.github.com'));
33 } 33 }
34 34
35 public function testRemoveScheme()
36 {
37 $entryRepository = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository')
38 ->disableOriginalConstructor()
39 ->getMock();
40
41 $tagRepository = $this->getMockBuilder('Wallabag\CoreBundle\Repository\TagRepository')
42 ->disableOriginalConstructor()
43 ->getMock();
44
45 $tokenStorage = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')
46 ->disableOriginalConstructor()
47 ->getMock();
48
49 $translator = $this->getMockBuilder('Symfony\Component\Translation\TranslatorInterface')
50 ->disableOriginalConstructor()
51 ->getMock();
52
53 $extension = new WallabagExtension($entryRepository, $tagRepository, $tokenStorage, 0, $translator);
54
55 $this->assertSame('lemonde.fr', $extension->removeScheme('lemonde.fr'));
56 $this->assertSame('gist.github.com', $extension->removeScheme('gist.github.com'));
57 $this->assertSame('gist.github.com', $extension->removeScheme('https://gist.github.com'));
58 }
59
35 public function testRemoveSchemeAndWww() 60 public function testRemoveSchemeAndWww()
36 { 61 {
37 $entryRepository = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository') 62 $entryRepository = $this->getMockBuilder('Wallabag\CoreBundle\Repository\EntryRepository')
diff --git a/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php b/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php
index 6e1163c5..816d22f4 100644
--- a/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php
+++ b/tests/Wallabag/CoreBundle/WallabagCoreTestCase.php
@@ -84,8 +84,8 @@ abstract class WallabagCoreTestCase extends WebTestCase
84 $container = $this->client->getContainer(); 84 $container = $this->client->getContainer();
85 $session = $container->get('session'); 85 $session = $container->get('session');
86 86
87 $userManager = $container->get('fos_user.user_manager'); 87 $userManager = $container->get('fos_user.user_manager.test');
88 $loginManager = $container->get('fos_user.security.login_manager'); 88 $loginManager = $container->get('fos_user.security.login_manager.test');
89 $firewallName = $container->getParameter('fos_user.firewall_name'); 89 $firewallName = $container->getParameter('fos_user.firewall_name');
90 90
91 $user = $userManager->findUserBy(['username' => $username]); 91 $user = $userManager->findUserBy(['username' => $username]);
diff --git a/tests/Wallabag/ImportBundle/Command/ImportCommandTest.php b/tests/Wallabag/ImportBundle/Command/ImportCommandTest.php
index f95320a4..8e1c528d 100644
--- a/tests/Wallabag/ImportBundle/Command/ImportCommandTest.php
+++ b/tests/Wallabag/ImportBundle/Command/ImportCommandTest.php
@@ -84,6 +84,8 @@ class ImportCommandTest extends WallabagCoreTestCase
84 84
85 public function testRunImportCommandWithUserId() 85 public function testRunImportCommandWithUserId()
86 { 86 {
87 $this->logInAs('admin');
88
87 $application = new Application($this->getClient()->getKernel()); 89 $application = new Application($this->getClient()->getKernel());
88 $application->add(new ImportCommand()); 90 $application->add(new ImportCommand());
89 91
@@ -92,7 +94,7 @@ class ImportCommandTest extends WallabagCoreTestCase
92 $tester = new CommandTester($command); 94 $tester = new CommandTester($command);
93 $tester->execute([ 95 $tester->execute([
94 'command' => $command->getName(), 96 'command' => $command->getName(),
95 'username' => 1, 97 'username' => $this->getLoggedInUserId(),
96 'filepath' => $application->getKernel()->getContainer()->getParameter('kernel.project_dir') . '/tests/Wallabag/ImportBundle/fixtures/wallabag-v2-read.json', 98 'filepath' => $application->getKernel()->getContainer()->getParameter('kernel.project_dir') . '/tests/Wallabag/ImportBundle/fixtures/wallabag-v2-read.json',
97 '--useUserId' => true, 99 '--useUserId' => true,
98 '--importer' => 'v2', 100 '--importer' => 'v2',
diff --git a/tests/Wallabag/ImportBundle/Consumer/AMQPEntryConsumerTest.php b/tests/Wallabag/ImportBundle/Consumer/AMQPEntryConsumerTest.php
index b2141c04..b7f6192d 100644
--- a/tests/Wallabag/ImportBundle/Consumer/AMQPEntryConsumerTest.php
+++ b/tests/Wallabag/ImportBundle/Consumer/AMQPEntryConsumerTest.php
@@ -1,6 +1,6 @@
1<?php 1<?php
2 2
3namespace Tests\Wallabag\ImportBundle\Consumer\AMQP; 3namespace Tests\Wallabag\ImportBundle\Consumer;
4 4
5use PhpAmqpLib\Message\AMQPMessage; 5use PhpAmqpLib\Message\AMQPMessage;
6use PHPUnit\Framework\TestCase; 6use PHPUnit\Framework\TestCase;
diff --git a/tests/Wallabag/ImportBundle/Consumer/RedisEntryConsumerTest.php b/tests/Wallabag/ImportBundle/Consumer/RedisEntryConsumerTest.php
index 61337e47..e1bd8827 100644
--- a/tests/Wallabag/ImportBundle/Consumer/RedisEntryConsumerTest.php
+++ b/tests/Wallabag/ImportBundle/Consumer/RedisEntryConsumerTest.php
@@ -1,6 +1,6 @@
1<?php 1<?php
2 2
3namespace Tests\Wallabag\ImportBundle\Consumer\AMQP; 3namespace Tests\Wallabag\ImportBundle\Consumer;
4 4
5use PHPUnit\Framework\TestCase; 5use PHPUnit\Framework\TestCase;
6use Wallabag\CoreBundle\Entity\Entry; 6use Wallabag\CoreBundle\Entity\Entry;
diff --git a/tests/Wallabag/ImportBundle/Controller/ChromeControllerTest.php b/tests/Wallabag/ImportBundle/Controller/ChromeControllerTest.php
index cd3e41e9..d3ffbb6d 100644
--- a/tests/Wallabag/ImportBundle/Controller/ChromeControllerTest.php
+++ b/tests/Wallabag/ImportBundle/Controller/ChromeControllerTest.php
@@ -121,7 +121,7 @@ class ChromeControllerTest extends WallabagCoreTestCase
121 $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content); 121 $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content);
122 $this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for http://www.usinenouvelle.com is ok'); 122 $this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for http://www.usinenouvelle.com is ok');
123 $this->assertNotEmpty($content->getLanguage(), 'Language for http://www.usinenouvelle.com is ok'); 123 $this->assertNotEmpty($content->getLanguage(), 'Language for http://www.usinenouvelle.com is ok');
124 $this->assertSame(1, \count($content->getTags())); 124 $this->assertCount(1, $content->getTags());
125 125
126 $createdAt = $content->getCreatedAt(); 126 $createdAt = $content->getCreatedAt();
127 $this->assertSame('2011', $createdAt->format('Y')); 127 $this->assertSame('2011', $createdAt->format('Y'));
diff --git a/tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php b/tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php
index dc5ed6d0..3e64f2e5 100644
--- a/tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php
+++ b/tests/Wallabag/ImportBundle/Controller/FirefoxControllerTest.php
@@ -122,7 +122,7 @@ class FirefoxControllerTest extends WallabagCoreTestCase
122 $this->assertNotEmpty($content->getMimetype(), 'Mimetype for http://lexpansion.lexpress.fr is ok'); 122 $this->assertNotEmpty($content->getMimetype(), 'Mimetype for http://lexpansion.lexpress.fr is ok');
123 $this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for http://lexpansion.lexpress.fr is ok'); 123 $this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for http://lexpansion.lexpress.fr is ok');
124 $this->assertNotEmpty($content->getLanguage(), 'Language for http://lexpansion.lexpress.fr is ok'); 124 $this->assertNotEmpty($content->getLanguage(), 'Language for http://lexpansion.lexpress.fr is ok');
125 $this->assertSame(3, \count($content->getTags())); 125 $this->assertCount(3, $content->getTags());
126 126
127 $content = $client->getContainer() 127 $content = $client->getContainer()
128 ->get('doctrine.orm.entity_manager') 128 ->get('doctrine.orm.entity_manager')
diff --git a/tests/Wallabag/ImportBundle/Controller/InstapaperControllerTest.php b/tests/Wallabag/ImportBundle/Controller/InstapaperControllerTest.php
index 7390fa88..05347767 100644
--- a/tests/Wallabag/ImportBundle/Controller/InstapaperControllerTest.php
+++ b/tests/Wallabag/ImportBundle/Controller/InstapaperControllerTest.php
@@ -124,7 +124,7 @@ class InstapaperControllerTest extends WallabagCoreTestCase
124 $this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for https://www.liberation.fr is ok'); 124 $this->assertNotEmpty($content->getPreviewPicture(), 'Preview picture for https://www.liberation.fr is ok');
125 $this->assertNotEmpty($content->getLanguage(), 'Language for https://www.liberation.fr is ok'); 125 $this->assertNotEmpty($content->getLanguage(), 'Language for https://www.liberation.fr is ok');
126 $this->assertContains('foot', $content->getTags(), 'It includes the "foot" tag'); 126 $this->assertContains('foot', $content->getTags(), 'It includes the "foot" tag');
127 $this->assertSame(1, \count($content->getTags())); 127 $this->assertCount(1, $content->getTags());
128 $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt()); 128 $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt());
129 129
130 $content = $client->getContainer() 130 $content = $client->getContainer()
@@ -138,7 +138,7 @@ class InstapaperControllerTest extends WallabagCoreTestCase
138 $this->assertContains('foot', $content->getTags()); 138 $this->assertContains('foot', $content->getTags());
139 $this->assertContains('test_tag', $content->getTags()); 139 $this->assertContains('test_tag', $content->getTags());
140 140
141 $this->assertSame(2, \count($content->getTags())); 141 $this->assertCount(2, $content->getTags());
142 } 142 }
143 143
144 public function testImportInstapaperWithFileAndMarkAllAsRead() 144 public function testImportInstapaperWithFileAndMarkAllAsRead()
diff --git a/tests/Wallabag/ImportBundle/Controller/PinboardControllerTest.php b/tests/Wallabag/ImportBundle/Controller/PinboardControllerTest.php
index 80819f45..15646d55 100644
--- a/tests/Wallabag/ImportBundle/Controller/PinboardControllerTest.php
+++ b/tests/Wallabag/ImportBundle/Controller/PinboardControllerTest.php
@@ -127,7 +127,7 @@ class PinboardControllerTest extends WallabagCoreTestCase
127 $this->assertContains('foot', $tags, 'It includes the "foot" tag'); 127 $this->assertContains('foot', $tags, 'It includes the "foot" tag');
128 $this->assertContains('varnish', $tags, 'It includes the "varnish" tag'); 128 $this->assertContains('varnish', $tags, 'It includes the "varnish" tag');
129 $this->assertContains('php', $tags, 'It includes the "php" tag'); 129 $this->assertContains('php', $tags, 'It includes the "php" tag');
130 $this->assertSame(3, \count($tags)); 130 $this->assertCount(3, $tags);
131 131
132 $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt()); 132 $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt());
133 $this->assertSame('2016-10-26', $content->getCreatedAt()->format('Y-m-d')); 133 $this->assertSame('2016-10-26', $content->getCreatedAt()->format('Y-m-d'));
diff --git a/tests/Wallabag/ImportBundle/Controller/ReadabilityControllerTest.php b/tests/Wallabag/ImportBundle/Controller/ReadabilityControllerTest.php
index 5619659a..4f2f4053 100644
--- a/tests/Wallabag/ImportBundle/Controller/ReadabilityControllerTest.php
+++ b/tests/Wallabag/ImportBundle/Controller/ReadabilityControllerTest.php
@@ -125,7 +125,7 @@ class ReadabilityControllerTest extends WallabagCoreTestCase
125 125
126 $tags = $content->getTags(); 126 $tags = $content->getTags();
127 $this->assertContains('foot', $tags, 'It includes the "foot" tag'); 127 $this->assertContains('foot', $tags, 'It includes the "foot" tag');
128 $this->assertSame(1, \count($tags)); 128 $this->assertCount(1, $tags);
129 129
130 $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt()); 130 $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt());
131 $this->assertSame('2016-09-08', $content->getCreatedAt()->format('Y-m-d')); 131 $this->assertSame('2016-09-08', $content->getCreatedAt()->format('Y-m-d'));
diff --git a/tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php b/tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php
index c67941a7..2a8e7c89 100644
--- a/tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php
+++ b/tests/Wallabag/ImportBundle/Controller/WallabagV1ControllerTest.php
@@ -121,13 +121,13 @@ class WallabagV1ControllerTest extends WallabagCoreTestCase
121 121
122 $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content); 122 $this->assertInstanceOf('Wallabag\CoreBundle\Entity\Entry', $content);
123 $this->assertEmpty($content->getMimetype(), 'Mimetype for http://www.framablog.org is empty'); 123 $this->assertEmpty($content->getMimetype(), 'Mimetype for http://www.framablog.org is empty');
124 $this->assertEmpty($content->getPreviewPicture(), 'Preview picture for http://www.framablog.org is empty'); 124 $this->assertSame($content->getPreviewPicture(), 'http://www.framablog.org/public/_img/framablog/wallaby_baby.jpg');
125 $this->assertEmpty($content->getLanguage(), 'Language for http://www.framablog.org is empty'); 125 $this->assertEmpty($content->getLanguage(), 'Language for http://www.framablog.org is empty');
126 126
127 $tags = $content->getTags(); 127 $tags = $content->getTags();
128 $this->assertContains('foot', $tags, 'It includes the "foot" tag'); 128 $this->assertContains('foot', $tags, 'It includes the "foot" tag');
129 $this->assertContains('framabag', $tags, 'It includes the "framabag" tag'); 129 $this->assertContains('framabag', $tags, 'It includes the "framabag" tag');
130 $this->assertSame(2, \count($tags)); 130 $this->assertCount(2, $tags);
131 131
132 $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt()); 132 $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt());
133 } 133 }
diff --git a/tests/Wallabag/ImportBundle/Controller/WallabagV2ControllerTest.php b/tests/Wallabag/ImportBundle/Controller/WallabagV2ControllerTest.php
index 822656ba..b606e26a 100644
--- a/tests/Wallabag/ImportBundle/Controller/WallabagV2ControllerTest.php
+++ b/tests/Wallabag/ImportBundle/Controller/WallabagV2ControllerTest.php
@@ -128,7 +128,7 @@ class WallabagV2ControllerTest extends WallabagCoreTestCase
128 128
129 $tags = $content->getTags(); 129 $tags = $content->getTags();
130 $this->assertContains('foot', $tags, 'It includes the "foot" tag'); 130 $this->assertContains('foot', $tags, 'It includes the "foot" tag');
131 $this->assertSame(1, \count($tags)); 131 $this->assertCount(1, $tags);
132 132
133 $content = $client->getContainer() 133 $content = $client->getContainer()
134 ->get('doctrine.orm.entity_manager') 134 ->get('doctrine.orm.entity_manager')
@@ -147,7 +147,7 @@ class WallabagV2ControllerTest extends WallabagCoreTestCase
147 $this->assertContains('foot', $tags, 'It includes the "foot" tag'); 147 $this->assertContains('foot', $tags, 'It includes the "foot" tag');
148 $this->assertContains('mediapart', $tags, 'It includes the "mediapart" tag'); 148 $this->assertContains('mediapart', $tags, 'It includes the "mediapart" tag');
149 $this->assertContains('blog', $tags, 'It includes the "blog" tag'); 149 $this->assertContains('blog', $tags, 'It includes the "blog" tag');
150 $this->assertSame(3, \count($tags)); 150 $this->assertCount(3, $tags);
151 151
152 $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt()); 152 $this->assertInstanceOf(\DateTime::class, $content->getCreatedAt());
153 $this->assertSame('2016-09-08', $content->getCreatedAt()->format('Y-m-d')); 153 $this->assertSame('2016-09-08', $content->getCreatedAt()->format('Y-m-d'));
diff --git a/tests/Wallabag/UserBundle/Controller/ManageControllerTest.php b/tests/Wallabag/UserBundle/Controller/ManageControllerTest.php
index adc2cf09..f44e6fbf 100644
--- a/tests/Wallabag/UserBundle/Controller/ManageControllerTest.php
+++ b/tests/Wallabag/UserBundle/Controller/ManageControllerTest.php
@@ -1,6 +1,6 @@
1<?php 1<?php
2 2
3namespace Wallabag\UserBundle\Tests\Controller; 3namespace Tests\Wallabag\UserBundle\Controller;
4 4
5use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; 5use Tests\Wallabag\CoreBundle\WallabagCoreTestCase;
6 6
diff --git a/tests/Wallabag/UserBundle/EventListener/CreateConfigListenerTest.php b/tests/Wallabag/UserBundle/EventListener/CreateConfigListenerTest.php
index 2b540fdf..d976c4ac 100644
--- a/tests/Wallabag/UserBundle/EventListener/CreateConfigListenerTest.php
+++ b/tests/Wallabag/UserBundle/EventListener/CreateConfigListenerTest.php
@@ -8,6 +8,8 @@ use PHPUnit\Framework\TestCase;
8use Symfony\Component\EventDispatcher\EventDispatcher; 8use Symfony\Component\EventDispatcher\EventDispatcher;
9use Symfony\Component\HttpFoundation\Request; 9use Symfony\Component\HttpFoundation\Request;
10use Symfony\Component\HttpFoundation\Response; 10use Symfony\Component\HttpFoundation\Response;
11use Symfony\Component\HttpFoundation\Session\Session;
12use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
11use Wallabag\CoreBundle\Entity\Config; 13use Wallabag\CoreBundle\Entity\Config;
12use Wallabag\UserBundle\Entity\User; 14use Wallabag\UserBundle\Entity\User;
13use Wallabag\UserBundle\EventListener\CreateConfigListener; 15use Wallabag\UserBundle\EventListener\CreateConfigListener;
@@ -22,6 +24,7 @@ class CreateConfigListenerTest extends TestCase
22 24
23 protected function setUp() 25 protected function setUp()
24 { 26 {
27 $session = new Session(new MockArraySessionStorage());
25 $this->em = $this->getMockBuilder('Doctrine\ORM\EntityManager') 28 $this->em = $this->getMockBuilder('Doctrine\ORM\EntityManager')
26 ->disableOriginalConstructor() 29 ->disableOriginalConstructor()
27 ->getMock(); 30 ->getMock();
@@ -34,7 +37,8 @@ class CreateConfigListenerTest extends TestCase
34 'fr', 37 'fr',
35 1, 38 1,
36 1, 39 1,
37 1 40 1,
41 $session
38 ); 42 );
39 43
40 $this->dispatcher = new EventDispatcher(); 44 $this->dispatcher = new EventDispatcher();
@@ -58,13 +62,13 @@ class CreateConfigListenerTest extends TestCase
58 $config = new Config($user); 62 $config = new Config($user);
59 $config->setTheme('baggy'); 63 $config->setTheme('baggy');
60 $config->setItemsPerPage(20); 64 $config->setItemsPerPage(20);
61 $config->setRssLimit(50); 65 $config->setFeedLimit(50);
62 $config->setLanguage('fr'); 66 $config->setLanguage('fr');
63 $config->setReadingSpeed(1); 67 $config->setReadingSpeed(1);
64 68
65 $this->em->expects($this->once()) 69 $this->em->expects($this->once())
66 ->method('persist') 70 ->method('persist')
67 ->will($this->returnValue($config)); 71 ->willReturn($config);
68 $this->em->expects($this->once()) 72 $this->em->expects($this->once())
69 ->method('flush'); 73 ->method('flush');
70 74
diff --git a/tests/Wallabag/UserBundle/Mailer/AuthCodeMailerTest.php b/tests/Wallabag/UserBundle/Mailer/AuthCodeMailerTest.php
index aa176068..1713c10c 100644
--- a/tests/Wallabag/UserBundle/Mailer/AuthCodeMailerTest.php
+++ b/tests/Wallabag/UserBundle/Mailer/AuthCodeMailerTest.php
@@ -6,22 +6,6 @@ use PHPUnit\Framework\TestCase;
6use Wallabag\UserBundle\Entity\User; 6use Wallabag\UserBundle\Entity\User;
7use Wallabag\UserBundle\Mailer\AuthCodeMailer; 7use Wallabag\UserBundle\Mailer\AuthCodeMailer;
8 8
9/**
10 * @see https://www.pmg.com/blog/integration-testing-swift-mailer/
11 */
12final class CountableMemorySpool extends \Swift_MemorySpool implements \Countable
13{
14 public function count()
15 {
16 return \count($this->messages);
17 }
18
19 public function getMessages()
20 {
21 return $this->messages;
22 }
23}
24
25class AuthCodeMailerTest extends TestCase 9class AuthCodeMailerTest extends TestCase
26{ 10{
27 protected $mailer; 11 protected $mailer;
@@ -49,7 +33,7 @@ TWIG;
49 public function testSendEmail() 33 public function testSendEmail()
50 { 34 {
51 $user = new User(); 35 $user = new User();
52 $user->setTwoFactorAuthentication(true); 36 $user->setEmailTwoFactor(true);
53 $user->setEmailAuthCode(666666); 37 $user->setEmailAuthCode(666666);
54 $user->setEmail('test@wallabag.io'); 38 $user->setEmail('test@wallabag.io');
55 $user->setName('Bob'); 39 $user->setName('Bob');
diff --git a/tests/Wallabag/UserBundle/Mailer/CountableMemorySpool.php b/tests/Wallabag/UserBundle/Mailer/CountableMemorySpool.php
new file mode 100644
index 00000000..53f240a1
--- /dev/null
+++ b/tests/Wallabag/UserBundle/Mailer/CountableMemorySpool.php
@@ -0,0 +1,19 @@
1<?php
2
3namespace Tests\Wallabag\UserBundle\Mailer;
4
5/**
6 * @see https://www.pmg.com/blog/integration-testing-swift-mailer/
7 */
8final class CountableMemorySpool extends \Swift_MemorySpool implements \Countable
9{
10 public function count()
11 {
12 return \count($this->messages);
13 }
14
15 public function getMessages()
16 {
17 return $this->messages;
18 }
19}