From b8427f22f06cab58383ec3080f09715c712c65ef Mon Sep 17 00:00:00 2001 From: Jeremy Benoist Date: Mon, 1 May 2017 22:13:35 +0200 Subject: Add menu access to site credentials CRUD --- .../Controller/SiteCredentialControllerTest.php | 140 +++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 tests/Wallabag/CoreBundle/Controller/SiteCredentialControllerTest.php (limited to 'tests/Wallabag/CoreBundle/Controller') diff --git a/tests/Wallabag/CoreBundle/Controller/SiteCredentialControllerTest.php b/tests/Wallabag/CoreBundle/Controller/SiteCredentialControllerTest.php new file mode 100644 index 00000000..47bf0907 --- /dev/null +++ b/tests/Wallabag/CoreBundle/Controller/SiteCredentialControllerTest.php @@ -0,0 +1,140 @@ +logInAs('admin'); + $client = $this->getClient(); + + $crawler = $client->request('GET', '/site-credentials/'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + + $body = $crawler->filter('body')->extract(['_text'])[0]; + + $this->assertContains('site_credential.description', $body); + $this->assertContains('site_credential.list.create_new_one', $body); + } + + public function testNewSiteCredential() + { + $this->logInAs('admin'); + $client = $this->getClient(); + + $crawler = $client->request('GET', '/site-credentials/new'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + + $body = $crawler->filter('body')->extract(['_text'])[0]; + + $this->assertContains('site_credential.new_site_credential', $body); + $this->assertContains('site_credential.form.back_to_list', $body); + + $form = $crawler->filter('button[id=site_credential_save]')->form(); + + $data = [ + 'site_credential[host]' => 'google.io', + 'site_credential[username]' => 'sergei', + 'site_credential[password]' => 'microsoft', + ]; + + $client->submit($form, $data); + + $this->assertEquals(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $this->assertContains('flashes.site_credential.notice.added', $crawler->filter('body')->extract(['_text'])[0]); + } + + /** + * @depends testNewSiteCredential + */ + public function testEditSiteCredential() + { + $this->logInAs('admin'); + $client = $this->getClient(); + + $credential = $client->getContainer() + ->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:SiteCredential') + ->findOneByHost('google.io'); + + $crawler = $client->request('GET', '/site-credentials/'.$credential->getId().'/edit'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + + $body = $crawler->filter('body')->extract(['_text'])[0]; + + $this->assertContains('site_credential.edit_site_credential', $body); + $this->assertContains('site_credential.form.back_to_list', $body); + + $form = $crawler->filter('button[id=site_credential_save]')->form(); + + $data = [ + 'site_credential[host]' => 'google.io', + 'site_credential[username]' => 'larry', + 'site_credential[password]' => 'microsoft', + ]; + + $client->submit($form, $data); + + $this->assertEquals(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $this->assertContains('flashes.site_credential.notice.updated', $crawler->filter('body')->extract(['_text'])[0]); + $this->assertContains('larry', $crawler->filter('input[id=site_credential_username]')->attr('value')); + } + + /** + * @depends testNewSiteCredential + */ + public function testEditFromADifferentUserSiteCredential() + { + $this->logInAs('bob'); + $client = $this->getClient(); + + $credential = $client->getContainer() + ->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:SiteCredential') + ->findOneByHost('google.io'); + + $client->request('GET', '/site-credentials/'.$credential->getId().'/edit'); + + $this->assertEquals(403, $client->getResponse()->getStatusCode()); + } + + /** + * @depends testNewSiteCredential + */ + public function testDeleteSiteCredential() + { + $this->logInAs('admin'); + $client = $this->getClient(); + + $credential = $client->getContainer() + ->get('doctrine.orm.entity_manager') + ->getRepository('WallabagCoreBundle:SiteCredential') + ->findOneByHost('google.io'); + + $crawler = $client->request('GET', '/site-credentials/'.$credential->getId().'/edit'); + + $this->assertEquals(200, $client->getResponse()->getStatusCode()); + + $deleteForm = $crawler->filter('body')->selectButton('site_credential.form.delete')->form(); + + $client->submit($deleteForm, []); + + $this->assertEquals(302, $client->getResponse()->getStatusCode()); + + $crawler = $client->followRedirect(); + + $this->assertContains('flashes.site_credential.notice.deleted', $crawler->filter('body')->extract(['_text'])[0]); + } +} -- cgit v1.2.3