magento2-docker/dev/tests/integration/testsuite/Magento/Security/Model/ResourceModel/UserExpirationTest.php

98 lines
3.0 KiB
PHP
Executable File

<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
declare(strict_types=1);
namespace Magento\Security\Model\ResourceModel;
use Magento\Framework\Locale\ResolverInterface;
use Magento\Framework\Stdlib\DateTime\TimezoneInterface;
use Magento\Security\Model\UserExpirationFactory;
use Magento\TestFramework\Helper\Bootstrap;
use Magento\User\Model\ResourceModel\User as UserResource;
use PHPUnit\Framework\TestCase;
/**
* Verify user expiration resource model.
*/
class UserExpirationTest extends TestCase
{
/**
* @var UserExpiration
*/
private $userExpirationResource;
/**
* @inheritdoc
*/
protected function setUp(): void
{
$this->userExpirationResource = Bootstrap::getObjectManager()->get(UserExpiration::class);
}
/**
* Verify user expiration saved with correct date.
*
* @magentoDataFixture Magento/User/_files/dummy_user.php
* @dataProvider userExpirationSaveDataProvider
* @magentoAppArea adminhtml
* @return void
*/
public function testUserExpirationSave(string $locale): void
{
$localeResolver = Bootstrap::getObjectManager()->get(ResolverInterface::class);
$timeZone = Bootstrap::getObjectManager()->get(TimezoneInterface::class);
$localeResolver->setLocale($locale);
$initialExpirationDate = $timeZone->date()->modify('+10 day');
$expireDate = $timeZone->formatDateTime(
$initialExpirationDate,
\IntlDateFormatter::MEDIUM,
\IntlDateFormatter::MEDIUM
);
$userExpirationFactory = Bootstrap::getObjectManager()->get(UserExpirationFactory::class);
$userExpiration = $userExpirationFactory->create();
$userExpiration->setExpiresAt($expireDate);
$userExpiration->setUserId($this->getUserId());
$this->userExpirationResource->save($userExpiration);
$loadedUserExpiration = $userExpirationFactory->create();
$this->userExpirationResource->load($loadedUserExpiration, $userExpiration->getId());
self::assertEquals($initialExpirationDate->format('Y-m-d H:i:s'), $loadedUserExpiration->getExpiresAt());
}
/**
* Provides locale codes for validation test.
*
* @return array
*/
public function userExpirationSaveDataProvider(): array
{
return [
'default' => [
'locale_code' => 'en_US',
],
'non_default_english_textual' => [
'locale_code' => 'de_DE',
],
'non_default_non_english_textual' => [
'locale_code' => 'uk_UA',
],
];
}
/**
* Retrieve user id from db.
*
* @return int
*/
private function getUserId(): int
{
$userResource = Bootstrap::getObjectManager()->get(UserResource::class);
$data = $userResource->loadByUsername('dummy_username');
return (int)$data['user_id'];
}
}