7474use OCP \UserInterface ;
7575use PHPUnit \Framework \MockObject \MockObject ;
7676use Psr \Log \LoggerInterface ;
77+ use RuntimeException ;
7778use Test \TestCase ;
7879
7980class UsersControllerTest extends TestCase {
@@ -1679,6 +1680,8 @@ public function testEditUserRegularUserSelfEditChangeEmailValid() {
16791680 ->method ('getBackend ' )
16801681 ->willReturn ($ backend );
16811682
1683+ $ this ->config ->method ('getSystemValue ' )->willReturnCallback (fn (string $ key , mixed $ default ) => $ default );
1684+
16821685 $ this ->assertEquals ([], $ this ->api ->editUser ('UserToEdit ' , 'email ' , 'demo@nextcloud.com ' )->getData ());
16831686 }
16841687
@@ -1873,6 +1876,8 @@ public function testEditUserRegularUserSelfEditChangeEmailInvalid() {
18731876 ->method ('getBackend ' )
18741877 ->willReturn ($ backend );
18751878
1879+ $ this ->config ->method ('getSystemValue ' )->willReturnCallback (fn (string $ key , mixed $ default ) => $ default );
1880+
18761881 $ this ->api ->editUser ('UserToEdit ' , 'email ' , 'demo.org ' );
18771882 }
18781883
@@ -4244,7 +4249,8 @@ public function testResendWelcomeMessageFailed() {
42444249
42454250 public function dataGetEditableFields () {
42464251 return [
4247- [false , ISetDisplayNameBackend::class, [
4252+ [false , true , ISetDisplayNameBackend::class, [
4253+ IAccountManager::PROPERTY_EMAIL ,
42484254 IAccountManager::COLLECTION_EMAIL ,
42494255 IAccountManager::PROPERTY_PHONE ,
42504256 IAccountManager::PROPERTY_ADDRESS ,
@@ -4257,8 +4263,49 @@ public function dataGetEditableFields() {
42574263 IAccountManager::PROPERTY_BIOGRAPHY ,
42584264 IAccountManager::PROPERTY_PROFILE_ENABLED ,
42594265 ]],
4260- [true , ISetDisplayNameBackend::class, [
4266+ [true , false , ISetDisplayNameBackend::class, [
42614267 IAccountManager::PROPERTY_DISPLAYNAME ,
4268+ IAccountManager::COLLECTION_EMAIL ,
4269+ IAccountManager::PROPERTY_PHONE ,
4270+ IAccountManager::PROPERTY_ADDRESS ,
4271+ IAccountManager::PROPERTY_WEBSITE ,
4272+ IAccountManager::PROPERTY_TWITTER ,
4273+ IAccountManager::PROPERTY_FEDIVERSE ,
4274+ IAccountManager::PROPERTY_ORGANISATION ,
4275+ IAccountManager::PROPERTY_ROLE ,
4276+ IAccountManager::PROPERTY_HEADLINE ,
4277+ IAccountManager::PROPERTY_BIOGRAPHY ,
4278+ IAccountManager::PROPERTY_PROFILE_ENABLED ,
4279+ ]],
4280+ [true , true , ISetDisplayNameBackend::class, [
4281+ IAccountManager::PROPERTY_DISPLAYNAME ,
4282+ IAccountManager::PROPERTY_EMAIL ,
4283+ IAccountManager::COLLECTION_EMAIL ,
4284+ IAccountManager::PROPERTY_PHONE ,
4285+ IAccountManager::PROPERTY_ADDRESS ,
4286+ IAccountManager::PROPERTY_WEBSITE ,
4287+ IAccountManager::PROPERTY_TWITTER ,
4288+ IAccountManager::PROPERTY_FEDIVERSE ,
4289+ IAccountManager::PROPERTY_ORGANISATION ,
4290+ IAccountManager::PROPERTY_ROLE ,
4291+ IAccountManager::PROPERTY_HEADLINE ,
4292+ IAccountManager::PROPERTY_BIOGRAPHY ,
4293+ IAccountManager::PROPERTY_PROFILE_ENABLED ,
4294+ ]],
4295+ [false , false , ISetDisplayNameBackend::class, [
4296+ IAccountManager::COLLECTION_EMAIL ,
4297+ IAccountManager::PROPERTY_PHONE ,
4298+ IAccountManager::PROPERTY_ADDRESS ,
4299+ IAccountManager::PROPERTY_WEBSITE ,
4300+ IAccountManager::PROPERTY_TWITTER ,
4301+ IAccountManager::PROPERTY_FEDIVERSE ,
4302+ IAccountManager::PROPERTY_ORGANISATION ,
4303+ IAccountManager::PROPERTY_ROLE ,
4304+ IAccountManager::PROPERTY_HEADLINE ,
4305+ IAccountManager::PROPERTY_BIOGRAPHY ,
4306+ IAccountManager::PROPERTY_PROFILE_ENABLED ,
4307+ ]],
4308+ [false , true , UserInterface::class, [
42624309 IAccountManager::PROPERTY_EMAIL ,
42634310 IAccountManager::COLLECTION_EMAIL ,
42644311 IAccountManager::PROPERTY_PHONE ,
@@ -4272,7 +4319,20 @@ public function dataGetEditableFields() {
42724319 IAccountManager::PROPERTY_BIOGRAPHY ,
42734320 IAccountManager::PROPERTY_PROFILE_ENABLED ,
42744321 ]],
4275- [true , UserInterface::class, [
4322+ [true , false , UserInterface::class, [
4323+ IAccountManager::COLLECTION_EMAIL ,
4324+ IAccountManager::PROPERTY_PHONE ,
4325+ IAccountManager::PROPERTY_ADDRESS ,
4326+ IAccountManager::PROPERTY_WEBSITE ,
4327+ IAccountManager::PROPERTY_TWITTER ,
4328+ IAccountManager::PROPERTY_FEDIVERSE ,
4329+ IAccountManager::PROPERTY_ORGANISATION ,
4330+ IAccountManager::PROPERTY_ROLE ,
4331+ IAccountManager::PROPERTY_HEADLINE ,
4332+ IAccountManager::PROPERTY_BIOGRAPHY ,
4333+ IAccountManager::PROPERTY_PROFILE_ENABLED ,
4334+ ]],
4335+ [true , true , UserInterface::class, [
42764336 IAccountManager::PROPERTY_EMAIL ,
42774337 IAccountManager::COLLECTION_EMAIL ,
42784338 IAccountManager::PROPERTY_PHONE ,
@@ -4286,6 +4346,19 @@ public function dataGetEditableFields() {
42864346 IAccountManager::PROPERTY_BIOGRAPHY ,
42874347 IAccountManager::PROPERTY_PROFILE_ENABLED ,
42884348 ]],
4349+ [false , false , UserInterface::class, [
4350+ IAccountManager::COLLECTION_EMAIL ,
4351+ IAccountManager::PROPERTY_PHONE ,
4352+ IAccountManager::PROPERTY_ADDRESS ,
4353+ IAccountManager::PROPERTY_WEBSITE ,
4354+ IAccountManager::PROPERTY_TWITTER ,
4355+ IAccountManager::PROPERTY_FEDIVERSE ,
4356+ IAccountManager::PROPERTY_ORGANISATION ,
4357+ IAccountManager::PROPERTY_ROLE ,
4358+ IAccountManager::PROPERTY_HEADLINE ,
4359+ IAccountManager::PROPERTY_BIOGRAPHY ,
4360+ IAccountManager::PROPERTY_PROFILE_ENABLED ,
4361+ ]],
42894362 ];
42904363 }
42914364
@@ -4296,13 +4369,12 @@ public function dataGetEditableFields() {
42964369 * @param string $userBackend
42974370 * @param array $expected
42984371 */
4299- public function testGetEditableFields (bool $ allowedToChangeDisplayName , string $ userBackend , array $ expected ) {
4300- $ this ->config
4301- ->method ('getSystemValue ' )
4302- ->with (
4303- $ this ->equalTo ('allow_user_to_change_display_name ' ),
4304- $ this ->anything ()
4305- )->willReturn ($ allowedToChangeDisplayName );
4372+ public function testGetEditableFields (bool $ allowedToChangeDisplayName , bool $ allowedToChangeEmail , string $ userBackend , array $ expected ): void {
4373+ $ this ->config ->method ('getSystemValue ' )->willReturnCallback (fn (string $ key , mixed $ default ) => match ($ key ) {
4374+ 'allow_user_to_change_display_name ' => $ allowedToChangeDisplayName ,
4375+ 'allow_user_to_change_email ' => $ allowedToChangeEmail ,
4376+ default => throw new RuntimeException ('Unexpected system config key: ' . $ key ),
4377+ });
43064378
43074379 $ user = $ this ->createMock (IUser::class);
43084380 $ this ->userSession ->method ('getUser ' )
0 commit comments