Skip to content

Commit

Permalink
Add tests for Admin routes.
Browse files Browse the repository at this point in the history
  • Loading branch information
SebastienTouze committed Mar 30, 2020
1 parent 03ba7be commit a0cedaa
Show file tree
Hide file tree
Showing 4 changed files with 105 additions and 10 deletions.
1 change: 1 addition & 0 deletions .env.test
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# define your env variables for the test env here
APP_ENV=test
KERNEL_CLASS='App\Kernel'
APP_SECRET='s$cretf0rt3st'
SYMFONY_DEPRECATIONS_HELPER=999999
Expand Down
22 changes: 12 additions & 10 deletions src/DataFixtures/Tests/UsersFixture.php
Original file line number Diff line number Diff line change
Expand Up @@ -19,25 +19,27 @@ public function __construct(UserManagerInterface $userManager) {

public function load(ObjectManager $manager) {

$user35 = $this->userManager->createUser();
$user56 = $this->userManager->createUser();
$admin = $this->userManager->createUser();

$user35->setUsername('ulam35')
->setEmail('nope@email.com')
$user56->setUsername('ulam35')
->setEmail('nope2@email.com')
->setPlainPassword('ulam35')
->setEnabled(true)
->setService($this->getReference("service35"))
->setRoles(['ROLE_USER']);
$manager->persist($user35);
$manager->persist($user56);

$user56->setUsername('ulam56')
->setEmail('nope2@email.com')
->setPlainPassword('ulam56')
$admin->setUsername('admin')
->setEmail('admin@email.com')
->setPlainPassword('admin')
->setEnabled(true)
->setService($this->getReference("service56"))
->setRoles(['ROLE_USER']);
$manager->persist($user56);
->setService(null)
->setRoles(['ROLE_USER', 'ROLE_ADMIN', 'ROLE_SUPER_ADMIN']);
$manager->persist($admin);

$this->setReference('ulam56', $user56);
$this->setReference('admin', $admin);

$manager->flush();
}
Expand Down
86 changes: 86 additions & 0 deletions tests/Functional/Controller/AdminTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
<?php

namespace App\Tests\Controller;

use Liip\FunctionalTestBundle\Test\WebTestCase;
use Liip\TestFixturesBundle\Test\FixturesTrait;

class AdminTest extends WebTestCase {
use FixturesTrait;

public function testAdminsUserNotAdmin() {
$fixtures = $this->loadFixtures(array(
'App\DataFixtures\Tests\UsersFixture',
'App\DataFixtures\Tests\AgentsFixture',
'App\DataFixtures\Tests\RapportFixture',
));

$client = $this->makeAuthenticatedClient();

$client->request('GET', '/admin');
$this->assertStatusCode(301, $client);

$client->request('GET', '/admin/dashboard');
$this->assertStatusCode(200, $client);

$client->request('GET', '/admin/app/navire/list');
$this->assertStatusCode(403, $client);

}

/**
* @dataProvider provideAdminUrls
*/
public function testAdminsUserAdmin($url) {
$fixtures = $this->loadFixtures(array(
'App\DataFixtures\Tests\UsersFixture',
'App\DataFixtures\Tests\AgentsFixture',
'App\DataFixtures\Tests\RapportFixture',
));

$client = $this->makeClientWithCredentials('admin', 'admin');

$client->request('GET', '/admin');
$this->assertStatusCode(301, $client);

$client->request('GET', '/admin/dashboard');
$this->assertStatusCode(200, $client);

$client->request('GET', $url);
$this->assertStatusCode(200, $client);

}

public function provideAdminUrls() {
return [
['/admin/app/navire/list'],
['/admin/app/navire/create'],
['/admin/app/rapport/list'],
['/admin/app/rapport/create'],
['/admin/app/etablissement/list'],
['/admin/app/etablissement/create'],
['/admin/app/moyen/list'],
['/admin/app/moyen/create'],
['/admin/app/zonegeographique/list'],
['/admin/app/zonegeographique/create'],
['/admin/app/agent/list'],
['/admin/app/agent/create'],
['/admin/app/serviceinterministeriel/list'],
['/admin/app/serviceinterministeriel/create'],
['/admin/app/categorieetablissement/list'],
['/admin/app/categorieetablissement/create'],
['/admin/app/categoriecontroleautre/list'],
['/admin/app/categoriecontroleautre/create'],
['/admin/app/tache/list'],
['/admin/app/tache/create'],
['/admin/app/categoriecontrolenavire/list'],
['/admin/app/categoriecontrolenavire/create'],
['/admin/app/loisir/list'],
['/admin/app/loisir/create'],
['/admin/app/categoriemoyen/list'],
['/admin/app/categoriemoyen/create'],
['/admin/app/categoriemethodeciblage/list'],
['/admin/app/categoriemethodeciblage/create'],
];
}
}
6 changes: 6 additions & 0 deletions tests/bootstrap.php
Original file line number Diff line number Diff line change
@@ -1,9 +1,15 @@
<?php

use Symfony\Component\Dotenv\Dotenv;
use Doctrine\Common\Annotations\AnnotationReader;

require dirname(__DIR__).'/vendor/autoload.php';

AnnotationReader::addGlobalIgnoredName('group');
AnnotationReader::addGlobalIgnoredName('depends');
AnnotationReader::addGlobalIgnoredName('dataProvider');


if (file_exists(dirname(__DIR__).'/config/bootstrap.php')) {
require dirname(__DIR__).'/config/bootstrap.php';
} elseif (method_exists(Dotenv::class, 'bootEnv')) {
Expand Down

0 comments on commit a0cedaa

Please sign in to comment.