3232use GlpiPlugin \Formcreator \Tests \CommonTestCase ;
3333use PluginFormcreatorForm_Validator ;
3434use Search ;
35- use TicketValidation ;
35+ use Session ;
3636use User ;
3737
3838/**
@@ -45,7 +45,7 @@ public function beforeTestMethod($method) {
4545 switch ($ method ) {
4646 case 'testNotificationFormAnswerCreated ' :
4747 case 'testOtherUserValidates ' :
48- $ this ->boolean ( $ this -> login ('glpi ' , 'glpi ' , true ))-> isTrue ( );
48+ $ this ->login ('glpi ' , 'glpi ' , true );
4949 break ;
5050 }
5151 }
@@ -132,30 +132,25 @@ public function testOtherUserValidates() {
132132 $ form_validator = new PluginFormcreatorForm_Validator ();
133133 $ form_validator ->add ([
134134 'plugin_formcreator_forms_id ' => $ form ->getID (),
135- 'itemtype ' => User::class,
136- 'items_id ' => '2 ' , // user is glpi
135+ 'itemtype ' => User::class,
136+ 'items_id ' => User::getIdByName ('glpi ' ),
137+ 'level ' => 1 ,
137138 ]);
138139 $ this ->boolean ($ form_validator ->isNewItem ())->isFalse ();
139140
140- $ section = $ this ->getSection ([
141- 'name ' => 'a section ' ,
142- 'plugin_formcreator_forms_id ' => $ form ->getID ()
143- ]);
144- $ this ->boolean ($ section ->isNewItem ())->isFalse ();
145-
146- $ formAnswer = new \PluginFormcreatorFormAnswer ();
141+ $ formAnswer = $ this ->newTestedInstance ();
147142 $ formAnswer ->add ([
148143 'plugin_formcreator_forms_id ' => $ form ->getID (),
149144 'status ' => 'waiting ' ,
150- 'formcreator_validator ' => $ _SESSION [ ' glpiID ' ] ,
145+ 'formcreator_validator ' => Session:: getLoginUserID () ,
151146 ]);
152147 $ this ->boolean ($ formAnswer ->isNewItem ())->isFalse ();
153148
154149 // Reload the item
155150 $ formAnswer ->getFromDB ($ formAnswer ->getID ());
156151
157152 $ login = $ this ->getUniqueString ();
158- $ user = new \ User ();
153+ $ user = new User ();
159154 $ user ->add ([
160155 'name ' => $ login ,
161156 'password ' => 'superadmin ' ,
@@ -171,15 +166,34 @@ public function testOtherUserValidates() {
171166
172167 // Login as other user
173168 $ this ->boolean ($ this ->login ($ login , 'superadmin ' , true ))->isTrue ();
174- $ this ->boolean ($ formAnswer ->canValidate ($ form , $ formAnswer ))->isFalse ();
169+ $ this ->boolean ($ formAnswer ->canValidate ())->isFalse ();
175170
176171 // Login as glpi
177172 $ this ->boolean ($ this ->login ('glpi ' , 'glpi ' , true ))->istrue ();
178- $ this ->boolean ($ formAnswer ->canValidate ($ form , $ formAnswer ))->isTrue ();
173+ // The form answer has been submitted by glpi, which is a level 1 validator. So it is automatically validated,
174+ // and glpi can't validate it again
175+ $ this ->boolean ($ formAnswer ->canValidate ())->isFalse ();
179176
180177 // Login as normal
181178 $ this ->boolean ($ this ->login ('normal ' , 'normal ' , true ))->istrue ();
182- $ this ->boolean ($ formAnswer ->canValidate ($ form , $ formAnswer ))->isFalse ();
179+ $ this ->boolean ($ formAnswer ->canValidate ())->isFalse ();
180+
181+ $ this ->login ($ login , 'superadmin ' );
182+ $ formAnswer = $ this ->newTestedInstance ();
183+ $ formAnswer ->add ([
184+ 'plugin_formcreator_forms_id ' => $ form ->getID (),
185+ 'status ' => 'waiting ' ,
186+ 'formcreator_validator ' => Session::getLoginUserID (),
187+ ]);
188+ $ this ->boolean ($ formAnswer ->isNewItem ())->isFalse ();
189+
190+ // other user cannot validate his own form answer, because he is not a validator of the form
191+ $ this ->boolean ($ formAnswer ->canValidate ())->isFalse ();
192+
193+ // Login as glpi
194+ $ this ->boolean ($ this ->login ('glpi ' , 'glpi ' , true ))->istrue ();
195+ // The form answer has been submitted by someone else than glpi, so glpi can validate it
196+ $ this ->boolean ($ formAnswer ->canValidate ())->isTrue ();
183197 }
184198
185199 public function testSearchMyLastAnswersAsRequester () {
0 commit comments