Merge pull request #582 from nextcloud/event_dispatcher

change displayName with IEventDispatcher + fixed tests
This commit is contained in:
blizzz 2022-04-11 12:17:42 +02:00 committed by GitHub
commit 18fa8a11f2
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 38 additions and 23 deletions

View file

@ -56,7 +56,8 @@ $userBackend = new \OCA\User_SAML\UserBackend(
\OC::$server->getGroupManager(),
$samlSettings,
\OC::$server->getLogger(),
$userData
$userData,
\OC::$server->query(\OCP\EventDispatcher\IEventDispatcher::class),
);
$userBackend->registerBackends(\OC::$server->getUserManager()->getBackends());
OC_User::useBackend($userBackend);

View file

@ -35,6 +35,8 @@ use OCP\IConfig;
use OCP\IURLGenerator;
use OCP\ISession;
use Symfony\Component\EventDispatcher\GenericEvent;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\User\Events\UserChangedEvent;
class UserBackend implements IApacheBackend, UserInterface, IUserBackend {
/** @var IConfig */
@ -57,6 +59,8 @@ class UserBackend implements IApacheBackend, UserInterface, IUserBackend {
private $logger;
/** @var UserData */
private $userData;
/** @var IEventDispatcher */
private $eventDispatcher;
public function __construct(
IConfig $config,
@ -67,7 +71,8 @@ class UserBackend implements IApacheBackend, UserInterface, IUserBackend {
IGroupManager $groupManager,
SAMLSettings $settings,
ILogger $logger,
UserData $userData
UserData $userData,
IEventDispatcher $eventDispatcher
) {
$this->config = $config;
$this->urlGenerator = $urlGenerator;
@ -78,6 +83,7 @@ class UserBackend implements IApacheBackend, UserInterface, IUserBackend {
$this->settings = $settings;
$this->logger = $logger;
$this->userData = $userData;
$this->eventDispatcher = $eventDispatcher;
}
/**
@ -645,13 +651,7 @@ class UserBackend implements IApacheBackend, UserInterface, IUserBackend {
$currentDisplayname = (string)$this->getDisplayName($uid);
if ($newDisplayname !== null
&& $currentDisplayname !== $newDisplayname) {
\OC_Hook::emit('OC_User', 'changeUser',
[
'user' => $user,
'feature' => 'displayName',
'value' => $newDisplayname
]
);
$this->eventDispatcher->dispatchTyped(new UserChangedEvent($user, 'displayName', $newDisplayname, $currentDisplayname));
$this->setDisplayName($uid, $newDisplayname);
}

View file

@ -24,6 +24,7 @@ namespace OCA\User_SAML\Tests\Settings;
use OCA\User_SAML\SAMLSettings;
use OCA\User_SAML\UserBackend;
use OCA\User_SAML\UserData;
use OCP\EventDispatcher\IEventDispatcher;
use OCP\IConfig;
use OCP\IDBConnection;
use OCP\IGroup;
@ -33,29 +34,33 @@ use OCP\ISession;
use OCP\IURLGenerator;
use OCP\IUser;
use OCP\IUserManager;
use OCP\User\Events\UserChangedEvent;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class UserBackendTest extends TestCase {
/** @var UserData|\PHPUnit\Framework\MockObject\MockObject */
/** @var UserData|MockObject */
private $userData;
/** @var IConfig|\PHPUnit_Framework_MockObject_MockObject */
/** @var IConfig|MockObject */
private $config;
/** @var IURLGenerator|\PHPUnit_Framework_MockObject_MockObject */
/** @var IURLGenerator|MockObject */
private $urlGenerator;
/** @var ISession|\PHPUnit_Framework_MockObject_MockObject */
/** @var ISession|MockObject */
private $session;
/** @var IDBConnection|\PHPUnit_Framework_MockObject_MockObject */
/** @var IDBConnection|MockObject */
private $db;
/** @var IUserManager|\PHPUnit_Framework_MockObject_MockObject */
/** @var IUserManager|MockObject */
private $userManager;
/** @var IGroupManager|\PHPUnit_Framework_MockObject_MockObject */
/** @var IGroupManager|MockObject */
private $groupManager;
/** @var UserBackend|\PHPUnit_Framework_MockObject_MockObject */
/** @var UserBackend|MockObject */
private $userBackend;
/** @var \PHPUnit_Framework_MockObject_MockObject|SAMLSettings */
/** @var SAMLSettings|MockObject */
private $SAMLSettings;
/** @var \PHPUnit_Framework_MockObject_MockObject|ILogger */
/** @var ILogger|MockObject */
private $logger;
/** @var IEventDispatcher|MockObject */
private $eventDispatcher;
protected function setUp(): void {
parent::setUp();
@ -69,6 +74,7 @@ class UserBackendTest extends TestCase {
$this->SAMLSettings = $this->getMockBuilder(SAMLSettings::class)->disableOriginalConstructor()->getMock();
$this->logger = $this->createMock(ILogger::class);
$this->userData = $this->createMock(UserData::class);
$this->eventDispatcher = $this->createMock(IEventDispatcher::class);
}
public function getMockedBuilder(array $mockedFunctions = []) {
@ -84,6 +90,7 @@ class UserBackendTest extends TestCase {
$this->SAMLSettings,
$this->logger,
$this->userData,
$this->eventDispatcher
])
->setMethods($mockedFunctions)
->getMock();
@ -97,7 +104,8 @@ class UserBackendTest extends TestCase {
$this->groupManager,
$this->SAMLSettings,
$this->logger,
$this->userData
$this->userData,
$this->eventDispatcher
);
}
}
@ -109,7 +117,7 @@ class UserBackendTest extends TestCase {
public function testUpdateAttributesWithoutAttributes() {
$this->getMockedBuilder(['getDisplayName']);
/** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
/** @var IUser|MockObject $user */
$user = $this->createMock(IUser::class);
$this->userManager
@ -151,7 +159,7 @@ class UserBackendTest extends TestCase {
public function testUpdateAttributes() {
$this->getMockedBuilder(['getDisplayName', 'setDisplayName']);
/** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
/** @var IUser|MockObject $user */
$user = $this->createMock(IUser::class);
$groupA = $this->createMock(IGroup::class);
$groupC = $this->createMock(IGroup::class);
@ -242,6 +250,9 @@ class UserBackendTest extends TestCase {
->expects($this->once())
->method('addUser')
->with($user);
$this->eventDispatcher->expects($this->once())
->method('dispatchTyped')
->with(new UserChangedEvent($user, 'displayName', 'New Displayname', ''));
$this->userBackend->updateAttributes('ExistingUser', [
'email' => 'new@example.com',
@ -253,7 +264,7 @@ class UserBackendTest extends TestCase {
public function testUpdateAttributesQuotaDefaultFallback() {
$this->getMockedBuilder(['getDisplayName', 'setDisplayName']);
/** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
/** @var IUser|MockObject $user */
$user = $this->createMock(IUser::class);
$this->config
@ -305,6 +316,9 @@ class UserBackendTest extends TestCase {
->expects($this->once())
->method('setDisplayName')
->with('ExistingUser', 'New Displayname');
$this->eventDispatcher->expects($this->once())
->method('dispatchTyped')
->with(new UserChangedEvent($user, 'displayName', 'New Displayname', ''));
$this->userBackend->updateAttributes('ExistingUser', ['email' => 'new@example.com', 'displayname' => 'New Displayname', 'quota' => '']);
}
}