UsersControllerTest.php
5.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
<?php
namespace App\Test\TestCase\Controller;
use App\Controller\UsersController;
use Cake\TestSuite\IntegrationTestCase;
/**
* App\Controller\UsersController Test Case
*/
//class UsersControllerTest extends IntegrationTestCase
class UsersControllerTest extends General
{
/**
* Fixtures
*
* @var array
*/
public $fixtures = [
'app.fakeldapusers',
'app.users',
'app.groupes_metiers',
'app.materiels',
'app.sur_categories',
'app.categories',
'app.sous_categories',
'app.groupes_thematiques',
'app.organismes',
'app.sites',
'app.emprunts',
'app.documents',
'app.suivis',
'app.type_suivis',
'app.configurations'
];
//@Implement
protected function getNewEntityWithAllMandatoryFields() {
return [
//'nom' => 'test9 test0',
'nom' => 'user6 USER',
//'username' => 'testt',
'username' => 'user6_USER',
'password' => '$2y$10$VtYdA8Evkc.K.VpvqmF9wui5hc9ep19f8ukWBeFBIlunXSHPqw.K2',
'email' => 'testt@test.fr',
'role' => 'Utilisateur',
'groupes_metier_id' => 1,
'groupes_thematique_id' => 1
];
}
static protected function _getEntityIdOkForTesting() {
return 2;
}
/*
public function authUser() {
$user = [
'Auth' => [
'User' => [
'sn' => [0 => 'test2'],
'mail' => [0 => 'test@test.fr'],
'givenname' => [0 => 'test1'],
'cn' => [0 => 'user1_SUPER'],
'userpassword' => [0 => 'test'],
]
]
];
$this->session($user);
$authType = ['authType' => 'cn'];
$this->session($authType);
}
*/
/**
* Test UNauthentified access to website
*
* By default, must have ONLY access to /about page, or /login page
*
* @return void
*/
public function testUser10AccessAsAnonymous() {
$this->get('/pages/about');
$this->assertResponseContains('A PROPOS DU LOGICIEL', 'Un utilisateur NON authentifié devrait avoir accès à la page /about');
$this->get('/');
$this->assertRedirect('/users/login', 'Un utilisateur NON authentifié devrait etre redirigé sur la page de login');
}
/**
* Test login method
*
* @return void
*/
public function testUser20LoginAsSuper()
{
$this->post('/users/login', ['ldap' => 'user1_SUPER', 'password' => 'test']);
//$this->assertRedirect('/pages/home', 'Un utilisateur privilégié devrait pouvoir se loguer');
$this->assertRedirect('/', 'Un utilisateur privilégié devrait pouvoir se loguer');
}
public function testUser21LoginAsUser()
{
$this->post('/users/login', ['ldap' => 'user5_USER', 'password' => 'test']);
//$this->assertRedirect('/pages/home', 'Un utilisateur non privilégié devrait pouvoir se loguer');
$this->assertRedirect('/', 'Un utilisateur non privilégié devrait pouvoir se loguer');
}
/**
* Test logout method
* TODO: ca marche pas, impossible de simuler un vrai logout, l'utilisateur est toujours connecté !!!
*
* @return void
*/
public function TODOtestUser30Logout()
{
//$this->authUser();
$this->authSuperAdmin();
$this->get('/pages/home');
//$this->assertSession(1, 'Auth.User.id'); // Check user is logged in
$this->assertSession('user1_SUPER', 'Auth.User.cn.0'); // Check user is logged in
$this->assertSession(['SUPER'], 'Auth.User.sn'); // Check user is logged in
$this->get('/users/logout');
$this->assertSession(null, 'Auth.User'); // Check user is logged out
//unset($this->session);
//$this->assertRedirect('/pages/home', 'Un utilisateur devrait pouvoir se déloguer');
//$this->get('/pages/home');
$this->assertRedirect('/users/login', 'Un utilisateur devrait pouvoir se déloguer et ainsi revenir sur la page login');
//$this->assertRedirect(['controller' => 'Users', 'action' => 'login']);
$this->get('/materiels');
$this->assertResponseNotContains('Liste des', 'On devrait normalement etre dé-logué !!! or on ne l\'est pas');
}
/**
* Test add method
*
* @return void
*/
public function testAdd()
{
//$this->authUser();
$this->authSuperAdmin();
$data = [
'id' => 6,
'nom' => 'Test3 Test4',
'username' => 'testo',
'password' => 'test',
'email' => 'testo@test.fr',
'role' => 'Super Administrateur',
'groupes_metier_id' => 1,
'groupes_thematique_id' => 1,
'sur_categorie_id' => 1
];
$this->post('/users/add', $data);
$this->get('/users/view/6');
$this->assertResponseContains('Test3 Test4', 'L\'ajout d\'un utilisateur ne fonctionne pas correctement');
}
/**
* Test (automatique) de (presque) TOUTES les actions de CE controleur
*
* @return void
*
* @dataProvider dataProviderActionsAndRoles4
*/
public function testAuthorizationsForAllActionsOnUsers($action, $role_short, $role_long) {
/*
$entities_name = $this->getEntitiesName();
debug($entities_name);
$nb = TableRegistry::getTableLocator()->get($entities_name)->find()->count();
//$nb = $this->getNbEntitiesInFixture();
debug("nb is $nb");
$nb = $this->getNbEntitiesInFixture();
debug("nb is $nb");
*/
// call parent General
$this->_testAuthorizationsForAllControllerActions($action, $role_short, $role_long);
}
}