1 system.test ShutdownFunctionsTest::testShutdownFunctions()

Test shutdown functions.

File

core/modules/system/tests/system.test, line 2300
Tests for system.module.

Class

ShutdownFunctionsTest
Functional tests shutdown functions.

Code

function testShutdownFunctions() {
  $arg1 = $this->randomName();
  $arg2 = $this->randomName();
  $this->backdropGet('system-test/shutdown-functions/' . $arg1 . '/' . $arg2);

  // Now wait a few seconds to ensure that the watchdog entries are written
  // before we check for them.
  sleep(2);

  $shutdown1 = format_string('First shutdown function, arg1 : @arg1, arg2: @arg2', array('@arg1' => $arg1, '@arg2' => $arg2));
  $shutdown2 = format_string('Second shutdown function, arg1 : @arg1, arg2: @arg2', array('@arg1' => $arg1, '@arg2' => $arg2));

  // Text doesn't show up because the page returns before shutdown functions.
  $this->assertNoText($shutdown1);
  $this->assertNoText($shutdown2);

  // However, the messages should show up in watchdog.
  $shutdown1_log = db_query("SELECT COUNT(*) FROM {watchdog} WHERE message = :string", array(':string' => $shutdown1))->fetchField();
  $shutdown2_log = db_query("SELECT COUNT(*) FROM {watchdog} WHERE message = :string", array(':string' => $shutdown2))->fetchField();
  $this->assertEqual($shutdown1_log, 1, 'Shutdown message 1 logged.');
  $this->assertEqual($shutdown2_log, 1, 'Shutdown message 2 logged.');

  // Make sure exceptions displayed through _backdrop_render_exception_safe()
  // are correctly escaped.
  $message = 'Exception: Backdrop is <blink>awesome</blink>';
  $exception_log = db_query("SELECT COUNT(*) FROM {watchdog} WHERE message LIKE :string", array(':string' => db_like($message) . '%'))->fetchField();
  $this->assertRaw($exception_log, 1, 'Uncaught exception logged.');
}