@@ -79,8 +79,8 @@ class TestRegistrationPresenter extends Tester\TestCase
7979 $ this ->presenter = PresenterTestHelper::createPresenter ($ this ->container , RegistrationPresenter::class);
8080 $ this ->presenter ->registrationConfig = new RegistrationConfig (
8181 [
82- 'enabled ' => true ,
83- 'implicitGroupsIds ' => []
82+ 'enabled ' => true ,
83+ 'implicitGroupsIds ' => []
8484 ]
8585 );
8686
@@ -118,14 +118,14 @@ class TestRegistrationPresenter extends Tester\TestCase
118118 'POST ' ,
119119 ['action ' => 'createAccount ' ],
120120 [
121- 'email ' => $ email ,
122- 'firstName ' => $ firstName ,
123- 'lastName ' => $ lastName ,
124- 'password ' => $ password ,
125- 'passwordConfirm ' => $ password ,
126- 'instanceId ' => $ instanceId ,
127- 'titlesBeforeName ' => $ titlesBeforeName ,
128- 'titlesAfterName ' => $ titlesAfterName
121+ 'email ' => $ email ,
122+ 'firstName ' => $ firstName ,
123+ 'lastName ' => $ lastName ,
124+ 'password ' => $ password ,
125+ 'passwordConfirm ' => $ password ,
126+ 'instanceId ' => $ instanceId ,
127+ 'titlesBeforeName ' => $ titlesBeforeName ,
128+ 'titlesAfterName ' => $ titlesAfterName
129129 ]
130130 );
131131 $ response = $ this ->presenter ->run ($ request );
@@ -170,20 +170,20 @@ class TestRegistrationPresenter extends Tester\TestCase
170170 'POST ' ,
171171 ['action ' => 'createAccount ' ],
172172 [
173- 'email ' => $ email ,
174- 'firstName ' => $ firstName ,
175- 'lastName ' => $ lastName ,
176- 'password ' => $ password ,
177- 'passwordConfirm ' => $ password ,
178- 'instanceId ' => $ instanceId ,
179- 'titlesBeforeName ' => $ titlesBeforeName ,
180- 'titlesAfterName ' => $ titlesAfterName
173+ 'email ' => $ email ,
174+ 'firstName ' => $ firstName ,
175+ 'lastName ' => $ lastName ,
176+ 'password ' => $ password ,
177+ 'passwordConfirm ' => $ password ,
178+ 'instanceId ' => $ instanceId ,
179+ 'titlesBeforeName ' => $ titlesBeforeName ,
180+ 'titlesAfterName ' => $ titlesAfterName
181181 ]
182182 );
183183 $ this ->presenter ->registrationConfig = new RegistrationConfig (
184184 [
185- 'enabled ' => true ,
186- 'implicitGroupsIds ' => [$ groupId ]
185+ 'enabled ' => true ,
186+ 'implicitGroupsIds ' => [$ groupId ]
187187 ]
188188 );
189189 $ response = $ this ->presenter ->run ($ request );
@@ -226,19 +226,19 @@ class TestRegistrationPresenter extends Tester\TestCase
226226 'POST ' ,
227227 ['action ' => 'createAccount ' ],
228228 [
229- 'email ' => $ email ,
230- 'firstName ' => $ firstName ,
231- 'lastName ' => $ lastName ,
232- 'password ' => $ password ,
233- 'passwordConfirm ' => $ password ,
234- 'instanceId ' => $ instanceId ,
235- 'titlesBeforeName ' => $ titlesBeforeName ,
236- 'titlesAfterName ' => $ titlesAfterName
229+ 'email ' => $ email ,
230+ 'firstName ' => $ firstName ,
231+ 'lastName ' => $ lastName ,
232+ 'password ' => $ password ,
233+ 'passwordConfirm ' => $ password ,
234+ 'instanceId ' => $ instanceId ,
235+ 'titlesBeforeName ' => $ titlesBeforeName ,
236+ 'titlesAfterName ' => $ titlesAfterName
237237 ]
238238 );
239239 $ this ->presenter ->registrationConfig = new RegistrationConfig (
240240 [
241- 'enabled ' => false ,
241+ 'enabled ' => false ,
242242 ]
243243 );
244244
@@ -265,14 +265,14 @@ class TestRegistrationPresenter extends Tester\TestCase
265265 'POST ' ,
266266 ['action ' => 'createAccount ' ],
267267 [
268- 'email ' => $ email ,
269- 'firstName ' => $ firstName ,
270- 'lastName ' => $ lastName ,
271- 'password ' => $ password ,
272- 'passwordConfirm ' => $ password ,
273- 'instanceId ' => $ instanceId ,
274- 'titlesBeforeName ' => $ titlesBeforeName ,
275- 'titlesAfterName ' => $ titlesAfterName
268+ 'email ' => $ email ,
269+ 'firstName ' => $ firstName ,
270+ 'lastName ' => $ lastName ,
271+ 'password ' => $ password ,
272+ 'passwordConfirm ' => $ password ,
273+ 'instanceId ' => $ instanceId ,
274+ 'titlesBeforeName ' => $ titlesBeforeName ,
275+ 'titlesAfterName ' => $ titlesAfterName
276276 ]
277277 );
278278
@@ -302,14 +302,14 @@ class TestRegistrationPresenter extends Tester\TestCase
302302 'POST ' ,
303303 ['action ' => 'createAccount ' ],
304304 [
305- 'email ' => $ email ,
306- 'firstName ' => $ firstName ,
307- 'lastName ' => $ lastName ,
308- 'password ' => $ password ,
309- 'passwordConfirm ' => $ passwordConfirm ,
310- 'instanceId ' => $ instanceId ,
311- 'titlesBeforeName ' => $ titlesBeforeName ,
312- 'titlesAfterName ' => $ titlesAfterName
305+ 'email ' => $ email ,
306+ 'firstName ' => $ firstName ,
307+ 'lastName ' => $ lastName ,
308+ 'password ' => $ password ,
309+ 'passwordConfirm ' => $ passwordConfirm ,
310+ 'instanceId ' => $ instanceId ,
311+ 'titlesBeforeName ' => $ titlesBeforeName ,
312+ 'titlesAfterName ' => $ titlesAfterName
313313 ]
314314 );
315315
@@ -336,14 +336,14 @@ class TestRegistrationPresenter extends Tester\TestCase
336336 'POST ' ,
337337 ['action ' => 'createAccount ' ],
338338 [
339- 'email ' => $ email ,
340- 'firstName ' => $ firstName ,
341- 'lastName ' => $ lastName ,
342- 'password ' => $ password ,
343- 'passwordConfirm ' => $ password ,
344- 'instanceId ' => $ instanceId ,
345- 'titlesBeforeName ' => $ titlesBeforeName ,
346- 'titlesAfterName ' => $ titlesAfterName
339+ 'email ' => $ email ,
340+ 'firstName ' => $ firstName ,
341+ 'lastName ' => $ lastName ,
342+ 'password ' => $ password ,
343+ 'passwordConfirm ' => $ password ,
344+ 'instanceId ' => $ instanceId ,
345+ 'titlesBeforeName ' => $ titlesBeforeName ,
346+ 'titlesAfterName ' => $ titlesAfterName
347347 ]
348348 );
349349
@@ -363,8 +363,8 @@ class TestRegistrationPresenter extends Tester\TestCase
363363 'POST ' ,
364364 ['action ' => 'validateRegistrationData ' ],
365365 [
366- 367- 'password ' => "totallySecurePasswordWhichIsNot123456 "
366+ 367+ 'password ' => "totallySecurePasswordWhichIsNot123456 "
368368 ]
369369 );
370370 $ response = $ this ->presenter ->run ($ request );
@@ -511,8 +511,99 @@ class TestRegistrationPresenter extends Tester\TestCase
511511 ]
512512 );
513513 },
514- BadRequestException::class
514+ ForbiddenRequestException::class
515+ );
516+ }
517+
518+ public function testCreateInvitationWithSameName ()
519+ {
520+ $ student = $ this ->presenter ->users ->getByEmail (PresenterTestHelper::STUDENT_GROUP_MEMBER_LOGIN );
521+ Assert::notNull ($ student );
522+
523+ 524+ $ firstName = $ student ->getFirstName ();
525+ $ lastName = $ student ->getLastName ();
526+ $ instances = $ this ->instances ->findAll ();
527+ $ instanceId = array_pop ($ instances )->getId ();
528+ $ titlesBeforeName = "titlesBeforeName " ;
529+ $ titlesAfterName = "titlesAfterName " ;
530+
531+ $ groups = [];
532+ foreach ($ this ->presenter ->groups ->findAll () as $ group ) {
533+ if (!$ group ->isArchived () && !$ group ->isOrganizational ()) {
534+ $ groups [] = $ group ->getId ();
535+ }
536+ }
537+ Assert::truthy ($ groups );
538+
539+ PresenterTestHelper::loginDefaultAdmin ($ this ->container );
540+ $ payload = PresenterTestHelper::performPresenterRequest (
541+ $ this ->presenter ,
542+ $ this ->presenterPath ,
543+ 'POST ' ,
544+ ['action ' => 'createInvitation ' ],
545+ [
546+ 'email ' => $ email ,
547+ 'firstName ' => $ firstName ,
548+ 'lastName ' => $ lastName ,
549+ 'titlesBeforeName ' => $ titlesBeforeName ,
550+ 'titlesAfterName ' => $ titlesAfterName ,
551+ 'instanceId ' => $ instanceId ,
552+ 'groups ' => $ groups ,
553+ 'locale ' => 'en ' ,
554+ ]
555+ );
556+
557+ Assert::count (1 , $ payload );
558+ $ user = current ($ payload );
559+ Assert::equal ($ student ->getId (), $ user ["id " ]);
560+ }
561+
562+ public function testCreateInvitationWithSameNameEnabled ()
563+ {
564+ $ student = $ this ->presenter ->users ->getByEmail (PresenterTestHelper::STUDENT_GROUP_MEMBER_LOGIN );
565+ Assert::notNull ($ student );
566+
567+ 568+ $ firstName = $ student ->getFirstName ();
569+ $ lastName = $ student ->getLastName ();
570+ $ instances = $ this ->instances ->findAll ();
571+ $ instanceId = array_pop ($ instances )->getId ();
572+ $ titlesBeforeName = "titlesBeforeName " ;
573+ $ titlesAfterName = "titlesAfterName " ;
574+
575+ $ groups = [];
576+ foreach ($ this ->presenter ->groups ->findAll () as $ group ) {
577+ if (!$ group ->isArchived () && !$ group ->isOrganizational ()) {
578+ $ groups [] = $ group ->getId ();
579+ }
580+ }
581+ Assert::truthy ($ groups );
582+
583+ $ this ->emailHelperMock ->shouldReceive ("send " )
584+ ->with ("noreply@recodex " , [$ email ], "en " , 'User Admin Admin has invited you in ReCodEx! ' , Mockery::any ())
585+ ->once ()->andReturn (true );
586+
587+ PresenterTestHelper::loginDefaultAdmin ($ this ->container );
588+ $ payload = PresenterTestHelper::performPresenterRequest (
589+ $ this ->presenter ,
590+ $ this ->presenterPath ,
591+ 'POST ' ,
592+ ['action ' => 'createInvitation ' ],
593+ [
594+ 'email ' => $ email ,
595+ 'firstName ' => $ firstName ,
596+ 'lastName ' => $ lastName ,
597+ 'titlesBeforeName ' => $ titlesBeforeName ,
598+ 'titlesAfterName ' => $ titlesAfterName ,
599+ 'instanceId ' => $ instanceId ,
600+ 'groups ' => $ groups ,
601+ 'locale ' => 'en ' ,
602+ 'ignoreNameCollision ' => true ,
603+ ]
515604 );
605+
606+ Assert::equal ("OK " , $ payload );
516607 }
517608
518609 public function testAcceptInvitation ()
0 commit comments