包含:登录失败锁定、90天密码有效期、30分钟会话超时、 强制改密、登录审计日志、屏幕水印、企业背景图、 备案信息固定底部、favicon、JS空集合保护、 会话过期体验优化(403 JSON)、display_errors 关闭、 固定 key 根治 Integrity check failed 等全部改动 注意:config.inc.php/.htaccess/.user.ini 含敏感信息, 通过 .gitignore 排除,勿推送到公开仓库。
86 lines
2.4 KiB
PHP
86 lines
2.4 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
/*
|
|
* This file is part of the Monolog package.
|
|
*
|
|
* (c) Jordi Boggiano <j.boggiano@seld.be>
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Monolog\Test;
|
|
|
|
use Monolog\Logger;
|
|
use Monolog\DateTimeImmutable;
|
|
use Monolog\Formatter\FormatterInterface;
|
|
|
|
/**
|
|
* Lets you easily generate log records and a dummy formatter for testing purposes
|
|
*
|
|
* @author Jordi Boggiano <j.boggiano@seld.be>
|
|
*
|
|
* @phpstan-import-type Record from \Monolog\Logger
|
|
* @phpstan-import-type Level from \Monolog\Logger
|
|
*
|
|
* @internal feel free to reuse this to test your own handlers, this is marked internal to avoid issues with PHPStorm https://github.com/Seldaek/monolog/issues/1677
|
|
*/
|
|
class TestCase extends \PHPUnit\Framework\TestCase
|
|
{
|
|
public function tearDown(): void
|
|
{
|
|
parent::tearDown();
|
|
|
|
if (isset($this->handler)) {
|
|
unset($this->handler);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* @param mixed[] $context
|
|
*
|
|
* @return array Record
|
|
*
|
|
* @phpstan-param Level $level
|
|
* @phpstan-return Record
|
|
*/
|
|
protected function getRecord(int $level = Logger::WARNING, string $message = 'test', array $context = []): array
|
|
{
|
|
return [
|
|
'message' => (string) $message,
|
|
'context' => $context,
|
|
'level' => $level,
|
|
'level_name' => Logger::getLevelName($level),
|
|
'channel' => 'test',
|
|
'datetime' => new DateTimeImmutable(true),
|
|
'extra' => [],
|
|
];
|
|
}
|
|
|
|
/**
|
|
* @phpstan-return Record[]
|
|
*/
|
|
protected function getMultipleRecords(): array
|
|
{
|
|
return [
|
|
$this->getRecord(Logger::DEBUG, 'debug message 1'),
|
|
$this->getRecord(Logger::DEBUG, 'debug message 2'),
|
|
$this->getRecord(Logger::INFO, 'information'),
|
|
$this->getRecord(Logger::WARNING, 'warning'),
|
|
$this->getRecord(Logger::ERROR, 'error'),
|
|
];
|
|
}
|
|
|
|
protected function getIdentityFormatter(): FormatterInterface
|
|
{
|
|
$formatter = $this->createMock(FormatterInterface::class);
|
|
$formatter->expects($this->any())
|
|
->method('format')
|
|
->will($this->returnCallback(function ($record) {
|
|
return $record['message'];
|
|
}));
|
|
|
|
return $formatter;
|
|
}
|
|
}
|