feat: scaffold plugin foundation
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
<?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'] );
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user