Skip to content

Commit 173a338

Browse files
committed
chore: Adapt provisioning_api tests to code changes
Signed-off-by: Côme Chilliet <come.chilliet@nextcloud.com>
1 parent af760d1 commit 173a338

1 file changed

Lines changed: 72 additions & 131 deletions

File tree

apps/provisioning_api/tests/Controller/UsersControllerTest.php

Lines changed: 72 additions & 131 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,6 @@
3939
use OCP\Mail\IEMailTemplate;
4040
use OCP\Security\Events\GenerateSecurePasswordEvent;
4141
use OCP\Security\ISecureRandom;
42-
use OCP\User\Backend\ISetDisplayNameBackend;
4342
use OCP\UserInterface;
4443
use PHPUnit\Framework\MockObject\MockObject;
4544
use Psr\Log\LoggerInterface;
@@ -1635,6 +1634,10 @@ public function testEditUserRegularUserSelfEditChangeDisplayName(): void {
16351634
$targetUser = $this->getMockBuilder(IUser::class)
16361635
->disableOriginalConstructor()
16371636
->getMock();
1637+
$targetUser
1638+
->expects($this->once())
1639+
->method('canChangeDisplayName')
1640+
->willReturn(true);
16381641
$this->userSession
16391642
->expects($this->once())
16401643
->method('getUser')
@@ -1644,10 +1647,6 @@ public function testEditUserRegularUserSelfEditChangeDisplayName(): void {
16441647
->method('get')
16451648
->with('UserToEdit')
16461649
->willReturn($targetUser);
1647-
$targetUser
1648-
->expects($this->once())
1649-
->method('getBackend')
1650-
->willReturn($this->createMock(ISetDisplayNameBackend::class));
16511650
$targetUser
16521651
->expects($this->once())
16531652
->method('setDisplayName')
@@ -1672,6 +1671,14 @@ public function testEditUserRegularUserSelfEditChangeEmailValid(): void {
16721671
$targetUser = $this->getMockBuilder(IUser::class)
16731672
->disableOriginalConstructor()
16741673
->getMock();
1674+
$targetUser
1675+
->expects($this->atLeastOnce())
1676+
->method('canEditProperty')
1677+
->willReturnCallback(
1678+
fn (string $property): bool => match($property) {
1679+
IAccountManager::PROPERTY_EMAIL => true,
1680+
default => false,
1681+
});
16751682
$this->userSession
16761683
->expects($this->once())
16771684
->method('getUser')
@@ -1690,12 +1697,6 @@ public function testEditUserRegularUserSelfEditChangeEmailValid(): void {
16901697
->method('getUID')
16911698
->willReturn('UID');
16921699

1693-
$backend = $this->createMock(UserInterface::class);
1694-
$targetUser
1695-
->expects($this->any())
1696-
->method('getBackend')
1697-
->willReturn($backend);
1698-
16991700
$this->config->method('getSystemValue')->willReturnCallback(fn (string $key, mixed $default) => $default);
17001701

17011702
$this->assertEquals([], $this->api->editUser('UserToEdit', 'email', 'demo@nextcloud.com')->getData());
@@ -1726,12 +1727,6 @@ public function testEditUserRegularUserSelfEditAddAdditionalEmailValid(): void {
17261727
->method('getUID')
17271728
->willReturn('UID');
17281729

1729-
$backend = $this->createMock(UserInterface::class);
1730-
$targetUser
1731-
->expects($this->any())
1732-
->method('getBackend')
1733-
->willReturn($backend);
1734-
17351730
$userAccount = $this->createMock(IAccount::class);
17361731

17371732
$this->accountManager
@@ -1772,11 +1767,6 @@ public function testEditUserRegularUserSelfEditAddAdditionalEmailMainAddress():
17721767
->method('getUID')
17731768
->willReturn('UID');
17741769

1775-
$backend = $this->createMock(UserInterface::class);
1776-
$targetUser
1777-
->expects($this->any())
1778-
->method('getBackend')
1779-
->willReturn($backend);
17801770
$targetUser
17811771
->expects($this->any())
17821772
->method('getSystemEMailAddress')
@@ -1824,12 +1814,6 @@ public function testEditUserRegularUserSelfEditAddAdditionalEmailDuplicate(): vo
18241814
->method('getUID')
18251815
->willReturn('UID');
18261816

1827-
$backend = $this->createMock(UserInterface::class);
1828-
$targetUser
1829-
->expects($this->any())
1830-
->method('getBackend')
1831-
->willReturn($backend);
1832-
18331817
$property = $this->createMock(IAccountProperty::class);
18341818
$property->method('getValue')
18351819
->willReturn('demo1@nextcloud.com');
@@ -1886,11 +1870,14 @@ public function testEditUserRegularUserSelfEditChangeEmailInvalid(): void {
18861870
->method('getUID')
18871871
->willReturn('UID');
18881872

1889-
$backend = $this->createMock(UserInterface::class);
18901873
$targetUser
1891-
->expects($this->any())
1892-
->method('getBackend')
1893-
->willReturn($backend);
1874+
->expects($this->atLeastOnce())
1875+
->method('canEditProperty')
1876+
->willReturnCallback(
1877+
fn (string $property): bool => match($property) {
1878+
IAccountManager::PROPERTY_EMAIL => true,
1879+
default => false,
1880+
});
18941881

18951882
$this->config->method('getSystemValue')->willReturnCallback(fn (string $key, mixed $default) => $default);
18961883

@@ -1923,6 +1910,14 @@ public function testEditUserRegularUserSelfEditChangeProperty($propertyName, $ol
19231910
->expects($this->any())
19241911
->method('getUID')
19251912
->willReturn('UID');
1913+
$loggedInUser
1914+
->expects($this->atLeastOnce())
1915+
->method('canEditProperty')
1916+
->willReturnCallback(
1917+
fn (string $property): bool => match($property) {
1918+
$propertyName => true,
1919+
default => false,
1920+
});
19261921
$this->userSession
19271922
->expects($this->once())
19281923
->method('getUser')
@@ -4290,137 +4285,79 @@ public function testResendWelcomeMessageFailed(): void {
42904285

42914286
public static function dataGetEditableFields(): array {
42924287
return [
4293-
[false, true, ISetDisplayNameBackend::class, [
4294-
IAccountManager::PROPERTY_EMAIL,
4295-
IAccountManager::COLLECTION_EMAIL,
4296-
IAccountManager::PROPERTY_PHONE,
4288+
[false, true, [
42974289
IAccountManager::PROPERTY_ADDRESS,
4298-
IAccountManager::PROPERTY_WEBSITE,
4299-
IAccountManager::PROPERTY_TWITTER,
4300-
IAccountManager::PROPERTY_BLUESKY,
4290+
IAccountManager::PROPERTY_BIOGRAPHY,
4291+
IAccountManager::PROPERTY_BIRTHDATE,
4292+
IAccountManager::PROPERTY_EMAIL,
43014293
IAccountManager::PROPERTY_FEDIVERSE,
4302-
IAccountManager::PROPERTY_ORGANISATION,
4303-
IAccountManager::PROPERTY_ROLE,
43044294
IAccountManager::PROPERTY_HEADLINE,
4305-
IAccountManager::PROPERTY_BIOGRAPHY,
4295+
IAccountManager::PROPERTY_ORGANISATION,
4296+
IAccountManager::PROPERTY_PHONE,
43064297
IAccountManager::PROPERTY_PROFILE_ENABLED,
43074298
IAccountManager::PROPERTY_PRONOUNS,
4308-
]],
4309-
[true, false, ISetDisplayNameBackend::class, [
4310-
IAccountManager::PROPERTY_DISPLAYNAME,
4311-
IAccountManager::COLLECTION_EMAIL,
4312-
IAccountManager::PROPERTY_PHONE,
4313-
IAccountManager::PROPERTY_ADDRESS,
4314-
IAccountManager::PROPERTY_WEBSITE,
4299+
IAccountManager::PROPERTY_ROLE,
43154300
IAccountManager::PROPERTY_TWITTER,
43164301
IAccountManager::PROPERTY_BLUESKY,
4317-
IAccountManager::PROPERTY_FEDIVERSE,
4318-
IAccountManager::PROPERTY_ORGANISATION,
4319-
IAccountManager::PROPERTY_ROLE,
4320-
IAccountManager::PROPERTY_HEADLINE,
4321-
IAccountManager::PROPERTY_BIOGRAPHY,
4322-
IAccountManager::PROPERTY_PROFILE_ENABLED,
4323-
IAccountManager::PROPERTY_PRONOUNS,
4324-
]],
4325-
[true, true, ISetDisplayNameBackend::class, [
4326-
IAccountManager::PROPERTY_DISPLAYNAME,
4327-
IAccountManager::PROPERTY_EMAIL,
4302+
IAccountManager::PROPERTY_WEBSITE,
43284303
IAccountManager::COLLECTION_EMAIL,
4329-
IAccountManager::PROPERTY_PHONE,
4304+
]],
4305+
[true, false, [
43304306
IAccountManager::PROPERTY_ADDRESS,
4331-
IAccountManager::PROPERTY_WEBSITE,
4332-
IAccountManager::PROPERTY_TWITTER,
4333-
IAccountManager::PROPERTY_BLUESKY,
4307+
IAccountManager::PROPERTY_BIOGRAPHY,
4308+
IAccountManager::PROPERTY_BIRTHDATE,
4309+
IAccountManager::PROPERTY_DISPLAYNAME,
43344310
IAccountManager::PROPERTY_FEDIVERSE,
4335-
IAccountManager::PROPERTY_ORGANISATION,
4336-
IAccountManager::PROPERTY_ROLE,
43374311
IAccountManager::PROPERTY_HEADLINE,
4338-
IAccountManager::PROPERTY_BIOGRAPHY,
4312+
IAccountManager::PROPERTY_ORGANISATION,
4313+
IAccountManager::PROPERTY_PHONE,
43394314
IAccountManager::PROPERTY_PROFILE_ENABLED,
43404315
IAccountManager::PROPERTY_PRONOUNS,
4341-
]],
4342-
[false, false, ISetDisplayNameBackend::class, [
4343-
IAccountManager::COLLECTION_EMAIL,
4344-
IAccountManager::PROPERTY_PHONE,
4345-
IAccountManager::PROPERTY_ADDRESS,
4346-
IAccountManager::PROPERTY_WEBSITE,
4316+
IAccountManager::PROPERTY_ROLE,
43474317
IAccountManager::PROPERTY_TWITTER,
43484318
IAccountManager::PROPERTY_BLUESKY,
4349-
IAccountManager::PROPERTY_FEDIVERSE,
4350-
IAccountManager::PROPERTY_ORGANISATION,
4351-
IAccountManager::PROPERTY_ROLE,
4352-
IAccountManager::PROPERTY_HEADLINE,
4353-
IAccountManager::PROPERTY_BIOGRAPHY,
4354-
IAccountManager::PROPERTY_PROFILE_ENABLED,
4355-
IAccountManager::PROPERTY_PRONOUNS,
4356-
]],
4357-
[false, true, UserInterface::class, [
4358-
IAccountManager::PROPERTY_EMAIL,
4319+
IAccountManager::PROPERTY_WEBSITE,
43594320
IAccountManager::COLLECTION_EMAIL,
4360-
IAccountManager::PROPERTY_PHONE,
4321+
]],
4322+
[true, true, [
43614323
IAccountManager::PROPERTY_ADDRESS,
4362-
IAccountManager::PROPERTY_WEBSITE,
4363-
IAccountManager::PROPERTY_TWITTER,
4364-
IAccountManager::PROPERTY_BLUESKY,
4324+
IAccountManager::PROPERTY_BIOGRAPHY,
4325+
IAccountManager::PROPERTY_BIRTHDATE,
4326+
IAccountManager::PROPERTY_DISPLAYNAME,
4327+
IAccountManager::PROPERTY_EMAIL,
43654328
IAccountManager::PROPERTY_FEDIVERSE,
4366-
IAccountManager::PROPERTY_ORGANISATION,
4367-
IAccountManager::PROPERTY_ROLE,
43684329
IAccountManager::PROPERTY_HEADLINE,
4369-
IAccountManager::PROPERTY_BIOGRAPHY,
4330+
IAccountManager::PROPERTY_ORGANISATION,
4331+
IAccountManager::PROPERTY_PHONE,
43704332
IAccountManager::PROPERTY_PROFILE_ENABLED,
43714333
IAccountManager::PROPERTY_PRONOUNS,
4372-
]],
4373-
[true, false, UserInterface::class, [
4374-
IAccountManager::COLLECTION_EMAIL,
4375-
IAccountManager::PROPERTY_PHONE,
4376-
IAccountManager::PROPERTY_ADDRESS,
4377-
IAccountManager::PROPERTY_WEBSITE,
4334+
IAccountManager::PROPERTY_ROLE,
43784335
IAccountManager::PROPERTY_TWITTER,
43794336
IAccountManager::PROPERTY_BLUESKY,
4380-
IAccountManager::PROPERTY_FEDIVERSE,
4381-
IAccountManager::PROPERTY_ORGANISATION,
4382-
IAccountManager::PROPERTY_ROLE,
4383-
IAccountManager::PROPERTY_HEADLINE,
4384-
IAccountManager::PROPERTY_BIOGRAPHY,
4385-
IAccountManager::PROPERTY_PROFILE_ENABLED,
4386-
IAccountManager::PROPERTY_PRONOUNS,
4387-
]],
4388-
[true, true, UserInterface::class, [
4389-
IAccountManager::PROPERTY_EMAIL,
4337+
IAccountManager::PROPERTY_WEBSITE,
43904338
IAccountManager::COLLECTION_EMAIL,
4391-
IAccountManager::PROPERTY_PHONE,
4339+
]],
4340+
[false, false, [
43924341
IAccountManager::PROPERTY_ADDRESS,
4393-
IAccountManager::PROPERTY_WEBSITE,
4394-
IAccountManager::PROPERTY_TWITTER,
4395-
IAccountManager::PROPERTY_BLUESKY,
4342+
IAccountManager::PROPERTY_BIOGRAPHY,
4343+
IAccountManager::PROPERTY_BIRTHDATE,
43964344
IAccountManager::PROPERTY_FEDIVERSE,
4397-
IAccountManager::PROPERTY_ORGANISATION,
4398-
IAccountManager::PROPERTY_ROLE,
43994345
IAccountManager::PROPERTY_HEADLINE,
4400-
IAccountManager::PROPERTY_BIOGRAPHY,
4346+
IAccountManager::PROPERTY_ORGANISATION,
4347+
IAccountManager::PROPERTY_PHONE,
44014348
IAccountManager::PROPERTY_PROFILE_ENABLED,
44024349
IAccountManager::PROPERTY_PRONOUNS,
4403-
]],
4404-
[false, false, UserInterface::class, [
4405-
IAccountManager::COLLECTION_EMAIL,
4406-
IAccountManager::PROPERTY_PHONE,
4407-
IAccountManager::PROPERTY_ADDRESS,
4408-
IAccountManager::PROPERTY_WEBSITE,
4350+
IAccountManager::PROPERTY_ROLE,
44094351
IAccountManager::PROPERTY_TWITTER,
44104352
IAccountManager::PROPERTY_BLUESKY,
4411-
IAccountManager::PROPERTY_FEDIVERSE,
4412-
IAccountManager::PROPERTY_ORGANISATION,
4413-
IAccountManager::PROPERTY_ROLE,
4414-
IAccountManager::PROPERTY_HEADLINE,
4415-
IAccountManager::PROPERTY_BIOGRAPHY,
4416-
IAccountManager::PROPERTY_PROFILE_ENABLED,
4417-
IAccountManager::PROPERTY_PRONOUNS,
4353+
IAccountManager::PROPERTY_WEBSITE,
4354+
IAccountManager::COLLECTION_EMAIL,
44184355
]],
44194356
];
44204357
}
44214358

44224359
#[\PHPUnit\Framework\Attributes\DataProvider(methodName: 'dataGetEditableFields')]
4423-
public function testGetEditableFields(bool $allowedToChangeDisplayName, bool $allowedToChangeEmail, string $userBackend, array $expected): void {
4360+
public function testGetEditableFields(bool $allowedToChangeDisplayName, bool $allowedToChangeEmail, array $expected): void {
44244361
$this->config->method('getSystemValue')->willReturnCallback(fn (string $key, mixed $default) => match ($key) {
44254362
'allow_user_to_change_display_name' => $allowedToChangeDisplayName,
44264363
'allow_user_to_change_email' => $allowedToChangeEmail,
@@ -4431,12 +4368,16 @@ public function testGetEditableFields(bool $allowedToChangeDisplayName, bool $al
44314368
$this->userSession->method('getUser')
44324369
->willReturn($user);
44334370

4434-
$backend = $this->createMock($userBackend);
4435-
44364371
$user->method('getUID')
44374372
->willReturn('userId');
4438-
$user->method('getBackend')
4439-
->willReturn($backend);
4373+
$user->method('canEditProperty')
4374+
->willReturnCallback(
4375+
fn (string $property): bool => match($property) {
4376+
IAccountManager::PROPERTY_DISPLAYNAME => $allowedToChangeDisplayName,
4377+
IAccountManager::PROPERTY_EMAIL => $allowedToChangeEmail,
4378+
default => true,
4379+
}
4380+
);
44404381

44414382
$expectedResp = new DataResponse($expected);
44424383
$this->assertEquals($expectedResp, $this->api->getEditableFields('userId'));

0 commit comments

Comments
 (0)