4141use OCP \UserInterface ;
4242use PHPUnit \Framework \MockObject \MockObject ;
4343use Psr \Log \LoggerInterface ;
44+ use RuntimeException ;
4445use Test \TestCase ;
4546
4647class UsersControllerTest extends TestCase {
@@ -1639,6 +1640,8 @@ public function testEditUserRegularUserSelfEditChangeEmailValid() {
16391640 ->method ('getBackend ' )
16401641 ->willReturn ($ backend );
16411642
1643+ $ this ->config ->method ('getSystemValue ' )->willReturnCallback (fn (string $ key , mixed $ default ) => $ default );
1644+
16421645 $ this ->assertEquals ([], $ this ->api ->editUser ('UserToEdit ' , 'email ' , 'demo@nextcloud.com ' )->getData ());
16431646 }
16441647
@@ -1833,6 +1836,8 @@ public function testEditUserRegularUserSelfEditChangeEmailInvalid() {
18331836 ->method ('getBackend ' )
18341837 ->willReturn ($ backend );
18351838
1839+ $ this ->config ->method ('getSystemValue ' )->willReturnCallback (fn (string $ key , mixed $ default ) => $ default );
1840+
18361841 $ this ->api ->editUser ('UserToEdit ' , 'email ' , 'demo.org ' );
18371842 }
18381843
@@ -4224,7 +4229,8 @@ public function testResendWelcomeMessageFailed() {
42244229
42254230 public function dataGetEditableFields () {
42264231 return [
4227- [false , ISetDisplayNameBackend::class, [
4232+ [false , true , ISetDisplayNameBackend::class, [
4233+ IAccountManager::PROPERTY_EMAIL ,
42284234 IAccountManager::COLLECTION_EMAIL ,
42294235 IAccountManager::PROPERTY_PHONE ,
42304236 IAccountManager::PROPERTY_ADDRESS ,
@@ -4237,8 +4243,49 @@ public function dataGetEditableFields() {
42374243 IAccountManager::PROPERTY_BIOGRAPHY ,
42384244 IAccountManager::PROPERTY_PROFILE_ENABLED ,
42394245 ]],
4240- [true , ISetDisplayNameBackend::class, [
4246+ [true , false , ISetDisplayNameBackend::class, [
42414247 IAccountManager::PROPERTY_DISPLAYNAME ,
4248+ IAccountManager::COLLECTION_EMAIL ,
4249+ IAccountManager::PROPERTY_PHONE ,
4250+ IAccountManager::PROPERTY_ADDRESS ,
4251+ IAccountManager::PROPERTY_WEBSITE ,
4252+ IAccountManager::PROPERTY_TWITTER ,
4253+ IAccountManager::PROPERTY_FEDIVERSE ,
4254+ IAccountManager::PROPERTY_ORGANISATION ,
4255+ IAccountManager::PROPERTY_ROLE ,
4256+ IAccountManager::PROPERTY_HEADLINE ,
4257+ IAccountManager::PROPERTY_BIOGRAPHY ,
4258+ IAccountManager::PROPERTY_PROFILE_ENABLED ,
4259+ ]],
4260+ [true , true , ISetDisplayNameBackend::class, [
4261+ IAccountManager::PROPERTY_DISPLAYNAME ,
4262+ IAccountManager::PROPERTY_EMAIL ,
4263+ IAccountManager::COLLECTION_EMAIL ,
4264+ IAccountManager::PROPERTY_PHONE ,
4265+ IAccountManager::PROPERTY_ADDRESS ,
4266+ IAccountManager::PROPERTY_WEBSITE ,
4267+ IAccountManager::PROPERTY_TWITTER ,
4268+ IAccountManager::PROPERTY_FEDIVERSE ,
4269+ IAccountManager::PROPERTY_ORGANISATION ,
4270+ IAccountManager::PROPERTY_ROLE ,
4271+ IAccountManager::PROPERTY_HEADLINE ,
4272+ IAccountManager::PROPERTY_BIOGRAPHY ,
4273+ IAccountManager::PROPERTY_PROFILE_ENABLED ,
4274+ ]],
4275+ [false , false , ISetDisplayNameBackend::class, [
4276+ IAccountManager::COLLECTION_EMAIL ,
4277+ IAccountManager::PROPERTY_PHONE ,
4278+ IAccountManager::PROPERTY_ADDRESS ,
4279+ IAccountManager::PROPERTY_WEBSITE ,
4280+ IAccountManager::PROPERTY_TWITTER ,
4281+ IAccountManager::PROPERTY_FEDIVERSE ,
4282+ IAccountManager::PROPERTY_ORGANISATION ,
4283+ IAccountManager::PROPERTY_ROLE ,
4284+ IAccountManager::PROPERTY_HEADLINE ,
4285+ IAccountManager::PROPERTY_BIOGRAPHY ,
4286+ IAccountManager::PROPERTY_PROFILE_ENABLED ,
4287+ ]],
4288+ [false , true , UserInterface::class, [
42424289 IAccountManager::PROPERTY_EMAIL ,
42434290 IAccountManager::COLLECTION_EMAIL ,
42444291 IAccountManager::PROPERTY_PHONE ,
@@ -4252,7 +4299,20 @@ public function dataGetEditableFields() {
42524299 IAccountManager::PROPERTY_BIOGRAPHY ,
42534300 IAccountManager::PROPERTY_PROFILE_ENABLED ,
42544301 ]],
4255- [true , UserInterface::class, [
4302+ [true , false , UserInterface::class, [
4303+ IAccountManager::COLLECTION_EMAIL ,
4304+ IAccountManager::PROPERTY_PHONE ,
4305+ IAccountManager::PROPERTY_ADDRESS ,
4306+ IAccountManager::PROPERTY_WEBSITE ,
4307+ IAccountManager::PROPERTY_TWITTER ,
4308+ IAccountManager::PROPERTY_FEDIVERSE ,
4309+ IAccountManager::PROPERTY_ORGANISATION ,
4310+ IAccountManager::PROPERTY_ROLE ,
4311+ IAccountManager::PROPERTY_HEADLINE ,
4312+ IAccountManager::PROPERTY_BIOGRAPHY ,
4313+ IAccountManager::PROPERTY_PROFILE_ENABLED ,
4314+ ]],
4315+ [true , true , UserInterface::class, [
42564316 IAccountManager::PROPERTY_EMAIL ,
42574317 IAccountManager::COLLECTION_EMAIL ,
42584318 IAccountManager::PROPERTY_PHONE ,
@@ -4266,6 +4326,19 @@ public function dataGetEditableFields() {
42664326 IAccountManager::PROPERTY_BIOGRAPHY ,
42674327 IAccountManager::PROPERTY_PROFILE_ENABLED ,
42684328 ]],
4329+ [false , false , UserInterface::class, [
4330+ IAccountManager::COLLECTION_EMAIL ,
4331+ IAccountManager::PROPERTY_PHONE ,
4332+ IAccountManager::PROPERTY_ADDRESS ,
4333+ IAccountManager::PROPERTY_WEBSITE ,
4334+ IAccountManager::PROPERTY_TWITTER ,
4335+ IAccountManager::PROPERTY_FEDIVERSE ,
4336+ IAccountManager::PROPERTY_ORGANISATION ,
4337+ IAccountManager::PROPERTY_ROLE ,
4338+ IAccountManager::PROPERTY_HEADLINE ,
4339+ IAccountManager::PROPERTY_BIOGRAPHY ,
4340+ IAccountManager::PROPERTY_PROFILE_ENABLED ,
4341+ ]],
42694342 ];
42704343 }
42714344
@@ -4276,13 +4349,12 @@ public function dataGetEditableFields() {
42764349 * @param string $userBackend
42774350 * @param array $expected
42784351 */
4279- public function testGetEditableFields (bool $ allowedToChangeDisplayName , string $ userBackend , array $ expected ) {
4280- $ this ->config
4281- ->method ('getSystemValue ' )
4282- ->with (
4283- $ this ->equalTo ('allow_user_to_change_display_name ' ),
4284- $ this ->anything ()
4285- )->willReturn ($ allowedToChangeDisplayName );
4352+ public function testGetEditableFields (bool $ allowedToChangeDisplayName , bool $ allowedToChangeEmail , string $ userBackend , array $ expected ): void {
4353+ $ this ->config ->method ('getSystemValue ' )->willReturnCallback (fn (string $ key , mixed $ default ) => match ($ key ) {
4354+ 'allow_user_to_change_display_name ' => $ allowedToChangeDisplayName ,
4355+ 'allow_user_to_change_email ' => $ allowedToChangeEmail ,
4356+ default => throw new RuntimeException ('Unexpected system config key: ' . $ key ),
4357+ });
42864358
42874359 $ user = $ this ->createMock (IUser::class);
42884360 $ this ->userSession ->method ('getUser ' )
0 commit comments