Skip to content

Commit

Permalink
Cover UserChangedEvent in unit tests
Browse files Browse the repository at this point in the history
Signed-off-by: Julius Härtl <jus@bitgrid.net>
  • Loading branch information
juliushaertl committed Feb 24, 2022
1 parent b7451a8 commit 5b41393
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 18 deletions.
3 changes: 2 additions & 1 deletion appinfo/app.php
Expand Up @@ -60,7 +60,8 @@
\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);
Expand Down
9 changes: 6 additions & 3 deletions lib/UserBackend.php
Expand Up @@ -59,6 +59,8 @@ class UserBackend implements IApacheBackend, UserInterface, IUserBackend {
private $logger;
/** @var UserData */
private $userData;
/** @var IEventDispatcher */
private $eventDispatcher;

public function __construct(
IConfig $config,
Expand All @@ -69,7 +71,8 @@ public function __construct(
IGroupManager $groupManager,
SAMLSettings $settings,
ILogger $logger,
UserData $userData
UserData $userData,
IEventDispatcher $eventDispatcher
) {
$this->config = $config;
$this->urlGenerator = $urlGenerator;
Expand All @@ -80,6 +83,7 @@ public function __construct(
$this->settings = $settings;
$this->logger = $logger;
$this->userData = $userData;
$this->eventDispatcher = $eventDispatcher;
}

/**
Expand Down Expand Up @@ -642,8 +646,7 @@ public function updateAttributes($uid,
$currentDisplayname = (string)$this->getDisplayName($uid);
if ($newDisplayname !== null
&& $currentDisplayname !== $newDisplayname) {
$dispatcher = \OC::$server->get(IEventDispatcher::class);
$dispatcher->dispatchTyped(new UserChangedEvent($user, 'displayName', $newDisplayname, $currentDisplayname));
$this->eventDispatcher->dispatchTyped(new UserChangedEvent($user, 'displayName', $newDisplayname, $currentDisplayname));
$this->setDisplayName($uid, $newDisplayname);
}

Expand Down
42 changes: 28 additions & 14 deletions tests/unit/UserBackendTest.php
Expand Up @@ -24,6 +24,7 @@
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;
Expand All @@ -33,29 +34,33 @@
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();
Expand All @@ -69,6 +74,7 @@ protected function setUp(): void {
$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 = []) {
Expand All @@ -84,6 +90,7 @@ public function getMockedBuilder(array $mockedFunctions = []) {
$this->SAMLSettings,
$this->logger,
$this->userData,
$this->eventDispatcher
])
->setMethods($mockedFunctions)
->getMock();
Expand All @@ -97,7 +104,8 @@ public function getMockedBuilder(array $mockedFunctions = []) {
$this->groupManager,
$this->SAMLSettings,
$this->logger,
$this->userData
$this->userData,
$this->eventDispatcher
);
}
}
Expand All @@ -109,7 +117,7 @@ public function testGetBackendName() {

public function testUpdateAttributesWithoutAttributes() {
$this->getMockedBuilder(['getDisplayName']);
/** @var IUser|\PHPUnit_Framework_MockObject_MockObject $user */
/** @var IUser|MockObject $user */
$user = $this->createMock(IUser::class);

$this->userManager
Expand Down Expand Up @@ -151,7 +159,7 @@ public function testUpdateAttributesWithoutValidUser() {

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);
Expand Down Expand Up @@ -242,6 +250,9 @@ public function testUpdateAttributes() {
->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',
Expand All @@ -253,7 +264,7 @@ public function testUpdateAttributes() {

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
Expand Down Expand Up @@ -305,6 +316,9 @@ public function testUpdateAttributesQuotaDefaultFallback() {
->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' => '']);
}
}

0 comments on commit 5b41393

Please sign in to comment.