Files
WP-Content-Sync/tests/Unit/OptionLoggerTest.php
T
2026-04-26 12:44:16 -05:00

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'] );
}
}