[ '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); } */ /* * On recupère une entité quelconque de la BD (fixture), peu importe ce que c'est car on va la modifier * Pas la 1 toutefois car elle a des documents associés et donc on pourra pas la supprimer... * */ static protected function _getEntityIdOkForTesting() { return 2; } //@Implement protected function getNewEntityWithAllMandatoryFields() { $matos_created_id = 1; $matos_validated_id = 3; return [ // (EP) pas utile car auto //'id' => 5, //'intitule' => 'nom du suivi', //'materiel_id' => 1, // created 'materiel_id' => $matos_validated_id, // validated 'date_controle' => '2016-04-19', 'date_prochain_controle' => '2016-04-19', 'type_suivi_id' => 1, /* (EP) ne sont plus utilisés, nuls par défaut 'groupes_metier_id' => 1, 'groupes_thematique_id' => 1, */ 'organisme' => 'Lorem ipsum dolor sit amet', 'frequence' => 1, 'type_frequence' => '/ Jours', 'commentaire' => ' TEST ADD SUIVI VALIDE ', 'nom_createur' => 'Lorem ipsum dolor sit amet', 'nom_modificateur' => 'Lorem ipsum dolor sit amet', 'created' => '2016-04-19 09:09:28', 'modified' => '2016-04-19 09:09:28' ]; } /* protected function getNbEntitiesExpectedInIndexView() { return $this->nb_entities_in_fixture; } */ /* //@override parent protected function getEntitiesName() { return 'Suivis'; } */ /* protected function _getEntityIdOkForTesting() { return 1; } */ /** * Test index method * * @return void */ public function testIndex() { //$this->authUser(); $this->authSuperAdmin(); // 1) On doit pouvoir accéder à la page une fois authentifié $this->get('/suivis/index'); $this->assertNoRedirect("Authentifié mais redirection vers /users/login."); // 2) On doit avoir N suivis //$nb = $this->nb_entities_in_fixture; $nb = $this->getNbEntitiesExpectedInIndexView(); $this->assertResponseContains("Liste des suivis ($nb)", "Le nombre de suivis renvoyé est incorrect."); } /** * Test view method * * @return void */ public function testView() { //$this->authUser(); $this->authSuperAdmin(); $this->get('/suivis/view/2'); $this->assertResponseOk(); $this->assertResponseContains("TEST VIEW SUIVI VALIDE", "Le suivi retourné n'est pas celui demandé."); } /** * Test add method * * @return void */ public function STRICTER_testAdd() { $matos_created_id = 1; $matos_validated_id = 3; $data = [ // (EP) pas utile car auto //'id' => 5, //'materiel_id' => 1, // created 'materiel_id' => $matos_validated_id, // validated 'date_controle' => '2016-04-19', 'date_prochain_controle' => '2016-04-19', 'type_suivi_id' => 1, 'groupes_metier_id' => 1, 'groupes_thematique_id' => 1, 'organisme' => 'Lorem ipsum dolor sit amet', 'frequence' => 1, 'type_frequence' => '/ Jours', 'commentaire' => ' TEST ADD SUIVI VALIDE ', 'nom_createur' => 'Lorem ipsum dolor sit amet', 'nom_modificateur' => 'Lorem ipsum dolor sit amet', 'created' => '2016-04-19 09:09:28', 'modified' => '2016-04-19 09:09:28' ]; //$this->authUser(); $this->authSuperAdmin(); // Methode commune de la classe parente $this->_testAddEntitiesRelatedToMateriel("suivi", $this->getNbEntitiesExpectedInIndexView(), $data); /* $this->post('/suivis/add/1', $data); $this->get('/suivis/index'); $this->assertResponseContains("Liste des suivis (3)", "Le suivi ne s'ajoute pas correctement."); */ } /** * Test edit method * * @return void */ public function testEdit() { //$this->authUser(); $this->authSuperAdmin(); $data = [ 'intitule' => 'nom du suivi', 'materiel_id' => 1, 'date_controle' => '2016-04-19', 'date_prochain_controle' => '2016-04-19', 'type_suivi_id' => 1, 'groupes_metier_id' => 1, 'groupes_thematique_id' => 1, 'organisme' => 'Lorem ipsum dolor sit amet', 'frequence' => 1, 'type_frequence' => '/ Jours', 'commentaire' => ' TEST EDIT SUIVI VALIDE ', 'nom_createur' => 'Lorem ipsum dolor sit amet', 'nom_modificateur' => 'Lorem ipsum dolor sit amet', 'created' => '2016-04-19 09:09:28', 'modified' => '2016-04-19 09:09:28' ]; $this->post('/suivis/edit/1', $data); $this->get('/suivis/view/1'); $this->assertResponseContains("TEST EDIT SUIVI VALIDE", "Le suivi n'a pas été édité correctement"); $this->assertResponseContains("nom du suivi", "Le suivi n'a pas été édité correctement"); } /** * Test delete method * * @return void */ /** * @dataProvider dataProviderRoles5 */ public function STRICTER_testDelete($role) //public function testDelete() { //$this->authUser(); //$this->authSuperAdmin(); $this->authAs($role); $nb = 3; $this->_testNbEntitiesInIndexView('suivis', $nb); if ($this->USER_IS_USER()) { // 1) delete pas possible car le matos n'est pas au user $this->_testDelete(3, false, $nb); // 2) delete possible car le matos est au user $this->_testDelete(2, true, $nb); } elseif ($this->USER_IS_RESP()) { // 1) delete pas possible car le matos n'est pas du meme groupe (metier ou thematique) $this->_testDelete(3, false, $nb); // 2) delete possible car le matos est du meme groupe $this->_testDelete(2, true, $nb); } //elseif ($this->USER_IS_ADMIN() || $this->USER_IS_ADMIN_PLUS()) { elseif ( $this->USER_IS_ADMIN() ) { // 1) delete pas possible car un admin(+) n'a pas ce droit (sauf s'il est proprio du matos) $this->_testDelete(3, false, $nb); // 2) delete pas possible car un admin(+) n'a pas ce droit (sauf s'il est proprio du matos) $this->_testDelete(2, false, $nb); } // superadmin else { // 1) delete toujours possible $this->_testDelete(3, true, $nb); $nb--; $this->_testDelete(2, true, $nb); } /* //$this->post('/suivis/delete/1'); $this->post('/suivis/delete/2'); $nb--; $this->_testNbEntitiesInIndexView('suivis', $nb, "Le suivi n'as pas été supprimé"); */ /* $this->get('/suivis/index'); $this->assertResponseContains("Liste des suivis $nb)", "Le suivi n'as pas été supprimé."); */ /* Ca marche pas car bien que delete est autorisé pour superadmin, ça ne se fait pas car ce suivi a des docs attachés //$this->authAdmin(); $this->post('/suivis/delete/1'); //$nb--; $this->_testNbEntitiesInIndexView('suivis', $nb, "Le suivi a été supprimé alors que ça ne devrait pas être possible"); */ } private function _testDelete($id, $delete_should_be_ok=false, $nb) { //$this->post('/suivis/delete/1'); $this->post("/suivis/delete/$id"); // delete possible if ($delete_should_be_ok) { $nb--; $error_msg = "Le suivi $id n'as pas été supprimé alors que ça devrait être possible !"; } // delete PAS possible else $error_msg = "Le suivi $id a été supprimé alors que ça ne devrait PAS être possible !"; $this->_testNbEntitiesInIndexView('suivis', $nb, $error_msg); } /** * Test find method * * @return void */ public function testFind() { //$this->authUser(); $this->authSuperAdmin(); $dataSearch = [ 's_type_suivi_id' => '1', 's_groupes_metier_id' => '', 's_groupes_thematique_id' => '', 's_organisme' => '', 's_date_controle' => '', 's_periode_controle1' => '', 's_periode_controle2' => '', ]; //$nb = $this->nb_entities_in_fixture; $nb = $this->getNbEntitiesExpectedInIndexView(); //Test sans aucun champ $this->get('/suivis/find'); $this->assertResponseContains("Aucun résultats pour cette recherche.", "Le contenu de la recherche devrait être vide."); //Test champ type suivi $this->post('/suivis/find', $dataSearch); $nbfound = $nb; $this->assertResponseContains("Résultats ($nbfound)", "Le nb de suivis pour la recherche par type de suivi est incorrecte."); //Test champ organisme $dataSearch['s_type_suivi_id'] = ''; $dataSearch['s_organisme'] = 'Lorem ipsum'; $this->post('/suivis/find', $dataSearch); $nbfound = $nb-1; $this->assertResponseContains("Résultats ($nbfound)", "Le nb de suivis pour la recherche par organisme est incorrecte."); //Test champ date_controle $dataSearch['s_organisme'] = ''; $dataSearch['s_date_controle'] = '2016-04-19'; $this->post('/suivis/find', $dataSearch); $nbfound = $nb-2; $this->assertResponseContains("Résultats ($nbfound)", "Le nb de suivis pour la recherche par date de controle est incorrecte."); //Test champ periode_controle1 (debut) $dataSearch['s_date_controle'] = ''; $dataSearch['s_periode_controle1'] = '2017-01-01'; $this->post('/suivis/find', $dataSearch); $nbfound = $nb-1; $this->assertResponseContains("Résultats ($nbfound)", "Le nb de suivis pour la recherche par debut de periode de controle est incorrecte."); //Test champ periode_acquisition1 (debut) && champ periode_acquisition2 (fin) $dataSearch['s_periode_controle2'] = '2018-01-01'; $this->post('/suivis/find', $dataSearch); $this->assertResponseContains("Aucun résultats pour cette recherche.", "Le nb de suivis pour la recherche par intervalle entre la periode de controle 1 (debut) et la periode de controle 2 (fin) est incorrecte."); //Test champ periode_acquisition2 (fin) $dataSearch['s_periode_controle1'] = ''; $this->post('/suivis/find', $dataSearch); $nbfound = $nb-2; $this->assertResponseContains("Résultats ($nbfound)", "Le nb de suivis pour la recherche par fin de periode de controle est incorrecte."); } /** * Test ACLIndexResponsable * * @return void */ public function OFF_testACLIndexResponsable() { //$nb = $this->nb_entities_in_fixture; $nb = $this->getNbEntitiesExpectedInIndexView(); //$this->authUser(); $this->authSuperAdmin(); $this->get('/suivis/index?GM=1'); $this->assertResponseContains("Liste des suivis ($nb)", "La liste de suivis selon le groupe métier est incorrect."); } /* protected function getActions() { //return ['toto']; $actions = $this->getController()->getActions(); return $actions; } */ /* protected function getController() { //if (!$this->controller_instance) $this->controller_instance = new MaterielsController(); //$controller_name = 'App\\Controller\\'.$this->getEntitiesName().'Controller'; // ex: 'Materiels' ou 'Suivis'... //if (!$this->controller_instance || ($this->controller_instance && $this->controller_instance->name != $this->getEntitiesName())) $c = 'Suivis'; //$controller_name = 'App\\Controller\\'.$this->getEntitiesName().'Controller'; // ex: 'Materiels' ou 'Suivis'... $controller_name = 'App\\Controller\\'.$c.'Controller'; // ex: 'Materiels' ou 'Suivis'... if (!$this->controller_instance) $this->controller_instance = new $controller_name(); //if (!$this->controller_instance) $this->controller_instance = new SuivisController(); return $this->controller_instance; } $/ /* public function dataProviderActionsAndRoles4Suivis() { //return $this->dataProviderActionsAndRoles4('SuivisController'); return $this->dataProviderActionsAndRoles4(new SuivisController()); } */ /** * Test (automatique) de (presque) TOUTES les actions de CE controleur * * @return void * * @dataProvider dataProviderActionsAndRoles4 */ public function testAuthorizationsForAllActionsOnSuivis($action, $role_short, $role_long) { //public function testAuthorizationsForAllActionsOfControllerSuivis($action, $role_short, $role_long) { // call parent //debug("Action: $action"); //$this->_testAuthorizationsForAllActionsOfController('Suivis', $action, $role_short, $role_long); $this->_testAuthorizationsForAllControllerActions($action, $role_short, $role_long); } } // SuivisControllerTest