3 namespace Tests\Wallabag\CoreBundle\Controller
;
5 use Symfony\Bundle\FrameworkBundle\Client
;
6 use Tests\Wallabag\CoreBundle\WallabagCoreTestCase
;
7 use Wallabag\CoreBundle\Entity\SiteCredential
;
9 class SiteCredentialControllerTest
extends WallabagCoreTestCase
11 public function testListSiteCredential()
13 $this->logInAs('admin');
14 $client = $this->getClient();
16 $crawler = $client->request('GET', '/site-credentials/');
18 $this->assertEquals(200, $client->getResponse()->getStatusCode());
20 $body = $crawler->filter('body')->extract(['_text'])[0];
22 $this->assertContains('site_credential.description', $body);
23 $this->assertContains('site_credential.list.create_new_one', $body);
26 public function testNewSiteCredential()
28 $this->logInAs('admin');
29 $client = $this->getClient();
31 $crawler = $client->request('GET', '/site-credentials/new');
33 $this->assertEquals(200, $client->getResponse()->getStatusCode());
35 $body = $crawler->filter('body')->extract(['_text'])[0];
37 $this->assertContains('site_credential.new_site_credential', $body);
38 $this->assertContains('site_credential.form.back_to_list', $body);
40 $form = $crawler->filter('button[id=site_credential_save]')->form();
43 'site_credential[host]' => 'google.io',
44 'site_credential[username]' => 'sergei',
45 'site_credential[password]' => 'microsoft',
48 $client->submit($form, $data);
50 $this->assertEquals(302, $client->getResponse()->getStatusCode());
52 $crawler = $client->followRedirect();
54 $this->assertContains('flashes.site_credential.notice.added', $crawler->filter('body')->extract(['_text'])[0]);
57 public function testEditSiteCredential()
59 $this->logInAs('admin');
60 $client = $this->getClient();
62 $credential = $this->createSiteCredential($client);
64 $crawler = $client->request('GET', '/site-credentials/'.$credential->getId().'/edit');
66 $this->assertEquals(200, $client->getResponse()->getStatusCode());
68 $body = $crawler->filter('body')->extract(['_text'])[0];
70 $this->assertContains('site_credential.edit_site_credential', $body);
71 $this->assertContains('site_credential.form.back_to_list', $body);
73 $form = $crawler->filter('button[id=site_credential_save]')->form();
76 'site_credential[host]' => 'google.io',
77 'site_credential[username]' => 'larry',
78 'site_credential[password]' => 'microsoft',
81 $client->submit($form, $data);
83 $this->assertEquals(302, $client->getResponse()->getStatusCode());
85 $crawler = $client->followRedirect();
87 $this->assertContains('flashes.site_credential.notice.updated', $crawler->filter('body')->extract(['_text'])[0]);
90 public function testEditFromADifferentUserSiteCredential()
92 $this->logInAs('admin');
93 $client = $this->getClient();
95 $credential = $this->createSiteCredential($client);
97 $this->logInAs('bob');
99 $client->request('GET', '/site-credentials/'.$credential->getId().'/edit');
101 $this->assertEquals(403, $client->getResponse()->getStatusCode());
104 public function testDeleteSiteCredential()
106 $this->logInAs('admin');
107 $client = $this->getClient();
109 $credential = $this->createSiteCredential($client);
111 $crawler = $client->request('GET', '/site-credentials/'.$credential->getId().'/edit');
113 $this->assertEquals(200, $client->getResponse()->getStatusCode());
115 $deleteForm = $crawler->filter('body')->selectButton('site_credential.form.delete')->form();
117 $client->submit($deleteForm, []);
119 $this->assertEquals(302, $client->getResponse()->getStatusCode());
121 $crawler = $client->followRedirect();
123 $this->assertContains('flashes.site_credential.notice.deleted', $crawler->filter('body')->extract(['_text'])[0]);
126 private function createSiteCredential(Client
$client)
128 $credential = new SiteCredential($this->getLoggedInUser());
129 $credential->setHost('google.io');
130 $credential->setUsername('sergei');
131 $credential->setPassword('microsoft');
133 $em = $client->getContainer()->get('doctrine.orm.entity_manager');
134 $em->persist($credential);