test(admin_audit): add test for user management listener

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
pull/47414/head
Daniel Kesselberg 2024-08-21 11:49:56 +07:00
parent bec14dc4a5
commit 5cf67c280f
No known key found for this signature in database
GPG Key ID: 4A81C29F63464E8F
1 changed files with 92 additions and 0 deletions

@ -0,0 +1,92 @@
<?php
declare(strict_types=1);
/**
* SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors
* SPDX-License-Identifier: AGPL-3.0-or-later
*/
namespace OCA\AdminAudit\Tests\Actions;
use OCA\AdminAudit\IAuditLogger;
use OCA\AdminAudit\Listener\UserManagementEventListener;
use OCP\IUser;
use OCP\User\Events\UserChangedEvent;
use PHPUnit\Framework\MockObject\MockObject;
use Test\TestCase;
class UserManagementEventListenerTest extends TestCase {
private IAuditLogger&MockObject $logger;
private UserManagementEventListener $listener;
private MockObject&IUser $user;
protected function setUp(): void {
parent::setUp();
$this->logger = $this->createMock(IAuditLogger::class);
$this->listener = new UserManagementEventListener($this->logger);
$this->user = $this->createMock(IUser::class);
$this->user->method('getUID')->willReturn('alice');
$this->user->method('getDisplayName')->willReturn('Alice');
}
public function testSkipUnsupported(): void {
$this->logger->expects($this->never())
->method('info');
$event = new UserChangedEvent(
$this->user,
'unsupported',
'value',
);
$this->listener->handle($event);
}
public function testUserEnabled(): void {
$this->logger->expects($this->once())
->method('info')
->with('User enabled: "alice"', ['app' => 'admin_audit']);
$event = new UserChangedEvent(
$this->user,
'enabled',
true,
false,
);
$this->listener->handle($event);
}
public function testUserDisabled(): void {
$this->logger->expects($this->once())
->method('info')
->with('User disabled: "alice"', ['app' => 'admin_audit']);
$event = new UserChangedEvent(
$this->user,
'enabled',
false,
true,
);
$this->listener->handle($event);
}
public function testEmailChanged(): void {
$this->logger->expects($this->once())
->method('info')
->with('Email address changed for user alice', ['app' => 'admin_audit']);
$event = new UserChangedEvent(
$this->user,
'eMailAddress',
'alice@alice.com',
'',
);
$this->listener->handle($event);
}
}