]>
Commit | Line | Data |
---|---|---|
1 | <?php | |
2 | ||
3 | namespace Tests\Wallabag\CoreBundle\Controller; | |
4 | ||
5 | use Symfony\Bundle\FrameworkBundle\Client; | |
6 | use Tests\Wallabag\CoreBundle\WallabagCoreTestCase; | |
7 | use Wallabag\CoreBundle\Entity\SiteCredential; | |
8 | ||
9 | class SiteCredentialControllerTest extends WallabagCoreTestCase | |
10 | { | |
11 | public function testListSiteCredential() | |
12 | { | |
13 | $this->logInAs('admin'); | |
14 | $client = $this->getClient(); | |
15 | ||
16 | $crawler = $client->request('GET', '/site-credentials/'); | |
17 | ||
18 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | |
19 | ||
20 | $body = $crawler->filter('body')->extract(['_text'])[0]; | |
21 | ||
22 | $this->assertContains('site_credential.description', $body); | |
23 | $this->assertContains('site_credential.list.create_new_one', $body); | |
24 | } | |
25 | ||
26 | public function testNewSiteCredential() | |
27 | { | |
28 | $this->logInAs('admin'); | |
29 | $client = $this->getClient(); | |
30 | ||
31 | $crawler = $client->request('GET', '/site-credentials/new'); | |
32 | ||
33 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | |
34 | ||
35 | $body = $crawler->filter('body')->extract(['_text'])[0]; | |
36 | ||
37 | $this->assertContains('site_credential.new_site_credential', $body); | |
38 | $this->assertContains('site_credential.form.back_to_list', $body); | |
39 | ||
40 | $form = $crawler->filter('button[id=site_credential_save]')->form(); | |
41 | ||
42 | $data = [ | |
43 | 'site_credential[host]' => 'google.io', | |
44 | 'site_credential[username]' => 'sergei', | |
45 | 'site_credential[password]' => 'microsoft', | |
46 | ]; | |
47 | ||
48 | $client->submit($form, $data); | |
49 | ||
50 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | |
51 | ||
52 | $crawler = $client->followRedirect(); | |
53 | ||
54 | $this->assertContains('flashes.site_credential.notice.added', $crawler->filter('body')->extract(['_text'])[0]); | |
55 | } | |
56 | ||
57 | public function testEditSiteCredential() | |
58 | { | |
59 | $this->logInAs('admin'); | |
60 | $client = $this->getClient(); | |
61 | ||
62 | $credential = $this->createSiteCredential($client); | |
63 | ||
64 | $crawler = $client->request('GET', '/site-credentials/'.$credential->getId().'/edit'); | |
65 | ||
66 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | |
67 | ||
68 | $body = $crawler->filter('body')->extract(['_text'])[0]; | |
69 | ||
70 | $this->assertContains('site_credential.edit_site_credential', $body); | |
71 | $this->assertContains('site_credential.form.back_to_list', $body); | |
72 | ||
73 | $form = $crawler->filter('button[id=site_credential_save]')->form(); | |
74 | ||
75 | $data = [ | |
76 | 'site_credential[host]' => 'google.io', | |
77 | 'site_credential[username]' => 'larry', | |
78 | 'site_credential[password]' => 'microsoft', | |
79 | ]; | |
80 | ||
81 | $client->submit($form, $data); | |
82 | ||
83 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | |
84 | ||
85 | $crawler = $client->followRedirect(); | |
86 | ||
87 | $this->assertContains('flashes.site_credential.notice.updated', $crawler->filter('body')->extract(['_text'])[0]); | |
88 | $this->assertContains('larry', $crawler->filter('input[id=site_credential_username]')->attr('value')); | |
89 | } | |
90 | ||
91 | public function testEditFromADifferentUserSiteCredential() | |
92 | { | |
93 | $this->logInAs('admin'); | |
94 | $client = $this->getClient(); | |
95 | ||
96 | $credential = $this->createSiteCredential($client); | |
97 | ||
98 | $this->logInAs('bob'); | |
99 | ||
100 | $client->request('GET', '/site-credentials/'.$credential->getId().'/edit'); | |
101 | ||
102 | $this->assertEquals(403, $client->getResponse()->getStatusCode()); | |
103 | } | |
104 | ||
105 | public function testDeleteSiteCredential() | |
106 | { | |
107 | $this->logInAs('admin'); | |
108 | $client = $this->getClient(); | |
109 | ||
110 | $credential = $this->createSiteCredential($client); | |
111 | ||
112 | $crawler = $client->request('GET', '/site-credentials/'.$credential->getId().'/edit'); | |
113 | ||
114 | $this->assertEquals(200, $client->getResponse()->getStatusCode()); | |
115 | ||
116 | $deleteForm = $crawler->filter('body')->selectButton('site_credential.form.delete')->form(); | |
117 | ||
118 | $client->submit($deleteForm, []); | |
119 | ||
120 | $this->assertEquals(302, $client->getResponse()->getStatusCode()); | |
121 | ||
122 | $crawler = $client->followRedirect(); | |
123 | ||
124 | $this->assertContains('flashes.site_credential.notice.deleted', $crawler->filter('body')->extract(['_text'])[0]); | |
125 | } | |
126 | ||
127 | private function createSiteCredential(Client $client) | |
128 | { | |
129 | $credential = new SiteCredential($this->getLoggedInUser()); | |
130 | $credential->setHost('google.io'); | |
131 | $credential->setUsername('sergei'); | |
132 | $credential->setPassword('microsoft'); | |
133 | ||
134 | $em = $client->getContainer()->get('doctrine.orm.entity_manager'); | |
135 | $em->persist($credential); | |
136 | $em->flush(); | |
137 | ||
138 | return $credential; | |
139 | } | |
140 | } |