3 namespace Wallabag\CoreBundle\Tests\Controller
;
5 use Wallabag\CoreBundle\Tests\WallabagTestCase
;
6 use Doctrine\ORM\AbstractQuery
;
8 class EntryControllerTest
extends WallabagTestCase
10 public function testLogin()
12 $client = $this->getClient();
14 $client->request('GET', '/new');
16 $this->assertEquals(302, $client->getResponse()->getStatusCode());
17 $this->assertContains('login', $client->getResponse()->headers
->get('location'));
20 public function testGetNew()
22 $this->logInAs('admin');
23 $client = $this->getClient();
25 $crawler = $client->request('GET', '/new');
27 $this->assertEquals(200, $client->getResponse()->getStatusCode());
29 $this->assertCount(1, $crawler->filter('input[type=url]'));
30 $this->assertCount(1, $crawler->filter('button[type=submit]'));
33 public function testPostNewEmpty()
35 $this->logInAs('admin');
36 $client = $this->getClient();
38 $crawler = $client->request('GET', '/new');
40 $this->assertEquals(200, $client->getResponse()->getStatusCode());
42 $form = $crawler->filter('button[type=submit]')->form();
44 $crawler = $client->submit($form);
46 $this->assertEquals(200, $client->getResponse()->getStatusCode());
47 $this->assertCount(1, $alert = $crawler->filter('form ul li')->extract(array('_text')));
48 $this->assertEquals('This value should not be blank.', $alert[0]);
51 public function testPostNewOk()
53 $this->logInAs('admin');
54 $client = $this->getClient();
56 $crawler = $client->request('GET', '/new');
58 $this->assertEquals(200, $client->getResponse()->getStatusCode());
60 $form = $crawler->filter('button[type=submit]')->form();
63 'entry[url]' => 'https://www.mailjet.com/blog/mailjet-zapier-integrations-made-easy/',
66 $client->submit($form, $data);
68 $this->assertEquals(302, $client->getResponse()->getStatusCode());
70 $crawler = $client->followRedirect();
72 $this->assertGreaterThan(1, $alert = $crawler->filter('h2 a')->extract(array('_text')));
73 $this->assertContains('Mailjet', $alert[0]);
76 public function testArchive()
78 $this->logInAs('admin');
79 $client = $this->getClient();
81 $client->request('GET', '/archive');
83 $this->assertEquals(200, $client->getResponse()->getStatusCode());
86 public function testStarred()
88 $this->logInAs('admin');
89 $client = $this->getClient();
91 $client->request('GET', '/starred');
93 $this->assertEquals(200, $client->getResponse()->getStatusCode());
96 public function testView()
98 $this->logInAs('admin');
99 $client = $this->getClient();
101 $content = $client->getContainer()
102 ->get('doctrine.orm.entity_manager')
103 ->getRepository('WallabagCoreBundle:Entry')
104 ->findOneByIsArchived(false);
106 $client->request('GET', '/view/'.$content->getId());
108 $this->assertEquals(200, $client->getResponse()->getStatusCode());
109 $this->assertContains($content->getTitle(), $client->getResponse()->getContent());
112 public function testToggleArchive()
114 $this->logInAs('admin');
115 $client = $this->getClient();
117 $content = $client->getContainer()
118 ->get('doctrine.orm.entity_manager')
119 ->getRepository('WallabagCoreBundle:Entry')
120 ->findOneByIsArchived(false);
122 $client->request('GET', '/archive/'.$content->getId());
124 $this->assertEquals(302, $client->getResponse()->getStatusCode());
126 $res = $client->getContainer()
127 ->get('doctrine.orm.entity_manager')
128 ->getRepository('WallabagCoreBundle:Entry')
129 ->findOneById($content->getId());
131 $this->assertEquals($res->isArchived(), true);
134 public function testToggleStar()
136 $this->logInAs('admin');
137 $client = $this->getClient();
139 $content = $client->getContainer()
140 ->get('doctrine.orm.entity_manager')
141 ->getRepository('WallabagCoreBundle:Entry')
142 ->findOneByIsStarred(false);
144 $client->request('GET', '/star/'.$content->getId());
146 $this->assertEquals(302, $client->getResponse()->getStatusCode());
148 $res = $client->getContainer()
149 ->get('doctrine.orm.entity_manager')
150 ->getRepository('WallabagCoreBundle:Entry')
151 ->findOneById($content->getId());
153 $this->assertEquals($res->isStarred(), true);
156 public function testDelete()
158 $this->logInAs('admin');
159 $client = $this->getClient();
161 $content = $client->getContainer()
162 ->get('doctrine.orm.entity_manager')
163 ->getRepository('WallabagCoreBundle:Entry')
166 $client->request('GET', '/delete/'.$content->getId());
168 $this->assertEquals(302, $client->getResponse()->getStatusCode());
170 $client->request('GET', '/delete/'.$content->getId());
172 $this->assertEquals(404, $client->getResponse()->getStatusCode());
175 public function testViewOtherUserEntry()
177 $this->logInAs('bob');
178 $client = $this->getClient();
180 $content = $client->getContainer()
181 ->get('doctrine.orm.entity_manager')
182 ->getRepository('WallabagCoreBundle:Entry')
183 ->createQueryBuilder('e')
185 ->leftJoin('e.user', 'u')
186 ->where('u.username != :username')->setParameter('username', 'bob')
189 ->getSingleResult(AbstractQuery
::HYDRATE_ARRAY
);
191 $client->request('GET', '/view/'.$content['id']);
193 $this->assertEquals(403, $client->getResponse()->getStatusCode());