chore: Adapt provisioning_api tests to code changes

Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
This commit is contained in:
Côme Chilliet 2026-02-03 15:01:50 +01:00
parent af760d174f
commit 173a338f76
No known key found for this signature in database
GPG key ID: A3E2F658B28C760A

View file

@ -39,7 +39,6 @@ use OCP\L10N\IFactory;
use OCP\Mail\IEMailTemplate;
use OCP\Security\Events\GenerateSecurePasswordEvent;
use OCP\Security\ISecureRandom;
use OCP\User\Backend\ISetDisplayNameBackend;
use OCP\UserInterface;
use PHPUnit\Framework\MockObject\MockObject;
use Psr\Log\LoggerInterface;
@ -1635,6 +1634,10 @@ class UsersControllerTest extends TestCase {
$targetUser = $this->getMockBuilder(IUser::class)
->disableOriginalConstructor()
->getMock();
$targetUser
->expects($this->once())
->method('canChangeDisplayName')
->willReturn(true);
$this->userSession
->expects($this->once())
->method('getUser')
@ -1644,10 +1647,6 @@ class UsersControllerTest extends TestCase {
->method('get')
->with('UserToEdit')
->willReturn($targetUser);
$targetUser
->expects($this->once())
->method('getBackend')
->willReturn($this->createMock(ISetDisplayNameBackend::class));
$targetUser
->expects($this->once())
->method('setDisplayName')
@ -1672,6 +1671,14 @@ class UsersControllerTest extends TestCase {
$targetUser = $this->getMockBuilder(IUser::class)
->disableOriginalConstructor()
->getMock();
$targetUser
->expects($this->atLeastOnce())
->method('canEditProperty')
->willReturnCallback(
fn (string $property): bool => match($property) {
IAccountManager::PROPERTY_EMAIL => true,
default => false,
});
$this->userSession
->expects($this->once())
->method('getUser')
@ -1690,12 +1697,6 @@ class UsersControllerTest extends TestCase {
->method('getUID')
->willReturn('UID');
$backend = $this->createMock(UserInterface::class);
$targetUser
->expects($this->any())
->method('getBackend')
->willReturn($backend);
$this->config->method('getSystemValue')->willReturnCallback(fn (string $key, mixed $default) => $default);
$this->assertEquals([], $this->api->editUser('UserToEdit', 'email', 'demo@nextcloud.com')->getData());
@ -1726,12 +1727,6 @@ class UsersControllerTest extends TestCase {
->method('getUID')
->willReturn('UID');
$backend = $this->createMock(UserInterface::class);
$targetUser
->expects($this->any())
->method('getBackend')
->willReturn($backend);
$userAccount = $this->createMock(IAccount::class);
$this->accountManager
@ -1772,11 +1767,6 @@ class UsersControllerTest extends TestCase {
->method('getUID')
->willReturn('UID');
$backend = $this->createMock(UserInterface::class);
$targetUser
->expects($this->any())
->method('getBackend')
->willReturn($backend);
$targetUser
->expects($this->any())
->method('getSystemEMailAddress')
@ -1824,12 +1814,6 @@ class UsersControllerTest extends TestCase {
->method('getUID')
->willReturn('UID');
$backend = $this->createMock(UserInterface::class);
$targetUser
->expects($this->any())
->method('getBackend')
->willReturn($backend);
$property = $this->createMock(IAccountProperty::class);
$property->method('getValue')
->willReturn('demo1@nextcloud.com');
@ -1886,11 +1870,14 @@ class UsersControllerTest extends TestCase {
->method('getUID')
->willReturn('UID');
$backend = $this->createMock(UserInterface::class);
$targetUser
->expects($this->any())
->method('getBackend')
->willReturn($backend);
->expects($this->atLeastOnce())
->method('canEditProperty')
->willReturnCallback(
fn (string $property): bool => match($property) {
IAccountManager::PROPERTY_EMAIL => true,
default => false,
});
$this->config->method('getSystemValue')->willReturnCallback(fn (string $key, mixed $default) => $default);
@ -1923,6 +1910,14 @@ class UsersControllerTest extends TestCase {
->expects($this->any())
->method('getUID')
->willReturn('UID');
$loggedInUser
->expects($this->atLeastOnce())
->method('canEditProperty')
->willReturnCallback(
fn (string $property): bool => match($property) {
$propertyName => true,
default => false,
});
$this->userSession
->expects($this->once())
->method('getUser')
@ -4290,137 +4285,79 @@ class UsersControllerTest extends TestCase {
public static function dataGetEditableFields(): array {
return [
[false, true, ISetDisplayNameBackend::class, [
[false, true, [
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_BIOGRAPHY,
IAccountManager::PROPERTY_BIRTHDATE,
IAccountManager::PROPERTY_EMAIL,
IAccountManager::COLLECTION_EMAIL,
IAccountManager::PROPERTY_PHONE,
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_BLUESKY,
IAccountManager::PROPERTY_FEDIVERSE,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_HEADLINE,
IAccountManager::PROPERTY_BIOGRAPHY,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_PHONE,
IAccountManager::PROPERTY_PROFILE_ENABLED,
IAccountManager::PROPERTY_PRONOUNS,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_BLUESKY,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::COLLECTION_EMAIL,
]],
[true, false, ISetDisplayNameBackend::class, [
[true, false, [
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_BIOGRAPHY,
IAccountManager::PROPERTY_BIRTHDATE,
IAccountManager::PROPERTY_DISPLAYNAME,
IAccountManager::COLLECTION_EMAIL,
IAccountManager::PROPERTY_PHONE,
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_BLUESKY,
IAccountManager::PROPERTY_FEDIVERSE,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_HEADLINE,
IAccountManager::PROPERTY_BIOGRAPHY,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_PHONE,
IAccountManager::PROPERTY_PROFILE_ENABLED,
IAccountManager::PROPERTY_PRONOUNS,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_BLUESKY,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::COLLECTION_EMAIL,
]],
[true, true, ISetDisplayNameBackend::class, [
[true, true, [
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_BIOGRAPHY,
IAccountManager::PROPERTY_BIRTHDATE,
IAccountManager::PROPERTY_DISPLAYNAME,
IAccountManager::PROPERTY_EMAIL,
IAccountManager::COLLECTION_EMAIL,
IAccountManager::PROPERTY_PHONE,
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_BLUESKY,
IAccountManager::PROPERTY_FEDIVERSE,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_HEADLINE,
IAccountManager::PROPERTY_BIOGRAPHY,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_PHONE,
IAccountManager::PROPERTY_PROFILE_ENABLED,
IAccountManager::PROPERTY_PRONOUNS,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_BLUESKY,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::COLLECTION_EMAIL,
]],
[false, false, ISetDisplayNameBackend::class, [
IAccountManager::COLLECTION_EMAIL,
IAccountManager::PROPERTY_PHONE,
[false, false, [
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_BLUESKY,
IAccountManager::PROPERTY_FEDIVERSE,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_HEADLINE,
IAccountManager::PROPERTY_BIOGRAPHY,
IAccountManager::PROPERTY_BIRTHDATE,
IAccountManager::PROPERTY_FEDIVERSE,
IAccountManager::PROPERTY_HEADLINE,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_PHONE,
IAccountManager::PROPERTY_PROFILE_ENABLED,
IAccountManager::PROPERTY_PRONOUNS,
]],
[false, true, UserInterface::class, [
IAccountManager::PROPERTY_EMAIL,
IAccountManager::COLLECTION_EMAIL,
IAccountManager::PROPERTY_PHONE,
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_BLUESKY,
IAccountManager::PROPERTY_FEDIVERSE,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_HEADLINE,
IAccountManager::PROPERTY_BIOGRAPHY,
IAccountManager::PROPERTY_PROFILE_ENABLED,
IAccountManager::PROPERTY_PRONOUNS,
]],
[true, false, UserInterface::class, [
IAccountManager::COLLECTION_EMAIL,
IAccountManager::PROPERTY_PHONE,
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_BLUESKY,
IAccountManager::PROPERTY_FEDIVERSE,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_HEADLINE,
IAccountManager::PROPERTY_BIOGRAPHY,
IAccountManager::PROPERTY_PROFILE_ENABLED,
IAccountManager::PROPERTY_PRONOUNS,
]],
[true, true, UserInterface::class, [
IAccountManager::PROPERTY_EMAIL,
IAccountManager::COLLECTION_EMAIL,
IAccountManager::PROPERTY_PHONE,
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_BLUESKY,
IAccountManager::PROPERTY_FEDIVERSE,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_HEADLINE,
IAccountManager::PROPERTY_BIOGRAPHY,
IAccountManager::PROPERTY_PROFILE_ENABLED,
IAccountManager::PROPERTY_PRONOUNS,
]],
[false, false, UserInterface::class, [
IAccountManager::COLLECTION_EMAIL,
IAccountManager::PROPERTY_PHONE,
IAccountManager::PROPERTY_ADDRESS,
IAccountManager::PROPERTY_WEBSITE,
IAccountManager::PROPERTY_TWITTER,
IAccountManager::PROPERTY_BLUESKY,
IAccountManager::PROPERTY_FEDIVERSE,
IAccountManager::PROPERTY_ORGANISATION,
IAccountManager::PROPERTY_ROLE,
IAccountManager::PROPERTY_HEADLINE,
IAccountManager::PROPERTY_BIOGRAPHY,
IAccountManager::PROPERTY_PROFILE_ENABLED,
IAccountManager::PROPERTY_PRONOUNS,
]],
];
}
#[\PHPUnit\Framework\Attributes\DataProvider(methodName: 'dataGetEditableFields')]
public function testGetEditableFields(bool $allowedToChangeDisplayName, bool $allowedToChangeEmail, string $userBackend, array $expected): void {
public function testGetEditableFields(bool $allowedToChangeDisplayName, bool $allowedToChangeEmail, array $expected): void {
$this->config->method('getSystemValue')->willReturnCallback(fn (string $key, mixed $default) => match ($key) {
'allow_user_to_change_display_name' => $allowedToChangeDisplayName,
'allow_user_to_change_email' => $allowedToChangeEmail,
@ -4431,12 +4368,16 @@ class UsersControllerTest extends TestCase {
$this->userSession->method('getUser')
->willReturn($user);
$backend = $this->createMock($userBackend);
$user->method('getUID')
->willReturn('userId');
$user->method('getBackend')
->willReturn($backend);
$user->method('canEditProperty')
->willReturnCallback(
fn (string $property): bool => match($property) {
IAccountManager::PROPERTY_DISPLAYNAME => $allowedToChangeDisplayName,
IAccountManager::PROPERTY_EMAIL => $allowedToChangeEmail,
default => true,
}
);
$expectedResp = new DataResponse($expected);
$this->assertEquals($expectedResp, $this->api->getEditableFields('userId'));