From a2bc49a4a8ccbaa173188c814787ecf5a3533a27 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Sun, 12 Nov 2023 02:35:34 +0100 Subject: [PATCH] fix: Refactor code to migrate deprecated functions Signed-off-by: Ferdinand Thiessen --- lib/ComplianceService.php | 43 ++++++++++------------------- lib/PasswordValidator.php | 24 +++++++--------- lib/Settings.php | 22 +++++---------- tests/lib/PasswordValidatorTest.php | 18 ++++++------ 4 files changed, 41 insertions(+), 66 deletions(-) diff --git a/lib/ComplianceService.php b/lib/ComplianceService.php index f1663b73..ca448685 100644 --- a/lib/ComplianceService.php +++ b/lib/ComplianceService.php @@ -32,43 +32,30 @@ use OCA\Password_Policy\Compliance\IAuditor; use OCA\Password_Policy\Compliance\IEntryControl; use OCA\Password_Policy\Compliance\IUpdatable; -use OCP\AppFramework\IAppContainer; -use OCP\AppFramework\QueryException; use OCP\IConfig; -use OCP\ILogger; use OCP\ISession; use OCP\IUser; +use OCP\IUserManager; use OCP\IUserSession; +use Psr\Container\ContainerExceptionInterface; +use Psr\Container\ContainerInterface; +use Psr\Log\LoggerInterface; class ComplianceService { - /** @var IAppContainer */ - protected $container; - /** @var ILogger */ - protected $logger; protected const COMPLIANCERS = [ HistoryCompliance::class, Expiration::class, ]; - /** @var IUserSession */ - private $userSession; - /** @var IConfig */ - private $config; - /** @var ISession */ - private $session; public function __construct( - IAppContainer $container, - ILogger $logger, - IUserSession $userSession, - IConfig $config, - ISession $session + private ContainerInterface $container, + private LoggerInterface $logger, + private IUserSession $userSession, + private IConfig $config, + private ISession $session, + private IUserManager $userManager, ) { - $this->container = $container; - $this->logger = $logger; - $this->userSession = $userSession; - $this->config = $config; - $this->session = $session; } public function update(IUser $user, string $password) { @@ -94,9 +81,9 @@ public function entryControl(string $loginName, ?string $password) { /** @var IEntryControl $instance */ foreach ($this->getInstance(IEntryControl::class) as $instance) { try { - $user = \OC::$server->getUserManager()->get($uid); + $user = $this->userManager->get($uid); - if (!($user instanceof IUser)) { + if ($user === null) { break; } @@ -113,13 +100,13 @@ public function entryControl(string $loginName, ?string $password) { protected function getInstance($interface) { foreach (self::COMPLIANCERS as $compliance) { try { - $instance = $this->container->query($compliance); + $instance = $this->container->get($compliance); if (!$instance instanceof $interface) { continue; } - } catch (QueryException $e) { + } catch (ContainerExceptionInterface $e) { //ignore and continue - $this->logger->logException($e, ['level' => ILogger::INFO]); + $this->logger->info('Could not query compliance', ['compliance' => $compliance, 'exception' => $e]); continue; } diff --git a/lib/PasswordValidator.php b/lib/PasswordValidator.php index 419a5d17..4fc33569 100644 --- a/lib/PasswordValidator.php +++ b/lib/PasswordValidator.php @@ -32,20 +32,16 @@ use OCA\Password_Policy\Validator\NumericCharacterValidator; use OCA\Password_Policy\Validator\SpecialCharactersValidator; use OCA\Password_Policy\Validator\UpperCaseLoweCaseValidator; -use OCP\AppFramework\IAppContainer; -use OCP\AppFramework\QueryException; -use OCP\ILogger; +use Psr\Container\ContainerExceptionInterface; +use Psr\Container\ContainerInterface; +use Psr\Log\LoggerInterface; class PasswordValidator { - /** @var IAppContainer */ - private $container; - /** @var ILogger */ - private $logger; - - public function __construct(IAppContainer $container, ILogger $logger) { - $this->container = $container; - $this->logger = $logger; + public function __construct( + private ContainerInterface $container, + private LoggerInterface $logger, + ) { } /** @@ -68,10 +64,10 @@ public function validate(string $password): void { foreach ($validators as $validator) { try { /** @var IValidator $instance */ - $instance = $this->container->query($validator); - } catch (QueryException $e) { + $instance = $this->container->get($validator); + } catch (ContainerExceptionInterface $e) { //ignore and continue - $this->logger->logException($e, ['level' => ILogger::INFO]); + $this->logger->info('Could not get validator from container', ['validator' => $validator, 'exception' => $e]); continue; } diff --git a/lib/Settings.php b/lib/Settings.php index 97382697..a5716717 100644 --- a/lib/Settings.php +++ b/lib/Settings.php @@ -26,31 +26,23 @@ namespace OCA\Password_Policy; use OCP\AppFramework\Http\TemplateResponse; -use OCP\IInitialStateService; +use OCP\AppFramework\Services\IInitialState; use OCP\Settings\ISettings; use OCP\Util; class Settings implements ISettings { - private $appName; - /** @var PasswordPolicyConfig */ - private $config; - - /** @var IInitialStateService */ - private $initialStateService; - - public function __construct(string $appName, - PasswordPolicyConfig $config, - IInitialStateService $initialStateService) { - $this->appName = $appName; - $this->config = $config; - $this->initialStateService = $initialStateService; + public function __construct( + private string $appName, + private PasswordPolicyConfig $config, + private IInitialState $initialStateService, + ) { } public function getForm(): TemplateResponse { Util::addScript($this->appName, 'password_policy-settings'); - $this->initialStateService->provideInitialState($this->appName, 'config', [ + $this->initialStateService->provideInitialState('config', [ 'minLength' => $this->config->getMinLength(), 'enforceNonCommonPassword' => $this->config->getEnforceNonCommonPassword(), 'enforceUpperLowerCase' => $this->config->getEnforceUpperLowerCase(), diff --git a/tests/lib/PasswordValidatorTest.php b/tests/lib/PasswordValidatorTest.php index 864226d9..397ffd46 100644 --- a/tests/lib/PasswordValidatorTest.php +++ b/tests/lib/PasswordValidatorTest.php @@ -30,17 +30,17 @@ use OCA\Password_Policy\Validator\NumericCharacterValidator; use OCA\Password_Policy\Validator\SpecialCharactersValidator; use OCA\Password_Policy\Validator\UpperCaseLoweCaseValidator; -use OCP\AppFramework\IAppContainer; -use OCP\AppFramework\QueryException; -use OCP\ILogger; use PHPUnit\Framework\MockObject\MockObject; +use Psr\Container\ContainerExceptionInterface; +use Psr\Container\ContainerInterface; +use Psr\Log\LoggerInterface; class PasswordValidatorTest extends TestCase { - /** @var IAppContainer|MockObject */ + /** @var ContainerInterface|MockObject */ private $container; - /** @var ILogger|MockObject */ + /** @var LoggerInterface|MockObject */ private $logger; /** @var PasswordValidator */ @@ -50,8 +50,8 @@ class PasswordValidatorTest extends TestCase { protected function setUp(): void { parent::setUp(); - $this->container = $this->createMock(IAppContainer::class); - $this->logger = $this->createMock(ILogger::class); + $this->container = $this->createMock(ContainerInterface::class); + $this->logger = $this->createMock(LoggerInterface::class); $this->validator = new PasswordValidator($this->container, $this->logger); } @@ -66,7 +66,7 @@ public function testValidate() { HIBPValidator::class, ]; - $this->container->method('query') + $this->container->method('get') ->willReturnCallback(function ($class) use (&$validators) { if (($key = array_search($class, $validators)) !== false) { $validator = $this->createMock(IValidator::class); @@ -79,7 +79,7 @@ public function testValidate() { return $validator; } - throw new QueryException(); + throw $this->createMock(ContainerExceptionInterface::class); }); $this->logger->expects($this->never())->method($this->anything());