summaryrefslogtreecommitdiff
path: root/kolab.org/www/drupal-7.26/modules/simpletest/tests/system_test.module
diff options
context:
space:
mode:
Diffstat (limited to 'kolab.org/www/drupal-7.26/modules/simpletest/tests/system_test.module')
-rw-r--r--kolab.org/www/drupal-7.26/modules/simpletest/tests/system_test.module407
1 files changed, 407 insertions, 0 deletions
diff --git a/kolab.org/www/drupal-7.26/modules/simpletest/tests/system_test.module b/kolab.org/www/drupal-7.26/modules/simpletest/tests/system_test.module
new file mode 100644
index 0000000..8cb0e83
--- /dev/null
+++ b/kolab.org/www/drupal-7.26/modules/simpletest/tests/system_test.module
@@ -0,0 +1,407 @@
+<?php
+
+/**
+ * Implements hook_menu().
+ */
+function system_test_menu() {
+ $items['system-test/sleep/%'] = array(
+ 'page callback' => 'system_test_sleep',
+ 'page arguments' => array(2),
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+ $items['system-test/auth'] = array(
+ 'page callback' => 'system_test_basic_auth_page',
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+ $items['system-test/authorize-init/%'] = array(
+ 'page callback' => 'system_test_authorize_init_page',
+ 'page arguments' => array(2),
+ 'access arguments' => array('administer software updates'),
+ 'type' => MENU_CALLBACK,
+ );
+ $items['system-test/redirect/%'] = array(
+ 'title' => 'Redirect',
+ 'page callback' => 'system_test_redirect',
+ 'page arguments' => array(2),
+ 'access arguments' => array('access content'),
+ 'type' => MENU_CALLBACK,
+ );
+ $items['system-test/multiple-redirects/%'] = array(
+ 'title' => 'Redirect',
+ 'page callback' => 'system_test_multiple_redirects',
+ 'page arguments' => array(2),
+ 'access arguments' => array('access content'),
+ 'type' => MENU_CALLBACK,
+ );
+ $items['system-test/set-header'] = array(
+ 'page callback' => 'system_test_set_header',
+ 'access arguments' => array('access content'),
+ 'type' => MENU_CALLBACK,
+ );
+ $items['system-test/redirect-noscheme'] = array(
+ 'page callback' => 'system_test_redirect_noscheme',
+ 'access arguments' => array('access content'),
+ 'type' => MENU_CALLBACK,
+ );
+ $items['system-test/redirect-noparse'] = array(
+ 'page callback' => 'system_test_redirect_noparse',
+ 'access arguments' => array('access content'),
+ 'type' => MENU_CALLBACK,
+ );
+ $items['system-test/redirect-invalid-scheme'] = array(
+ 'page callback' => 'system_test_redirect_invalid_scheme',
+ 'access arguments' => array('access content'),
+ 'type' => MENU_CALLBACK,
+ );
+
+ $items['system-test/variable-get'] = array(
+ 'title' => 'Variable Get',
+ 'page callback' => 'variable_get',
+ 'page arguments' => array('simpletest_bootstrap_variable_test', NULL),
+ 'access arguments' => array('access content'),
+ 'type' => MENU_CALLBACK,
+ );
+
+ $items['system-test/lock-acquire'] = array(
+ 'title' => 'Lock acquire',
+ 'page callback' => 'system_test_lock_acquire',
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+
+ $items['system-test/lock-exit'] = array(
+ 'title' => 'Lock acquire then exit',
+ 'page callback' => 'system_test_lock_exit',
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+
+ $items['system-test/main-content-handling'] = array(
+ 'title' => 'Test main content handling',
+ 'page callback' => 'system_test_main_content_fallback',
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+
+ $items['system-test/main-content-fallback'] = array(
+ 'title' => 'Test main content fallback',
+ 'page callback' => 'system_test_main_content_fallback',
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+
+ $items['system-test/main-content-duplication'] = array(
+ 'title' => 'Test main content duplication',
+ 'page callback' => 'system_test_main_content_fallback',
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+
+ $items['system-test/shutdown-functions'] = array(
+ 'title' => 'Test main content duplication',
+ 'page callback' => 'system_test_page_shutdown_functions',
+ 'access callback' => TRUE,
+ 'type' => MENU_CALLBACK,
+ );
+
+ return $items;
+}
+
+function system_test_sleep($seconds) {
+ sleep($seconds);
+}
+
+function system_test_basic_auth_page() {
+ $output = t('$_SERVER[\'PHP_AUTH_USER\'] is @username.', array('@username' => $_SERVER['PHP_AUTH_USER']));
+ $output .= t('$_SERVER[\'PHP_AUTH_PW\'] is @password.', array('@password' => $_SERVER['PHP_AUTH_PW']));
+ return $output;
+}
+
+function system_test_redirect($code) {
+ $code = (int) $code;
+ if ($code != 200) {
+ // Header names are case-insensitive.
+ header("locaTION: " . url('system-test/redirect/200', array('absolute' => TRUE)), TRUE, $code);
+ exit;
+ }
+ return '';
+}
+
+/**
+ * Menu callback; sends a redirect header to itself until $count argument is 0.
+ *
+ * Emulates the variable number of redirects (given by initial $count argument)
+ * to the final destination URL by continuous sending of 301 HTTP redirect
+ * headers to itself together with decrementing the $count parameter until the
+ * $count parameter reaches 0. After that it returns an empty string to render
+ * the final destination page.
+ *
+ * @param $count
+ * The count of redirects left until the final destination page.
+ *
+ * @returns
+ * The location redirect if the $count > 0, otherwise an empty string.
+ */
+function system_test_multiple_redirects($count) {
+ $count = (int) $count;
+ if ($count > 0) {
+ header("location: " . url('system-test/multiple-redirects/' . --$count, array('absolute' => TRUE)), TRUE, 301);
+ exit;
+ }
+ return '';
+}
+
+function system_test_set_header() {
+ drupal_add_http_header($_GET['name'], $_GET['value']);
+ return t('The following header was set: %name: %value', array('%name' => $_GET['name'], '%value' => $_GET['value']));
+}
+
+function system_test_redirect_noscheme() {
+ header("Location: localhost/path", TRUE, 301);
+ exit;
+}
+
+function system_test_redirect_noparse() {
+ header("Location: http:///path", TRUE, 301);
+ exit;
+}
+
+function system_test_redirect_invalid_scheme() {
+ header("Location: ftp://localhost/path", TRUE, 301);
+ exit;
+}
+
+/**
+ * Implements hook_modules_installed().
+ */
+function system_test_modules_installed($modules) {
+ if (variable_get('test_verbose_module_hooks')) {
+ foreach ($modules as $module) {
+ drupal_set_message(t('hook_modules_installed fired for @module', array('@module' => $module)));
+ }
+ }
+}
+
+/**
+ * Implements hook_modules_enabled().
+ */
+function system_test_modules_enabled($modules) {
+ if (variable_get('test_verbose_module_hooks')) {
+ foreach ($modules as $module) {
+ drupal_set_message(t('hook_modules_enabled fired for @module', array('@module' => $module)));
+ }
+ }
+}
+
+/**
+ * Implements hook_modules_disabled().
+ */
+function system_test_modules_disabled($modules) {
+ if (variable_get('test_verbose_module_hooks')) {
+ foreach ($modules as $module) {
+ drupal_set_message(t('hook_modules_disabled fired for @module', array('@module' => $module)));
+ }
+ }
+}
+
+/**
+ * Implements hook_modules_uninstalled().
+ */
+function system_test_modules_uninstalled($modules) {
+ if (variable_get('test_verbose_module_hooks')) {
+ foreach ($modules as $module) {
+ drupal_set_message(t('hook_modules_uninstalled fired for @module', array('@module' => $module)));
+ }
+ }
+}
+
+/**
+ * Implements hook_boot().
+ */
+function system_test_boot() {
+ watchdog('system_test', 'hook_boot');
+}
+
+/**
+ * Implements hook_init().
+ */
+function system_test_init() {
+ // Used by FrontPageTestCase to get the results of drupal_is_front_page().
+ if (variable_get('front_page_output', 0) && drupal_is_front_page()) {
+ drupal_set_message(t('On front page.'));
+ }
+}
+
+/**
+ * Implements hook_exit().
+ */
+function system_test_exit() {
+ watchdog('system_test', 'hook_exit');
+}
+
+/**
+ * Implements hook_system_info_alter().
+ */
+function system_test_system_info_alter(&$info, $file, $type) {
+ // We need a static otherwise the last test will fail to alter common_test.
+ static $test;
+ if (($dependencies = variable_get('dependencies', array())) || $test) {
+ if ($file->name == 'module_test') {
+ $info['hidden'] = FALSE;
+ $info['dependencies'][] = array_shift($dependencies);
+ variable_set('dependencies', $dependencies);
+ $test = TRUE;
+ }
+ if ($file->name == 'common_test') {
+ $info['hidden'] = FALSE;
+ $info['version'] = '7.x-2.4-beta3';
+ }
+ }
+
+ // Make the system_dependencies_test visible by default.
+ if ($file->name == 'system_dependencies_test') {
+ $info['hidden'] = FALSE;
+ }
+ if (in_array($file->name, array(
+ 'system_incompatible_module_version_dependencies_test',
+ 'system_incompatible_core_version_dependencies_test',
+ 'system_incompatible_module_version_test',
+ 'system_incompatible_core_version_test',
+ ))) {
+ $info['hidden'] = FALSE;
+ }
+ if ($file->name == 'requirements1_test' || $file->name == 'requirements2_test') {
+ $info['hidden'] = FALSE;
+ }
+}
+
+/**
+ * Try to acquire a named lock and report the outcome.
+ */
+function system_test_lock_acquire() {
+ if (lock_acquire('system_test_lock_acquire')) {
+ lock_release('system_test_lock_acquire');
+ return 'TRUE: Lock successfully acquired in system_test_lock_acquire()';
+ }
+ else {
+ return 'FALSE: Lock not acquired in system_test_lock_acquire()';
+ }
+}
+
+/**
+ * Try to acquire a specific lock, and then exit.
+ */
+function system_test_lock_exit() {
+ if (lock_acquire('system_test_lock_exit', 900)) {
+ echo 'TRUE: Lock successfully acquired in system_test_lock_exit()';
+ // The shut-down function should release the lock.
+ exit();
+ }
+ else {
+ return 'FALSE: Lock not acquired in system_test_lock_exit()';
+ }
+}
+
+/**
+ * Implements hook_page_build().
+ */
+function system_test_page_build(&$page) {
+ $menu_item = menu_get_item();
+ $main_content_display = &drupal_static('system_main_content_added', FALSE);
+
+ if ($menu_item['path'] == 'system-test/main-content-handling') {
+ $page['footer'] = drupal_set_page_content();
+ $page['footer']['main']['#markup'] = '<div id="system-test-content">' . $page['footer']['main']['#markup'] . '</div>';
+ }
+ elseif ($menu_item['path'] == 'system-test/main-content-fallback') {
+ drupal_set_page_content();
+ $main_content_display = FALSE;
+ }
+ elseif ($menu_item['path'] == 'system-test/main-content-duplication') {
+ drupal_set_page_content();
+ }
+}
+
+/**
+ * Menu callback to test main content fallback().
+ */
+function system_test_main_content_fallback() {
+ return t('Content to test main content fallback');
+}
+
+/**
+ * A simple page callback which adds a register shutdown function.
+ */
+function system_test_page_shutdown_functions($arg1, $arg2) {
+ drupal_register_shutdown_function('_system_test_first_shutdown_function', $arg1, $arg2);
+}
+
+/**
+ * Dummy shutdown function which registers another shutdown function.
+ */
+function _system_test_first_shutdown_function($arg1, $arg2) {
+ // Output something, page has already been printed and the session stored
+ // so we can't use drupal_set_message.
+ print t('First shutdown function, arg1 : @arg1, arg2: @arg2', array('@arg1' => $arg1, '@arg2' => $arg2));
+ drupal_register_shutdown_function('_system_test_second_shutdown_function', $arg1, $arg2);
+}
+
+/**
+ * Dummy shutdown function.
+ */
+function _system_test_second_shutdown_function($arg1, $arg2) {
+ // Output something, page has already been printed and the session stored
+ // so we can't use drupal_set_message.
+ print t('Second shutdown function, arg1 : @arg1, arg2: @arg2', array('@arg1' => $arg1, '@arg2' => $arg2));
+
+ // Throw an exception with an HTML tag. Since this is called in a shutdown
+ // function, it will not bubble up to the default exception handler but will
+ // be caught in _drupal_shutdown_function() and be displayed through
+ // _drupal_render_exception_safe().
+ throw new Exception('Drupal is <blink>awesome</blink>.');
+}
+
+/**
+ * Implements hook_filetransfer_info().
+ */
+function system_test_filetransfer_info() {
+ return array(
+ 'system_test' => array(
+ 'title' => t('System Test FileTransfer'),
+ 'file' => 'system_test.module', // Should be a .inc, but for test, ok.
+ 'class' => 'SystemTestFileTransfer',
+ 'weight' => -10,
+ ),
+ );
+}
+
+/**
+ * Mock FileTransfer object to test the settings form functionality.
+ */
+class SystemTestFileTransfer {
+ public static function factory() {
+ return new SystemTestFileTransfer;
+ }
+
+ public function getSettingsForm() {
+ $form = array();
+ $form['system_test_username'] = array(
+ '#type' => 'textfield',
+ '#title' => t('System Test Username'),
+ );
+ return $form;
+ }
+}
+
+/**
+ * Page callback to initialize authorize.php during testing.
+ *
+ * @see system_authorized_init().
+ */
+function system_test_authorize_init_page($page_title) {
+ $authorize_url = $GLOBALS['base_url'] . '/authorize.php';
+ system_authorized_init('system_test_authorize_run', drupal_get_path('module', 'system_test') . '/system_test.module', array(), $page_title);
+ drupal_goto($authorize_url);
+}