Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\syslog\Kernel;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\KernelTests\KernelTestBase;
|
Chris@0
|
6 use Symfony\Component\HttpFoundation\Request;
|
Chris@0
|
7
|
Chris@0
|
8 /**
|
Chris@0
|
9 * Test syslog logger functionality.
|
Chris@0
|
10 *
|
Chris@0
|
11 * @group syslog
|
Chris@0
|
12 * @coversDefaultClass \Drupal\syslog\Logger\SysLog
|
Chris@0
|
13 */
|
Chris@0
|
14 class SyslogTest extends KernelTestBase {
|
Chris@0
|
15
|
Chris@0
|
16 public static $modules = ['syslog', 'syslog_test'];
|
Chris@0
|
17
|
Chris@0
|
18 /**
|
Chris@0
|
19 * {@inheritdoc}
|
Chris@0
|
20 */
|
Chris@0
|
21 protected function setUp() {
|
Chris@0
|
22 parent::setUp();
|
Chris@0
|
23 $this->installConfig(['syslog']);
|
Chris@0
|
24 }
|
Chris@0
|
25
|
Chris@0
|
26 /**
|
Chris@0
|
27 * @covers ::log
|
Chris@0
|
28 */
|
Chris@0
|
29 public function testSyslogWriting() {
|
Chris@0
|
30
|
Chris@0
|
31 $request = Request::create('/page-not-found', 'GET', [], [], [], ['REMOTE_ADDR' => '1.2.3.4']);
|
Chris@0
|
32 $request->headers->set('Referer', 'other-site');
|
Chris@0
|
33 \Drupal::requestStack()->push($request);
|
Chris@0
|
34
|
Chris@0
|
35 $user = $this->getMockBuilder('Drupal\Core\Session\AccountInterface')->getMock();
|
Chris@0
|
36 $user->method('id')->willReturn(42);
|
Chris@0
|
37 $this->container->set('current_user', $user);
|
Chris@0
|
38
|
Chris@0
|
39 \Drupal::logger('my_module')->warning('My warning message.', ['link' => '/my-link']);
|
Chris@0
|
40
|
Chris@0
|
41 $log_filename = $this->container->get('file_system')->realpath('public://syslog.log');
|
Chris@0
|
42 $logs = explode(PHP_EOL, file_get_contents($log_filename));
|
Chris@0
|
43 $log = explode('|', $logs[0]);
|
Chris@0
|
44
|
Chris@0
|
45 global $base_url;
|
Chris@0
|
46 $this->assertEquals($base_url, $log[0]);
|
Chris@0
|
47 $this->assertEquals('my_module', $log[2]);
|
Chris@0
|
48 $this->assertEquals('1.2.3.4', $log[3]);
|
Chris@0
|
49 $this->assertEquals($base_url . '/page-not-found', $log[4]);
|
Chris@0
|
50 $this->assertEquals('other-site', $log[5]);
|
Chris@0
|
51 $this->assertEquals('42', $log[6]);
|
Chris@0
|
52 $this->assertEquals('/my-link', $log[7]);
|
Chris@0
|
53 $this->assertEquals('My warning message.', $log[8]);
|
Chris@0
|
54 }
|
Chris@0
|
55
|
Chris@14
|
56 /**
|
Chris@14
|
57 * Test severity level logging.
|
Chris@14
|
58 *
|
Chris@14
|
59 * @covers ::log
|
Chris@14
|
60 */
|
Chris@14
|
61 public function testSyslogSeverity() {
|
Chris@14
|
62 /* @var \Drupal\Core\Config\Config $config */
|
Chris@14
|
63 $config = $this->container->get('config.factory')->getEditable('syslog.settings');
|
Chris@14
|
64 $config->set('format', '!type|!message|!severity');
|
Chris@14
|
65 $config->save();
|
Chris@14
|
66
|
Chris@14
|
67 \Drupal::logger('my_module')->warning('My warning message.');
|
Chris@14
|
68
|
Chris@14
|
69 $log_filename = $this->container->get('file_system')->realpath('public://syslog.log');
|
Chris@14
|
70 $logs = explode(PHP_EOL, file_get_contents($log_filename));
|
Chris@14
|
71 $log = explode('|', $logs[0]);
|
Chris@14
|
72
|
Chris@14
|
73 $this->assertEquals('my_module', $log[0]);
|
Chris@14
|
74 $this->assertEquals('My warning message.', $log[1]);
|
Chris@14
|
75 $this->assertEquals('4', $log[2]);
|
Chris@14
|
76 }
|
Chris@14
|
77
|
Chris@0
|
78 }
|