Your IP : 216.73.216.208


Current Path : /home/m/a/g/maglabs/it/app/code/Magento/User/Test/Unit/Model/Backend/Config/
Upload File :
Current File : /home/m/a/g/maglabs/it/app/code/Magento/User/Test/Unit/Model/Backend/Config/ObserverConfigTest.php

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

declare(strict_types=1);

namespace Magento\User\Test\Unit\Model\Backend\Config;

use Magento\Backend\App\ConfigInterface;
use Magento\Framework\TestFramework\Unit\Helper\ObjectManager as ObjectManagerHelper;
use Magento\User\Model\Backend\Config\ObserverConfig;
use PHPUnit\Framework\MockObject\MockObject;
use PHPUnit\Framework\TestCase;

/**
 * Unit Test for \Magento\User\Model\Backend\Config\ObserverConfig class
 *
 * Class \Magento\User\Test\Unit\Model\Backend\Config\ObserverConfigTest
 */
class ObserverConfigTest extends TestCase
{
    /**
     * Config path for lockout threshold
     */
    private const XML_ADMIN_SECURITY_LOCKOUT_THRESHOLD = 'admin/security/lockout_threshold';

    /**
     * Config path for password change is forced or not
     */
    private const XML_ADMIN_SECURITY_PASSWORD_IS_FORCED = 'admin/security/password_is_forced';

    /**
     * Config path for password lifetime
     */
    private const XML_ADMIN_SECURITY_PASSWORD_LIFETIME = 'admin/security/password_lifetime';

    /**
     * Config path for maximum lockout failures
     */
    private const XML_ADMIN_SECURITY_LOCKOUT_FAILURES = 'admin/security/lockout_failures';

    /** @var ObserverConfig */
    private $model;

    /**
     * @var MockObject|ConfigInterface
     */
    private $backendConfigMock;

    /**
     * Set environment for test
     */
    protected function setUp(): void
    {
        $this->backendConfigMock = $this->getMockForAbstractClass(ConfigInterface::class);

        $objectManager = new ObjectManagerHelper($this);
        $this->model = $objectManager->getObject(
            ObserverConfig::class,
            [
                'backendConfig' => $this->backendConfigMock
            ]
        );
    }

    /**
     * Test when admin password lifetime = 0 days
     */
    public function testIsLatestPasswordExpiredWhenNoAdminLifeTime()
    {
        $this->backendConfigMock->expects(self::any())->method('getValue')
            ->with(self::XML_ADMIN_SECURITY_PASSWORD_LIFETIME)
            ->willReturn('0');
        $this->assertFalse($this->model->_isLatestPasswordExpired([]));
    }

    /**
     * Test when admin password lifetime = 2 days
     */
    public function testIsLatestPasswordExpiredWhenHasAdminLifeTime()
    {
        $this->backendConfigMock->expects(self::any())->method('getValue')
            ->with(self::XML_ADMIN_SECURITY_PASSWORD_LIFETIME)
            ->willReturn('2');
        $this->assertTrue($this->model->_isLatestPasswordExpired(['last_updated' => 1571428052]));
    }

    /**
     * Test when security lockout threshold = 100 minutes
     */
    public function testGetAdminLockThreshold()
    {
        $this->backendConfigMock->expects(self::any())->method('getValue')
            ->with(self::XML_ADMIN_SECURITY_LOCKOUT_THRESHOLD)
            ->willReturn('100');
        $this->assertEquals(6000, $this->model->getAdminLockThreshold());
    }

    /**
     * Test when password change force is true
     */
    public function testIsPasswordChangeForcedTrue()
    {
        $this->backendConfigMock->expects(self::any())->method('getValue')
            ->with(self::XML_ADMIN_SECURITY_PASSWORD_IS_FORCED)
            ->willReturn('1');
        $this->assertTrue($this->model->isPasswordChangeForced());
    }

    /**
     * Test when password change force is false
     */
    public function testIsPasswordChangeForcedFalse()
    {
        $this->backendConfigMock->expects(self::any())->method('getValue')
            ->with(self::XML_ADMIN_SECURITY_PASSWORD_IS_FORCED)
            ->willReturn('0');
        $this->assertFalse($this->model->isPasswordChangeForced());
    }

    /**
     * Test when admin password lifetime = 2 days
     */
    public function testGetAdminPasswordLifetime()
    {
        $this->backendConfigMock->expects(self::any())->method('getValue')
            ->with(self::XML_ADMIN_SECURITY_PASSWORD_LIFETIME)
            ->willReturn('2');
        $this->assertEquals(172800, $this->model->getAdminPasswordLifetime());
    }

    /**
     * Test when max failures = 5 (times)
     */
    public function testGetMaxFailures()
    {
        $this->backendConfigMock->expects(self::any())->method('getValue')
            ->with(self::XML_ADMIN_SECURITY_LOCKOUT_FAILURES)
            ->willReturn('5');
        $this->assertEquals(5, $this->model->getMaxFailures());
    }
}

?>