66 lines
2.0 KiB
PHP
66 lines
2.0 KiB
PHP
<?php
|
|
|
|
namespace WPContentSync\Tests\Unit;
|
|
|
|
use PHPUnit\Framework\TestCase;
|
|
use WPContentSync\Logging\OptionLogger;
|
|
|
|
class OptionLoggerTest extends TestCase {
|
|
protected function setUp(): void {
|
|
$GLOBALS['wpcs_test_options'] = array();
|
|
}
|
|
|
|
public function test_it_records_log_entries(): void {
|
|
$logger = new OptionLogger( 10 );
|
|
|
|
$logger->warning( 'Connection failed.', array( 'url' => 'https://example.test' ) );
|
|
|
|
$entries = get_option( OptionLogger::OPTION_NAME, array() );
|
|
|
|
self::assertCount( 1, $entries );
|
|
self::assertSame( 'warning', $entries[0]['level'] );
|
|
self::assertSame( 'Connection failed.', $entries[0]['message'] );
|
|
self::assertSame( 'https://example.test', $entries[0]['context']['url'] );
|
|
self::assertArrayHasKey( 'timestamp', $entries[0] );
|
|
}
|
|
|
|
public function test_it_redacts_sensitive_context_values(): void {
|
|
$logger = new OptionLogger( 10 );
|
|
|
|
$logger->error(
|
|
'Authentication failed.',
|
|
array(
|
|
'application_password' => 'secret-value',
|
|
'client_secret' => 'client-secret-value',
|
|
'headers' => array(
|
|
'Authorization' => 'Bearer nested-token',
|
|
),
|
|
'token' => 'token-value',
|
|
'username' => 'admin',
|
|
)
|
|
);
|
|
|
|
$entries = get_option( OptionLogger::OPTION_NAME, array() );
|
|
|
|
self::assertSame( '[redacted]', $entries[0]['context']['application_password'] );
|
|
self::assertSame( '[redacted]', $entries[0]['context']['client_secret'] );
|
|
self::assertSame( '[redacted]', $entries[0]['context']['headers']['Authorization'] );
|
|
self::assertSame( '[redacted]', $entries[0]['context']['token'] );
|
|
self::assertSame( 'admin', $entries[0]['context']['username'] );
|
|
}
|
|
|
|
public function test_it_limits_retained_entries(): void {
|
|
$logger = new OptionLogger( 2 );
|
|
|
|
$logger->info( 'First' );
|
|
$logger->info( 'Second' );
|
|
$logger->info( 'Third' );
|
|
|
|
$entries = get_option( OptionLogger::OPTION_NAME, array() );
|
|
|
|
self::assertCount( 2, $entries );
|
|
self::assertSame( 'Second', $entries[0]['message'] );
|
|
self::assertSame( 'Third', $entries[1]['message'] );
|
|
}
|
|
}
|