@@ -837,6 +837,95 @@ class TestUsersPresenter extends Tester\TestCase
837837 Assert::false ($ payload ['privateData ' ]['isAllowed ' ]);
838838 Assert::false ($ this ->users ->getByEmail ($ victim )->isAllowed ());
839839 }
840+
841+ public function testSetNewExternalId ()
842+ {
843+ 844+ PresenterTestHelper::loginDefaultAdmin ($ this ->container );
845+ $ user = $ this ->users ->getByEmail ($ victim );
846+ Assert::false ($ user ->hasExternalAccounts ());
847+
848+ $ payload = PresenterTestHelper::performPresenterRequest (
849+ $ this ->presenter ,
850+ $ this ->presenterPath ,
851+ 'POST ' ,
852+ ['action ' => 'updateExternalLogin ' , 'id ' => $ user ->getId (), 'service ' => 'test-cas ' ],
853+ ['externalId ' => 'abc ' ]
854+ );
855+
856+ Assert::equal ($ user ->getId (), $ payload ['id ' ]);
857+ Assert::true ($ payload ['privateData ' ]['isExternal ' ]);
858+
859+ $ els = $ this ->presenter ->externalLogins ->findAll ();
860+ Assert::count (1 , $ els );
861+ Assert::equal ($ user ->getId (), $ els [0 ]->getUser ()->getId ());
862+ Assert::equal ('abc ' , $ els [0 ]->getExternalId ());
863+ Assert::equal ('test-cas ' , $ els [0 ]->getAuthService ());
864+
865+ $ this ->users ->refresh ($ user );
866+ Assert::true ($ user ->hasExternalAccounts ());
867+ Assert::equal (['test-cas ' => 'abc ' ], $ user ->getConsolidatedExternalLogins ());
868+ }
869+
870+ public function testUpdateExternalId ()
871+ {
872+ 873+ PresenterTestHelper::loginDefaultAdmin ($ this ->container );
874+ $ user = $ this ->users ->getByEmail ($ victim );
875+ Assert::false ($ user ->hasExternalAccounts ());
876+ $ this ->presenter ->externalLogins ->connect ('test-cas ' , $ user , 'old ' );
877+ $ this ->users ->refresh ($ user );
878+ Assert::equal (['test-cas ' => 'old ' ], $ user ->getConsolidatedExternalLogins ());
879+
880+ $ payload = PresenterTestHelper::performPresenterRequest (
881+ $ this ->presenter ,
882+ $ this ->presenterPath ,
883+ 'POST ' ,
884+ ['action ' => 'updateExternalLogin ' , 'id ' => $ user ->getId (), 'service ' => 'test-cas ' ],
885+ ['externalId ' => 'abc ' ]
886+ );
887+
888+ Assert::equal ($ user ->getId (), $ payload ['id ' ]);
889+ Assert::true ($ payload ['privateData ' ]['isExternal ' ]);
890+
891+ $ els = $ this ->presenter ->externalLogins ->findAll ();
892+ Assert::count (1 , $ els );
893+ Assert::equal ($ user ->getId (), $ els [0 ]->getUser ()->getId ());
894+ Assert::equal ('abc ' , $ els [0 ]->getExternalId ());
895+ Assert::equal ('test-cas ' , $ els [0 ]->getAuthService ());
896+
897+ $ this ->users ->refresh ($ user );
898+ Assert::true ($ user ->hasExternalAccounts ());
899+ Assert::equal (['test-cas ' => 'abc ' ], $ user ->getConsolidatedExternalLogins ());
900+ }
901+
902+ public function testRemoveExternalId ()
903+ {
904+ 905+ PresenterTestHelper::loginDefaultAdmin ($ this ->container );
906+ $ user = $ this ->users ->getByEmail ($ victim );
907+ Assert::false ($ user ->hasExternalAccounts ());
908+ $ this ->presenter ->externalLogins ->connect ('test-cas ' , $ user , 'old ' );
909+ $ this ->users ->refresh ($ user );
910+ Assert::equal (['test-cas ' => 'old ' ], $ user ->getConsolidatedExternalLogins ());
911+
912+ $ payload = PresenterTestHelper::performPresenterRequest (
913+ $ this ->presenter ,
914+ $ this ->presenterPath ,
915+ 'DELETE ' ,
916+ ['action ' => 'removeExternalLogin ' , 'id ' => $ user ->getId (), 'service ' => 'test-cas ' ]
917+ );
918+
919+ Assert::equal ($ user ->getId (), $ payload ['id ' ]);
920+ Assert::false ($ payload ['privateData ' ]['isExternal ' ]);
921+
922+ $ els = $ this ->presenter ->externalLogins ->findAll ();
923+ Assert::count (0 , $ els );
924+
925+ $ this ->users ->refresh ($ user );
926+ Assert::false ($ user ->hasExternalAccounts ());
927+ Assert::equal ([], $ user ->getConsolidatedExternalLogins ());
928+ }
840929}
841930
842931(new TestUsersPresenter ())->run ();
0 commit comments