container->get('router.builder')->rebuild(); $this->installSchema('dblog', ['watchdog']); ViewTestData::createTestViews(get_class($this), ['dblog_test_views']); } /** * Tests the integration. */ public function testIntegration() { // Remove the watchdog entries added by the potential batch process. $this->container->get('database')->truncate('watchdog')->execute(); $entries = []; // Setup a watchdog entry without tokens. $entries[] = [ 'message' => $this->randomMachineName(), 'variables' => ['link' => \Drupal::l('Link', new Url(''))], ]; // Setup a watchdog entry with one token. $entries[] = [ 'message' => '@token1', 'variables' => ['@token1' => $this->randomMachineName(), 'link' => \Drupal::l('Link', new Url(''))], ]; // Setup a watchdog entry with two tokens. $entries[] = [ 'message' => '@token1 @token2', // Setup a link with a tag which is filtered by // \Drupal\Component\Utility\Xss::filterAdmin() in order to make sure // that strings which are not marked as safe get filtered. 'variables' => [ '@token1' => $this->randomMachineName(), '@token2' => $this->randomMachineName(), 'link' => 'Link', ], ]; $logger_factory = $this->container->get('logger.factory'); foreach ($entries as $entry) { $entry += [ 'type' => 'test-views', 'severity' => RfcLogLevel::NOTICE, ]; $logger_factory->get($entry['type'])->log($entry['severity'], $entry['message'], $entry['variables']); } $view = Views::getView('test_dblog'); $this->executeView($view); $view->initStyle(); foreach ($entries as $index => $entry) { $this->assertEqual($view->style_plugin->getField($index, 'message'), SafeMarkup::format($entry['message'], $entry['variables'])); $link_field = $view->style_plugin->getField($index, 'link'); // The 3rd entry contains some unsafe markup that needs to get filtered. if ($index == 2) { // Make sure that unsafe link differs from the rendered link, so we know // that some filtering actually happened. $this->assertNotEqual($link_field, $entry['variables']['link']); } $this->assertEqual($link_field, Xss::filterAdmin($entry['variables']['link'])); } // Disable replacing variables and check that the tokens aren't replaced. $view->destroy(); $view->storage->invalidateCaches(); $view->initHandlers(); $this->executeView($view); $view->initStyle(); $view->field['message']->options['replace_variables'] = FALSE; foreach ($entries as $index => $entry) { $this->assertEqual($view->style_plugin->getField($index, 'message'), $entry['message']); } } }