]>
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->assertSame(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->assertSame(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->assertSame(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->assertSame(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->assertSame(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 | } | |
89 | ||
90 | public function testEditFromADifferentUserSiteCredential() | |
91 | { | |
92 | $this->logInAs('admin'); | |
93 | $client = $this->getClient(); | |
94 | ||
95 | $credential = $this->createSiteCredential($client); | |
96 | ||
97 | $this->logInAs('bob'); | |
98 | ||
99 | $client->request('GET', '/site-credentials/' . $credential->getId() . '/edit'); | |
100 | ||
101 | $this->assertSame(403, $client->getResponse()->getStatusCode()); | |
102 | } | |
103 | ||
104 | public function testDeleteSiteCredential() | |
105 | { | |
106 | $this->logInAs('admin'); | |
107 | $client = $this->getClient(); | |
108 | ||
109 | $credential = $this->createSiteCredential($client); | |
110 | ||
111 | $crawler = $client->request('GET', '/site-credentials/' . $credential->getId() . '/edit'); | |
112 | ||
113 | $this->assertSame(200, $client->getResponse()->getStatusCode()); | |
114 | ||
115 | $deleteForm = $crawler->filter('body')->selectButton('site_credential.form.delete')->form(); | |
116 | ||
117 | $client->submit($deleteForm, []); | |
118 | ||
119 | $this->assertSame(302, $client->getResponse()->getStatusCode()); | |
120 | ||
121 | $crawler = $client->followRedirect(); | |
122 | ||
123 | $this->assertContains('flashes.site_credential.notice.deleted', $crawler->filter('body')->extract(['_text'])[0]); | |
124 | } | |
125 | ||
126 | private function createSiteCredential(Client $client) | |
127 | { | |
128 | $credential = new SiteCredential($this->getLoggedInUser()); | |
129 | $credential->setHost('google.io'); | |
130 | $credential->setUsername('sergei'); | |
131 | $credential->setPassword('microsoft'); | |
132 | ||
133 | $em = $client->getContainer()->get('doctrine.orm.entity_manager'); | |
134 | $em->persist($credential); | |
135 | $em->flush(); | |
136 | ||
137 | return $credential; | |
138 | } | |
139 | } |