diff --git a/Tests/Controller/PersonControllerViewTest.php b/Tests/Controller/PersonControllerViewTest.php index 396132c79..5820aa875 100644 --- a/Tests/Controller/PersonControllerViewTest.php +++ b/Tests/Controller/PersonControllerViewTest.php @@ -23,47 +23,45 @@ use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; use Chill\PersonBundle\Entity\Person; /** - * - * * @author Julien Fastré + * @author Marc Ducobu */ class PersonControllerViewTest extends WebTestCase { - - /** - * - * @var \Doctrine\ORM\EntityManagerInterface - */ + /** @var \Doctrine\ORM\EntityManagerInterface The entity manager */ private $em; - /** - * - * @var Person - */ + /** @var Person A person used on which to run the test */ private $person; + + /** @var String The url to view the person details */ + private $viewUrl; public function setUp() { static::bootKernel(); $this->em = static::$kernel->getContainer() - ->get('doctrine.orm.entity_manager'); + ->get('doctrine.orm.entity_manager'); $center = $this->em->getRepository('ChillMainBundle:Center') - ->findOneBy(array('name' => 'Center A')); + ->findOneBy(array('name' => 'Center A')); $this->person = (new Person()) - ->setLastName("Tested Person") - ->setFirstName("Réginald") - ->setCenter($center) - ->setGender(Person::MALE_GENDER); + ->setLastName("Tested Person") + ->setFirstName("Réginald") + ->setCenter($center) + ->setGender(Person::MALE_GENDER); $this->em->persist($this->person); $this->em->flush(); - $this->seeUrl = '/en/person/'.$this->person->getId().'/general'; + $this->viewUrl = '/en/person/'.$this->person->getId().'/general'; } + /** + * Test if the view page is accessible + */ public function testViewPerson() { $client = static::createClient(array(), array( @@ -71,11 +69,19 @@ class PersonControllerViewTest extends WebTestCase 'PHP_AUTH_PW' => 'password', )); - $client->request('GET', $this->seeUrl); - - $this->assertTrue($client->getResponse()->isSuccessful()); + $crawler = $client->request('GET', $this->viewUrl); + $response = $client->getResponse(); + + $this->assertTrue($response->isSuccessful()); + + $this->assertGreaterThan(0, $crawler->filter('html:contains("Tested Person")')->count()); + $this->assertGreaterThan(0, $crawler->filter('html:contains("Réginald")')->count()); } + /** + * Test if the view page of a given person is not accessible for a user + * of another center of the person + */ public function testViewPersonAccessDeniedForUnauthorized() { $client = static::createClient(array(), array( @@ -83,15 +89,18 @@ class PersonControllerViewTest extends WebTestCase 'PHP_AUTH_PW' => 'password', )); - $client->request('GET', $this->seeUrl); - - $this->assertEquals(403, $client->getResponse()->getStatusCode()); + $client->request('GET', $this->viewUrl); + $this->assertEquals(403, $client->getResponse()->getStatusCode(), + "The view page of a person of a center A must not be accessible for user of center B"); } + /** + * Reload the person from the db + */ protected function refreshPerson() { $this->person = $this->em->getRepository('ChillPersonBundle:Person') - ->find($this->person->getId()); + ->find($this->person->getId()); } public function tearDown()