complete tests
This commit is contained in:
bovenliggende
3e1956e2bd
commit
8e697940fb
@ -43,7 +43,7 @@ trait SpecialHandlersTrait
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function setBuffering(
|
public function setBuffering(
|
||||||
AbstractHandler $handler,
|
HandlerInterface $handler,
|
||||||
int $bufferLimit = 0,
|
int $bufferLimit = 0,
|
||||||
int $loglevel = Logger::DEBUG
|
int $loglevel = Logger::DEBUG
|
||||||
): BufferHandler {
|
): BufferHandler {
|
||||||
@ -52,7 +52,7 @@ trait SpecialHandlersTrait
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function setLogItemsOnErrorOnly(
|
public function setLogItemsOnErrorOnly(
|
||||||
AbstractHandler $handler,
|
HandlerInterface $handler,
|
||||||
int $activationLevel = Logger::ERROR
|
int $activationLevel = Logger::ERROR
|
||||||
): FingersCrossedHandler {
|
): FingersCrossedHandler {
|
||||||
return new FingersCrossedHandler(
|
return new FingersCrossedHandler(
|
||||||
@ -63,7 +63,7 @@ trait SpecialHandlersTrait
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function makeUnique(
|
public function makeUnique(
|
||||||
AbstractHandler $handler,
|
HandlerInterface $handler,
|
||||||
int $deduplicationLevel = Logger::ERROR,
|
int $deduplicationLevel = Logger::ERROR,
|
||||||
int $time = 60
|
int $time = 60
|
||||||
): DeduplicationHandler {
|
): DeduplicationHandler {
|
||||||
@ -73,10 +73,10 @@ trait SpecialHandlersTrait
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $specialHandlerFlags
|
* @param array $specialHandlerFlags
|
||||||
* @param AbstractHandler $handler
|
* @param HandlerInterface $handler
|
||||||
* @return AbstractHandler
|
* @return HandlerInterface
|
||||||
*/
|
*/
|
||||||
protected function applyBufferHandler(array $specialHandlerFlags, AbstractHandler $handler): AbstractHandler
|
protected function applyBufferHandler(array $specialHandlerFlags, HandlerInterface $handler): HandlerInterface
|
||||||
{
|
{
|
||||||
if (in_array(self::SPECIAL_HANDLERS_BUFFERING, $specialHandlerFlags, true)) {
|
if (in_array(self::SPECIAL_HANDLERS_BUFFERING, $specialHandlerFlags, true)) {
|
||||||
$handler = $this->setBuffering($handler);
|
$handler = $this->setBuffering($handler);
|
||||||
@ -95,10 +95,10 @@ trait SpecialHandlersTrait
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $specialHandlerFlags
|
* @param array $specialHandlerFlags
|
||||||
* @param AbstractHandler $handler
|
* @param HandlerInterface $handler
|
||||||
* @return AbstractHandler
|
* @return HandlerInterface
|
||||||
*/
|
*/
|
||||||
protected function applyLogOnErrorOnlyHandler(array $specialHandlerFlags, AbstractHandler $handler): AbstractHandler
|
protected function applyLogOnErrorOnlyHandler(array $specialHandlerFlags, HandlerInterface $handler): HandlerInterface
|
||||||
{
|
{
|
||||||
if (in_array(self::SPECIAL_HANDLERS_LOG_ON_ERROR_ONLY, $specialHandlerFlags, true)) {
|
if (in_array(self::SPECIAL_HANDLERS_LOG_ON_ERROR_ONLY, $specialHandlerFlags, true)) {
|
||||||
$handler = $this->setLogItemsOnErrorOnly($handler);
|
$handler = $this->setLogItemsOnErrorOnly($handler);
|
||||||
@ -115,10 +115,10 @@ trait SpecialHandlersTrait
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @param array $specialHandlerFlags
|
* @param array $specialHandlerFlags
|
||||||
* @param AbstractHandler $handler
|
* @param HandlerInterface $handler
|
||||||
* @return AbstractHandler
|
* @return HandlerInterface
|
||||||
*/
|
*/
|
||||||
protected function applyMakeUniqueHandler(array $specialHandlerFlags, AbstractHandler $handler): AbstractHandler
|
protected function applyMakeUniqueHandler(array $specialHandlerFlags, HandlerInterface $handler): HandlerInterface
|
||||||
{
|
{
|
||||||
if (in_array(self::SPECIAL_HANDLERS_MAKE_UNIQUE, $specialHandlerFlags, true)) {
|
if (in_array(self::SPECIAL_HANDLERS_MAKE_UNIQUE, $specialHandlerFlags, true)) {
|
||||||
/** @phpstan-ignore argument.type */
|
/** @phpstan-ignore argument.type */
|
||||||
|
@ -17,9 +17,6 @@ namespace D3\LoggerFactory\tests;
|
|||||||
|
|
||||||
use D3\LoggerFactory\LoggerFactory;
|
use D3\LoggerFactory\LoggerFactory;
|
||||||
use Generator;
|
use Generator;
|
||||||
use Monolog\Handler\BufferHandler;
|
|
||||||
use Monolog\Handler\DeduplicationHandler;
|
|
||||||
use Monolog\Handler\FingersCrossedHandler;
|
|
||||||
use Monolog\Handler\RotatingFileHandler;
|
use Monolog\Handler\RotatingFileHandler;
|
||||||
use Monolog\Handler\StreamHandler;
|
use Monolog\Handler\StreamHandler;
|
||||||
use Monolog\Logger;
|
use Monolog\Logger;
|
||||||
@ -32,6 +29,9 @@ use RuntimeException;
|
|||||||
*/
|
*/
|
||||||
class LoggerFactoryTest extends ApiTestCase
|
class LoggerFactoryTest extends ApiTestCase
|
||||||
{
|
{
|
||||||
|
use SpecialHandlersTestTrait;
|
||||||
|
use ProcessorsTestTrait;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @test
|
* @test
|
||||||
* @return void
|
* @return void
|
||||||
@ -67,7 +67,6 @@ class LoggerFactoryTest extends ApiTestCase
|
|||||||
|
|
||||||
$this->assertInstanceOf(Logger::class, $logger);
|
$this->assertInstanceOf(Logger::class, $logger);
|
||||||
$this->assertInstanceOf($expectedHandlerClass, $logger->getHandlers()[0]);
|
$this->assertInstanceOf($expectedHandlerClass, $logger->getHandlers()[0]);
|
||||||
$this->assertSame($logLevel, $logger->getHandlers()[0]->getLevel());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static function getFileLoggerDataProvider(): Generator
|
public static function getFileLoggerDataProvider(): Generator
|
||||||
@ -139,7 +138,7 @@ class LoggerFactoryTest extends ApiTestCase
|
|||||||
$logger = $this->callMethod(
|
$logger = $this->callMethod(
|
||||||
$sut,
|
$sut,
|
||||||
'getCombinedOxidAndFileLogger',
|
'getCombinedOxidAndFileLogger',
|
||||||
['nameFixture', 'file/path.log', 1, 5]
|
['nameFixture', 'file/path.log', Logger::INFO, 5]
|
||||||
);
|
);
|
||||||
|
|
||||||
$this->assertInstanceOf(Logger::class, $logger);
|
$this->assertInstanceOf(Logger::class, $logger);
|
||||||
@ -166,117 +165,4 @@ class LoggerFactoryTest extends ApiTestCase
|
|||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
* @covers \D3\LoggerFactory\LoggerFactory::applySpecialHandlers
|
|
||||||
* @throws ReflectionException
|
|
||||||
* @dataProvider applySpecialHandlersDataProvider
|
|
||||||
*/
|
|
||||||
public function testApplySpecialHandlers(array $options, string $expectedClass): void
|
|
||||||
{
|
|
||||||
$sut = LoggerFactory::create();
|
|
||||||
|
|
||||||
$handler = $this->getMockBuilder(StreamHandler::class)
|
|
||||||
->disableOriginalConstructor()
|
|
||||||
->getMock();
|
|
||||||
|
|
||||||
$this->assertInstanceOf(
|
|
||||||
$expectedClass,
|
|
||||||
$this->callMethod(
|
|
||||||
$sut,
|
|
||||||
'applySpecialHandlers',
|
|
||||||
[$handler, $options]
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static function applySpecialHandlersDataProvider(): Generator
|
|
||||||
{
|
|
||||||
yield 'empty config' => [[], StreamHandler::class];
|
|
||||||
yield 'simple buffering' => [[LoggerFactory::SPECIAL_HANDLERS_BUFFERING], BufferHandler::class];
|
|
||||||
yield 'advanced buffering' => [
|
|
||||||
[LoggerFactory::SPECIAL_HANDLERS_BUFFERING => [LoggerFactory::BUFFERING_OPTION_LIMIT => 10]],
|
|
||||||
BufferHandler::class,
|
|
||||||
];
|
|
||||||
yield 'simple logOnErrorOnly' => [[LoggerFactory::SPECIAL_HANDLERS_LOG_ON_ERROR_ONLY], FingersCrossedHandler::class];
|
|
||||||
yield 'advanced logOnErrorOnly' => [
|
|
||||||
[LoggerFactory::SPECIAL_HANDLERS_LOG_ON_ERROR_ONLY => [LoggerFactory::LOGONERRORONLY_LEVEL => Logger::DEBUG]],
|
|
||||||
FingersCrossedHandler::class,
|
|
||||||
];
|
|
||||||
yield 'simple deduplicate' => [[LoggerFactory::SPECIAL_HANDLERS_MAKE_UNIQUE], DeduplicationHandler::class];
|
|
||||||
yield 'advanced deduplicate' => [
|
|
||||||
[LoggerFactory::SPECIAL_HANDLERS_MAKE_UNIQUE => [LoggerFactory::MAKEUNIQUE_OPTION_TIME => 30]],
|
|
||||||
DeduplicationHandler::class,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
* @throws ReflectionException
|
|
||||||
* @covers \D3\LoggerFactory\LoggerFactory::setBuffering
|
|
||||||
*/
|
|
||||||
public function testSetBuffering(): void
|
|
||||||
{
|
|
||||||
$sut = LoggerFactory::create();
|
|
||||||
|
|
||||||
$handler = $this->getMockBuilder(StreamHandler::class)
|
|
||||||
->disableOriginalConstructor()
|
|
||||||
->getMock();
|
|
||||||
|
|
||||||
$this->assertInstanceOf(
|
|
||||||
BufferHandler::class,
|
|
||||||
$this->callMethod(
|
|
||||||
$sut,
|
|
||||||
'setBuffering',
|
|
||||||
[$handler]
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
* @throws ReflectionException
|
|
||||||
* @covers \D3\LoggerFactory\LoggerFactory::setLogItemsOnErrorOnly
|
|
||||||
*/
|
|
||||||
public function testSetLogItemsOnErrorOnly(): void
|
|
||||||
{
|
|
||||||
$sut = LoggerFactory::create();
|
|
||||||
|
|
||||||
$handler = $this->getMockBuilder(StreamHandler::class)
|
|
||||||
->disableOriginalConstructor()
|
|
||||||
->getMock();
|
|
||||||
|
|
||||||
$this->assertInstanceOf(
|
|
||||||
FingersCrossedHandler::class,
|
|
||||||
$this->callMethod(
|
|
||||||
$sut,
|
|
||||||
'setLogItemsOnErrorOnly',
|
|
||||||
[$handler]
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @test
|
|
||||||
* @throws ReflectionException
|
|
||||||
* @covers \D3\LoggerFactory\LoggerFactory::makeUnique
|
|
||||||
*/
|
|
||||||
public function testMakeUnique(): void
|
|
||||||
{
|
|
||||||
$sut = LoggerFactory::create();
|
|
||||||
|
|
||||||
$handler = $this->getMockBuilder(StreamHandler::class)
|
|
||||||
->disableOriginalConstructor()
|
|
||||||
->getMock();
|
|
||||||
|
|
||||||
$this->assertInstanceOf(
|
|
||||||
DeduplicationHandler::class,
|
|
||||||
$this->callMethod(
|
|
||||||
$sut,
|
|
||||||
'makeUnique',
|
|
||||||
[$handler]
|
|
||||||
)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
135
tests/ProcessorsTestTrait.php
Normal file
135
tests/ProcessorsTestTrait.php
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* https://www.d3data.de
|
||||||
|
*
|
||||||
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
|
* @link https://www.oxidmodule.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace D3\LoggerFactory\tests;
|
||||||
|
|
||||||
|
use D3\LoggerFactory\LoggerFactory;
|
||||||
|
use Generator;
|
||||||
|
use Monolog\Logger;
|
||||||
|
use PHPUnit\Framework\MockObject\MockObject;
|
||||||
|
use ReflectionException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @coversNothing
|
||||||
|
*/
|
||||||
|
trait ProcessorsTestTrait
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
* @return void
|
||||||
|
* @throws ReflectionException
|
||||||
|
* @covers \D3\LoggerFactory\LoggerFactory::applyProcessors
|
||||||
|
*/
|
||||||
|
public function testApplyProcessors(): void
|
||||||
|
{
|
||||||
|
$logger = $this->getMockBuilder(Logger::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$sut = $this->getMockBuilder(LoggerFactory::class)
|
||||||
|
->onlyMethods(['applyUidProcessor', 'applyFilterSensitiveProcessor'])
|
||||||
|
->getMock();
|
||||||
|
$sut->expects($this->once())->method('applyUidProcessor');
|
||||||
|
$sut->expects($this->once())->method('applyFilterSensitiveProcessor');
|
||||||
|
|
||||||
|
$this->assertInstanceOf(
|
||||||
|
Logger::class,
|
||||||
|
$this->callMethod(
|
||||||
|
$sut,
|
||||||
|
'applyProcessors',
|
||||||
|
[$logger, []]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*
|
||||||
|
* @param array $configuration
|
||||||
|
* @param int $expectedCount
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @throws ReflectionException
|
||||||
|
* @covers \D3\LoggerFactory\LoggerFactory::applyUidProcessor
|
||||||
|
* @dataProvider applyUidProcessorDataProvider
|
||||||
|
*/
|
||||||
|
public function testApplyUidProcessor(array $configuration, int $expectedCount): void
|
||||||
|
{
|
||||||
|
/** @var Logger|MockObject $logger */
|
||||||
|
$logger = LoggerFactory::create()->getFileLogger('foo', 'logg.file');
|
||||||
|
|
||||||
|
$sut = LoggerFactory::create();
|
||||||
|
|
||||||
|
$this->callMethod(
|
||||||
|
$sut,
|
||||||
|
'applyUidProcessor',
|
||||||
|
[$configuration, $logger]
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertCount(
|
||||||
|
$expectedCount,
|
||||||
|
$logger->getProcessors()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function applyUidProcessorDataProvider(): Generator
|
||||||
|
{
|
||||||
|
yield 'simple configuration' => [[LoggerFactory::PROCESSOR_UNIQUE_ID], 1];
|
||||||
|
yield 'advanced configuration' => [[LoggerFactory::PROCESSOR_UNIQUE_ID => ''], 1];
|
||||||
|
yield 'no configuration' => [[], 0];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*
|
||||||
|
* @param array $configuration
|
||||||
|
* @param int $expectedCount
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @throws ReflectionException
|
||||||
|
* @covers \D3\LoggerFactory\LoggerFactory::applyFilterSensitiveProcessor
|
||||||
|
* @dataProvider applyFilterProcessorDataProvider
|
||||||
|
*/
|
||||||
|
public function testApplyFilterProcessor(array $configuration, int $expectedCount, bool $expectException): void
|
||||||
|
{
|
||||||
|
/** @var Logger|MockObject $logger */
|
||||||
|
$logger = LoggerFactory::create()->getFileLogger('foo', 'logg.file');
|
||||||
|
|
||||||
|
$sut = LoggerFactory::create();
|
||||||
|
|
||||||
|
if ($expectException) {
|
||||||
|
$this->expectException(\RuntimeException::class);
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->callMethod(
|
||||||
|
$sut,
|
||||||
|
'applyFilterSensitiveProcessor',
|
||||||
|
[$configuration, $logger]
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertCount(
|
||||||
|
$expectedCount,
|
||||||
|
$logger->getProcessors()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function applyFilterProcessorDataProvider(): Generator
|
||||||
|
{
|
||||||
|
yield 'simple configuration' => [[LoggerFactory::PROCESSOR_FILTERSENSITIVE], 0, false];
|
||||||
|
yield 'advanced configuration' => [[LoggerFactory::PROCESSOR_FILTERSENSITIVE => [LoggerFactory::FILTERSENSITIVE_SECRETS => ['foo']]], 1, false];
|
||||||
|
yield 'misconfiguration' => [[LoggerFactory::PROCESSOR_FILTERSENSITIVE => [LoggerFactory::FILTERSENSITIVE_SECRETS => 'foo']], 0, true];
|
||||||
|
yield 'no configuration' => [[], 0, false];
|
||||||
|
}
|
||||||
|
}
|
150
tests/SensitiveFilterProcessorTest.php
Normal file
150
tests/SensitiveFilterProcessorTest.php
Normal file
@ -0,0 +1,150 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* https://www.d3data.de
|
||||||
|
*
|
||||||
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
|
* @link https://www.oxidmodule.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace D3\LoggerFactory\tests;
|
||||||
|
|
||||||
|
use D3\LoggerFactory\SensitiveFilterProcessor;
|
||||||
|
use Generator;
|
||||||
|
use ReflectionException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @coversNothing
|
||||||
|
*/
|
||||||
|
class SensitiveFilterProcessorTest extends ApiTestCase
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
* @param string|null $replacementArgument
|
||||||
|
* @param string $expectedReplacement
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @throws ReflectionException
|
||||||
|
* @covers \D3\LoggerFactory\SensitiveFilterProcessor::__construct
|
||||||
|
* @dataProvider constructDataProvider
|
||||||
|
*/
|
||||||
|
public function testConstruct(?string $replacementArgument, string $expectedReplacement)
|
||||||
|
{
|
||||||
|
$sut = $this->getMockBuilder(SensitiveFilterProcessor::class)
|
||||||
|
->onlyMethods(['convertStringsToRegex'])
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
$sut->expects($this->once())->method('convertStringsToRegex');
|
||||||
|
|
||||||
|
$this->callMethod(
|
||||||
|
$sut,
|
||||||
|
'__construct',
|
||||||
|
[['foo'], $replacementArgument]
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertSame(
|
||||||
|
$expectedReplacement,
|
||||||
|
$this->getValue(
|
||||||
|
$sut,
|
||||||
|
'replacement'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function constructDataProvider(): Generator
|
||||||
|
{
|
||||||
|
yield 'default replacement' => [null, '*****'];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
* @throws ReflectionException
|
||||||
|
* @dataProvider convertStringsToRegexDataProvider
|
||||||
|
* @covers \D3\LoggerFactory\SensitiveFilterProcessor::convertStringsToRegex
|
||||||
|
* @covers \D3\LoggerFactory\SensitiveFilterProcessor::stringIsRegexp
|
||||||
|
*/
|
||||||
|
public function testConvertStringsToRegex(
|
||||||
|
array $input,
|
||||||
|
array $expected
|
||||||
|
): void {
|
||||||
|
$sutMock = $this->getMockBuilder(SensitiveFilterProcessor::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$this->callMethod(
|
||||||
|
$sutMock,
|
||||||
|
'convertStringsToRegex',
|
||||||
|
[$input]
|
||||||
|
);
|
||||||
|
|
||||||
|
$this->assertSame(
|
||||||
|
$expected,
|
||||||
|
$this->getValue(
|
||||||
|
$sutMock,
|
||||||
|
'secrets'
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function convertStringsToRegexDataProvider(): Generator
|
||||||
|
{
|
||||||
|
yield 'simple' => [['abc'], ['/abc/i']];
|
||||||
|
yield 'multiple' => [['def', 'ghi'], ['/def/i', '/ghi/i']];
|
||||||
|
yield 'urlencoded' => [['1&c'], ['/1&c/i', '/1%26c/i']];
|
||||||
|
yield 'delimiter' => [['de/fg'], ['/de\/fg/i', '/de%2Ffg/i']];
|
||||||
|
yield 'regex' => [['/abc/mi'], ['/abc/mi']];
|
||||||
|
yield 'mixed' => [['/abc/mi', 'def', '/ghi/mi'], ['/abc/mi', '/def/i', '/ghi/mi']];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
* @return void
|
||||||
|
* @throws ReflectionException
|
||||||
|
* @covers \D3\LoggerFactory\SensitiveFilterProcessor::__invoke
|
||||||
|
*/
|
||||||
|
public function testInvoke()
|
||||||
|
{
|
||||||
|
$sut = new SensitiveFilterProcessor(['secret1', 'password'], '###');
|
||||||
|
|
||||||
|
$record = [
|
||||||
|
'key1' => null,
|
||||||
|
'key2' => 'value+secret1+value+password',
|
||||||
|
'password' => 'secret1',
|
||||||
|
'key4' => [
|
||||||
|
'subkey1' => null,
|
||||||
|
'subkey2' => 'value+password+value+secret1',
|
||||||
|
'subkey3' => [
|
||||||
|
'subsubkey3' => 'value+password+value+secret1',
|
||||||
|
],
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$expected = [
|
||||||
|
'key1' => null,
|
||||||
|
'key2' => 'value+###+value+###',
|
||||||
|
'password' => '###',
|
||||||
|
'key4' => [
|
||||||
|
'subkey1' => null,
|
||||||
|
'subkey2' => 'value+###+value+###',
|
||||||
|
'subkey3' => [
|
||||||
|
'subsubkey3' => 'value+###+value+###',
|
||||||
|
],
|
||||||
|
]
|
||||||
|
];
|
||||||
|
|
||||||
|
$this->assertSame(
|
||||||
|
$expected,
|
||||||
|
$this->callMethod(
|
||||||
|
$sut,
|
||||||
|
'__invoke',
|
||||||
|
[$record]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
246
tests/SpecialHandlersTestTrait.php
Normal file
246
tests/SpecialHandlersTestTrait.php
Normal file
@ -0,0 +1,246 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Copyright (c) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
*
|
||||||
|
* For the full copyright and license information, please view
|
||||||
|
* the LICENSE file that was distributed with this source code.
|
||||||
|
*
|
||||||
|
* https://www.d3data.de
|
||||||
|
*
|
||||||
|
* @copyright (C) D3 Data Development (Inh. Thomas Dartsch)
|
||||||
|
* @author D3 Data Development - Daniel Seifert <info@shopmodule.com>
|
||||||
|
* @link https://www.oxidmodule.com
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace D3\LoggerFactory\tests;
|
||||||
|
|
||||||
|
use D3\LoggerFactory\LoggerFactory;
|
||||||
|
use Generator;
|
||||||
|
use Monolog\Handler\BufferHandler;
|
||||||
|
use Monolog\Handler\DeduplicationHandler;
|
||||||
|
use Monolog\Handler\FingersCrossedHandler;
|
||||||
|
use Monolog\Handler\HandlerInterface;
|
||||||
|
use Monolog\Handler\StreamHandler;
|
||||||
|
use Monolog\Logger;
|
||||||
|
use ReflectionException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @coversNothing
|
||||||
|
*/
|
||||||
|
trait SpecialHandlersTestTrait
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
* @covers \D3\LoggerFactory\LoggerFactory::applySpecialHandlers
|
||||||
|
* @throws ReflectionException
|
||||||
|
*/
|
||||||
|
public function testApplySpecialHandlers(): void
|
||||||
|
{
|
||||||
|
$sut = $this->getMockBuilder(LoggerFactory::class)
|
||||||
|
->onlyMethods(['applyBufferHandler', 'applyLogOnErrorOnlyHandler', 'applyMakeUniqueHandler'])
|
||||||
|
->getMock();
|
||||||
|
$sut->expects($this->once())->method('applyBufferHandler');
|
||||||
|
$sut->expects($this->once())->method('applyLogOnErrorOnlyHandler');
|
||||||
|
$sut->expects($this->once())->method('applyMakeUniqueHandler');
|
||||||
|
|
||||||
|
$handler = $this->getMockBuilder(StreamHandler::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$this->assertInstanceOf(
|
||||||
|
HandlerInterface::class,
|
||||||
|
$this->callMethod(
|
||||||
|
$sut,
|
||||||
|
'applySpecialHandlers',
|
||||||
|
[$handler, []]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
* @throws ReflectionException
|
||||||
|
* @covers \D3\LoggerFactory\LoggerFactory::setBuffering
|
||||||
|
*/
|
||||||
|
public function testSetBuffering(): void
|
||||||
|
{
|
||||||
|
$sut = LoggerFactory::create();
|
||||||
|
|
||||||
|
$handler = $this->getMockBuilder(StreamHandler::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$this->assertInstanceOf(
|
||||||
|
BufferHandler::class,
|
||||||
|
$this->callMethod(
|
||||||
|
$sut,
|
||||||
|
'setBuffering',
|
||||||
|
[$handler]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
* @throws ReflectionException
|
||||||
|
* @covers \D3\LoggerFactory\LoggerFactory::setLogItemsOnErrorOnly
|
||||||
|
*/
|
||||||
|
public function testSetLogItemsOnErrorOnly(): void
|
||||||
|
{
|
||||||
|
$sut = LoggerFactory::create();
|
||||||
|
|
||||||
|
$handler = $this->getMockBuilder(StreamHandler::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$this->assertInstanceOf(
|
||||||
|
FingersCrossedHandler::class,
|
||||||
|
$this->callMethod(
|
||||||
|
$sut,
|
||||||
|
'setLogItemsOnErrorOnly',
|
||||||
|
[$handler]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
* @throws ReflectionException
|
||||||
|
* @covers \D3\LoggerFactory\LoggerFactory::makeUnique
|
||||||
|
*/
|
||||||
|
public function testMakeUnique(): void
|
||||||
|
{
|
||||||
|
$sut = LoggerFactory::create();
|
||||||
|
|
||||||
|
$handler = $this->getMockBuilder(StreamHandler::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$this->assertInstanceOf(
|
||||||
|
DeduplicationHandler::class,
|
||||||
|
$this->callMethod(
|
||||||
|
$sut,
|
||||||
|
'makeUnique',
|
||||||
|
[$handler]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*
|
||||||
|
* @param array $configuration
|
||||||
|
* @param string $expectedClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @throws ReflectionException
|
||||||
|
* @covers \D3\LoggerFactory\LoggerFactory::applyBufferHandler
|
||||||
|
* @dataProvider applyBufferHandlerDataProvider
|
||||||
|
*/
|
||||||
|
public function testApplyBufferHandler(array $configuration, string $expectedClass): void
|
||||||
|
{
|
||||||
|
$handler = $this->getMockBuilder(StreamHandler::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$sut = LoggerFactory::create();
|
||||||
|
|
||||||
|
$this->assertInstanceOf(
|
||||||
|
$expectedClass,
|
||||||
|
$this->callMethod(
|
||||||
|
$sut,
|
||||||
|
'applyBufferHandler',
|
||||||
|
[$configuration, $handler]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function applyBufferHandlerDataProvider(): Generator
|
||||||
|
{
|
||||||
|
yield 'empty config' => [[], StreamHandler::class];
|
||||||
|
yield 'simple buffering' => [[LoggerFactory::SPECIAL_HANDLERS_BUFFERING], BufferHandler::class];
|
||||||
|
yield 'advanced buffering' => [
|
||||||
|
[LoggerFactory::SPECIAL_HANDLERS_BUFFERING => [LoggerFactory::BUFFERING_OPTION_LIMIT => 10]],
|
||||||
|
BufferHandler::class,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*
|
||||||
|
* @param array $configuration
|
||||||
|
* @param string $expectedClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @throws ReflectionException
|
||||||
|
* @covers \D3\LoggerFactory\LoggerFactory::applyLogOnErrorOnlyHandler
|
||||||
|
* @dataProvider applyLogOnErrorOnlyHandlerDataProvider
|
||||||
|
*/
|
||||||
|
public function testApplyLogOnErrorOnlyHandler(array $configuration, string $expectedClass): void
|
||||||
|
{
|
||||||
|
$handler = $this->getMockBuilder(StreamHandler::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$sut = LoggerFactory::create();
|
||||||
|
|
||||||
|
$this->assertInstanceOf(
|
||||||
|
$expectedClass,
|
||||||
|
$this->callMethod(
|
||||||
|
$sut,
|
||||||
|
'applyLogOnErrorOnlyHandler',
|
||||||
|
[$configuration, $handler]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function applyLogOnErrorOnlyHandlerDataProvider(): Generator
|
||||||
|
{
|
||||||
|
yield 'empty config' => [[], StreamHandler::class];
|
||||||
|
yield 'simple logOnErrorOnly' => [[LoggerFactory::SPECIAL_HANDLERS_LOG_ON_ERROR_ONLY], FingersCrossedHandler::class];
|
||||||
|
yield 'advanced logOnErrorOnly' => [
|
||||||
|
[LoggerFactory::SPECIAL_HANDLERS_LOG_ON_ERROR_ONLY => [LoggerFactory::LOGONERRORONLY_LEVEL => Logger::DEBUG]],
|
||||||
|
FingersCrossedHandler::class,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @test
|
||||||
|
*
|
||||||
|
* @param array $configuration
|
||||||
|
* @param string $expectedClass
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
* @throws ReflectionException
|
||||||
|
* @covers \D3\LoggerFactory\LoggerFactory::applyMakeUniqueHandler
|
||||||
|
* @dataProvider applyMakeUniqueHandlerDataProvider
|
||||||
|
*/
|
||||||
|
public function testApplyMakeUniqueHandler(array $configuration, string $expectedClass): void
|
||||||
|
{
|
||||||
|
$handler = $this->getMockBuilder(StreamHandler::class)
|
||||||
|
->disableOriginalConstructor()
|
||||||
|
->getMock();
|
||||||
|
|
||||||
|
$sut = LoggerFactory::create();
|
||||||
|
|
||||||
|
$this->assertInstanceOf(
|
||||||
|
$expectedClass,
|
||||||
|
$this->callMethod(
|
||||||
|
$sut,
|
||||||
|
'applyMakeUniqueHandler',
|
||||||
|
[$configuration, $handler]
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function applyMakeUniqueHandlerDataProvider(): Generator
|
||||||
|
{
|
||||||
|
yield 'empty config' => [[], StreamHandler::class];
|
||||||
|
yield 'simple deduplicate' => [[LoggerFactory::SPECIAL_HANDLERS_MAKE_UNIQUE], DeduplicationHandler::class];
|
||||||
|
yield 'advanced deduplicate' => [
|
||||||
|
[LoggerFactory::SPECIAL_HANDLERS_MAKE_UNIQUE => [LoggerFactory::MAKEUNIQUE_OPTION_TIME => 30]],
|
||||||
|
DeduplicationHandler::class,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
Laden…
x
Verwijs in nieuw issue
Block a user