You are here

public function SyslogTest::testSyslogWriting in Drupal 10

Same name and namespace in other branches
  1. 8 core/modules/syslog/tests/src/Kernel/SyslogTest.php \Drupal\Tests\syslog\Kernel\SyslogTest::testSyslogWriting()
  2. 9 core/modules/syslog/tests/src/Kernel/SyslogTest.php \Drupal\Tests\syslog\Kernel\SyslogTest::testSyslogWriting()

@covers ::log

File

core/modules/syslog/tests/src/Kernel/SyslogTest.php, line 29

Class

SyslogTest
Test syslog logger functionality.

Namespace

Drupal\Tests\syslog\Kernel

Code

public function testSyslogWriting() {
  $request = Request::create('/page-not-found', 'GET', [], [], [], [
    'REMOTE_ADDR' => '1.2.3.4',
  ]);
  $request->headers
    ->set('Referer', 'other-site');
  \Drupal::requestStack()
    ->push($request);
  $user = $this
    ->getMockBuilder('Drupal\\Core\\Session\\AccountInterface')
    ->getMock();
  $user
    ->method('id')
    ->willReturn(42);
  $this->container
    ->set('current_user', $user);
  \Drupal::logger('my_module')
    ->warning('My warning message.', [
    'link' => '/my-link',
  ]);
  $log_filename = $this->container
    ->get('file_system')
    ->realpath('public://syslog.log');
  $logs = explode(PHP_EOL, file_get_contents($log_filename));
  $log = explode('|', $logs[0]);
  global $base_url;
  $this
    ->assertEquals($base_url, $log[0]);
  $this
    ->assertEquals('my_module', $log[2]);
  $this
    ->assertEquals('1.2.3.4', $log[3]);
  $this
    ->assertEquals($base_url . '/page-not-found', $log[4]);
  $this
    ->assertEquals('other-site', $log[5]);
  $this
    ->assertEquals('42', $log[6]);
  $this
    ->assertEquals('/my-link', $log[7]);
  $this
    ->assertEquals('My warning message.', $log[8]);

  // Test that an empty format prevents writing to the syslog.

  /** @var \Drupal\Core\Config\Config $config */
  $config = $this->container
    ->get('config.factory')
    ->getEditable('syslog.settings');
  $config
    ->set('format', '');
  $config
    ->save();
  unlink($log_filename);
  \Drupal::logger('my_module')
    ->warning('My warning message.', [
    'link' => '/my-link',
  ]);
  $this
    ->assertFileDoesNotExist($log_filename);
}