summaryrefslogtreecommitdiff
path: root/tests/selenium
diff options
context:
space:
mode:
authorPierre Schmitz <pierre@archlinux.de>2011-12-03 13:29:22 +0100
committerPierre Schmitz <pierre@archlinux.de>2011-12-03 13:29:22 +0100
commitca32f08966f1b51fcb19460f0996bb0c4048e6fe (patch)
treeec04cc15b867bc21eedca904cea9af0254531a11 /tests/selenium
parenta22fbfc60f36f5f7ee10d5ae6fe347340c2ee67c (diff)
Update to MediaWiki 1.18.0
* also update ArchLinux skin to chagnes in MonoBook * Use only css to hide our menu bar when printing
Diffstat (limited to 'tests/selenium')
-rw-r--r--tests/selenium/Selenium.php190
-rw-r--r--tests/selenium/SeleniumConfig.php113
-rw-r--r--tests/selenium/SeleniumLoader.php9
-rw-r--r--tests/selenium/SeleniumServerManager.php239
-rw-r--r--tests/selenium/SeleniumTestCase.php127
-rw-r--r--tests/selenium/SeleniumTestConsoleLogger.php25
-rw-r--r--tests/selenium/SeleniumTestConstants.php24
-rw-r--r--tests/selenium/SeleniumTestHTMLLogger.php36
-rw-r--r--tests/selenium/SeleniumTestListener.php68
-rw-r--r--tests/selenium/SeleniumTestSuite.php57
-rw-r--r--tests/selenium/data/SimpleSeleniumTestDB.sql1454
-rw-r--r--tests/selenium/data/SimpleSeleniumTestImages.zipbin0 -> 21993 bytes
-rw-r--r--tests/selenium/data/Wikipedia-logo-v2-de.pngbin0 -> 21479 bytes
-rw-r--r--tests/selenium/data/mediawiki118_fresh_installation.sql1544
-rw-r--r--tests/selenium/installer/MediaWikiButtonsAvailabilityTestCase.php102
-rw-r--r--tests/selenium/installer/MediaWikiDifferentDatabaseAccountTestCase.php82
-rw-r--r--tests/selenium/installer/MediaWikiDifferntDatabasePrefixTestCase.php95
-rw-r--r--tests/selenium/installer/MediaWikiErrorsConnectToDatabasePageTestCase.php136
-rw-r--r--tests/selenium/installer/MediaWikiErrorsNamepageTestCase.php132
-rw-r--r--tests/selenium/installer/MediaWikiHelpFieldHintTestCase.php140
-rw-r--r--tests/selenium/installer/MediaWikiInstallationCommonFunction.php283
-rw-r--r--tests/selenium/installer/MediaWikiInstallationConfig.php49
-rw-r--r--tests/selenium/installer/MediaWikiInstallationMessage.php57
-rw-r--r--tests/selenium/installer/MediaWikiInstallationVariables.php77
-rw-r--r--tests/selenium/installer/MediaWikiInstallerTestSuite.php53
-rw-r--r--tests/selenium/installer/MediaWikiMySQLDataBaseTestCase.php78
-rw-r--r--tests/selenium/installer/MediaWikiMySQLiteDataBaseTestCase.php79
-rw-r--r--tests/selenium/installer/MediaWikiOnAlreadyInstalledTestCase.php71
-rw-r--r--tests/selenium/installer/MediaWikiRestartInstallationTestCase.php115
-rw-r--r--tests/selenium/installer/MediaWikiRightFrameworkLinksTestCase.php93
-rw-r--r--tests/selenium/installer/MediaWikiUpgradeExistingDatabaseTestCase.php117
-rw-r--r--tests/selenium/installer/MediaWikiUserInterfaceTestCase.php531
-rw-r--r--tests/selenium/installer/README.txt32
-rw-r--r--tests/selenium/selenium_settings.ini.sample32
-rw-r--r--tests/selenium/selenium_settings_grid.ini.sample16
-rw-r--r--tests/selenium/suites/AddContentToNewPageTestCase.php182
-rw-r--r--tests/selenium/suites/AddNewPageTestCase.php65
-rw-r--r--tests/selenium/suites/CreateAccountTestCase.php114
-rw-r--r--tests/selenium/suites/DeletePageAdminTestCase.php89
-rw-r--r--tests/selenium/suites/EmailPasswordTestCase.php81
-rw-r--r--tests/selenium/suites/MediaWikiEditorConfig.php48
-rw-r--r--tests/selenium/suites/MediaWikiEditorTestSuite.php18
-rw-r--r--tests/selenium/suites/MediaWikiExtraTestSuite.php20
-rw-r--r--tests/selenium/suites/MediawikiCoreSmokeTestCase.php69
-rw-r--r--tests/selenium/suites/MediawikiCoreSmokeTestSuite.php19
-rw-r--r--tests/selenium/suites/MovePageTestCase.php117
-rw-r--r--tests/selenium/suites/MyContributionsTestCase.php65
-rw-r--r--tests/selenium/suites/MyWatchListTestCase.php57
-rw-r--r--tests/selenium/suites/PageDeleteTestSuite.php16
-rw-r--r--tests/selenium/suites/PageSearchTestCase.php105
-rw-r--r--tests/selenium/suites/PreviewPageTestCase.php53
-rw-r--r--tests/selenium/suites/SavePageTestCase.php58
-rw-r--r--tests/selenium/suites/SimpleSeleniumConfig.php30
-rw-r--r--tests/selenium/suites/SimpleSeleniumTestCase.php39
-rw-r--r--tests/selenium/suites/SimpleSeleniumTestSuite.php26
-rw-r--r--tests/selenium/suites/UserPreferencesTestCase.php179
56 files changed, 7706 insertions, 0 deletions
diff --git a/tests/selenium/Selenium.php b/tests/selenium/Selenium.php
new file mode 100644
index 00000000..ecf7f9ec
--- /dev/null
+++ b/tests/selenium/Selenium.php
@@ -0,0 +1,190 @@
+<?php
+/**
+ * Selenium connector
+ * This is implemented as a singleton.
+ */
+
+require( 'Testing/Selenium.php' );
+
+class Selenium {
+ protected static $_instance = null;
+
+ public $isStarted = false;
+ public $tester;
+
+ protected $port;
+ protected $host;
+ protected $browser;
+ protected $browsers;
+ protected $logger;
+ protected $user;
+ protected $pass;
+ protected $timeout = 30000;
+ protected $verbose;
+ protected $junitlogfile; //processed by phpUnderControl
+ protected $runagainstgrid = false;
+
+ /**
+ * @todo this shouldn't have to be static
+ */
+ static protected $url;
+
+ /**
+ * Override parent
+ */
+ public function __construct() {
+ /**
+ * @todo this is an ugly hack to make information available to
+ * other tests. It should be fixed.
+ */
+ if ( null === self::$_instance ) {
+ self::$_instance = $this;
+ } else {
+ throw new MWException( "Already have one Selenium instance." );
+ }
+ }
+
+ public function start() {
+ $this->tester = new Testing_Selenium( $this->browser, self::$url, $this->host,
+ $this->port, $this->timeout );
+ if ( method_exists( $this->tester, "setVerbose" ) ) $this->tester->setVerbose( $this->verbose );
+
+ $this->tester->start();
+ $this->isStarted = true;
+ }
+
+ public function stop() {
+ $this->tester->stop();
+ $this->tester = null;
+ $this->isStarted = false;
+ }
+
+ public function login() {
+ if ( strlen( $this->user ) == 0 ) {
+ return;
+ }
+ $this->open( self::$url . '/index.php?title=Special:Userlogin' );
+ $this->type( 'wpName1', $this->user );
+ $this->type( 'wpPassword1', $this->pass );
+ $this->click( "//input[@id='wpLoginAttempt']" );
+ $this->waitForPageToLoad( 10000 );
+
+ // after login we redirect to the main page. So check whether the "Prefernces" top menu item exists
+ $value = $this->isElementPresent( "//li[@id='pt-preferences']" );
+
+ if ( $value != true ) {
+ throw new Testing_Selenium_Exception( "Login Failed" );
+ }
+
+ }
+
+ public static function getInstance() {
+ if ( null === self::$_instance ) {
+ throw new MWException( "No instance set yet" );
+ }
+
+ return self::$_instance;
+ }
+
+ public function loadPage( $title, $action ) {
+ $this->open( self::$url . '/index.php?title=' . $title . '&action=' . $action );
+ }
+
+ public function setLogger( $logger ) {
+ $this->logger = $logger;
+ }
+
+ public function getLogger( ) {
+ return $this->logger;
+ }
+
+ public function log( $message ) {
+ $this->logger->write( $message );
+ }
+
+ public function setUrl( $url ) {
+ self::$url = $url;
+ }
+
+ static public function getUrl() {
+ return self::$url;
+ }
+
+ public function setPort( $port ) {
+ $this->port = $port;
+ }
+
+ public function getPort() {
+ return $this->port;
+ }
+
+ public function setUser( $user ) {
+ $this->user = $user;
+ }
+
+ // Function to get username
+ public function getUser() {
+ return $this->user;
+ }
+
+
+ public function setPass( $pass ) {
+ $this->pass = $pass;
+ }
+
+ //add function to get password
+ public function getPass( ) {
+ return $this->pass;
+ }
+
+
+ public function setHost( $host ) {
+ $this->host = $host;
+ }
+
+ public function setVerbose( $verbose ) {
+ $this->verbose = $verbose;
+ }
+
+ public function setAvailableBrowsers( $availableBrowsers ) {
+ $this->browsers = $availableBrowsers;
+ }
+
+ public function setJUnitLogfile( $junitlogfile ) {
+ $this->junitlogfile = $junitlogfile;
+ }
+
+ public function getJUnitLogfile( ) {
+ return $this->junitlogfile;
+ }
+
+ public function setRunAgainstGrid( $runagainstgrid ) {
+ $this->runagainstgrid = $runagainstgrid;
+ }
+
+ public function setBrowser( $b ) {
+ if ($this->runagainstgrid) {
+ $this->browser = $b;
+ return true;
+ }
+ if ( !isset( $this->browsers[$b] ) ) {
+ throw new MWException( "Invalid Browser: $b.\n" );
+ }
+
+ $this->browser = $this->browsers[$b];
+ }
+
+ public function getAvailableBrowsers() {
+ return $this->browsers;
+ }
+
+ public function __call( $name, $args ) {
+ $t = call_user_func_array( array( $this->tester, $name ), $args );
+ return $t;
+ }
+
+ // Prevent external cloning
+ protected function __clone() { }
+ // Prevent external construction
+ // protected function __construct() {}
+}
diff --git a/tests/selenium/SeleniumConfig.php b/tests/selenium/SeleniumConfig.php
new file mode 100644
index 00000000..b8cdf1c5
--- /dev/null
+++ b/tests/selenium/SeleniumConfig.php
@@ -0,0 +1,113 @@
+<?php
+if ( !defined( 'SELENIUMTEST' ) ) {
+ die( 1 );
+}
+
+class SeleniumConfig {
+
+ /*
+ * Retreives the Selenium configuration values from an ini file.
+ * See sample config file in selenium_settings.ini.sample
+ *
+ */
+
+ public static function getSeleniumSettings ( &$seleniumSettings,
+ &$seleniumBrowsers,
+ &$seleniumTestSuites,
+ $seleniumConfigFile = null ) {
+ if ( strlen( $seleniumConfigFile ) == 0 ) {
+ global $wgSeleniumConfigFile;
+ if ( isset( $wgSeleniumConfigFile ) ) $seleniumConfigFile = $wgSeleniumConfigFile ;
+ }
+
+ if ( strlen( $seleniumConfigFile ) == 0 || !file_exists( $seleniumConfigFile ) ) {
+ throw new MWException( "Unable to read local Selenium Settings from " . $seleniumConfigFile . "\n" );
+ }
+
+ if ( !defined( 'PHP_VERSION_ID' ) ||
+ ( PHP_MAJOR_VERSION == 5 && PHP_MINOR_VERSION < 3 ) ) {
+ $configArray = self::parse_5_2_ini_file( $seleniumConfigFile );
+ } else {
+ $configArray = parse_ini_file( $seleniumConfigFile, true );
+ }
+ if ( $configArray === false ) {
+ throw new MWException( "Error parsing " . $seleniumConfigFile . "\n" );
+ }
+
+ if ( array_key_exists( 'SeleniumSettings', $configArray) ) {
+ wfSuppressWarnings();
+ //we may need to change how this is set. But for now leave it in the ini file
+ $seleniumBrowsers = $configArray['SeleniumSettings']['browsers'];
+
+ $seleniumSettings['host'] = $configArray['SeleniumSettings']['host'];
+ $seleniumSettings['port'] = $configArray['SeleniumSettings']['port'];
+ $seleniumSettings['wikiUrl'] = $configArray['SeleniumSettings']['wikiUrl'];
+ $seleniumSettings['username'] = $configArray['SeleniumSettings']['username'];
+ $seleniumSettings['userPassword'] = $configArray['SeleniumSettings']['userPassword'];
+ $seleniumSettings['testBrowser'] = $configArray['SeleniumSettings']['testBrowser'];
+ $seleniumSettings['startserver'] = $configArray['SeleniumSettings']['startserver'];
+ $seleniumSettings['stopserver'] = $configArray['SeleniumSettings']['stopserver'];
+ $seleniumSettings['seleniumserverexecpath'] = $configArray['SeleniumSettings']['seleniumserverexecpath'];
+ $seleniumSettings['jUnitLogFile'] = $configArray['SeleniumSettings']['jUnitLogFile'];
+ $seleniumSettings['runAgainstGrid'] = $configArray['SeleniumSettings']['runAgainstGrid'];
+
+ wfRestoreWarnings();
+ }
+ if ( array_key_exists( 'SeleniumTests', $configArray) ) {
+ wfSuppressWarnings();
+ $seleniumTestSuites = $configArray['SeleniumTests']['testSuite'];
+ wfRestoreWarnings();
+ }
+ return true;
+ }
+
+ /**
+ * PHP 5.2 parse_ini_file() doesn't have support for array keys.
+ * This function parses simple ini files with such syntax using just
+ * 5.2 functions.
+ */
+ private static function parse_5_2_ini_file( $ConfigFile ) {
+ $file = fopen( $ConfigFile, "rt" );
+ if ( !$file ) {
+ return false;
+ }
+ $header = '';
+
+ $configArray = array();
+
+ while ( ( $line = fgets( $file ) ) !== false ) {
+ $line = strtok( $line, "\r\n" );
+
+ if ( !$line || $line[0] == ';' ) continue;
+
+ if ( $line[0] == '[' && substr( $line, -1 ) == ']' ) {
+ $header = substr( $line, 1, -1 );
+ $configArray[$header] = array();
+ } else {
+ $configArray[$header] = array_merge_recursive( $configArray[$header], self::parse_ini_line( $line ) );
+ }
+ }
+ return $configArray;
+ }
+
+ private static function parse_ini_line( $iniLine ) {
+ static $specialValues = array( 'false' => false, 'true' => true, 'null' => null );
+ list( $key, $value ) = explode( '=', $iniLine, 2 );
+ $key = trim( $key );
+ $value = trim( $value );
+
+ if ( isset( $specialValues[$value] ) ) {
+ $value = $specialValues[$value];
+ } else {
+ $value = trim( $value, '"' );
+ }
+
+ /* Support one-level arrays */
+ if ( preg_match( '/^([A-Za-z]+)\[([A-Za-z]+)\]/', $key, $m ) ) {
+ $key = $m[1];
+ $value = array( $m[2] => $value );
+ }
+
+ return array( $key => $value );
+ }
+}
diff --git a/tests/selenium/SeleniumLoader.php b/tests/selenium/SeleniumLoader.php
new file mode 100644
index 00000000..8d5e7713
--- /dev/null
+++ b/tests/selenium/SeleniumLoader.php
@@ -0,0 +1,9 @@
+<?php
+
+class SeleniumLoader {
+ static function load() {
+ require_once( 'Testing/Selenium.php' );
+ require_once( 'PHPUnit/Framework.php' );
+ require_once( 'PHPUnit/Extensions/SeleniumTestCase.php' );
+ }
+}
diff --git a/tests/selenium/SeleniumServerManager.php b/tests/selenium/SeleniumServerManager.php
new file mode 100644
index 00000000..9e2d4aa8
--- /dev/null
+++ b/tests/selenium/SeleniumServerManager.php
@@ -0,0 +1,239 @@
+<?php
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
+ * http://citizendium.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ */
+
+class SeleniumServerManager {
+ private $SeleniumStartServer = false;
+ private $OS = '';
+ private $SeleniumServerPid = 'NaN';
+ private $SeleniumServerPort = 4444;
+ private $SeleniumServerStartTimeout = 10; // 10 secs.
+ private $SeleniumServerExecPath;
+
+ public function __construct( $startServer,
+ $serverPort,
+ $serverExecPath ) {
+ $this->OS = (string) PHP_OS;
+ if ( isset( $startServer ) )
+ $this->SeleniumStartServer = $startServer;
+ if ( isset( $serverPort ) )
+ $this->SeleniumServerPort = $serverPort;
+ if ( isset( $serverExecPath ) )
+ $this->SeleniumServerExecPath = $serverExecPath;
+ return;
+ }
+
+ // Getters for certain private attributes. No setters, since they
+ // should not change after the manager object is created.
+
+ public function getSeleniumStartServer() {
+ return $this->SeleniumStartServer;
+ }
+
+ public function getSeleniumServerPort() {
+ return $this->SeleniumServerPort;
+ }
+
+ public function getSeleniumServerPid() {
+ return $this->SeleniumServerPid;
+ }
+
+ // Changing value of SeleniumStartServer allows starting server after
+ // creation of the class instance. Only allow setting SeleniumStartServer
+ // to true, since after server is started, it is shut down by stop().
+
+ public function setSeleniumStartServer( $startServer ) {
+ if ( $startServer == true ) $this->SeleniumStartServer = true;
+ }
+
+ // return values are: 1) started - server started, 2) failed -
+ // server not started, 3) running - instructed to start server, but
+ // server already running
+
+ public function start() {
+
+ if ( !$this->SeleniumStartServer ) return 'failed';
+
+ // commented out cases are untested
+
+ switch ( $this->OS ) {
+ case "Linux":
+# case' CYGWIN_NT-5.1':
+ case 'Darwin':
+# case 'FreeBSD':
+# case 'HP-UX':
+# case 'IRIX64':
+# case 'NetBSD':
+# case 'OpenBSD':
+# case 'SunOS':
+# case 'Unix':
+ // *nix based OS
+ return $this->startServerOnUnix();
+ break;
+ case "Windows":
+ case "WIN32":
+ case "WINNT":
+ // Windows
+ return $this->startServerOnWindows();
+ break;
+ default:
+ // An untested OS
+ return 'failed';
+ break;
+ }
+ }
+
+ public function stop() {
+
+ // commented out cases are untested
+
+ switch ( $this->OS ) {
+ case "Linux":
+# case' CYGWIN_NT-5.1':
+ case 'Darwin':
+# case 'FreeBSD':
+# case 'HP-UX':
+# case 'IRIX64':
+# case 'NetBSD':
+# case 'OpenBSD':
+# case 'SunOS':
+# case 'Unix':
+ // *nix based OS
+ return $this->stopServerOnUnix();
+ break;
+ case "Windows":
+ case "WIN32":
+ case "WINNT":
+ // Windows
+ return $this->stopServerOnWindows();
+ break;
+ default:
+ // An untested OS
+ return 'failed';
+ break;
+ }
+ }
+
+ private function startServerOnUnix() {
+
+ $output = array();
+ $user = $_ENV['USER'];
+ // @todo FIXME: This should be a little more generalized :)
+ if (PHP_OS == 'Darwin') {
+ // Mac OS X's ps barfs on the 'w' param, but doesn't need it.
+ $ps = "ps -U %s";
+ } else {
+ // Good on Linux
+ $ps = "ps -U %s w";
+ }
+ $psCommand = sprintf($ps, escapeshellarg($user));
+ exec($psCommand . " | grep -i selenium-server", $output);
+
+ // Start server. If there is already a server running,
+ // return running.
+
+ if ( isset( $this->SeleniumServerExecPath ) ) {
+ $found = 0;
+ foreach ( $output as $string ) {
+ $found += preg_match(
+ '~^(.*)java(.+)-jar(.+)selenium-server~',
+ $string );
+ }
+ if ( $found == 0 ) {
+
+ // Didn't find the selenium server. Start it up.
+ // First set up comamand line suffix.
+ // NB: $! is pid of last job run in background
+ // The echo guarentees it is put into $op when
+ // the exec command is run.
+
+ $commandSuffix = ' > /dev/null 2>&1'. ' & echo $!';
+ $portText = ' -port ' . $this->SeleniumServerPort;
+ $command = "java -jar " .
+ escapeshellarg($this->SeleniumServerExecPath) .
+ $portText . $commandSuffix;
+ exec($command ,$op);
+ $pid = (int)$op[0];
+ if ( $pid != "" )
+ $this->SeleniumServerPid = $pid;
+ else {
+ $this->SeleniumServerPid = 'NaN';
+ // Server start failed.
+ return 'failed';
+ }
+ // Wait for the server to startup and listen
+ // on its port. Note: this solution kinda
+ // stinks, since it uses a wait loop - dnessett
+
+ wfSuppressWarnings();
+ for ( $cnt = 1;
+ $cnt <= $this->SeleniumServerStartTimeout;
+ $cnt++ ) {
+ $fp = fsockopen ( 'localhost',
+ $this->SeleniumServerPort,
+ $errno, $errstr, 0 );
+ if ( !$fp ) {
+ sleep( 1 );
+ continue;
+ // Server start succeeded.
+ } else {
+ fclose ( $fp );
+ return 'started';
+ }
+ }
+ wfRestoreWarnings();
+ echo ( "Starting Selenium server timed out.\n" );
+ return 'failed';
+ }
+ // server already running.
+ else return 'running';
+
+ }
+ // No Server execution path defined.
+ return 'failed';
+ }
+
+ private function startServerOnWindows() {
+ // Unimplemented.
+ return 'failed';
+ }
+
+ private function stopServerOnUnix() {
+
+ if ( !empty( $this->SeleniumServerPid ) &&
+ $this->SeleniumServerPid != 'NaN' ) {
+ exec( "kill -9 " . $this->SeleniumServerPid );
+ return 'stopped';
+ }
+ else return 'failed';
+ }
+
+ private function stopServerOnWindows() {
+ // Unimplemented.
+ return 'failed';
+
+ }
+}
diff --git a/tests/selenium/SeleniumTestCase.php b/tests/selenium/SeleniumTestCase.php
new file mode 100644
index 00000000..7976c16a
--- /dev/null
+++ b/tests/selenium/SeleniumTestCase.php
@@ -0,0 +1,127 @@
+<?php
+include("SeleniumTestConstants.php");
+
+class SeleniumTestCase extends PHPUnit_Framework_TestCase { // PHPUnit_Extensions_SeleniumTestCase
+ protected $selenium;
+
+ public function setUp() {
+ set_time_limit( 60 );
+ $this->selenium = Selenium::getInstance();
+ }
+
+ public function tearDown() {
+
+ }
+
+ public function __call( $method, $args ) {
+ return call_user_func_array( array( $this->selenium, $method ), $args );
+ }
+
+ public function assertSeleniumAttributeEquals( $attribute, $value ) {
+ $attr = $this->getAttribute( $attribute );
+ $this->assertEquals( $attr, $value );
+ }
+
+ public function assertSeleniumHTMLContains( $element, $text ) {
+ $innerHTML = $this->getText( $element );
+ // or assertContains
+ $this->assertRegExp( "/$text/", $innerHTML );
+ }
+
+
+ /**
+ * Create a test fixture page if one does not exist
+ * @param $pageName The fixture page name. If none is supplied, it uses SeleniumTestConstants::WIKI_INTERNAL_LINK
+ */
+ function createTestPageIfMissing( $pageName = null ) {
+ if ( $pageName == null ) {
+ $pageName = SeleniumTestConstants::WIKI_INTERNAL_LINK;
+ }
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, $pageName );
+ $this->click( SeleniumTestConstants::BUTTON_SEARCH );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( SeleniumTestConstants::LINK_START . $pageName );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $location = $this->getLocation() . "\n";
+ if ( strpos( $location, '&redlink=1') !== false ) {
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, "Test fixture page. No real content here" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertTrue( $this->isTextPresent( $pageName ),
+ $this->getText( SeleniumTestConstants::TEXT_PAGE_HEADING ) );
+ }
+ }
+
+ /**
+ * Create a test page using date as part of the name so that it is unique
+ * @param $pagePrefix The prefix to use for the page name. The current date will be appended to this to make it unique
+ * @param $watchThis Whether to add the page to my watchlist. Defaults to false.
+ */
+ function createNewTestPage( $pagePrefix, $watchThis = false ) {
+ $pageName = $pagePrefix . date("Ymd-His");
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, $pageName );
+ $this->click( SeleniumTestConstants::BUTTON_SEARCH );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( SeleniumTestConstants::LINK_START . $pageName );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $location = $this->getLocation() . "\n";
+ $this->assertContains( '&redlink=1', $location ).
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, "Test fixture page. No real content here" );
+ if ( $watchThis ) {
+ $this->click( "wpWatchthis" );
+ }
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertTrue( $this->isTextPresent( $pageName ),
+ $this->getText( SeleniumTestConstants::TEXT_PAGE_HEADING ) );
+ return $pageName;
+ }
+
+ public function getExistingPage(){
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->type("searchInput", "new" );
+ $this->click("searchGoButton");
+ $this->waitForPageToLoad("30000");
+ }
+
+ public function getNewPage($pageName){
+
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->type("searchInput", $pageName );
+ $this->click("searchGoButton");
+ $this->waitForPageToLoad("30000");
+ $this->click("link=".$pageName);
+ $this->waitForPageToLoad("600000");
+
+
+ }
+ // Loading the mediawiki editor
+ public function loadWikiEditor(){
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ }
+
+ // Clear the content of the mediawiki editor
+ public function clearWikiEditor(){
+ $this->type("wpTextbox1", "");
+ }
+
+ // Click on the 'Show preview' button of the mediawiki editor
+ public function clickShowPreviewBtn(){
+ $this->click("wpPreview");
+ }
+
+ // Click on the 'Save Page' button of the mediawiki editor
+ public function clickSavePageBtn(){
+ $this->click("wpSave");
+ }
+
+ // Click on the 'Edit' link
+ public function clickEditLink(){
+ $this->click("link=Edit");
+ $this->waitForPageToLoad("30000");
+ }
+
+}
diff --git a/tests/selenium/SeleniumTestConsoleLogger.php b/tests/selenium/SeleniumTestConsoleLogger.php
new file mode 100644
index 00000000..b6f5496c
--- /dev/null
+++ b/tests/selenium/SeleniumTestConsoleLogger.php
@@ -0,0 +1,25 @@
+<?php
+
+class SeleniumTestConsoleLogger {
+ public function __construct() {
+ // Prepare testsuite for immediate output
+ @ini_set( 'zlib.output_compression', 0 );
+ @ini_set( 'implicit_flush', 1 );
+ for ( $i = 0; $i < ob_get_level(); $i++ ) {
+ ob_end_flush();
+ }
+ ob_implicit_flush( 1 );
+ }
+
+ public function write( $message, $mode = false ) {
+ $out = '';
+ // if ( $mode == SeleniumTestSuite::RESULT_OK ) $out .= '<font color="green">';
+ $out .= htmlentities( $message );
+ // if ( $mode == SeleniumTestSuite::RESULT_OK ) $out .= '</font>';
+ if ( $mode != SeleniumTestSuite::CONTINUE_LINE ) {
+ $out .= "\n";
+ }
+
+ echo $out;
+ }
+}
diff --git a/tests/selenium/SeleniumTestConstants.php b/tests/selenium/SeleniumTestConstants.php
new file mode 100644
index 00000000..1defb73c
--- /dev/null
+++ b/tests/selenium/SeleniumTestConstants.php
@@ -0,0 +1,24 @@
+<?php
+
+class SeleniumTestConstants {
+ const WIKI_TEST_WAIT_TIME = 3000; // Waiting time
+
+ //commonly used links
+ const LINK_MAIN_PAGE = 'link=Main page';
+ const LINK_RANDOM_PAGE = 'link=Random article';
+ const TEXT_PAGE_HEADING = 'firstHeading';
+
+ const LINK_START = 'link=';
+ const TEXT_EDITOR = 'wpTextbox1';
+ const LINK_PREVIEW = 'wpPreview';
+ const LINK_EDIT = 'link=Edit';
+
+ const WIKI_SEARCH_PAGE = 'Hair (musical)'; // Page name to search
+ const WIKI_TEXT_SEARCH = 'TV'; // Text to search
+ const WIKI_INTERNAL_LINK = 'Wikieditor-Fixture-Page'; // Exisiting page name to add as an internal tag
+
+ const INPUT_SEARCH_BOX = 'searchInput';
+ const BUTTON_SEARCH = 'mw-searchButton';
+ const BUTTON_SAVE = 'wpSave';
+}
+
diff --git a/tests/selenium/SeleniumTestHTMLLogger.php b/tests/selenium/SeleniumTestHTMLLogger.php
new file mode 100644
index 00000000..21332cf0
--- /dev/null
+++ b/tests/selenium/SeleniumTestHTMLLogger.php
@@ -0,0 +1,36 @@
+<?php
+
+class SeleniumTestHTMLLogger {
+ public function setHeaders() {
+ global $wgOut;
+ $wgOut->addHeadItem( 'selenium', '<style type="text/css">
+ .selenium pre {
+ overflow-x: auto; /* Use horizontal scroller if needed; for Firefox 2, not needed in Firefox 3 */
+ white-space: pre-wrap; /* css-3 */
+ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ /* width: 99%; */
+ word-wrap: break-word; /* Internet Explorer 5.5+ */
+ }
+ .selenium-success { color: green }
+ </style>' );
+ }
+
+ public function write( $message, $mode = false ) {
+ global $wgOut;
+ $out = '';
+ if ( $mode == SeleniumTestSuite::RESULT_OK ) {
+ $out .= '<span class="selenium-success">';
+ }
+ $out .= htmlspecialchars( $message );
+ if ( $mode == SeleniumTestSuite::RESULT_OK ) {
+ $out .= '</span>';
+ }
+ if ( $mode != SeleniumTestSuite::CONTINUE_LINE ) {
+ $out .= '<br />';
+ }
+
+ $wgOut->addHTML( $out );
+ }
+}
diff --git a/tests/selenium/SeleniumTestListener.php b/tests/selenium/SeleniumTestListener.php
new file mode 100644
index 00000000..9436f672
--- /dev/null
+++ b/tests/selenium/SeleniumTestListener.php
@@ -0,0 +1,68 @@
+<?php
+
+class SeleniumTestListener implements PHPUnit_Framework_TestListener {
+ private $logger;
+ private $tests_ok = 0;
+ private $tests_failed = 0;
+
+ public function __construct( $loggerInstance ) {
+ $this->logger = $loggerInstance;
+ }
+
+ public function addError( PHPUnit_Framework_Test $test, Exception $e, $time ) {
+ $this->logger->write( 'Error: ' . $e->getMessage() );
+ $this->tests_failed++;
+ }
+
+ public function addFailure( PHPUnit_Framework_Test $test, PHPUnit_Framework_AssertionFailedError $e, $time )
+ {
+ $this->logger->write( 'Failed: ' . $e->getMessage() );
+ $this->tests_failed++;
+ }
+
+ public function addIncompleteTest( PHPUnit_Framework_Test $test, Exception $e, $time )
+ {
+ $this->logger->write( 'Incomplete.' );
+ $this->tests_failed++;
+ }
+
+ public function addSkippedTest( PHPUnit_Framework_Test $test, Exception $e, $time )
+ {
+ $this->logger->write( 'Skipped.' );
+ $this->tests_failed++;
+ }
+
+ public function startTest( PHPUnit_Framework_Test $test ) {
+ $this->logger->write(
+ 'Testing ' . $test->getName() . ' ... ',
+ SeleniumTestSuite::CONTINUE_LINE
+ );
+ }
+
+ public function endTest( PHPUnit_Framework_Test $test, $time ) {
+ if ( !$test->hasFailed() ) {
+ $this->logger->write( 'OK', SeleniumTestSuite::RESULT_OK );
+ $this->tests_ok++;
+ }
+ }
+
+ public function startTestSuite( PHPUnit_Framework_TestSuite $suite ) {
+ $this->logger->write( 'Testsuite ' . $suite->getName() . ' started.' );
+ $this->tests_ok = 0;
+ $this->tests_failed = 0;
+ }
+
+ public function endTestSuite( PHPUnit_Framework_TestSuite $suite ) {
+ $this->logger->write('Testsuite ' . $suite->getName() . ' ended.' );
+ if ( $this->tests_ok > 0 || $this->tests_failed > 0 ) {
+ $this->logger->write( ' OK: ' . $this->tests_ok . ' Failed: ' . $this->tests_failed );
+ }
+ $this->tests_ok = 0;
+ $this->tests_failed = 0;
+ }
+
+ public function statusMessage( $message ) {
+ $this->logger->write( $message );
+ }
+}
+
diff --git a/tests/selenium/SeleniumTestSuite.php b/tests/selenium/SeleniumTestSuite.php
new file mode 100644
index 00000000..81a630f8
--- /dev/null
+++ b/tests/selenium/SeleniumTestSuite.php
@@ -0,0 +1,57 @@
+<?php
+
+abstract class SeleniumTestSuite extends PHPUnit_Framework_TestSuite {
+ private $selenium;
+ private $isSetUp = false;
+ private $loginBeforeTests = true;
+ private $triggerClientTestResources = true;
+
+ // Do not add line break after test output
+ const CONTINUE_LINE = 1;
+ const RESULT_OK = 2;
+ const RESULT_ERROR = 3;
+
+ public abstract function addTests();
+
+ public function setUp() {
+ // Hack because because PHPUnit version 3.0.6 which is on prototype does not
+ // run setUp as part of TestSuite::run
+ if ( $this->isSetUp ) {
+ return;
+ }
+ $this->isSetUp = true;
+ $this->selenium = Selenium::getInstance();
+ $this->selenium->start();
+ if ( $this->triggerClientTestResources ) {
+ $this->selenium->open( $this->selenium->getUrl() . '/index.php?setupTestSuite=' . $this->getName() );
+ //wait a little longer for the db operation
+ $this->selenium->waitForPageToLoad( 6000 );
+ }
+ if ( $this->loginBeforeTests ) {
+ $this->login();
+ }
+ }
+
+ public function tearDown() {
+ if ( $this->triggerClientTestResources ) {
+ $this->selenium->open( $this->selenium->getUrl() . '/index.php?clearTestSuite=' . $this->getName() );
+ }
+ $this->selenium->stop();
+ }
+
+ public function login() {
+ $this->selenium->login();
+ }
+
+ public function loadPage( $title, $action ) {
+ $this->selenium->loadPage( $title, $action );
+ }
+
+ protected function setLoginBeforeTests( $loginBeforeTests = true ) {
+ $this->loginBeforeTests = $loginBeforeTests;
+ }
+
+ protected function setTriggerClientTestResources( $triggerClientTestResources = true ) {
+ $this->triggerClientTestResources = $triggerClientTestResources;
+ }
+}
diff --git a/tests/selenium/data/SimpleSeleniumTestDB.sql b/tests/selenium/data/SimpleSeleniumTestDB.sql
new file mode 100644
index 00000000..7944c45f
--- /dev/null
+++ b/tests/selenium/data/SimpleSeleniumTestDB.sql
@@ -0,0 +1,1454 @@
+-- MySQL dump 10.13 Distrib 5.1.41, for debian-linux-gnu (x86_64)
+--
+-- Host: localhost Database: test_wiki
+-- ------------------------------------------------------
+-- Server version 5.1.41-3ubuntu12.7
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `mw_archive`
+--
+
+DROP TABLE IF EXISTS `mw_archive`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_archive` (
+ `ar_namespace` int(11) NOT NULL DEFAULT '0',
+ `ar_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `ar_text` mediumblob NOT NULL,
+ `ar_comment` tinyblob NOT NULL,
+ `ar_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `ar_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `ar_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `ar_minor_edit` tinyint(4) NOT NULL DEFAULT '0',
+ `ar_flags` tinyblob NOT NULL,
+ `ar_rev_id` int(10) unsigned DEFAULT NULL,
+ `ar_text_id` int(10) unsigned DEFAULT NULL,
+ `ar_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `ar_len` int(10) unsigned DEFAULT NULL,
+ `ar_page_id` int(10) unsigned DEFAULT NULL,
+ `ar_parent_id` int(10) unsigned DEFAULT NULL,
+ KEY `name_title_timestamp` (`ar_namespace`,`ar_title`,`ar_timestamp`),
+ KEY `usertext_timestamp` (`ar_user_text`,`ar_timestamp`),
+ KEY `ar_revid` (`ar_rev_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_archive`
+--
+
+LOCK TABLES `mw_archive` WRITE;
+/*!40000 ALTER TABLE `mw_archive` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_archive` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_category`
+--
+
+DROP TABLE IF EXISTS `mw_category`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_category` (
+ `cat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cat_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `cat_pages` int(11) NOT NULL DEFAULT '0',
+ `cat_subcats` int(11) NOT NULL DEFAULT '0',
+ `cat_files` int(11) NOT NULL DEFAULT '0',
+ `cat_hidden` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`cat_id`),
+ UNIQUE KEY `cat_title` (`cat_title`),
+ KEY `cat_pages` (`cat_pages`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_category`
+--
+
+LOCK TABLES `mw_category` WRITE;
+/*!40000 ALTER TABLE `mw_category` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_category` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_categorylinks`
+--
+
+DROP TABLE IF EXISTS `mw_categorylinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_categorylinks` (
+ `cl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `cl_to` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `cl_sortkey` varbinary(230) NOT NULL DEFAULT '',
+ `cl_sortkey_prefix` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `cl_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `cl_collation` varbinary(32) NOT NULL DEFAULT '',
+ `cl_type` enum('page','subcat','file') NOT NULL DEFAULT 'page',
+ UNIQUE KEY `cl_from` (`cl_from`,`cl_to`),
+ KEY `cl_sortkey` (`cl_to`,`cl_type`,`cl_sortkey`,`cl_from`),
+ KEY `cl_timestamp` (`cl_to`,`cl_timestamp`),
+ KEY `cl_collation` (`cl_collation`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_categorylinks`
+--
+
+LOCK TABLES `mw_categorylinks` WRITE;
+/*!40000 ALTER TABLE `mw_categorylinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_categorylinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_change_tag`
+--
+
+DROP TABLE IF EXISTS `mw_change_tag`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_change_tag` (
+ `ct_rc_id` int(11) DEFAULT NULL,
+ `ct_log_id` int(11) DEFAULT NULL,
+ `ct_rev_id` int(11) DEFAULT NULL,
+ `ct_tag` varchar(255) NOT NULL,
+ `ct_params` blob,
+ UNIQUE KEY `change_tag_rc_tag` (`ct_rc_id`,`ct_tag`),
+ UNIQUE KEY `change_tag_log_tag` (`ct_log_id`,`ct_tag`),
+ UNIQUE KEY `change_tag_rev_tag` (`ct_rev_id`,`ct_tag`),
+ KEY `change_tag_tag_id` (`ct_tag`,`ct_rc_id`,`ct_rev_id`,`ct_log_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_change_tag`
+--
+
+LOCK TABLES `mw_change_tag` WRITE;
+/*!40000 ALTER TABLE `mw_change_tag` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_change_tag` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_external_user`
+--
+
+DROP TABLE IF EXISTS `mw_external_user`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_external_user` (
+ `eu_local_id` int(10) unsigned NOT NULL,
+ `eu_external_id` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ PRIMARY KEY (`eu_local_id`),
+ UNIQUE KEY `eu_external_id` (`eu_external_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_external_user`
+--
+
+LOCK TABLES `mw_external_user` WRITE;
+/*!40000 ALTER TABLE `mw_external_user` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_external_user` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_externallinks`
+--
+
+DROP TABLE IF EXISTS `mw_externallinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_externallinks` (
+ `el_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `el_to` blob NOT NULL,
+ `el_index` blob NOT NULL,
+ KEY `el_from` (`el_from`,`el_to`(40)),
+ KEY `el_to` (`el_to`(60),`el_from`),
+ KEY `el_index` (`el_index`(60))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_externallinks`
+--
+
+LOCK TABLES `mw_externallinks` WRITE;
+/*!40000 ALTER TABLE `mw_externallinks` DISABLE KEYS */;
+INSERT INTO `mw_externallinks` VALUES (1,'http://meta.wikimedia.org/wiki/Help:Contents','http://org.wikimedia.meta./wiki/Help:Contents'),(1,'http://www.mediawiki.org/wiki/Manual:Configuration_settings','http://org.mediawiki.www./wiki/Manual:Configuration_settings'),(1,'http://www.mediawiki.org/wiki/Manual:FAQ','http://org.mediawiki.www./wiki/Manual:FAQ'),(1,'https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce','https://org.wikimedia.lists./mailman/listinfo/mediawiki-announce');
+/*!40000 ALTER TABLE `mw_externallinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_filearchive`
+--
+
+DROP TABLE IF EXISTS `mw_filearchive`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_filearchive` (
+ `fa_id` int(11) NOT NULL AUTO_INCREMENT,
+ `fa_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `fa_archive_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT '',
+ `fa_storage_group` varbinary(16) DEFAULT NULL,
+ `fa_storage_key` varbinary(64) DEFAULT '',
+ `fa_deleted_user` int(11) DEFAULT NULL,
+ `fa_deleted_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `fa_deleted_reason` text,
+ `fa_size` int(10) unsigned DEFAULT '0',
+ `fa_width` int(11) DEFAULT '0',
+ `fa_height` int(11) DEFAULT '0',
+ `fa_metadata` mediumblob,
+ `fa_bits` int(11) DEFAULT '0',
+ `fa_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
+ `fa_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') DEFAULT 'unknown',
+ `fa_minor_mime` varbinary(100) DEFAULT 'unknown',
+ `fa_description` tinyblob,
+ `fa_user` int(10) unsigned DEFAULT '0',
+ `fa_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
+ `fa_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `fa_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`fa_id`),
+ KEY `fa_name` (`fa_name`,`fa_timestamp`),
+ KEY `fa_storage_group` (`fa_storage_group`,`fa_storage_key`),
+ KEY `fa_deleted_timestamp` (`fa_deleted_timestamp`),
+ KEY `fa_user_timestamp` (`fa_user_text`,`fa_timestamp`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_filearchive`
+--
+
+LOCK TABLES `mw_filearchive` WRITE;
+/*!40000 ALTER TABLE `mw_filearchive` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_filearchive` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_hitcounter`
+--
+
+DROP TABLE IF EXISTS `mw_hitcounter`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_hitcounter` (
+ `hc_id` int(10) unsigned NOT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 MAX_ROWS=25000;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_hitcounter`
+--
+
+LOCK TABLES `mw_hitcounter` WRITE;
+/*!40000 ALTER TABLE `mw_hitcounter` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_hitcounter` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_image`
+--
+
+DROP TABLE IF EXISTS `mw_image`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_image` (
+ `img_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `img_size` int(10) unsigned NOT NULL DEFAULT '0',
+ `img_width` int(11) NOT NULL DEFAULT '0',
+ `img_height` int(11) NOT NULL DEFAULT '0',
+ `img_metadata` mediumblob NOT NULL,
+ `img_bits` int(11) NOT NULL DEFAULT '0',
+ `img_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
+ `img_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') NOT NULL DEFAULT 'unknown',
+ `img_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown',
+ `img_description` tinyblob NOT NULL,
+ `img_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `img_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `img_timestamp` varbinary(14) NOT NULL DEFAULT '',
+ `img_sha1` varbinary(32) NOT NULL DEFAULT '',
+ PRIMARY KEY (`img_name`),
+ KEY `img_usertext_timestamp` (`img_user_text`,`img_timestamp`),
+ KEY `img_size` (`img_size`),
+ KEY `img_timestamp` (`img_timestamp`),
+ KEY `img_sha1` (`img_sha1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_image`
+--
+
+LOCK TABLES `mw_image` WRITE;
+/*!40000 ALTER TABLE `mw_image` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_image` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_imagelinks`
+--
+
+DROP TABLE IF EXISTS `mw_imagelinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_imagelinks` (
+ `il_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `il_to` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `il_from` (`il_from`,`il_to`),
+ UNIQUE KEY `il_to` (`il_to`,`il_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_imagelinks`
+--
+
+LOCK TABLES `mw_imagelinks` WRITE;
+/*!40000 ALTER TABLE `mw_imagelinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_imagelinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_interwiki`
+--
+
+DROP TABLE IF EXISTS `mw_interwiki`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_interwiki` (
+ `iw_prefix` varchar(32) NOT NULL,
+ `iw_url` blob NOT NULL,
+ `iw_api` blob NOT NULL,
+ `iw_wikiid` varchar(64) NOT NULL,
+ `iw_local` tinyint(1) NOT NULL,
+ `iw_trans` tinyint(4) NOT NULL DEFAULT '0',
+ UNIQUE KEY `iw_prefix` (`iw_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_interwiki`
+--
+
+LOCK TABLES `mw_interwiki` WRITE;
+/*!40000 ALTER TABLE `mw_interwiki` DISABLE KEYS */;
+INSERT INTO `mw_interwiki` VALUES ('acronym','http://www.acronymfinder.com/af-query.asp?String=exact&Acronym=$1','','',0,0),('advogato','http://www.advogato.org/$1','','',0,0),('annotationwiki','http://www.seedwiki.com/page.cfm?wikiid=368&doc=$1','','',0,0),('arxiv','http://www.arxiv.org/abs/$1','','',0,0),('c2find','http://c2.com/cgi/wiki?FindPage&value=$1','','',0,0),('cache','http://www.google.com/search?q=cache:$1','','',0,0),('commons','http://commons.wikimedia.org/wiki/$1','','',0,0),('corpknowpedia','http://corpknowpedia.org/wiki/index.php/$1','','',0,0),('dictionary','http://www.dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1','','',0,0),('disinfopedia','http://www.disinfopedia.org/wiki.phtml?title=$1','','',0,0),('docbook','http://wiki.docbook.org/topic/$1','','',0,0),('doi','http://dx.doi.org/$1','','',0,0),('drumcorpswiki','http://www.drumcorpswiki.com/index.php/$1','','',0,0),('dwjwiki','http://www.suberic.net/cgi-bin/dwj/wiki.cgi?$1','','',0,0),('elibre','http://enciclopedia.us.es/index.php/$1','','',0,0),('emacswiki','http://www.emacswiki.org/cgi-bin/wiki.pl?$1','','',0,0),('foldoc','http://foldoc.org/?$1','','',0,0),('foxwiki','http://fox.wikis.com/wc.dll?Wiki~$1','','',0,0),('freebsdman','http://www.FreeBSD.org/cgi/man.cgi?apropos=1&query=$1','','',0,0),('gej','http://www.esperanto.de/cgi-bin/aktivikio/wiki.pl?$1','','',0,0),('gentoo-wiki','http://gentoo-wiki.com/$1','','',0,0),('google','http://www.google.com/search?q=$1','','',0,0),('googlegroups','http://groups.google.com/groups?q=$1','','',0,0),('hammondwiki','http://www.dairiki.org/HammondWiki/$1','','',0,0),('hewikisource','http://he.wikisource.org/wiki/$1','','',1,0),('hrwiki','http://www.hrwiki.org/index.php/$1','','',0,0),('imdb','http://us.imdb.com/Title?$1','','',0,0),('jargonfile','http://sunir.org/apps/meta.pl?wiki=JargonFile&redirect=$1','','',0,0),('jspwiki','http://www.jspwiki.org/wiki/$1','','',0,0),('keiki','http://kei.ki/en/$1','','',0,0),('kmwiki','http://kmwiki.wikispaces.com/$1','','',0,0),('linuxwiki','http://linuxwiki.de/$1','','',0,0),('lojban','http://www.lojban.org/tiki/tiki-index.php?page=$1','','',0,0),('lqwiki','http://wiki.linuxquestions.org/wiki/$1','','',0,0),('lugkr','http://lug-kr.sourceforge.net/cgi-bin/lugwiki.pl?$1','','',0,0),('mathsongswiki','http://SeedWiki.com/page.cfm?wikiid=237&doc=$1','','',0,0),('meatball','http://www.usemod.com/cgi-bin/mb.pl?$1','','',0,0),('mediawikiwiki','http://www.mediawiki.org/wiki/$1','','',0,0),('mediazilla','https://bugzilla.wikimedia.org/$1','','',1,0),('memoryalpha','http://www.memory-alpha.org/en/index.php/$1','','',0,0),('metawiki','http://sunir.org/apps/meta.pl?$1','','',0,0),('metawikipedia','http://meta.wikimedia.org/wiki/$1','','',0,0),('moinmoin','http://purl.net/wiki/moin/$1','','',0,0),('mozillawiki','http://wiki.mozilla.org/index.php/$1','','',0,0),('mw','http://www.mediawiki.org/wiki/$1','','',0,0),('oeis','http://www.research.att.com/cgi-bin/access.cgi/as/njas/sequences/eisA.cgi?Anum=$1','','',0,0),('openfacts','http://openfacts.berlios.de/index.phtml?title=$1','','',0,0),('openwiki','http://openwiki.com/?$1','','',0,0),('pmeg','http://www.bertilow.com/pmeg/$1.php','','',0,0),('ppr','http://c2.com/cgi/wiki?$1','','',0,0),('pythoninfo','http://wiki.python.org/moin/$1','','',0,0),('rfc','http://www.rfc-editor.org/rfc/rfc$1.txt','','',0,0),('s23wiki','http://is-root.de/wiki/index.php/$1','','',0,0),('seattlewiki','http://seattle.wikia.com/wiki/$1','','',0,0),('seattlewireless','http://seattlewireless.net/?$1','','',0,0),('senseislibrary','http://senseis.xmp.net/?$1','','',0,0),('sourceforge','http://sourceforge.net/$1','','',0,0),('squeak','http://wiki.squeak.org/squeak/$1','','',0,0),('susning','http://www.susning.nu/$1','','',0,0),('svgwiki','http://wiki.svg.org/$1','','',0,0),('tavi','http://tavi.sourceforge.net/$1','','',0,0),('tejo','http://www.tejo.org/vikio/$1','','',0,0),('theopedia','http://www.theopedia.com/$1','','',0,0),('tmbw','http://www.tmbw.net/wiki/$1','','',0,0),('tmnet','http://www.technomanifestos.net/?$1','','',0,0),('tmwiki','http://www.EasyTopicMaps.com/?page=$1','','',0,0),('twiki','http://twiki.org/cgi-bin/view/$1','','',0,0),('uea','http://www.tejo.org/uea/$1','','',0,0),('unreal','http://wiki.beyondunreal.com/wiki/$1','','',0,0),('usemod','http://www.usemod.com/cgi-bin/wiki.pl?$1','','',0,0),('vinismo','http://vinismo.com/en/$1','','',0,0),('webseitzwiki','http://webseitz.fluxent.com/wiki/$1','','',0,0),('why','http://clublet.com/c/c/why?$1','','',0,0),('wiki','http://c2.com/cgi/wiki?$1','','',0,0),('wikia','http://www.wikia.com/wiki/$1','','',0,0),('wikibooks','http://en.wikibooks.org/wiki/$1','','',1,0),('wikicities','http://www.wikia.com/wiki/$1','','',0,0),('wikif1','http://www.wikif1.org/$1','','',0,0),('wikihow','http://www.wikihow.com/$1','','',0,0),('wikimedia','http://wikimediafoundation.org/wiki/$1','','',0,0),('wikinews','http://en.wikinews.org/wiki/$1','','',1,0),('wikinfo','http://www.wikinfo.org/index.php/$1','','',0,0),('wikipedia','http://en.wikipedia.org/wiki/$1','','',1,0),('wikiquote','http://en.wikiquote.org/wiki/$1','','',1,0),('wikisource','http://wikisource.org/wiki/$1','','',1,0),('wikispecies','http://species.wikimedia.org/wiki/$1','','',1,0),('wikitravel','http://wikitravel.org/en/$1','','',0,0),('wikiversity','http://en.wikiversity.org/wiki/$1','','',1,0),('wikt','http://en.wiktionary.org/wiki/$1','','',1,0),('wiktionary','http://en.wiktionary.org/wiki/$1','','',1,0),('wlug','http://www.wlug.org.nz/$1','','',0,0),('zwiki','http://zwiki.org/$1','','',0,0),('zzz wiki','http://wiki.zzz.ee/index.php/$1','','',0,0);
+/*!40000 ALTER TABLE `mw_interwiki` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_ipblocks`
+--
+
+DROP TABLE IF EXISTS `mw_ipblocks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_ipblocks` (
+ `ipb_id` int(11) NOT NULL AUTO_INCREMENT,
+ `ipb_address` tinyblob NOT NULL,
+ `ipb_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `ipb_by` int(10) unsigned NOT NULL DEFAULT '0',
+ `ipb_by_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `ipb_reason` tinyblob NOT NULL,
+ `ipb_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `ipb_auto` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_anon_only` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_create_account` tinyint(1) NOT NULL DEFAULT '1',
+ `ipb_enable_autoblock` tinyint(1) NOT NULL DEFAULT '1',
+ `ipb_expiry` varbinary(14) NOT NULL DEFAULT '',
+ `ipb_range_start` tinyblob NOT NULL,
+ `ipb_range_end` tinyblob NOT NULL,
+ `ipb_deleted` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_block_email` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_allow_usertalk` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ipb_id`),
+ UNIQUE KEY `ipb_address` (`ipb_address`(255),`ipb_user`,`ipb_auto`,`ipb_anon_only`),
+ KEY `ipb_user` (`ipb_user`),
+ KEY `ipb_range` (`ipb_range_start`(8),`ipb_range_end`(8)),
+ KEY `ipb_timestamp` (`ipb_timestamp`),
+ KEY `ipb_expiry` (`ipb_expiry`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_ipblocks`
+--
+
+LOCK TABLES `mw_ipblocks` WRITE;
+/*!40000 ALTER TABLE `mw_ipblocks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_ipblocks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_iwlinks`
+--
+
+DROP TABLE IF EXISTS `mw_iwlinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_iwlinks` (
+ `iwl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `iwl_prefix` varbinary(20) NOT NULL DEFAULT '',
+ `iwl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `iwl_from` (`iwl_from`,`iwl_prefix`,`iwl_title`),
+ UNIQUE KEY `iwl_prefix_title_from` (`iwl_prefix`,`iwl_title`,`iwl_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_iwlinks`
+--
+
+LOCK TABLES `mw_iwlinks` WRITE;
+/*!40000 ALTER TABLE `mw_iwlinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_iwlinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_job`
+--
+
+DROP TABLE IF EXISTS `mw_job`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_job` (
+ `job_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `job_cmd` varbinary(60) NOT NULL DEFAULT '',
+ `job_namespace` int(11) NOT NULL,
+ `job_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `job_params` blob NOT NULL,
+ PRIMARY KEY (`job_id`),
+ KEY `job_cmd` (`job_cmd`,`job_namespace`,`job_title`,`job_params`(128))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_job`
+--
+
+LOCK TABLES `mw_job` WRITE;
+/*!40000 ALTER TABLE `mw_job` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_job` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_l10n_cache`
+--
+
+DROP TABLE IF EXISTS `mw_l10n_cache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_l10n_cache` (
+ `lc_lang` varbinary(32) NOT NULL,
+ `lc_key` varchar(255) NOT NULL,
+ `lc_value` mediumblob NOT NULL,
+ KEY `lc_lang_key` (`lc_lang`,`lc_key`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_l10n_cache`
+--
+
+LOCK TABLES `mw_l10n_cache` WRITE;
+/*!40000 ALTER TABLE `mw_l10n_cache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_l10n_cache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_langlinks`
+--
+
+DROP TABLE IF EXISTS `mw_langlinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_langlinks` (
+ `ll_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `ll_lang` varbinary(20) NOT NULL DEFAULT '',
+ `ll_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `ll_from` (`ll_from`,`ll_lang`),
+ KEY `ll_lang` (`ll_lang`,`ll_title`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_langlinks`
+--
+
+LOCK TABLES `mw_langlinks` WRITE;
+/*!40000 ALTER TABLE `mw_langlinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_langlinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_log_search`
+--
+
+DROP TABLE IF EXISTS `mw_log_search`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_log_search` (
+ `ls_field` varbinary(32) NOT NULL,
+ `ls_value` varchar(255) NOT NULL,
+ `ls_log_id` int(10) unsigned NOT NULL DEFAULT '0',
+ UNIQUE KEY `ls_field_val` (`ls_field`,`ls_value`,`ls_log_id`),
+ KEY `ls_log_id` (`ls_log_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_log_search`
+--
+
+LOCK TABLES `mw_log_search` WRITE;
+/*!40000 ALTER TABLE `mw_log_search` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_log_search` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_logging`
+--
+
+DROP TABLE IF EXISTS `mw_logging`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_logging` (
+ `log_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `log_type` varbinary(32) NOT NULL DEFAULT '',
+ `log_action` varbinary(32) NOT NULL DEFAULT '',
+ `log_timestamp` binary(14) NOT NULL DEFAULT '19700101000000',
+ `log_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `log_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `log_namespace` int(11) NOT NULL DEFAULT '0',
+ `log_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `log_page` int(10) unsigned DEFAULT NULL,
+ `log_comment` varchar(255) NOT NULL DEFAULT '',
+ `log_params` blob NOT NULL,
+ `log_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`log_id`),
+ KEY `type_time` (`log_type`,`log_timestamp`),
+ KEY `user_time` (`log_user`,`log_timestamp`),
+ KEY `page_time` (`log_namespace`,`log_title`,`log_timestamp`),
+ KEY `times` (`log_timestamp`),
+ KEY `log_user_type_time` (`log_user`,`log_type`,`log_timestamp`),
+ KEY `log_page_id_time` (`log_page`,`log_timestamp`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_logging`
+--
+
+LOCK TABLES `mw_logging` WRITE;
+/*!40000 ALTER TABLE `mw_logging` DISABLE KEYS */;
+INSERT INTO `mw_logging` VALUES (1,'patrol','patrol','20110110173131',1,'WikiSysop',0,'TestResources',2,'','2\n0\n1',0);
+/*!40000 ALTER TABLE `mw_logging` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_math`
+--
+
+DROP TABLE IF EXISTS `mw_math`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_math` (
+ `math_inputhash` varbinary(16) NOT NULL,
+ `math_outputhash` varbinary(16) NOT NULL,
+ `math_html_conservativeness` tinyint(4) NOT NULL,
+ `math_html` text,
+ `math_mathml` text,
+ UNIQUE KEY `math_inputhash` (`math_inputhash`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_math`
+--
+
+LOCK TABLES `mw_math` WRITE;
+/*!40000 ALTER TABLE `mw_math` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_math` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_module_deps`
+--
+
+DROP TABLE IF EXISTS `mw_module_deps`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_module_deps` (
+ `md_module` varbinary(255) NOT NULL,
+ `md_skin` varbinary(32) NOT NULL,
+ `md_deps` mediumblob NOT NULL,
+ UNIQUE KEY `md_module_skin` (`md_module`,`md_skin`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_module_deps`
+--
+
+LOCK TABLES `mw_module_deps` WRITE;
+/*!40000 ALTER TABLE `mw_module_deps` DISABLE KEYS */;
+INSERT INTO `mw_module_deps` VALUES ('ext.vector.collapsibleNav','vector','[\"\\/home\\/pdhanda\\/deployment\\/extensions\\/Vector\\/modules\\/.\\/images\\/portal-break.png\",\"\\/home\\/pdhanda\\/deployment\\/extensions\\/Vector\\/modules\\/.\\/images\\/open.png\",\"\\/home\\/pdhanda\\/deployment\\/extensions\\/Vector\\/modules\\/.\\/images\\/closed-ltr.png\"]'),('jquery.wikiEditor','vector','[\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/loading.gif\"]'),('jquery.wikiEditor.toolbar','vector','{\"0\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/base.png\",\"1\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/loading.gif\",\"2\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/button-sprite.png\",\"3\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/arrow-right.png\",\"4\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/arrow-left.png\",\"5\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/arrow-down.png\",\"7\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/loading-small.gif\"}'),('mediawiki.legacy.shared','vector','[\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/feed-icon.png\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/remove.png\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/add.png\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/ajax-loader.gif\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/spinner.gif\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/help-question.gif\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/help-question-hover.gif\"]'),('skins.vector','vector','{\"0\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/page-base.png\",\"1\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/border.png\",\"2\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/page-fade.png\",\"4\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/tab-break.png\",\"5\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/tab-normal-fade.png\",\"6\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/tab-current-fade.png\",\"8\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/arrow-down-icon.png\",\"11\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/search-fade.png\",\"12\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/portal-break.png\",\"14\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/preferences-break.png\",\"16\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/preferences-fade.png\",\"17\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/preferences-base.png\",\"18\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/bullet-icon.png\",\"19\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/external-link-ltr-icon.png\",\"20\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/lock-icon.png\",\"21\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/mail-icon.png\",\"22\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/news-icon.png\",\"23\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/file-icon.png\",\"24\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/talk-icon.png\",\"25\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/audio-icon.png\",\"26\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/video-icon.png\",\"27\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/document-icon.png\",\"28\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/user-icon.png\",\"29\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/watch-icons.png\",\"30\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/watch-icon-loading.gif\"}');
+/*!40000 ALTER TABLE `mw_module_deps` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_msg_resource`
+--
+
+DROP TABLE IF EXISTS `mw_msg_resource`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_msg_resource` (
+ `mr_resource` varbinary(255) NOT NULL,
+ `mr_lang` varbinary(32) NOT NULL,
+ `mr_blob` mediumblob NOT NULL,
+ `mr_timestamp` binary(14) NOT NULL,
+ UNIQUE KEY `mr_resource_lang` (`mr_resource`,`mr_lang`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_msg_resource`
+--
+
+LOCK TABLES `mw_msg_resource` WRITE;
+/*!40000 ALTER TABLE `mw_msg_resource` DISABLE KEYS */;
+INSERT INTO `mw_msg_resource` VALUES ('ext.vector.collapsibleNav','en','{\"vector-collapsiblenav-more\":\"More languages\"}','20110108005000'),('ext.vector.collapsibleTabs','en','{}','20110108005000'),('ext.vector.simpleSearch','en','{\"vector-simplesearch-search\":\"Search\",\"vector-simplesearch-containing\":\"containing...\"}','20110108005000'),('ext.wikiEditor','en','{}','20110110172914'),('ext.wikiEditor.toolbar','en','{\"wikieditor-toolbar-loading\":\"Loading...\",\"wikieditor-toolbar-tool-bold\":\"Bold\",\"wikieditor-toolbar-tool-bold-example\":\"Bold text\",\"wikieditor-toolbar-tool-italic\":\"Italic\",\"wikieditor-toolbar-tool-italic-example\":\"Italic text\",\"wikieditor-toolbar-tool-ilink\":\"Internal link\",\"wikieditor-toolbar-tool-ilink-example\":\"Link title\",\"wikieditor-toolbar-tool-xlink\":\"External link (remember http:\\/\\/ prefix)\",\"wikieditor-toolbar-tool-xlink-example\":\"http:\\/\\/www.example.com link title\",\"wikieditor-toolbar-tool-link\":\"Link\",\"wikieditor-toolbar-tool-link-title\":\"Insert link\",\"wikieditor-toolbar-tool-link-int\":\"To a wiki page\",\"wikieditor-toolbar-tool-link-int-target\":\"Target page or URL:\",\"wikieditor-toolbar-tool-link-int-target-tooltip\":\"Page title or URL\",\"wikieditor-toolbar-tool-link-int-text\":\"Text to display:\",\"wikieditor-toolbar-tool-link-int-text-tooltip\":\"Text to be displayed\",\"wikieditor-toolbar-tool-link-ext\":\"To an external web page\",\"wikieditor-toolbar-tool-link-ext-target\":\"Link URL:\",\"wikieditor-toolbar-tool-link-ext-text\":\"Link text:\",\"wikieditor-toolbar-tool-link-insert\":\"Insert link\",\"wikieditor-toolbar-tool-link-cancel\":\"Cancel\",\"wikieditor-toolbar-tool-link-int-target-status-exists\":\"Page exists\",\"wikieditor-toolbar-tool-link-int-target-status-notexists\":\"Page does not exist\",\"wikieditor-toolbar-tool-link-int-target-status-invalid\":\"Invalid title\",\"wikieditor-toolbar-tool-link-int-target-status-external\":\"External link\",\"wikieditor-toolbar-tool-link-int-target-status-loading\":\"Checking page existence...\",\"wikieditor-toolbar-tool-link-int-invalid\":\"The title you specified is invalid.\",\"wikieditor-toolbar-tool-link-lookslikeinternal\":\"The URL you specified looks like it was intended as a link to another wiki page.\\nDo you want to make it an internal link?\",\"wikieditor-toolbar-tool-link-lookslikeinternal-int\":\"Internal link\",\"wikieditor-toolbar-tool-link-lookslikeinternal-ext\":\"External link\",\"wikieditor-toolbar-tool-link-empty\":\"You did not enter anything to link to.\",\"wikieditor-toolbar-tool-file\":\"Embedded file\",\"wikieditor-toolbar-tool-file-pre\":\"$1{{ns:file}}:\",\"wikieditor-toolbar-tool-file-example\":\"Example.jpg\",\"wikieditor-toolbar-tool-reference\":\"Reference\",\"wikieditor-toolbar-tool-reference-title\":\"Insert reference\",\"wikieditor-toolbar-tool-reference-cancel\":\"Cancel\",\"wikieditor-toolbar-tool-reference-text\":\"Reference text\",\"wikieditor-toolbar-tool-reference-insert\":\"Insert\",\"wikieditor-toolbar-tool-reference-example\":\"Insert footnote text here\",\"wikieditor-toolbar-tool-signature\":\"Signature and timestamp\",\"wikieditor-toolbar-section-advanced\":\"Advanced\",\"wikieditor-toolbar-tool-heading\":\"Heading\",\"wikieditor-toolbar-tool-heading-1\":\"Level 1\",\"wikieditor-toolbar-tool-heading-2\":\"Level 2\",\"wikieditor-toolbar-tool-heading-3\":\"Level 3\",\"wikieditor-toolbar-tool-heading-4\":\"Level 4\",\"wikieditor-toolbar-tool-heading-5\":\"Level 5\",\"wikieditor-toolbar-tool-heading-example\":\"Heading text\",\"wikieditor-toolbar-group-format\":\"Format\",\"wikieditor-toolbar-tool-ulist\":\"Bulleted list\",\"wikieditor-toolbar-tool-ulist-example\":\"Bulleted list item\",\"wikieditor-toolbar-tool-olist\":\"Numbered list\",\"wikieditor-toolbar-tool-olist-example\":\"Numbered list item\",\"wikieditor-toolbar-tool-indent\":\"Indentation\",\"wikieditor-toolbar-tool-indent-example\":\"Indented line\",\"wikieditor-toolbar-tool-nowiki\":\"No wiki formatting\",\"wikieditor-toolbar-tool-nowiki-example\":\"Insert non-formatted text here\",\"wikieditor-toolbar-tool-redirect\":\"Redirect\",\"wikieditor-toolbar-tool-redirect-example\":\"Target page name\",\"wikieditor-toolbar-tool-big\":\"Big\",\"wikieditor-toolbar-tool-big-example\":\"Big text\",\"wikieditor-toolbar-tool-small\":\"Small\",\"wikieditor-toolbar-tool-small-example\":\"Small text\",\"wikieditor-toolbar-tool-superscript\":\"Superscript\",\"wikieditor-toolbar-tool-superscript-example\":\"Superscript text\",\"wikieditor-toolbar-tool-subscript\":\"Subscript\",\"wikieditor-toolbar-tool-subscript-example\":\"Subscript text\",\"wikieditor-toolbar-group-insert\":\"Insert\",\"wikieditor-toolbar-tool-gallery\":\"Picture gallery\",\"wikieditor-toolbar-tool-gallery-example\":\"{{ns:file}}:Example.jpg|Caption1\\n{{ns:file}}:Example.jpg|Caption2\",\"wikieditor-toolbar-tool-newline\":\"New line\",\"wikieditor-toolbar-tool-table\":\"Table\",\"wikieditor-toolbar-tool-table-example-old\":\"-\\n! header 1\\n! header 2\\n! header 3\\n|-\\n| row 1, cell 1\\n| row 1, cell 2\\n| row 1, cell 3\\n|-\\n| row 2, cell 1\\n| row 2, cell 2\\n| row 2, cell 3\",\"wikieditor-toolbar-tool-table-example-cell-text\":\"Cell text\",\"wikieditor-toolbar-tool-table-example\":\"Example\",\"wikieditor-toolbar-tool-table-example-header\":\"Header text\",\"wikieditor-toolbar-tool-table-title\":\"Insert table\",\"wikieditor-toolbar-tool-table-dimensions-rows\":\"Rows\",\"wikieditor-toolbar-tool-table-dimensions-columns\":\"Columns\",\"wikieditor-toolbar-tool-table-dimensions-header\":\"Add header row\",\"wikieditor-toolbar-tool-table-wikitable\":\"Style with borders\",\"wikieditor-toolbar-tool-table-sortable\":\"Make table sortable\",\"wikieditor-toolbar-tool-table-insert\":\"Insert\",\"wikieditor-toolbar-tool-table-cancel\":\"Cancel\",\"wikieditor-toolbar-tool-table-example-text\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut nec purus diam. Sed aliquam imperdiet nunc quis lacinia. Donec rutrum consectetur placerat. Sed volutpat neque non purus faucibus id ultricies enim euismod.\",\"wikieditor-toolbar-tool-table-toomany\":\"Inserting a table with more than $1 cells is not possible with this dialog.\",\"wikieditor-toolbar-tool-table-invalidnumber\":\"You have not entered a valid number of rows or columns.\",\"wikieditor-toolbar-tool-table-zero\":\"You cannot insert a table with zero rows or columns.\",\"wikieditor-toolbar-tool-replace\":\"Search and replace\",\"wikieditor-toolbar-tool-replace-title\":\"Search and replace\",\"wikieditor-toolbar-tool-replace-search\":\"Search for:\",\"wikieditor-toolbar-tool-replace-replace\":\"Replace with:\",\"wikieditor-toolbar-tool-replace-case\":\"Match case\",\"wikieditor-toolbar-tool-replace-regex\":\"Treat search string as a regular expression\",\"wikieditor-toolbar-tool-replace-button-findnext\":\"Find next\",\"wikieditor-toolbar-tool-replace-button-replacenext\":\"Replace next\",\"wikieditor-toolbar-tool-replace-button-replaceall\":\"Replace all\",\"wikieditor-toolbar-tool-replace-close\":\"Close\",\"wikieditor-toolbar-tool-replace-nomatch\":\"Your search did not match anything.\",\"wikieditor-toolbar-tool-replace-success\":\"$1 replacement(s) made.\",\"wikieditor-toolbar-tool-replace-emptysearch\":\"You did not enter anything to search for.\",\"wikieditor-toolbar-tool-replace-invalidregex\":\"The regular expression you entered is invalid: $1\",\"wikieditor-toolbar-section-characters\":\"Special characters\",\"wikieditor-toolbar-characters-page-latin\":\"Latin\",\"wikieditor-toolbar-characters-page-latinextended\":\"Latin extended\",\"wikieditor-toolbar-characters-page-ipa\":\"IPA\",\"wikieditor-toolbar-characters-page-symbols\":\"Symbols\",\"wikieditor-toolbar-characters-page-greek\":\"Greek\",\"wikieditor-toolbar-characters-page-cyrillic\":\"Cyrillic\",\"wikieditor-toolbar-characters-page-arabic\":\"Arabic\",\"wikieditor-toolbar-characters-page-persian\":\"Persian\",\"wikieditor-toolbar-characters-page-hebrew\":\"Hebrew\",\"wikieditor-toolbar-characters-page-bangla\":\"Bangla\",\"wikieditor-toolbar-characters-page-telugu\":\"Telugu\",\"wikieditor-toolbar-characters-page-sinhala\":\"Sinhala\",\"wikieditor-toolbar-characters-page-gujarati\":\"Gujarati\",\"wikieditor-toolbar-characters-page-thai\":\"Thai\",\"wikieditor-toolbar-characters-page-lao\":\"Lao\",\"wikieditor-toolbar-characters-page-khmer\":\"Khmer\",\"wikieditor-toolbar-section-help\":\"Help\",\"wikieditor-toolbar-help-heading-description\":\"Description\",\"wikieditor-toolbar-help-heading-syntax\":\"What you type\",\"wikieditor-toolbar-help-heading-result\":\"What you get\",\"wikieditor-toolbar-help-page-format\":\"Formatting\",\"wikieditor-toolbar-help-page-link\":\"Links\",\"wikieditor-toolbar-help-page-heading\":\"Headings\",\"wikieditor-toolbar-help-page-list\":\"Lists\",\"wikieditor-toolbar-help-page-file\":\"Files\",\"wikieditor-toolbar-help-page-reference\":\"References\",\"wikieditor-toolbar-help-page-discussion\":\"Discussion\",\"wikieditor-toolbar-help-content-bold-description\":\"Bold\",\"wikieditor-toolbar-help-content-bold-syntax\":\"\'\'\'Bold text\'\'\'\",\"wikieditor-toolbar-help-content-bold-result\":\"<strong>Bold text<\\/strong>\",\"wikieditor-toolbar-help-content-italic-description\":\"Italic\",\"wikieditor-toolbar-help-content-italic-syntax\":\"\'\'Italic text\'\'\",\"wikieditor-toolbar-help-content-italic-result\":\"<em>Italic text<\\/em>\",\"wikieditor-toolbar-help-content-bolditalic-description\":\"Bold &amp; italic\",\"wikieditor-toolbar-help-content-bolditalic-syntax\":\"\'\'\'\'\'Bold &amp; italic text\'\'\'\'\'\",\"wikieditor-toolbar-help-content-bolditalic-result\":\"<strong><em>Bold &amp; italic text<\\/em><\\/strong>\",\"wikieditor-toolbar-help-content-ilink-description\":\"Internal link\",\"wikieditor-toolbar-help-content-ilink-syntax\":\"[[Page title|Link label]]<br \\/>[[Page title]]\",\"wikieditor-toolbar-help-content-ilink-result\":\"<a href=\'#\'>Link label<\\/a><br \\/><a href=\'#\'>Page title<\\/a>\",\"wikieditor-toolbar-help-content-xlink-description\":\"External link\",\"wikieditor-toolbar-help-content-xlink-syntax\":\"[http:\\/\\/www.example.org Link label]<br \\/>[http:\\/\\/www.example.org]<br \\/>http:\\/\\/www.example.org\",\"wikieditor-toolbar-help-content-xlink-result\":\"<a href=\'#\' class=\'external\'>Link label<\\/a><br \\/><a href=\'#\' class=\'external autonumber\'>[1]<\\/a><br \\/><a href=\'#\' class=\'external\'>http:\\/\\/www.example.org<\\/a>\",\"wikieditor-toolbar-help-content-heading1-description\":\"&lt;wikieditor-toolbar-help-content-heading1-description&gt;\",\"wikieditor-toolbar-help-content-heading1-syntax\":\"&lt;wikieditor-toolbar-help-content-heading1-syntax&gt;\",\"wikieditor-toolbar-help-content-heading1-result\":\"&lt;wikieditor-toolbar-help-content-heading1-result&gt;\",\"wikieditor-toolbar-help-content-heading2-description\":\"2nd level heading\",\"wikieditor-toolbar-help-content-heading2-syntax\":\"== Heading text ==\",\"wikieditor-toolbar-help-content-heading2-result\":\"<h2>Heading text<\\/h2>\",\"wikieditor-toolbar-help-content-heading3-description\":\"3rd level heading\",\"wikieditor-toolbar-help-content-heading3-syntax\":\"=== Heading text ===\",\"wikieditor-toolbar-help-content-heading3-result\":\"<h3>Heading text<\\/h3>\",\"wikieditor-toolbar-help-content-heading4-description\":\"4th level heading\",\"wikieditor-toolbar-help-content-heading4-syntax\":\"==== Heading text ====\",\"wikieditor-toolbar-help-content-heading4-result\":\"<h4>Heading text<\\/h4>\",\"wikieditor-toolbar-help-content-heading5-description\":\"5th level heading\",\"wikieditor-toolbar-help-content-heading5-syntax\":\"===== Heading text =====\",\"wikieditor-toolbar-help-content-heading5-result\":\"<h5>Heading text<\\/h5>\",\"wikieditor-toolbar-help-content-ulist-description\":\"Bulleted list\",\"wikieditor-toolbar-help-content-ulist-syntax\":\"* List item<br \\/>* List item\",\"wikieditor-toolbar-help-content-ulist-result\":\"<ul><li>List item<\\/li><li>List item<\\/li><\\/ul>\",\"wikieditor-toolbar-help-content-olist-description\":\"Numbered list\",\"wikieditor-toolbar-help-content-olist-syntax\":\"# List item<br \\/># List item\",\"wikieditor-toolbar-help-content-olist-result\":\"<ol><li>List item<\\/li><li>List item<\\/li><\\/ol>\",\"wikieditor-toolbar-help-content-file-description\":\"Embedded file\",\"wikieditor-toolbar-help-content-file-syntax\":\"[[{{ns:file}}:Example.png|thumb|Caption text]]\",\"wikieditor-toolbar-help-content-file-result\":\"<div style=\'width:104px;\' class=\'thumbinner\'><a title=\'Caption text\' class=\'image\' href=\'#\'><img height=\'50\' width=\'100\' border=\'0\' class=\'thumbimage\' src=\'extensions\\/UsabilityInitiative\\/images\\/wikiEditor\\/toolbar\\/example-image.png\' alt=\'\'\\/><\\/a><div class=\'thumbcaption\'><div class=\'magnify\'><a title=\'Enlarge\' class=\'internal\' href=\'#\'><img height=\'11\' width=\'15\' alt=\'\' src=\'$1\\/common\\/images\\/magnify-clip.png\'\\/><\\/a><\\/div>Caption text<\\/div><\\/div>\",\"wikieditor-toolbar-help-content-reference-description\":\"Reference\",\"wikieditor-toolbar-help-content-reference-syntax\":\"Page text.&lt;ref name=\\\"test\\\"&gt;[http:\\/\\/www.example.org Link text], additional text.&lt;\\/ref&gt;\",\"wikieditor-toolbar-help-content-reference-result\":\"Page text.<sup><a href=\'#\'>[1]<\\/a><\\/sup>\",\"wikieditor-toolbar-help-content-rereference-description\":\"Additional use of same reference\",\"wikieditor-toolbar-help-content-rereference-syntax\":\"&lt;ref name=\\\"test\\\" \\/&gt;\",\"wikieditor-toolbar-help-content-rereference-result\":\"Page text.<sup><a href=\'#\'>[1]<\\/a><\\/sup>\",\"wikieditor-toolbar-help-content-showreferences-description\":\"Display references\",\"wikieditor-toolbar-help-content-showreferences-syntax\":\"&lt;references \\/&gt;\",\"wikieditor-toolbar-help-content-showreferences-result\":\"<ol class=\'references\'><li id=\'cite_note-test-0\'><b><a title=\'\' href=\'#\'>^<\\/a><\\/b> <a rel=\'nofollow\' title=\'http:\\/\\/www.example.org\' class=\'external text\' href=\'#\'>Link text<\\/a>, additional text.<\\/li><\\/ol>\",\"wikieditor-toolbar-help-content-signaturetimestamp-description\":\"Signature with timestamp\",\"wikieditor-toolbar-help-content-signaturetimestamp-syntax\":\"~~~~\",\"wikieditor-toolbar-help-content-signaturetimestamp-result\":\"<a href=\'#\' title=\'{{#special:mypage}}\'>Username<\\/a> (<a href=\'#\' title=\'{{#special:mytalk}}\'>talk<\\/a>) 15:54, 10 June 2009 (UTC)\",\"wikieditor-toolbar-help-content-signature-description\":\"Signature\",\"wikieditor-toolbar-help-content-signature-syntax\":\"~~~\",\"wikieditor-toolbar-help-content-signature-result\":\"<a href=\'#\' title=\'{{#special:mypage}}\'>Username<\\/a> (<a href=\'#\' title=\'{{#special:mytalk}}\'>talk<\\/a>)\",\"wikieditor-toolbar-help-content-indent-description\":\"Indent\",\"wikieditor-toolbar-help-content-indent-syntax\":\"Normal text<br \\/>:Indented text<br \\/>::Indented text\",\"wikieditor-toolbar-help-content-indent-result\":\"Normal text<dl><dd>Indented text<dl><dd>Indented text<\\/dd><\\/dl><\\/dd><\\/dl>\"}','20110110172914'),('jquery.async','en','{}','20110110172915'),('jquery.autoEllipsis','en','{}','20110110172915'),('jquery.checkboxShiftClick','en','{}','20110110172915'),('jquery.client','en','{}','20110110172915'),('jquery.collapsibleTabs','en','{}','20110110172915'),('jquery.cookie','en','{}','20110110172915'),('jquery.delayedBind','en','{}','20110110172915'),('jquery.highlightText','en','{}','20110110172915'),('jquery.makeCollapsible','en','{\"collapsible-expand\":\"Expand\",\"collapsible-collapse\":\"Collapse\"}','20110110172915'),('jquery.placeholder','en','{}','20110110172915'),('jquery.suggestions','en','{}','20110110172915'),('jquery.tabIndex','en','{}','20110110172915'),('jquery.textSelection','en','{}','20110110172915'),('jquery.wikiEditor','en','{\"wikieditor-wikitext-tab\":\"Wikitext\",\"wikieditor-loading\":\"Loading\"}','20110110172914'),('jquery.wikiEditor.toolbar','en','{}','20110110172914'),('mediawiki.action.watch.ajax','en','{}','20110110172915'),('mediawiki.language','en','{}','20110110172915'),('mediawiki.legacy.ajax','en','{\"watch\":\"Watch\",\"unwatch\":\"Unwatch\",\"watching\":\"Watching...\",\"unwatching\":\"Unwatching...\",\"tooltip-ca-watch\":\"Add this page to your watchlist\",\"tooltip-ca-unwatch\":\"Remove this page from your watchlist\"}','20110110172915'),('mediawiki.legacy.edit','en','{}','20110110172915'),('mediawiki.legacy.wikibits','en','{\"showtoc\":\"show\",\"hidetoc\":\"hide\"}','20110110172915'),('mediawiki.util','en','{}','20110110172915');
+/*!40000 ALTER TABLE `mw_msg_resource` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_msg_resource_links`
+--
+
+DROP TABLE IF EXISTS `mw_msg_resource_links`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_msg_resource_links` (
+ `mrl_resource` varbinary(255) NOT NULL,
+ `mrl_message` varbinary(255) NOT NULL,
+ UNIQUE KEY `mrl_message_resource` (`mrl_message`,`mrl_resource`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_msg_resource_links`
+--
+
+LOCK TABLES `mw_msg_resource_links` WRITE;
+/*!40000 ALTER TABLE `mw_msg_resource_links` DISABLE KEYS */;
+INSERT INTO `mw_msg_resource_links` VALUES ('jquery.makeCollapsible','collapsible-collapse'),('jquery.makeCollapsible','collapsible-expand'),('mediawiki.legacy.wikibits','hidetoc'),('mediawiki.legacy.wikibits','showtoc'),('mediawiki.legacy.ajax','tooltip-ca-unwatch'),('mediawiki.legacy.ajax','tooltip-ca-watch'),('mediawiki.legacy.ajax','unwatch'),('mediawiki.legacy.ajax','unwatching'),('ext.vector.collapsibleNav','vector-collapsiblenav-more'),('ext.vector.simpleSearch','vector-simplesearch-containing'),('ext.vector.simpleSearch','vector-simplesearch-search'),('mediawiki.legacy.ajax','watch'),('mediawiki.legacy.ajax','watching'),('jquery.wikiEditor','wikieditor-loading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-arabic'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-bangla'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-cyrillic'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-greek'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-gujarati'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-hebrew'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-ipa'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-khmer'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-lao'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-latin'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-latinextended'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-persian'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-sinhala'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-symbols'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-telugu'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-thai'),('ext.wikiEditor.toolbar','wikieditor-toolbar-group-format'),('ext.wikiEditor.toolbar','wikieditor-toolbar-group-insert'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bold-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bold-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bold-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bolditalic-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bolditalic-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bolditalic-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-file-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-file-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-file-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading1-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading1-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading1-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading2-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading2-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading2-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading3-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading3-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading3-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading4-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading4-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading4-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading5-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading5-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading5-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ilink-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ilink-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ilink-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-indent-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-indent-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-indent-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-italic-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-italic-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-italic-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-olist-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-olist-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-olist-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-reference-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-reference-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-reference-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-rereference-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-rereference-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-rereference-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-showreferences-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-showreferences-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-showreferences-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signature-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signature-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signature-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signaturetimestamp-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signaturetimestamp-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signaturetimestamp-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ulist-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ulist-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ulist-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-xlink-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-xlink-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-xlink-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-heading-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-heading-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-heading-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-discussion'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-file'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-format'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-heading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-link'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-list'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-reference'),('ext.wikiEditor.toolbar','wikieditor-toolbar-loading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-section-advanced'),('ext.wikiEditor.toolbar','wikieditor-toolbar-section-characters'),('ext.wikiEditor.toolbar','wikieditor-toolbar-section-help'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-big'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-big-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-bold'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-bold-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-file'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-file-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-file-pre'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-gallery'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-gallery-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-1'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-2'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-3'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-4'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-5'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-ilink'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-ilink-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-indent'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-indent-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-italic'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-italic-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-cancel'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-empty'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-ext'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-ext-target'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-ext-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-insert'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-invalid'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-exists'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-external'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-invalid'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-loading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-notexists'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-tooltip'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-text-tooltip'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-lookslikeinternal'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-lookslikeinternal-ext'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-lookslikeinternal-int'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-title'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-newline'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-nowiki'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-nowiki-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-olist'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-olist-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-redirect'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-redirect-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-cancel'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-insert'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-title'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-button-findnext'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-button-replaceall'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-button-replacenext'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-case'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-close'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-emptysearch'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-invalidregex'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-nomatch'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-regex'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-replace'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-search'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-success'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-title'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-signature'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-small'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-small-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-subscript'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-subscript-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-superscript'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-superscript-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-cancel'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-dimensions-columns'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-dimensions-header'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-dimensions-rows'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example-cell-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example-header'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example-old'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-insert'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-invalidnumber'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-sortable'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-title'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-toomany'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-wikitable'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-zero'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-ulist'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-ulist-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-xlink'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-xlink-example'),('jquery.wikiEditor','wikieditor-wikitext-tab');
+/*!40000 ALTER TABLE `mw_msg_resource_links` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_objectcache`
+--
+
+DROP TABLE IF EXISTS `mw_objectcache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_objectcache` (
+ `keyname` varbinary(255) NOT NULL DEFAULT '',
+ `value` mediumblob,
+ `exptime` datetime DEFAULT NULL,
+ PRIMARY KEY (`keyname`),
+ KEY `exptime` (`exptime`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_objectcache`
+--
+
+LOCK TABLES `mw_objectcache` WRITE;
+/*!40000 ALTER TABLE `mw_objectcache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_objectcache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_oldimage`
+--
+
+DROP TABLE IF EXISTS `mw_oldimage`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_oldimage` (
+ `oi_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `oi_archive_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `oi_size` int(10) unsigned NOT NULL DEFAULT '0',
+ `oi_width` int(11) NOT NULL DEFAULT '0',
+ `oi_height` int(11) NOT NULL DEFAULT '0',
+ `oi_bits` int(11) NOT NULL DEFAULT '0',
+ `oi_description` tinyblob NOT NULL,
+ `oi_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `oi_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `oi_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `oi_metadata` mediumblob NOT NULL,
+ `oi_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
+ `oi_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') NOT NULL DEFAULT 'unknown',
+ `oi_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown',
+ `oi_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `oi_sha1` varbinary(32) NOT NULL DEFAULT '',
+ KEY `oi_usertext_timestamp` (`oi_user_text`,`oi_timestamp`),
+ KEY `oi_name_timestamp` (`oi_name`,`oi_timestamp`),
+ KEY `oi_name_archive_name` (`oi_name`,`oi_archive_name`(14)),
+ KEY `oi_sha1` (`oi_sha1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_oldimage`
+--
+
+LOCK TABLES `mw_oldimage` WRITE;
+/*!40000 ALTER TABLE `mw_oldimage` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_oldimage` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_page`
+--
+
+DROP TABLE IF EXISTS `mw_page`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_page` (
+ `page_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `page_namespace` int(11) NOT NULL,
+ `page_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `page_restrictions` tinyblob NOT NULL,
+ `page_counter` bigint(20) unsigned NOT NULL DEFAULT '0',
+ `page_is_redirect` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `page_is_new` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `page_random` double unsigned NOT NULL,
+ `page_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `page_latest` int(10) unsigned NOT NULL,
+ `page_len` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`page_id`),
+ UNIQUE KEY `name_title` (`page_namespace`,`page_title`),
+ KEY `page_random` (`page_random`),
+ KEY `page_len` (`page_len`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_page`
+--
+
+LOCK TABLES `mw_page` WRITE;
+/*!40000 ALTER TABLE `mw_page` DISABLE KEYS */;
+INSERT INTO `mw_page` VALUES (1,0,'Main_Page','',3,0,1,0.045389076294,'20110107184113',1,438),(2,0,'TestResources','',0,0,1,0.227355086893,'20110110173217',2,57);
+/*!40000 ALTER TABLE `mw_page` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_page_props`
+--
+
+DROP TABLE IF EXISTS `mw_page_props`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_page_props` (
+ `pp_page` int(11) NOT NULL,
+ `pp_propname` varbinary(60) NOT NULL,
+ `pp_value` blob NOT NULL,
+ UNIQUE KEY `pp_page_propname` (`pp_page`,`pp_propname`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_page_props`
+--
+
+LOCK TABLES `mw_page_props` WRITE;
+/*!40000 ALTER TABLE `mw_page_props` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_page_props` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_page_restrictions`
+--
+
+DROP TABLE IF EXISTS `mw_page_restrictions`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_page_restrictions` (
+ `pr_page` int(11) NOT NULL,
+ `pr_type` varbinary(60) NOT NULL,
+ `pr_level` varbinary(60) NOT NULL,
+ `pr_cascade` tinyint(4) NOT NULL,
+ `pr_user` int(11) DEFAULT NULL,
+ `pr_expiry` varbinary(14) DEFAULT NULL,
+ `pr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ PRIMARY KEY (`pr_id`),
+ UNIQUE KEY `pr_pagetype` (`pr_page`,`pr_type`),
+ KEY `pr_typelevel` (`pr_type`,`pr_level`),
+ KEY `pr_level` (`pr_level`),
+ KEY `pr_cascade` (`pr_cascade`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_page_restrictions`
+--
+
+LOCK TABLES `mw_page_restrictions` WRITE;
+/*!40000 ALTER TABLE `mw_page_restrictions` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_page_restrictions` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_pagelinks`
+--
+
+DROP TABLE IF EXISTS `mw_pagelinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_pagelinks` (
+ `pl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `pl_namespace` int(11) NOT NULL DEFAULT '0',
+ `pl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `pl_from` (`pl_from`,`pl_namespace`,`pl_title`),
+ UNIQUE KEY `pl_namespace` (`pl_namespace`,`pl_title`,`pl_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_pagelinks`
+--
+
+LOCK TABLES `mw_pagelinks` WRITE;
+/*!40000 ALTER TABLE `mw_pagelinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_pagelinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_protected_titles`
+--
+
+DROP TABLE IF EXISTS `mw_protected_titles`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_protected_titles` (
+ `pt_namespace` int(11) NOT NULL,
+ `pt_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `pt_user` int(10) unsigned NOT NULL,
+ `pt_reason` tinyblob,
+ `pt_timestamp` binary(14) NOT NULL,
+ `pt_expiry` varbinary(14) NOT NULL DEFAULT '',
+ `pt_create_perm` varbinary(60) NOT NULL,
+ UNIQUE KEY `pt_namespace_title` (`pt_namespace`,`pt_title`),
+ KEY `pt_timestamp` (`pt_timestamp`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_protected_titles`
+--
+
+LOCK TABLES `mw_protected_titles` WRITE;
+/*!40000 ALTER TABLE `mw_protected_titles` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_protected_titles` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_querycache`
+--
+
+DROP TABLE IF EXISTS `mw_querycache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_querycache` (
+ `qc_type` varbinary(32) NOT NULL,
+ `qc_value` int(10) unsigned NOT NULL DEFAULT '0',
+ `qc_namespace` int(11) NOT NULL DEFAULT '0',
+ `qc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ KEY `qc_type` (`qc_type`,`qc_value`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_querycache`
+--
+
+LOCK TABLES `mw_querycache` WRITE;
+/*!40000 ALTER TABLE `mw_querycache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_querycache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_querycache_info`
+--
+
+DROP TABLE IF EXISTS `mw_querycache_info`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_querycache_info` (
+ `qci_type` varbinary(32) NOT NULL DEFAULT '',
+ `qci_timestamp` binary(14) NOT NULL DEFAULT '19700101000000',
+ UNIQUE KEY `qci_type` (`qci_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_querycache_info`
+--
+
+LOCK TABLES `mw_querycache_info` WRITE;
+/*!40000 ALTER TABLE `mw_querycache_info` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_querycache_info` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_querycachetwo`
+--
+
+DROP TABLE IF EXISTS `mw_querycachetwo`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_querycachetwo` (
+ `qcc_type` varbinary(32) NOT NULL,
+ `qcc_value` int(10) unsigned NOT NULL DEFAULT '0',
+ `qcc_namespace` int(11) NOT NULL DEFAULT '0',
+ `qcc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `qcc_namespacetwo` int(11) NOT NULL DEFAULT '0',
+ `qcc_titletwo` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ KEY `qcc_type` (`qcc_type`,`qcc_value`),
+ KEY `qcc_title` (`qcc_type`,`qcc_namespace`,`qcc_title`),
+ KEY `qcc_titletwo` (`qcc_type`,`qcc_namespacetwo`,`qcc_titletwo`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_querycachetwo`
+--
+
+LOCK TABLES `mw_querycachetwo` WRITE;
+/*!40000 ALTER TABLE `mw_querycachetwo` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_querycachetwo` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_recentchanges`
+--
+
+DROP TABLE IF EXISTS `mw_recentchanges`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_recentchanges` (
+ `rc_id` int(11) NOT NULL AUTO_INCREMENT,
+ `rc_timestamp` varbinary(14) NOT NULL DEFAULT '',
+ `rc_cur_time` varbinary(14) NOT NULL DEFAULT '',
+ `rc_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `rc_namespace` int(11) NOT NULL DEFAULT '0',
+ `rc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rc_comment` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rc_minor` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_bot` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_new` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_cur_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_this_oldid` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_last_oldid` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_type` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_moved_to_ns` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_moved_to_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rc_patrolled` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_ip` varbinary(40) NOT NULL DEFAULT '',
+ `rc_old_len` int(11) DEFAULT NULL,
+ `rc_new_len` int(11) DEFAULT NULL,
+ `rc_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_logid` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_log_type` varbinary(255) DEFAULT NULL,
+ `rc_log_action` varbinary(255) DEFAULT NULL,
+ `rc_params` blob,
+ PRIMARY KEY (`rc_id`),
+ KEY `rc_timestamp` (`rc_timestamp`),
+ KEY `rc_namespace_title` (`rc_namespace`,`rc_title`),
+ KEY `rc_cur_id` (`rc_cur_id`),
+ KEY `new_name_timestamp` (`rc_new`,`rc_namespace`,`rc_timestamp`),
+ KEY `rc_ip` (`rc_ip`),
+ KEY `rc_ns_usertext` (`rc_namespace`,`rc_user_text`),
+ KEY `rc_user_text` (`rc_user_text`,`rc_timestamp`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_recentchanges`
+--
+
+LOCK TABLES `mw_recentchanges` WRITE;
+/*!40000 ALTER TABLE `mw_recentchanges` DISABLE KEYS */;
+INSERT INTO `mw_recentchanges` VALUES (1,'20110107184113','20110107184113',0,'MediaWiki Default',0,'Main_Page','',0,0,1,1,1,0,1,0,'',0,'::1',0,438,0,0,NULL,'',''),(2,'20110110173131','20110110173131',1,'WikiSysop',0,'TestResources','Created page with \"Test the the SimpleSelenium database was loaded correctly\"',0,0,1,2,2,0,1,0,'',1,'::1',0,57,0,0,NULL,'','');
+/*!40000 ALTER TABLE `mw_recentchanges` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_redirect`
+--
+
+DROP TABLE IF EXISTS `mw_redirect`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_redirect` (
+ `rd_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `rd_namespace` int(11) NOT NULL DEFAULT '0',
+ `rd_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rd_interwiki` varchar(32) DEFAULT NULL,
+ `rd_fragment` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
+ PRIMARY KEY (`rd_from`),
+ KEY `rd_ns_title` (`rd_namespace`,`rd_title`,`rd_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_redirect`
+--
+
+LOCK TABLES `mw_redirect` WRITE;
+/*!40000 ALTER TABLE `mw_redirect` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_redirect` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_revision`
+--
+
+DROP TABLE IF EXISTS `mw_revision`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_revision` (
+ `rev_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `rev_page` int(10) unsigned NOT NULL,
+ `rev_text_id` int(10) unsigned NOT NULL,
+ `rev_comment` tinyblob NOT NULL,
+ `rev_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `rev_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rev_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `rev_minor_edit` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rev_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rev_len` int(10) unsigned DEFAULT NULL,
+ `rev_parent_id` int(10) unsigned DEFAULT NULL,
+ PRIMARY KEY (`rev_id`),
+ UNIQUE KEY `rev_page_id` (`rev_page`,`rev_id`),
+ KEY `rev_timestamp` (`rev_timestamp`),
+ KEY `page_timestamp` (`rev_page`,`rev_timestamp`),
+ KEY `user_timestamp` (`rev_user`,`rev_timestamp`),
+ KEY `usertext_timestamp` (`rev_user_text`,`rev_timestamp`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_revision`
+--
+
+LOCK TABLES `mw_revision` WRITE;
+/*!40000 ALTER TABLE `mw_revision` DISABLE KEYS */;
+INSERT INTO `mw_revision` VALUES (1,1,1,'',0,'MediaWiki Default','20110107184113',0,0,438,0),(2,2,2,'Created page with \"Test the the SimpleSelenium database was loaded correctly\"',1,'WikiSysop','20110110173131',0,0,57,0);
+/*!40000 ALTER TABLE `mw_revision` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_searchindex`
+--
+
+DROP TABLE IF EXISTS `mw_searchindex`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_searchindex` (
+ `si_page` int(10) unsigned NOT NULL,
+ `si_title` varchar(255) NOT NULL DEFAULT '',
+ `si_text` mediumtext NOT NULL,
+ UNIQUE KEY `si_page` (`si_page`),
+ FULLTEXT KEY `si_title` (`si_title`),
+ FULLTEXT KEY `si_text` (`si_text`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_searchindex`
+--
+
+LOCK TABLES `mw_searchindex` WRITE;
+/*!40000 ALTER TABLE `mw_searchindex` DISABLE KEYS */;
+INSERT INTO `mw_searchindex` VALUES (1,'main page',' mediawiki hasu800 been successfully installed. consult theu800 user user\'su800 guide foru800 information onu800 using theu800 wiki software. getting started getting started getting started configuration settings list mediawiki faqu800 mediawiki release mailing list '),(2,'testresources',' test theu800 theu800 simpleselenium database wasu800 loaded correctly ');
+/*!40000 ALTER TABLE `mw_searchindex` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_site_stats`
+--
+
+DROP TABLE IF EXISTS `mw_site_stats`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_site_stats` (
+ `ss_row_id` int(10) unsigned NOT NULL,
+ `ss_total_views` bigint(20) unsigned DEFAULT '0',
+ `ss_total_edits` bigint(20) unsigned DEFAULT '0',
+ `ss_good_articles` bigint(20) unsigned DEFAULT '0',
+ `ss_total_pages` bigint(20) DEFAULT '-1',
+ `ss_users` bigint(20) DEFAULT '-1',
+ `ss_active_users` bigint(20) DEFAULT '-1',
+ `ss_admins` int(11) DEFAULT '-1',
+ `ss_images` int(11) DEFAULT '0',
+ UNIQUE KEY `ss_row_id` (`ss_row_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_site_stats`
+--
+
+LOCK TABLES `mw_site_stats` WRITE;
+/*!40000 ALTER TABLE `mw_site_stats` DISABLE KEYS */;
+INSERT INTO `mw_site_stats` VALUES (1,3,2,1,2,1,-1,-1,0);
+/*!40000 ALTER TABLE `mw_site_stats` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_tag_summary`
+--
+
+DROP TABLE IF EXISTS `mw_tag_summary`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_tag_summary` (
+ `ts_rc_id` int(11) DEFAULT NULL,
+ `ts_log_id` int(11) DEFAULT NULL,
+ `ts_rev_id` int(11) DEFAULT NULL,
+ `ts_tags` blob NOT NULL,
+ UNIQUE KEY `tag_summary_rc_id` (`ts_rc_id`),
+ UNIQUE KEY `tag_summary_log_id` (`ts_log_id`),
+ UNIQUE KEY `tag_summary_rev_id` (`ts_rev_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_tag_summary`
+--
+
+LOCK TABLES `mw_tag_summary` WRITE;
+/*!40000 ALTER TABLE `mw_tag_summary` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_tag_summary` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_templatelinks`
+--
+
+DROP TABLE IF EXISTS `mw_templatelinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_templatelinks` (
+ `tl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `tl_namespace` int(11) NOT NULL DEFAULT '0',
+ `tl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `tl_from` (`tl_from`,`tl_namespace`,`tl_title`),
+ UNIQUE KEY `tl_namespace` (`tl_namespace`,`tl_title`,`tl_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_templatelinks`
+--
+
+LOCK TABLES `mw_templatelinks` WRITE;
+/*!40000 ALTER TABLE `mw_templatelinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_templatelinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_text`
+--
+
+DROP TABLE IF EXISTS `mw_text`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_text` (
+ `old_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `old_text` mediumblob NOT NULL,
+ `old_flags` tinyblob NOT NULL,
+ PRIMARY KEY (`old_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 MAX_ROWS=10000000 AVG_ROW_LENGTH=10240;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_text`
+--
+
+LOCK TABLES `mw_text` WRITE;
+/*!40000 ALTER TABLE `mw_text` DISABLE KEYS */;
+INSERT INTO `mw_text` VALUES (1,'\'\'\'MediaWiki has been successfully installed.\'\'\'\n\nConsult the [http://meta.wikimedia.org/wiki/Help:Contents User\'s Guide] for information on using the wiki software.\n\n== Getting started ==\n* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]\n* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]','utf-8'),(2,'Test the the SimpleSelenium database was loaded correctly','utf-8');
+/*!40000 ALTER TABLE `mw_text` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_trackbacks`
+--
+
+DROP TABLE IF EXISTS `mw_trackbacks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_trackbacks` (
+ `tb_id` int(11) NOT NULL AUTO_INCREMENT,
+ `tb_page` int(11) DEFAULT NULL,
+ `tb_title` varchar(255) NOT NULL,
+ `tb_url` blob NOT NULL,
+ `tb_ex` text,
+ `tb_name` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`tb_id`),
+ KEY `tb_page` (`tb_page`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_trackbacks`
+--
+
+LOCK TABLES `mw_trackbacks` WRITE;
+/*!40000 ALTER TABLE `mw_trackbacks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_trackbacks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_transcache`
+--
+
+DROP TABLE IF EXISTS `mw_transcache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_transcache` (
+ `tc_url` varbinary(255) NOT NULL,
+ `tc_contents` text,
+ `tc_time` binary(14) DEFAULT NULL,
+ UNIQUE KEY `tc_url_idx` (`tc_url`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_transcache`
+--
+
+LOCK TABLES `mw_transcache` WRITE;
+/*!40000 ALTER TABLE `mw_transcache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_transcache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_updatelog`
+--
+
+DROP TABLE IF EXISTS `mw_updatelog`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_updatelog` (
+ `ul_key` varchar(255) NOT NULL,
+ `ul_value` blob,
+ PRIMARY KEY (`ul_key`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_updatelog`
+--
+
+LOCK TABLES `mw_updatelog` WRITE;
+/*!40000 ALTER TABLE `mw_updatelog` DISABLE KEYS */;
+INSERT INTO `mw_updatelog` VALUES ('cl_fields_update',NULL),('convert transcache field',NULL),('mime_minor_length',NULL),('populate category',NULL),('populate rev_len',NULL),('populate rev_parent_id',NULL),('updatelist-1.18alpha-1294425799','a:128:{i:0;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:6:\"ipb_id\";i:3;s:18:\"patch-ipblocks.sql\";}i:1;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:10:\"ipb_expiry\";i:3;s:20:\"patch-ipb_expiry.sql\";}i:2;a:1:{i:0;s:17:\"doInterwikiUpdate\";}i:3;a:1:{i:0;s:13:\"doIndexUpdate\";}i:4;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"hitcounter\";i:2;s:20:\"patch-hitcounter.sql\";}i:5;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:7:\"rc_type\";i:3;s:17:\"patch-rc_type.sql\";}i:6;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:14:\"user_real_name\";i:3;s:23:\"patch-user-realname.sql\";}i:7;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"querycache\";i:2;s:20:\"patch-querycache.sql\";}i:8;a:3:{i:0;s:8:\"addTable\";i:1;s:11:\"objectcache\";i:2;s:21:\"patch-objectcache.sql\";}i:9;a:3:{i:0;s:8:\"addTable\";i:1;s:13:\"categorylinks\";i:2;s:23:\"patch-categorylinks.sql\";}i:10;a:1:{i:0;s:16:\"doOldLinksUpdate\";}i:11;a:1:{i:0;s:22:\"doFixAncientImagelinks\";}i:12;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:5:\"rc_ip\";i:3;s:15:\"patch-rc_ip.sql\";}i:13;a:4:{i:0;s:8:\"addIndex\";i:1;s:5:\"image\";i:2;s:7:\"PRIMARY\";i:3;s:28:\"patch-image_name_primary.sql\";}i:14;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:5:\"rc_id\";i:3;s:15:\"patch-rc_id.sql\";}i:15;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:12:\"rc_patrolled\";i:3;s:19:\"patch-rc-patrol.sql\";}i:16;a:3:{i:0;s:8:\"addTable\";i:1;s:7:\"logging\";i:2;s:17:\"patch-logging.sql\";}i:17;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:10:\"user_token\";i:3;s:20:\"patch-user_token.sql\";}i:18;a:4:{i:0;s:8:\"addField\";i:1;s:9:\"watchlist\";i:2;s:24:\"wl_notificationtimestamp\";i:3;s:28:\"patch-email-notification.sql\";}i:19;a:1:{i:0;s:17:\"doWatchlistUpdate\";}i:20;a:4:{i:0;s:9:\"dropField\";i:1;s:4:\"user\";i:2;s:33:\"user_emailauthenticationtimestamp\";i:3;s:30:\"patch-email-authentication.sql\";}i:21;a:1:{i:0;s:21:\"doSchemaRestructuring\";}i:22;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"logging\";i:2;s:10:\"log_params\";i:3;s:20:\"patch-log_params.sql\";}i:23;a:4:{i:0;s:8:\"checkBin\";i:1;s:7:\"logging\";i:2;s:9:\"log_title\";i:3;s:23:\"patch-logging-title.sql\";}i:24;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:9:\"ar_rev_id\";i:3;s:24:\"patch-archive-rev_id.sql\";}i:25;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"page\";i:2;s:8:\"page_len\";i:3;s:18:\"patch-page_len.sql\";}i:26;a:4:{i:0;s:9:\"dropField\";i:1;s:8:\"revision\";i:2;s:17:\"inverse_timestamp\";i:3;s:27:\"patch-inverse_timestamp.sql\";}i:27;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"revision\";i:2;s:11:\"rev_text_id\";i:3;s:21:\"patch-rev_text_id.sql\";}i:28;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"revision\";i:2;s:11:\"rev_deleted\";i:3;s:21:\"patch-rev_deleted.sql\";}i:29;a:4:{i:0;s:8:\"addField\";i:1;s:5:\"image\";i:2;s:9:\"img_width\";i:3;s:19:\"patch-img_width.sql\";}i:30;a:4:{i:0;s:8:\"addField\";i:1;s:5:\"image\";i:2;s:12:\"img_metadata\";i:3;s:22:\"patch-img_metadata.sql\";}i:31;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:16:\"user_email_token\";i:3;s:26:\"patch-user_email_token.sql\";}i:32;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:10:\"ar_text_id\";i:3;s:25:\"patch-archive-text_id.sql\";}i:33;a:1:{i:0;s:15:\"doNamespaceSize\";}i:34;a:4:{i:0;s:8:\"addField\";i:1;s:5:\"image\";i:2;s:14:\"img_media_type\";i:3;s:24:\"patch-img_media_type.sql\";}i:35;a:1:{i:0;s:17:\"doPagelinksUpdate\";}i:36;a:4:{i:0;s:9:\"dropField\";i:1;s:5:\"image\";i:2;s:8:\"img_type\";i:3;s:23:\"patch-drop_img_type.sql\";}i:37;a:1:{i:0;s:18:\"doUserUniqueUpdate\";}i:38;a:1:{i:0;s:18:\"doUserGroupsUpdate\";}i:39;a:4:{i:0;s:8:\"addField\";i:1;s:10:\"site_stats\";i:2;s:14:\"ss_total_pages\";i:3;s:27:\"patch-ss_total_articles.sql\";}i:40;a:3:{i:0;s:8:\"addTable\";i:1;s:12:\"user_newtalk\";i:2;s:22:\"patch-usernewtalk2.sql\";}i:41;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"transcache\";i:2;s:20:\"patch-transcache.sql\";}i:42;a:4:{i:0;s:8:\"addField\";i:1;s:9:\"interwiki\";i:2;s:8:\"iw_trans\";i:3;s:25:\"patch-interwiki-trans.sql\";}i:43;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"trackbacks\";i:2;s:20:\"patch-trackbacks.sql\";}i:44;a:1:{i:0;s:15:\"doWatchlistNull\";}i:45;a:4:{i:0;s:8:\"addIndex\";i:1;s:7:\"logging\";i:2;s:5:\"times\";i:3;s:29:\"patch-logging-times-index.sql\";}i:46;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:15:\"ipb_range_start\";i:3;s:25:\"patch-ipb_range_start.sql\";}i:47;a:1:{i:0;s:18:\"doPageRandomUpdate\";}i:48;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:17:\"user_registration\";i:3;s:27:\"patch-user_registration.sql\";}i:49;a:1:{i:0;s:21:\"doTemplatelinksUpdate\";}i:50;a:3:{i:0;s:8:\"addTable\";i:1;s:13:\"externallinks\";i:2;s:23:\"patch-externallinks.sql\";}i:51;a:3:{i:0;s:8:\"addTable\";i:1;s:3:\"job\";i:2;s:13:\"patch-job.sql\";}i:52;a:4:{i:0;s:8:\"addField\";i:1;s:10:\"site_stats\";i:2;s:9:\"ss_images\";i:3;s:19:\"patch-ss_images.sql\";}i:53;a:3:{i:0;s:8:\"addTable\";i:1;s:9:\"langlinks\";i:2;s:19:\"patch-langlinks.sql\";}i:54;a:3:{i:0;s:8:\"addTable\";i:1;s:15:\"querycache_info\";i:2;s:24:\"patch-querycacheinfo.sql\";}i:55;a:3:{i:0;s:8:\"addTable\";i:1;s:11:\"filearchive\";i:2;s:21:\"patch-filearchive.sql\";}i:56;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:13:\"ipb_anon_only\";i:3;s:23:\"patch-ipb_anon_only.sql\";}i:57;a:4:{i:0;s:8:\"addIndex\";i:1;s:13:\"recentchanges\";i:2;s:14:\"rc_ns_usertext\";i:3;s:31:\"patch-recentchanges-utindex.sql\";}i:58;a:4:{i:0;s:8:\"addIndex\";i:1;s:13:\"recentchanges\";i:2;s:12:\"rc_user_text\";i:3;s:28:\"patch-rc_user_text-index.sql\";}i:59;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:17:\"user_newpass_time\";i:3;s:27:\"patch-user_newpass_time.sql\";}i:60;a:3:{i:0;s:8:\"addTable\";i:1;s:8:\"redirect\";i:2;s:18:\"patch-redirect.sql\";}i:61;a:3:{i:0;s:8:\"addTable\";i:1;s:13:\"querycachetwo\";i:2;s:23:\"patch-querycachetwo.sql\";}i:62;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:20:\"ipb_enable_autoblock\";i:3;s:32:\"patch-ipb_optional_autoblock.sql\";}i:63;a:1:{i:0;s:26:\"doBacklinkingIndicesUpdate\";}i:64;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:10:\"rc_old_len\";i:3;s:16:\"patch-rc_len.sql\";}i:65;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:14:\"user_editcount\";i:3;s:24:\"patch-user_editcount.sql\";}i:66;a:1:{i:0;s:20:\"doRestrictionsUpdate\";}i:67;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"logging\";i:2;s:6:\"log_id\";i:3;s:16:\"patch-log_id.sql\";}i:68;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"revision\";i:2;s:13:\"rev_parent_id\";i:3;s:23:\"patch-rev_parent_id.sql\";}i:69;a:4:{i:0;s:8:\"addField\";i:1;s:17:\"page_restrictions\";i:2;s:5:\"pr_id\";i:3;s:35:\"patch-page_restrictions_sortkey.sql\";}i:70;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"revision\";i:2;s:7:\"rev_len\";i:3;s:17:\"patch-rev_len.sql\";}i:71;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:10:\"rc_deleted\";i:3;s:20:\"patch-rc_deleted.sql\";}i:72;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"logging\";i:2;s:11:\"log_deleted\";i:3;s:21:\"patch-log_deleted.sql\";}i:73;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:10:\"ar_deleted\";i:3;s:20:\"patch-ar_deleted.sql\";}i:74;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:11:\"ipb_deleted\";i:3;s:21:\"patch-ipb_deleted.sql\";}i:75;a:4:{i:0;s:8:\"addField\";i:1;s:11:\"filearchive\";i:2;s:10:\"fa_deleted\";i:3;s:20:\"patch-fa_deleted.sql\";}i:76;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:6:\"ar_len\";i:3;s:16:\"patch-ar_len.sql\";}i:77;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:15:\"ipb_block_email\";i:3;s:22:\"patch-ipb_emailban.sql\";}i:78;a:1:{i:0;s:28:\"doCategorylinksIndicesUpdate\";}i:79;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"oldimage\";i:2;s:11:\"oi_metadata\";i:3;s:21:\"patch-oi_metadata.sql\";}i:80;a:4:{i:0;s:8:\"addIndex\";i:1;s:7:\"archive\";i:2;s:18:\"usertext_timestamp\";i:3;s:28:\"patch-archive-user-index.sql\";}i:81;a:4:{i:0;s:8:\"addIndex\";i:1;s:5:\"image\";i:2;s:22:\"img_usertext_timestamp\";i:3;s:26:\"patch-image-user-index.sql\";}i:82;a:4:{i:0;s:8:\"addIndex\";i:1;s:8:\"oldimage\";i:2;s:21:\"oi_usertext_timestamp\";i:3;s:29:\"patch-oldimage-user-index.sql\";}i:83;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:10:\"ar_page_id\";i:3;s:25:\"patch-archive-page_id.sql\";}i:84;a:4:{i:0;s:8:\"addField\";i:1;s:5:\"image\";i:2;s:8:\"img_sha1\";i:3;s:18:\"patch-img_sha1.sql\";}i:85;a:3:{i:0;s:8:\"addTable\";i:1;s:16:\"protected_titles\";i:2;s:26:\"patch-protected_titles.sql\";}i:86;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:11:\"ipb_by_text\";i:3;s:21:\"patch-ipb_by_text.sql\";}i:87;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"page_props\";i:2;s:20:\"patch-page_props.sql\";}i:88;a:3:{i:0;s:8:\"addTable\";i:1;s:9:\"updatelog\";i:2;s:19:\"patch-updatelog.sql\";}i:89;a:3:{i:0;s:8:\"addTable\";i:1;s:8:\"category\";i:2;s:18:\"patch-category.sql\";}i:90;a:1:{i:0;s:20:\"doCategoryPopulation\";}i:91;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:12:\"ar_parent_id\";i:3;s:22:\"patch-ar_parent_id.sql\";}i:92;a:4:{i:0;s:8:\"addField\";i:1;s:12:\"user_newtalk\";i:2;s:19:\"user_last_timestamp\";i:3;s:29:\"patch-user_last_timestamp.sql\";}i:93;a:1:{i:0;s:18:\"doPopulateParentId\";}i:94;a:4:{i:0;s:8:\"checkBin\";i:1;s:16:\"protected_titles\";i:2;s:8:\"pt_title\";i:3;s:27:\"patch-pt_title-encoding.sql\";}i:95;a:1:{i:0;s:28:\"doMaybeProfilingMemoryUpdate\";}i:96;a:1:{i:0;s:26:\"doFilearchiveIndicesUpdate\";}i:97;a:4:{i:0;s:8:\"addField\";i:1;s:10:\"site_stats\";i:2;s:15:\"ss_active_users\";i:3;s:25:\"patch-ss_active_users.sql\";}i:98;a:1:{i:0;s:17:\"doActiveUsersInit\";}i:99;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:18:\"ipb_allow_usertalk\";i:3;s:28:\"patch-ipb_allow_usertalk.sql\";}i:100;a:1:{i:0;s:14:\"doUniquePlTlIl\";}i:101;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"change_tag\";i:2;s:20:\"patch-change_tag.sql\";}i:102;a:3:{i:0;s:8:\"addTable\";i:1;s:11:\"tag_summary\";i:2;s:20:\"patch-change_tag.sql\";}i:103;a:3:{i:0;s:8:\"addTable\";i:1;s:9:\"valid_tag\";i:2;s:20:\"patch-change_tag.sql\";}i:104;a:3:{i:0;s:8:\"addTable\";i:1;s:15:\"user_properties\";i:2;s:25:\"patch-user_properties.sql\";}i:105;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"log_search\";i:2;s:20:\"patch-log_search.sql\";}i:106;a:1:{i:0;s:21:\"doLogSearchPopulation\";}i:107;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"logging\";i:2;s:13:\"log_user_text\";i:3;s:23:\"patch-log_user_text.sql\";}i:108;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"l10n_cache\";i:2;s:20:\"patch-l10n_cache.sql\";}i:109;a:3:{i:0;s:8:\"addTable\";i:1;s:13:\"external_user\";i:2;s:23:\"patch-external_user.sql\";}i:110;a:4:{i:0;s:8:\"addIndex\";i:1;s:10:\"log_search\";i:2;s:12:\"ls_field_val\";i:3;s:33:\"patch-log_search-rename-index.sql\";}i:111;a:4:{i:0;s:8:\"addIndex\";i:1;s:10:\"change_tag\";i:2;s:17:\"change_tag_rc_tag\";i:3;s:28:\"patch-change_tag-indexes.sql\";}i:112;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"redirect\";i:2;s:12:\"rd_interwiki\";i:3;s:22:\"patch-rd_interwiki.sql\";}i:113;a:1:{i:0;s:23:\"doUpdateTranscacheField\";}i:114;a:1:{i:0;s:14:\"renameEuWikiId\";}i:115;a:1:{i:0;s:22:\"doUpdateMimeMinorField\";}i:116;a:1:{i:0;s:16:\"doPopulateRevLen\";}i:117;a:3:{i:0;s:8:\"addTable\";i:1;s:7:\"iwlinks\";i:2;s:17:\"patch-iwlinks.sql\";}i:118;a:4:{i:0;s:8:\"addIndex\";i:1;s:7:\"iwlinks\";i:2;s:21:\"iwl_prefix_title_from\";i:3;s:27:\"patch-rename-iwl_prefix.sql\";}i:119;a:4:{i:0;s:8:\"addField\";i:1;s:9:\"updatelog\";i:2;s:8:\"ul_value\";i:3;s:18:\"patch-ul_value.sql\";}i:120;a:4:{i:0;s:8:\"addField\";i:1;s:9:\"interwiki\";i:2;s:6:\"iw_api\";i:3;s:27:\"patch-iw_api_and_wikiid.sql\";}i:121;a:4:{i:0;s:9:\"dropIndex\";i:1;s:7:\"iwlinks\";i:2;s:10:\"iwl_prefix\";i:3;s:25:\"patch-kill-iwl_prefix.sql\";}i:122;a:4:{i:0;s:9:\"dropIndex\";i:1;s:7:\"iwlinks\";i:2;s:21:\"iwl_prefix_from_title\";i:3;s:22:\"patch-kill-iwl_pft.sql\";}i:123;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"categorylinks\";i:2;s:12:\"cl_collation\";i:3;s:40:\"patch-categorylinks-better-collation.sql\";}i:124;a:1:{i:0;s:16:\"doClFieldsUpdate\";}i:125;a:1:{i:0;s:17:\"doCollationUpdate\";}i:126;a:3:{i:0;s:8:\"addTable\";i:1;s:12:\"msg_resource\";i:2;s:22:\"patch-msg_resource.sql\";}i:127;a:3:{i:0;s:8:\"addTable\";i:1;s:11:\"module_deps\";i:2;s:21:\"patch-module_deps.sql\";}}');
+/*!40000 ALTER TABLE `mw_updatelog` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user`
+--
+
+DROP TABLE IF EXISTS `mw_user`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user` (
+ `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `user_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `user_real_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `user_password` tinyblob NOT NULL,
+ `user_newpassword` tinyblob NOT NULL,
+ `user_newpass_time` binary(14) DEFAULT NULL,
+ `user_email` tinytext NOT NULL,
+ `user_options` blob NOT NULL,
+ `user_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `user_token` binary(32) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `user_email_authenticated` binary(14) DEFAULT NULL,
+ `user_email_token` binary(32) DEFAULT NULL,
+ `user_email_token_expires` binary(14) DEFAULT NULL,
+ `user_registration` binary(14) DEFAULT NULL,
+ `user_editcount` int(11) DEFAULT NULL,
+ PRIMARY KEY (`user_id`),
+ UNIQUE KEY `user_name` (`user_name`),
+ KEY `user_email_token` (`user_email_token`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user`
+--
+
+LOCK TABLES `mw_user` WRITE;
+/*!40000 ALTER TABLE `mw_user` DISABLE KEYS */;
+INSERT INTO `mw_user` VALUES (1,'WikiSysop','',':B:9c595470:df2c1237ae75896744457e7dfbeb7f90','',NULL,'','','20110110173136','5e3b582786fa8150118cfa78f18de0c5',NULL,'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',NULL,'20110107184113',1);
+/*!40000 ALTER TABLE `mw_user` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user_groups`
+--
+
+DROP TABLE IF EXISTS `mw_user_groups`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user_groups` (
+ `ug_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `ug_group` varbinary(16) NOT NULL DEFAULT '',
+ UNIQUE KEY `ug_user_group` (`ug_user`,`ug_group`),
+ KEY `ug_group` (`ug_group`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user_groups`
+--
+
+LOCK TABLES `mw_user_groups` WRITE;
+/*!40000 ALTER TABLE `mw_user_groups` DISABLE KEYS */;
+INSERT INTO `mw_user_groups` VALUES (1,'bureaucrat'),(1,'sysop');
+/*!40000 ALTER TABLE `mw_user_groups` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user_newtalk`
+--
+
+DROP TABLE IF EXISTS `mw_user_newtalk`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user_newtalk` (
+ `user_id` int(11) NOT NULL DEFAULT '0',
+ `user_ip` varbinary(40) NOT NULL DEFAULT '',
+ `user_last_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ KEY `user_id` (`user_id`),
+ KEY `user_ip` (`user_ip`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user_newtalk`
+--
+
+LOCK TABLES `mw_user_newtalk` WRITE;
+/*!40000 ALTER TABLE `mw_user_newtalk` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_user_newtalk` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user_properties`
+--
+
+DROP TABLE IF EXISTS `mw_user_properties`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user_properties` (
+ `up_user` int(11) NOT NULL,
+ `up_property` varbinary(32) NOT NULL,
+ `up_value` blob,
+ UNIQUE KEY `user_properties_user_property` (`up_user`,`up_property`),
+ KEY `user_properties_property` (`up_property`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user_properties`
+--
+
+LOCK TABLES `mw_user_properties` WRITE;
+/*!40000 ALTER TABLE `mw_user_properties` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_user_properties` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_valid_tag`
+--
+
+DROP TABLE IF EXISTS `mw_valid_tag`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_valid_tag` (
+ `vt_tag` varchar(255) NOT NULL,
+ PRIMARY KEY (`vt_tag`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_valid_tag`
+--
+
+LOCK TABLES `mw_valid_tag` WRITE;
+/*!40000 ALTER TABLE `mw_valid_tag` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_valid_tag` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_watchlist`
+--
+
+DROP TABLE IF EXISTS `mw_watchlist`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_watchlist` (
+ `wl_user` int(10) unsigned NOT NULL,
+ `wl_namespace` int(11) NOT NULL DEFAULT '0',
+ `wl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `wl_notificationtimestamp` varbinary(14) DEFAULT NULL,
+ UNIQUE KEY `wl_user` (`wl_user`,`wl_namespace`,`wl_title`),
+ KEY `namespace_title` (`wl_namespace`,`wl_title`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_watchlist`
+--
+
+LOCK TABLES `mw_watchlist` WRITE;
+/*!40000 ALTER TABLE `mw_watchlist` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_watchlist` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2011-01-10 9:34:34
diff --git a/tests/selenium/data/SimpleSeleniumTestImages.zip b/tests/selenium/data/SimpleSeleniumTestImages.zip
new file mode 100644
index 00000000..0374a1fb
--- /dev/null
+++ b/tests/selenium/data/SimpleSeleniumTestImages.zip
Binary files differ
diff --git a/tests/selenium/data/Wikipedia-logo-v2-de.png b/tests/selenium/data/Wikipedia-logo-v2-de.png
new file mode 100644
index 00000000..70385243
--- /dev/null
+++ b/tests/selenium/data/Wikipedia-logo-v2-de.png
Binary files differ
diff --git a/tests/selenium/data/mediawiki118_fresh_installation.sql b/tests/selenium/data/mediawiki118_fresh_installation.sql
new file mode 100644
index 00000000..89bc3191
--- /dev/null
+++ b/tests/selenium/data/mediawiki118_fresh_installation.sql
@@ -0,0 +1,1544 @@
+-- MySQL dump 10.13 Distrib 5.1.41, for Win32 (ia32)
+--
+-- Host: localhost Database: test_wiki
+-- ------------------------------------------------------
+-- Server version 5.1.41
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `mw_archive`
+--
+
+DROP TABLE IF EXISTS `mw_archive`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_archive` (
+ `ar_namespace` int(11) NOT NULL DEFAULT '0',
+ `ar_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `ar_text` mediumblob NOT NULL,
+ `ar_comment` tinyblob NOT NULL,
+ `ar_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `ar_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `ar_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `ar_minor_edit` tinyint(4) NOT NULL DEFAULT '0',
+ `ar_flags` tinyblob NOT NULL,
+ `ar_rev_id` int(10) unsigned DEFAULT NULL,
+ `ar_text_id` int(10) unsigned DEFAULT NULL,
+ `ar_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `ar_len` int(10) unsigned DEFAULT NULL,
+ `ar_page_id` int(10) unsigned DEFAULT NULL,
+ `ar_parent_id` int(10) unsigned DEFAULT NULL,
+ KEY `name_title_timestamp` (`ar_namespace`,`ar_title`,`ar_timestamp`),
+ KEY `usertext_timestamp` (`ar_user_text`,`ar_timestamp`),
+ KEY `ar_page_revid` (`ar_namespace`,`ar_title`,`ar_rev_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_archive`
+--
+
+LOCK TABLES `mw_archive` WRITE;
+/*!40000 ALTER TABLE `mw_archive` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_archive` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_category`
+--
+
+DROP TABLE IF EXISTS `mw_category`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_category` (
+ `cat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cat_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `cat_pages` int(11) NOT NULL DEFAULT '0',
+ `cat_subcats` int(11) NOT NULL DEFAULT '0',
+ `cat_files` int(11) NOT NULL DEFAULT '0',
+ `cat_hidden` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`cat_id`),
+ UNIQUE KEY `cat_title` (`cat_title`),
+ KEY `cat_pages` (`cat_pages`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_category`
+--
+
+LOCK TABLES `mw_category` WRITE;
+/*!40000 ALTER TABLE `mw_category` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_category` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_categorylinks`
+--
+
+DROP TABLE IF EXISTS `mw_categorylinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_categorylinks` (
+ `cl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `cl_to` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `cl_sortkey` varbinary(230) NOT NULL DEFAULT '',
+ `cl_sortkey_prefix` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `cl_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `cl_collation` varbinary(32) NOT NULL DEFAULT '',
+ `cl_type` enum('page','subcat','file') NOT NULL DEFAULT 'page',
+ UNIQUE KEY `cl_from` (`cl_from`,`cl_to`),
+ KEY `cl_sortkey` (`cl_to`,`cl_type`,`cl_sortkey`,`cl_from`),
+ KEY `cl_timestamp` (`cl_to`,`cl_timestamp`),
+ KEY `cl_collation` (`cl_collation`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_categorylinks`
+--
+
+LOCK TABLES `mw_categorylinks` WRITE;
+/*!40000 ALTER TABLE `mw_categorylinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_categorylinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_change_tag`
+--
+
+DROP TABLE IF EXISTS `mw_change_tag`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_change_tag` (
+ `ct_rc_id` int(11) DEFAULT NULL,
+ `ct_log_id` int(11) DEFAULT NULL,
+ `ct_rev_id` int(11) DEFAULT NULL,
+ `ct_tag` varchar(255) NOT NULL,
+ `ct_params` blob,
+ UNIQUE KEY `change_tag_rc_tag` (`ct_rc_id`,`ct_tag`),
+ UNIQUE KEY `change_tag_log_tag` (`ct_log_id`,`ct_tag`),
+ UNIQUE KEY `change_tag_rev_tag` (`ct_rev_id`,`ct_tag`),
+ KEY `change_tag_tag_id` (`ct_tag`,`ct_rc_id`,`ct_rev_id`,`ct_log_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_change_tag`
+--
+
+LOCK TABLES `mw_change_tag` WRITE;
+/*!40000 ALTER TABLE `mw_change_tag` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_change_tag` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_external_user`
+--
+
+DROP TABLE IF EXISTS `mw_external_user`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_external_user` (
+ `eu_local_id` int(10) unsigned NOT NULL,
+ `eu_external_id` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ PRIMARY KEY (`eu_local_id`),
+ UNIQUE KEY `eu_external_id` (`eu_external_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_external_user`
+--
+
+LOCK TABLES `mw_external_user` WRITE;
+/*!40000 ALTER TABLE `mw_external_user` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_external_user` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_externallinks`
+--
+
+DROP TABLE IF EXISTS `mw_externallinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_externallinks` (
+ `el_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `el_to` blob NOT NULL,
+ `el_index` blob NOT NULL,
+ KEY `el_from` (`el_from`,`el_to`(40)),
+ KEY `el_to` (`el_to`(60),`el_from`),
+ KEY `el_index` (`el_index`(60))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_externallinks`
+--
+
+LOCK TABLES `mw_externallinks` WRITE;
+/*!40000 ALTER TABLE `mw_externallinks` DISABLE KEYS */;
+INSERT INTO `mw_externallinks` VALUES (1,'http://meta.wikimedia.org/wiki/Help:Contents','http://org.wikimedia.meta./wiki/Help:Contents');
+INSERT INTO `mw_externallinks` VALUES (1,'http://www.mediawiki.org/wiki/Manual:Configuration_settings','http://org.mediawiki.www./wiki/Manual:Configuration_settings');
+INSERT INTO `mw_externallinks` VALUES (1,'http://www.mediawiki.org/wiki/Manual:FAQ','http://org.mediawiki.www./wiki/Manual:FAQ');
+INSERT INTO `mw_externallinks` VALUES (1,'https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce','https://org.wikimedia.lists./mailman/listinfo/mediawiki-announce');
+/*!40000 ALTER TABLE `mw_externallinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_filearchive`
+--
+
+DROP TABLE IF EXISTS `mw_filearchive`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_filearchive` (
+ `fa_id` int(11) NOT NULL AUTO_INCREMENT,
+ `fa_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `fa_archive_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT '',
+ `fa_storage_group` varbinary(16) DEFAULT NULL,
+ `fa_storage_key` varbinary(64) DEFAULT '',
+ `fa_deleted_user` int(11) DEFAULT NULL,
+ `fa_deleted_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `fa_deleted_reason` text,
+ `fa_size` int(10) unsigned DEFAULT '0',
+ `fa_width` int(11) DEFAULT '0',
+ `fa_height` int(11) DEFAULT '0',
+ `fa_metadata` mediumblob,
+ `fa_bits` int(11) DEFAULT '0',
+ `fa_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
+ `fa_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') DEFAULT 'unknown',
+ `fa_minor_mime` varbinary(100) DEFAULT 'unknown',
+ `fa_description` tinyblob,
+ `fa_user` int(10) unsigned DEFAULT '0',
+ `fa_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
+ `fa_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `fa_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`fa_id`),
+ KEY `fa_name` (`fa_name`,`fa_timestamp`),
+ KEY `fa_storage_group` (`fa_storage_group`,`fa_storage_key`),
+ KEY `fa_deleted_timestamp` (`fa_deleted_timestamp`),
+ KEY `fa_user_timestamp` (`fa_user_text`,`fa_timestamp`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_filearchive`
+--
+
+LOCK TABLES `mw_filearchive` WRITE;
+/*!40000 ALTER TABLE `mw_filearchive` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_filearchive` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_hitcounter`
+--
+
+DROP TABLE IF EXISTS `mw_hitcounter`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_hitcounter` (
+ `hc_id` int(10) unsigned NOT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 MAX_ROWS=25000;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_hitcounter`
+--
+
+LOCK TABLES `mw_hitcounter` WRITE;
+/*!40000 ALTER TABLE `mw_hitcounter` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_hitcounter` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_image`
+--
+
+DROP TABLE IF EXISTS `mw_image`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_image` (
+ `img_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `img_size` int(10) unsigned NOT NULL DEFAULT '0',
+ `img_width` int(11) NOT NULL DEFAULT '0',
+ `img_height` int(11) NOT NULL DEFAULT '0',
+ `img_metadata` mediumblob NOT NULL,
+ `img_bits` int(11) NOT NULL DEFAULT '0',
+ `img_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
+ `img_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') NOT NULL DEFAULT 'unknown',
+ `img_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown',
+ `img_description` tinyblob NOT NULL,
+ `img_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `img_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `img_timestamp` varbinary(14) NOT NULL DEFAULT '',
+ `img_sha1` varbinary(32) NOT NULL DEFAULT '',
+ PRIMARY KEY (`img_name`),
+ KEY `img_usertext_timestamp` (`img_user_text`,`img_timestamp`),
+ KEY `img_size` (`img_size`),
+ KEY `img_timestamp` (`img_timestamp`),
+ KEY `img_sha1` (`img_sha1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_image`
+--
+
+LOCK TABLES `mw_image` WRITE;
+/*!40000 ALTER TABLE `mw_image` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_image` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_imagelinks`
+--
+
+DROP TABLE IF EXISTS `mw_imagelinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_imagelinks` (
+ `il_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `il_to` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `il_from` (`il_from`,`il_to`),
+ UNIQUE KEY `il_to` (`il_to`,`il_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_imagelinks`
+--
+
+LOCK TABLES `mw_imagelinks` WRITE;
+/*!40000 ALTER TABLE `mw_imagelinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_imagelinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_interwiki`
+--
+
+DROP TABLE IF EXISTS `mw_interwiki`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_interwiki` (
+ `iw_prefix` varchar(32) NOT NULL,
+ `iw_url` blob NOT NULL,
+ `iw_api` blob NOT NULL,
+ `iw_wikiid` varchar(64) NOT NULL,
+ `iw_local` tinyint(1) NOT NULL,
+ `iw_trans` tinyint(4) NOT NULL DEFAULT '0',
+ UNIQUE KEY `iw_prefix` (`iw_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_interwiki`
+--
+
+LOCK TABLES `mw_interwiki` WRITE;
+/*!40000 ALTER TABLE `mw_interwiki` DISABLE KEYS */;
+INSERT INTO `mw_interwiki` VALUES ('acronym','http://www.acronymfinder.com/af-query.asp?String=exact&Acronym=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('advogato','http://www.advogato.org/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('annotationwiki','http://www.seedwiki.com/page.cfm?wikiid=368&doc=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('arxiv','http://www.arxiv.org/abs/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('c2find','http://c2.com/cgi/wiki?FindPage&value=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('cache','http://www.google.com/search?q=cache:$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('commons','http://commons.wikimedia.org/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('corpknowpedia','http://corpknowpedia.org/wiki/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('dictionary','http://www.dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('disinfopedia','http://www.disinfopedia.org/wiki.phtml?title=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('docbook','http://wiki.docbook.org/topic/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('doi','http://dx.doi.org/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('drumcorpswiki','http://www.drumcorpswiki.com/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('dwjwiki','http://www.suberic.net/cgi-bin/dwj/wiki.cgi?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('elibre','http://enciclopedia.us.es/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('emacswiki','http://www.emacswiki.org/cgi-bin/wiki.pl?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('foldoc','http://foldoc.org/?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('foxwiki','http://fox.wikis.com/wc.dll?Wiki~$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('freebsdman','http://www.FreeBSD.org/cgi/man.cgi?apropos=1&query=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('gej','http://www.esperanto.de/cgi-bin/aktivikio/wiki.pl?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('gentoo-wiki','http://gentoo-wiki.com/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('google','http://www.google.com/search?q=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('googlegroups','http://groups.google.com/groups?q=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('hammondwiki','http://www.dairiki.org/HammondWiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('hewikisource','http://he.wikisource.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('hrwiki','http://www.hrwiki.org/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('imdb','http://us.imdb.com/Title?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('jargonfile','http://sunir.org/apps/meta.pl?wiki=JargonFile&redirect=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('jspwiki','http://www.jspwiki.org/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('keiki','http://kei.ki/en/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('kmwiki','http://kmwiki.wikispaces.com/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('linuxwiki','http://linuxwiki.de/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('lojban','http://www.lojban.org/tiki/tiki-index.php?page=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('lqwiki','http://wiki.linuxquestions.org/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('lugkr','http://lug-kr.sourceforge.net/cgi-bin/lugwiki.pl?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('mathsongswiki','http://SeedWiki.com/page.cfm?wikiid=237&doc=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('meatball','http://www.usemod.com/cgi-bin/mb.pl?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('mediawikiwiki','http://www.mediawiki.org/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('mediazilla','https://bugzilla.wikimedia.org/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('memoryalpha','http://www.memory-alpha.org/en/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('metawiki','http://sunir.org/apps/meta.pl?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('metawikipedia','http://meta.wikimedia.org/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('moinmoin','http://purl.net/wiki/moin/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('mozillawiki','http://wiki.mozilla.org/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('mw','http://www.mediawiki.org/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('oeis','http://www.research.att.com/cgi-bin/access.cgi/as/njas/sequences/eisA.cgi?Anum=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('openfacts','http://openfacts.berlios.de/index.phtml?title=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('openwiki','http://openwiki.com/?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('pmeg','http://www.bertilow.com/pmeg/$1.php','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('ppr','http://c2.com/cgi/wiki?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('pythoninfo','http://wiki.python.org/moin/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('rfc','http://www.rfc-editor.org/rfc/rfc$1.txt','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('s23wiki','http://is-root.de/wiki/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('seattlewiki','http://seattle.wikia.com/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('seattlewireless','http://seattlewireless.net/?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('senseislibrary','http://senseis.xmp.net/?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('sourceforge','http://sourceforge.net/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('squeak','http://wiki.squeak.org/squeak/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('susning','http://www.susning.nu/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('svgwiki','http://wiki.svg.org/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('tavi','http://tavi.sourceforge.net/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('tejo','http://www.tejo.org/vikio/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('theopedia','http://www.theopedia.com/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('tmbw','http://www.tmbw.net/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('tmnet','http://www.technomanifestos.net/?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('tmwiki','http://www.EasyTopicMaps.com/?page=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('twiki','http://twiki.org/cgi-bin/view/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('uea','http://www.tejo.org/uea/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('unreal','http://wiki.beyondunreal.com/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('usemod','http://www.usemod.com/cgi-bin/wiki.pl?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('vinismo','http://vinismo.com/en/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('webseitzwiki','http://webseitz.fluxent.com/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('why','http://clublet.com/c/c/why?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wiki','http://c2.com/cgi/wiki?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikia','http://www.wikia.com/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikibooks','http://en.wikibooks.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wikicities','http://www.wikia.com/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikif1','http://www.wikif1.org/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikihow','http://www.wikihow.com/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikimedia','http://wikimediafoundation.org/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikinews','http://en.wikinews.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wikinfo','http://www.wikinfo.org/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikipedia','http://en.wikipedia.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wikiquote','http://en.wikiquote.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wikisource','http://wikisource.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wikispecies','http://species.wikimedia.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wikitravel','http://wikitravel.org/en/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikiversity','http://en.wikiversity.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wikt','http://en.wiktionary.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wiktionary','http://en.wiktionary.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wlug','http://www.wlug.org.nz/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('zwiki','http://zwiki.org/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('zzz wiki','http://wiki.zzz.ee/index.php/$1','','',0,0);
+/*!40000 ALTER TABLE `mw_interwiki` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_ipblocks`
+--
+
+DROP TABLE IF EXISTS `mw_ipblocks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_ipblocks` (
+ `ipb_id` int(11) NOT NULL AUTO_INCREMENT,
+ `ipb_address` tinyblob NOT NULL,
+ `ipb_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `ipb_by` int(10) unsigned NOT NULL DEFAULT '0',
+ `ipb_by_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `ipb_reason` tinyblob NOT NULL,
+ `ipb_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `ipb_auto` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_anon_only` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_create_account` tinyint(1) NOT NULL DEFAULT '1',
+ `ipb_enable_autoblock` tinyint(1) NOT NULL DEFAULT '1',
+ `ipb_expiry` varbinary(14) NOT NULL DEFAULT '',
+ `ipb_range_start` tinyblob NOT NULL,
+ `ipb_range_end` tinyblob NOT NULL,
+ `ipb_deleted` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_block_email` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_allow_usertalk` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ipb_id`),
+ UNIQUE KEY `ipb_address` (`ipb_address`(255),`ipb_user`,`ipb_auto`,`ipb_anon_only`),
+ KEY `ipb_user` (`ipb_user`),
+ KEY `ipb_range` (`ipb_range_start`(8),`ipb_range_end`(8)),
+ KEY `ipb_timestamp` (`ipb_timestamp`),
+ KEY `ipb_expiry` (`ipb_expiry`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_ipblocks`
+--
+
+LOCK TABLES `mw_ipblocks` WRITE;
+/*!40000 ALTER TABLE `mw_ipblocks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_ipblocks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_iwlinks`
+--
+
+DROP TABLE IF EXISTS `mw_iwlinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_iwlinks` (
+ `iwl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `iwl_prefix` varbinary(20) NOT NULL DEFAULT '',
+ `iwl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `iwl_from` (`iwl_from`,`iwl_prefix`,`iwl_title`),
+ UNIQUE KEY `iwl_prefix_title_from` (`iwl_prefix`,`iwl_title`,`iwl_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_iwlinks`
+--
+
+LOCK TABLES `mw_iwlinks` WRITE;
+/*!40000 ALTER TABLE `mw_iwlinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_iwlinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_job`
+--
+
+DROP TABLE IF EXISTS `mw_job`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_job` (
+ `job_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `job_cmd` varbinary(60) NOT NULL DEFAULT '',
+ `job_namespace` int(11) NOT NULL,
+ `job_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `job_params` blob NOT NULL,
+ PRIMARY KEY (`job_id`),
+ KEY `job_cmd` (`job_cmd`,`job_namespace`,`job_title`,`job_params`(128))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_job`
+--
+
+LOCK TABLES `mw_job` WRITE;
+/*!40000 ALTER TABLE `mw_job` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_job` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_l10n_cache`
+--
+
+DROP TABLE IF EXISTS `mw_l10n_cache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_l10n_cache` (
+ `lc_lang` varbinary(32) NOT NULL,
+ `lc_key` varchar(255) NOT NULL,
+ `lc_value` mediumblob NOT NULL,
+ KEY `lc_lang_key` (`lc_lang`,`lc_key`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+
+
+--
+-- Table structure for table `mw_langlinks`
+--
+
+DROP TABLE IF EXISTS `mw_langlinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_langlinks` (
+ `ll_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `ll_lang` varbinary(20) NOT NULL DEFAULT '',
+ `ll_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `ll_from` (`ll_from`,`ll_lang`),
+ KEY `ll_lang` (`ll_lang`,`ll_title`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_langlinks`
+--
+
+LOCK TABLES `mw_langlinks` WRITE;
+/*!40000 ALTER TABLE `mw_langlinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_langlinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_log_search`
+--
+
+DROP TABLE IF EXISTS `mw_log_search`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_log_search` (
+ `ls_field` varbinary(32) NOT NULL,
+ `ls_value` varchar(255) NOT NULL,
+ `ls_log_id` int(10) unsigned NOT NULL DEFAULT '0',
+ UNIQUE KEY `ls_field_val` (`ls_field`,`ls_value`,`ls_log_id`),
+ KEY `ls_log_id` (`ls_log_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_log_search`
+--
+
+LOCK TABLES `mw_log_search` WRITE;
+/*!40000 ALTER TABLE `mw_log_search` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_log_search` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_logging`
+--
+
+DROP TABLE IF EXISTS `mw_logging`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_logging` (
+ `log_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `log_type` varbinary(32) NOT NULL DEFAULT '',
+ `log_action` varbinary(32) NOT NULL DEFAULT '',
+ `log_timestamp` binary(14) NOT NULL DEFAULT '19700101000000',
+ `log_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `log_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `log_namespace` int(11) NOT NULL DEFAULT '0',
+ `log_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `log_page` int(10) unsigned DEFAULT NULL,
+ `log_comment` varchar(255) NOT NULL DEFAULT '',
+ `log_params` blob NOT NULL,
+ `log_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`log_id`),
+ KEY `type_time` (`log_type`,`log_timestamp`),
+ KEY `user_time` (`log_user`,`log_timestamp`),
+ KEY `page_time` (`log_namespace`,`log_title`,`log_timestamp`),
+ KEY `times` (`log_timestamp`),
+ KEY `log_user_type_time` (`log_user`,`log_type`,`log_timestamp`),
+ KEY `log_page_id_time` (`log_page`,`log_timestamp`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_logging`
+--
+
+LOCK TABLES `mw_logging` WRITE;
+/*!40000 ALTER TABLE `mw_logging` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_logging` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_math`
+--
+
+DROP TABLE IF EXISTS `mw_math`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_math` (
+ `math_inputhash` varbinary(16) NOT NULL,
+ `math_outputhash` varbinary(16) NOT NULL,
+ `math_html_conservativeness` tinyint(4) NOT NULL,
+ `math_html` text,
+ `math_mathml` text,
+ UNIQUE KEY `math_inputhash` (`math_inputhash`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_math`
+--
+
+LOCK TABLES `mw_math` WRITE;
+/*!40000 ALTER TABLE `mw_math` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_math` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_module_deps`
+--
+
+DROP TABLE IF EXISTS `mw_module_deps`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_module_deps` (
+ `md_module` varbinary(255) NOT NULL,
+ `md_skin` varbinary(32) NOT NULL,
+ `md_deps` mediumblob NOT NULL,
+ UNIQUE KEY `md_module_skin` (`md_module`,`md_skin`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_module_deps`
+--
+
+LOCK TABLES `mw_module_deps` WRITE;
+/*!40000 ALTER TABLE `mw_module_deps` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_module_deps` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_msg_resource`
+--
+
+DROP TABLE IF EXISTS `mw_msg_resource`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_msg_resource` (
+ `mr_resource` varbinary(255) NOT NULL,
+ `mr_lang` varbinary(32) NOT NULL,
+ `mr_blob` mediumblob NOT NULL,
+ `mr_timestamp` binary(14) NOT NULL,
+ UNIQUE KEY `mr_resource_lang` (`mr_resource`,`mr_lang`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_msg_resource`
+--
+
+LOCK TABLES `mw_msg_resource` WRITE;
+/*!40000 ALTER TABLE `mw_msg_resource` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_msg_resource` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_msg_resource_links`
+--
+
+DROP TABLE IF EXISTS `mw_msg_resource_links`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_msg_resource_links` (
+ `mrl_resource` varbinary(255) NOT NULL,
+ `mrl_message` varbinary(255) NOT NULL,
+ UNIQUE KEY `mrl_message_resource` (`mrl_message`,`mrl_resource`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_msg_resource_links`
+--
+
+LOCK TABLES `mw_msg_resource_links` WRITE;
+/*!40000 ALTER TABLE `mw_msg_resource_links` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_msg_resource_links` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_objectcache`
+--
+
+DROP TABLE IF EXISTS `mw_objectcache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_objectcache` (
+ `keyname` varbinary(255) NOT NULL DEFAULT '',
+ `value` mediumblob,
+ `exptime` datetime DEFAULT NULL,
+ PRIMARY KEY (`keyname`),
+ KEY `exptime` (`exptime`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_objectcache`
+--
+
+LOCK TABLES `mw_objectcache` WRITE;
+/*!40000 ALTER TABLE `mw_objectcache` DISABLE KEYS */;
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:messages:en','K2.2R\ns\r\nSδ2\0','2010-12-31 13:16:31');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:pcache:idhash:1-0!*!*!!en!*','V[oFg~BPm)$TKU\08$9a\rIlX>ܹqSa,ʕ x?[~ʃ|.Z$8Y\'IYK-\04UJ\'&uB):IEmsk``kQva\rZt0+P%GEـJX;\n-sP@Bb8~첒$eaυf+0[,Fxd\'z0BJ=Jc\\:&BT\'CFdÿ׆FqGd%8G0AI; Ԙ`75LI\r({cg+8Qr&ͦA)VЕPT\\UƧtnZeSfJZ(VP}0ON =j\\H y\\U[h]T: bdu+j%\'6kf:E;@Yך4Ȁq Zº6<b3TU(d,\nY|e\'5TfU8}\"m/}Uk9o;|*R?n 3dg1y\\f8gkw=:/Y7ۋ^<Ōv#iC#6\Z.0Ua$4=\Z;4Y=5:kpΐqŦ4XCqYߵ-LjDf :(3t14CJ#WXTΔy:^6v7IUEe(p0ga6MjSc,ѫ@ޅ+RAxХ\'6utǷbۛ`j8ؚGIC<KS5|krJ\ry\\b3xPua@$SS`tQ.gwW\r@\'w xZ(>5{ dw>=J)\r6t XMB\nŖTb>qg 7 zn7vwr-%u-QiiX1NeA#vӧ3?','2010-12-31 13:16:31');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:pcache:idoptions:1','E@ D` \"vƣWh,b!⭙7L+|}t I$<F\rpSl4OJN`\r\Z ծ)PY$Kգ9Vjp72EcWp2cVxu7 p#r=.[>y)Zp','2010-12-31 13:16:31');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-css:3832ee25d9c44988461f5f339b9b6a48','+26RrMMLTHɩV\0Z((3(Rd\r\0','2038-01-19 03:14:07');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-css:aa0df16258ad99a1d249e796b5067ed9','+2RrMMLTHɩNK-Q.,LNJ,R\0s򋬔\rV\Z\0','2038-01-19 03:14:07');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-js:22814eeadc9cf0a9ebcd844e14198e66','mr0 y r&Qޡמ!\nqQXq;}$ވ c!]]].o5S\n)Fq L^?sF!OM\\\0NɁլ:-jF{ۅG\"i \Z6K!Y]=F[~竍䶃`9NǴ@K|z1A@J#_ԁ7\'l1) J͵).3 zfTAHњ[#)BzRA7֌\"T*~SW/PBŎ;\Zay6+U?.$6-uTv@hs&NإbfJ~]6p/q)>E1͔A\neLg\ZE`cW`fJEa>b\nӑd.udo[\ntb+l\Z?X*Y(օ;LJqťɝd$\"WzG-@b~+#kǞَƂ~P)B qҖ2rRl`z 4ÝXm;X݁t;r.sARy)kA\nRJTJU*W_ߟ4@vtf>x','2038-01-19 03:14:07');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-js:dd9440c19c575629ac5ec90e489cf62e','+21RԔLĔ\"ĒTj̒T%+ĔJZMk.%k\0','2038-01-19 03:14:07');
+/*!40000 ALTER TABLE `mw_objectcache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_oldimage`
+--
+
+DROP TABLE IF EXISTS `mw_oldimage`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_oldimage` (
+ `oi_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `oi_archive_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `oi_size` int(10) unsigned NOT NULL DEFAULT '0',
+ `oi_width` int(11) NOT NULL DEFAULT '0',
+ `oi_height` int(11) NOT NULL DEFAULT '0',
+ `oi_bits` int(11) NOT NULL DEFAULT '0',
+ `oi_description` tinyblob NOT NULL,
+ `oi_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `oi_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `oi_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `oi_metadata` mediumblob NOT NULL,
+ `oi_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
+ `oi_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') NOT NULL DEFAULT 'unknown',
+ `oi_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown',
+ `oi_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `oi_sha1` varbinary(32) NOT NULL DEFAULT '',
+ KEY `oi_usertext_timestamp` (`oi_user_text`,`oi_timestamp`),
+ KEY `oi_name_timestamp` (`oi_name`,`oi_timestamp`),
+ KEY `oi_name_archive_name` (`oi_name`,`oi_archive_name`(14)),
+ KEY `oi_sha1` (`oi_sha1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_oldimage`
+--
+
+LOCK TABLES `mw_oldimage` WRITE;
+/*!40000 ALTER TABLE `mw_oldimage` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_oldimage` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_page`
+--
+
+DROP TABLE IF EXISTS `mw_page`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_page` (
+ `page_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `page_namespace` int(11) NOT NULL,
+ `page_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `page_restrictions` tinyblob NOT NULL,
+ `page_counter` bigint(20) unsigned NOT NULL DEFAULT '0',
+ `page_is_redirect` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `page_is_new` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `page_random` double unsigned NOT NULL,
+ `page_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `page_latest` int(10) unsigned NOT NULL,
+ `page_len` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`page_id`),
+ UNIQUE KEY `name_title` (`page_namespace`,`page_title`),
+ KEY `page_random` (`page_random`),
+ KEY `page_len` (`page_len`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_page`
+--
+
+LOCK TABLES `mw_page` WRITE;
+/*!40000 ALTER TABLE `mw_page` DISABLE KEYS */;
+INSERT INTO `mw_page` VALUES (1,0,'Main_Page','',1,0,1,0.334989576352,'20101230131547',1,438);
+/*!40000 ALTER TABLE `mw_page` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_page_props`
+--
+
+DROP TABLE IF EXISTS `mw_page_props`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_page_props` (
+ `pp_page` int(11) NOT NULL,
+ `pp_propname` varbinary(60) NOT NULL,
+ `pp_value` blob NOT NULL,
+ UNIQUE KEY `pp_page_propname` (`pp_page`,`pp_propname`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_page_props`
+--
+
+LOCK TABLES `mw_page_props` WRITE;
+/*!40000 ALTER TABLE `mw_page_props` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_page_props` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_page_restrictions`
+--
+
+DROP TABLE IF EXISTS `mw_page_restrictions`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_page_restrictions` (
+ `pr_page` int(11) NOT NULL,
+ `pr_type` varbinary(60) NOT NULL,
+ `pr_level` varbinary(60) NOT NULL,
+ `pr_cascade` tinyint(4) NOT NULL,
+ `pr_user` int(11) DEFAULT NULL,
+ `pr_expiry` varbinary(14) DEFAULT NULL,
+ `pr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ PRIMARY KEY (`pr_id`),
+ UNIQUE KEY `pr_pagetype` (`pr_page`,`pr_type`),
+ KEY `pr_typelevel` (`pr_type`,`pr_level`),
+ KEY `pr_level` (`pr_level`),
+ KEY `pr_cascade` (`pr_cascade`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_page_restrictions`
+--
+
+LOCK TABLES `mw_page_restrictions` WRITE;
+/*!40000 ALTER TABLE `mw_page_restrictions` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_page_restrictions` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_pagelinks`
+--
+
+DROP TABLE IF EXISTS `mw_pagelinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_pagelinks` (
+ `pl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `pl_namespace` int(11) NOT NULL DEFAULT '0',
+ `pl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `pl_from` (`pl_from`,`pl_namespace`,`pl_title`),
+ UNIQUE KEY `pl_namespace` (`pl_namespace`,`pl_title`,`pl_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_pagelinks`
+--
+
+LOCK TABLES `mw_pagelinks` WRITE;
+/*!40000 ALTER TABLE `mw_pagelinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_pagelinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_protected_titles`
+--
+
+DROP TABLE IF EXISTS `mw_protected_titles`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_protected_titles` (
+ `pt_namespace` int(11) NOT NULL,
+ `pt_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `pt_user` int(10) unsigned NOT NULL,
+ `pt_reason` tinyblob,
+ `pt_timestamp` binary(14) NOT NULL,
+ `pt_expiry` varbinary(14) NOT NULL DEFAULT '',
+ `pt_create_perm` varbinary(60) NOT NULL,
+ UNIQUE KEY `pt_namespace_title` (`pt_namespace`,`pt_title`),
+ KEY `pt_timestamp` (`pt_timestamp`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_protected_titles`
+--
+
+LOCK TABLES `mw_protected_titles` WRITE;
+/*!40000 ALTER TABLE `mw_protected_titles` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_protected_titles` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_querycache`
+--
+
+DROP TABLE IF EXISTS `mw_querycache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_querycache` (
+ `qc_type` varbinary(32) NOT NULL,
+ `qc_value` int(10) unsigned NOT NULL DEFAULT '0',
+ `qc_namespace` int(11) NOT NULL DEFAULT '0',
+ `qc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ KEY `qc_type` (`qc_type`,`qc_value`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_querycache`
+--
+
+LOCK TABLES `mw_querycache` WRITE;
+/*!40000 ALTER TABLE `mw_querycache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_querycache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_querycache_info`
+--
+
+DROP TABLE IF EXISTS `mw_querycache_info`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_querycache_info` (
+ `qci_type` varbinary(32) NOT NULL DEFAULT '',
+ `qci_timestamp` binary(14) NOT NULL DEFAULT '19700101000000',
+ UNIQUE KEY `qci_type` (`qci_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_querycache_info`
+--
+
+LOCK TABLES `mw_querycache_info` WRITE;
+/*!40000 ALTER TABLE `mw_querycache_info` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_querycache_info` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_querycachetwo`
+--
+
+DROP TABLE IF EXISTS `mw_querycachetwo`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_querycachetwo` (
+ `qcc_type` varbinary(32) NOT NULL,
+ `qcc_value` int(10) unsigned NOT NULL DEFAULT '0',
+ `qcc_namespace` int(11) NOT NULL DEFAULT '0',
+ `qcc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `qcc_namespacetwo` int(11) NOT NULL DEFAULT '0',
+ `qcc_titletwo` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ KEY `qcc_type` (`qcc_type`,`qcc_value`),
+ KEY `qcc_title` (`qcc_type`,`qcc_namespace`,`qcc_title`),
+ KEY `qcc_titletwo` (`qcc_type`,`qcc_namespacetwo`,`qcc_titletwo`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_querycachetwo`
+--
+
+LOCK TABLES `mw_querycachetwo` WRITE;
+/*!40000 ALTER TABLE `mw_querycachetwo` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_querycachetwo` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_recentchanges`
+--
+
+DROP TABLE IF EXISTS `mw_recentchanges`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_recentchanges` (
+ `rc_id` int(11) NOT NULL AUTO_INCREMENT,
+ `rc_timestamp` varbinary(14) NOT NULL DEFAULT '',
+ `rc_cur_time` varbinary(14) NOT NULL DEFAULT '',
+ `rc_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `rc_namespace` int(11) NOT NULL DEFAULT '0',
+ `rc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rc_comment` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rc_minor` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_bot` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_new` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_cur_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_this_oldid` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_last_oldid` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_type` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_moved_to_ns` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_moved_to_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rc_patrolled` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_ip` varbinary(40) NOT NULL DEFAULT '',
+ `rc_old_len` int(11) DEFAULT NULL,
+ `rc_new_len` int(11) DEFAULT NULL,
+ `rc_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_logid` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_log_type` varbinary(255) DEFAULT NULL,
+ `rc_log_action` varbinary(255) DEFAULT NULL,
+ `rc_params` blob,
+ PRIMARY KEY (`rc_id`),
+ KEY `rc_timestamp` (`rc_timestamp`),
+ KEY `rc_namespace_title` (`rc_namespace`,`rc_title`),
+ KEY `rc_cur_id` (`rc_cur_id`),
+ KEY `new_name_timestamp` (`rc_new`,`rc_namespace`,`rc_timestamp`),
+ KEY `rc_ip` (`rc_ip`),
+ KEY `rc_ns_usertext` (`rc_namespace`,`rc_user_text`),
+ KEY `rc_user_text` (`rc_user_text`,`rc_timestamp`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_recentchanges`
+--
+
+LOCK TABLES `mw_recentchanges` WRITE;
+/*!40000 ALTER TABLE `mw_recentchanges` DISABLE KEYS */;
+INSERT INTO `mw_recentchanges` VALUES (1,'20101230131547','20101230131547',0,'MediaWiki Default',0,'Main_Page','',0,0,1,1,1,0,1,0,'',0,'::1',0,438,0,0,NULL,'','');
+/*!40000 ALTER TABLE `mw_recentchanges` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_redirect`
+--
+
+DROP TABLE IF EXISTS `mw_redirect`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_redirect` (
+ `rd_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `rd_namespace` int(11) NOT NULL DEFAULT '0',
+ `rd_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rd_interwiki` varchar(32) DEFAULT NULL,
+ `rd_fragment` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
+ PRIMARY KEY (`rd_from`),
+ KEY `rd_ns_title` (`rd_namespace`,`rd_title`,`rd_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_redirect`
+--
+
+LOCK TABLES `mw_redirect` WRITE;
+/*!40000 ALTER TABLE `mw_redirect` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_redirect` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_revision`
+--
+
+DROP TABLE IF EXISTS `mw_revision`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_revision` (
+ `rev_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `rev_page` int(10) unsigned NOT NULL,
+ `rev_text_id` int(10) unsigned NOT NULL,
+ `rev_comment` tinyblob NOT NULL,
+ `rev_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `rev_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rev_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `rev_minor_edit` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rev_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rev_len` int(10) unsigned DEFAULT NULL,
+ `rev_parent_id` int(10) unsigned DEFAULT NULL,
+ PRIMARY KEY (`rev_id`),
+ UNIQUE KEY `rev_page_id` (`rev_page`,`rev_id`),
+ KEY `rev_timestamp` (`rev_timestamp`),
+ KEY `page_timestamp` (`rev_page`,`rev_timestamp`),
+ KEY `user_timestamp` (`rev_user`,`rev_timestamp`),
+ KEY `usertext_timestamp` (`rev_user_text`,`rev_timestamp`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_revision`
+--
+
+LOCK TABLES `mw_revision` WRITE;
+/*!40000 ALTER TABLE `mw_revision` DISABLE KEYS */;
+INSERT INTO `mw_revision` VALUES (1,1,1,'',0,'MediaWiki Default','20101230131547',0,0,438,0);
+/*!40000 ALTER TABLE `mw_revision` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_searchindex`
+--
+
+DROP TABLE IF EXISTS `mw_searchindex`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_searchindex` (
+ `si_page` int(10) unsigned NOT NULL,
+ `si_title` varchar(255) NOT NULL DEFAULT '',
+ `si_text` mediumtext NOT NULL,
+ UNIQUE KEY `si_page` (`si_page`),
+ FULLTEXT KEY `si_title` (`si_title`),
+ FULLTEXT KEY `si_text` (`si_text`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_searchindex`
+--
+
+LOCK TABLES `mw_searchindex` WRITE;
+/*!40000 ALTER TABLE `mw_searchindex` DISABLE KEYS */;
+INSERT INTO `mw_searchindex` VALUES (1,'main page',' mediawiki hasu800 been successfully installed. consult theu800 user user\'su800 guide foru800 information onu800 using theu800 wiki software. getting started getting started getting started configuration settings list mediawiki faqu800 mediawiki release mailing list ');
+/*!40000 ALTER TABLE `mw_searchindex` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_site_stats`
+--
+
+DROP TABLE IF EXISTS `mw_site_stats`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_site_stats` (
+ `ss_row_id` int(10) unsigned NOT NULL,
+ `ss_total_views` bigint(20) unsigned DEFAULT '0',
+ `ss_total_edits` bigint(20) unsigned DEFAULT '0',
+ `ss_good_articles` bigint(20) unsigned DEFAULT '0',
+ `ss_total_pages` bigint(20) DEFAULT '-1',
+ `ss_users` bigint(20) DEFAULT '-1',
+ `ss_active_users` bigint(20) DEFAULT '-1',
+ `ss_admins` int(11) DEFAULT '-1',
+ `ss_images` int(11) DEFAULT '0',
+ UNIQUE KEY `ss_row_id` (`ss_row_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_site_stats`
+--
+
+LOCK TABLES `mw_site_stats` WRITE;
+/*!40000 ALTER TABLE `mw_site_stats` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_site_stats` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_tag_summary`
+--
+
+DROP TABLE IF EXISTS `mw_tag_summary`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_tag_summary` (
+ `ts_rc_id` int(11) DEFAULT NULL,
+ `ts_log_id` int(11) DEFAULT NULL,
+ `ts_rev_id` int(11) DEFAULT NULL,
+ `ts_tags` blob NOT NULL,
+ UNIQUE KEY `tag_summary_rc_id` (`ts_rc_id`),
+ UNIQUE KEY `tag_summary_log_id` (`ts_log_id`),
+ UNIQUE KEY `tag_summary_rev_id` (`ts_rev_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_tag_summary`
+--
+
+LOCK TABLES `mw_tag_summary` WRITE;
+/*!40000 ALTER TABLE `mw_tag_summary` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_tag_summary` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_templatelinks`
+--
+
+DROP TABLE IF EXISTS `mw_templatelinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_templatelinks` (
+ `tl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `tl_namespace` int(11) NOT NULL DEFAULT '0',
+ `tl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `tl_from` (`tl_from`,`tl_namespace`,`tl_title`),
+ UNIQUE KEY `tl_namespace` (`tl_namespace`,`tl_title`,`tl_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_templatelinks`
+--
+
+LOCK TABLES `mw_templatelinks` WRITE;
+/*!40000 ALTER TABLE `mw_templatelinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_templatelinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_text`
+--
+
+DROP TABLE IF EXISTS `mw_text`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_text` (
+ `old_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `old_text` mediumblob NOT NULL,
+ `old_flags` tinyblob NOT NULL,
+ PRIMARY KEY (`old_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 MAX_ROWS=10000000 AVG_ROW_LENGTH=10240;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_text`
+--
+
+LOCK TABLES `mw_text` WRITE;
+/*!40000 ALTER TABLE `mw_text` DISABLE KEYS */;
+INSERT INTO `mw_text` VALUES (1,'\'\'\'MediaWiki has been successfully installed.\'\'\'\n\nConsult the [http://meta.wikimedia.org/wiki/Help:Contents User\'s Guide] for information on using the wiki software.\n\n== Getting started ==\n* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]\n* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]','utf-8');
+/*!40000 ALTER TABLE `mw_text` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_trackbacks`
+--
+
+DROP TABLE IF EXISTS `mw_trackbacks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_trackbacks` (
+ `tb_id` int(11) NOT NULL AUTO_INCREMENT,
+ `tb_page` int(11) DEFAULT NULL,
+ `tb_title` varchar(255) NOT NULL,
+ `tb_url` blob NOT NULL,
+ `tb_ex` text,
+ `tb_name` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`tb_id`),
+ KEY `tb_page` (`tb_page`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_trackbacks`
+--
+
+LOCK TABLES `mw_trackbacks` WRITE;
+/*!40000 ALTER TABLE `mw_trackbacks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_trackbacks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_transcache`
+--
+
+DROP TABLE IF EXISTS `mw_transcache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_transcache` (
+ `tc_url` varbinary(255) NOT NULL,
+ `tc_contents` text,
+ `tc_time` binary(14) NOT NULL,
+ UNIQUE KEY `tc_url_idx` (`tc_url`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_transcache`
+--
+
+LOCK TABLES `mw_transcache` WRITE;
+/*!40000 ALTER TABLE `mw_transcache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_transcache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_updatelog`
+--
+
+DROP TABLE IF EXISTS `mw_updatelog`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_updatelog` (
+ `ul_key` varchar(255) NOT NULL,
+ `ul_value` blob,
+ PRIMARY KEY (`ul_key`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_updatelog`
+--
+
+LOCK TABLES `mw_updatelog` WRITE;
+/*!40000 ALTER TABLE `mw_updatelog` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_updatelog` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user`
+--
+
+DROP TABLE IF EXISTS `mw_user`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user` (
+ `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `user_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `user_real_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `user_password` tinyblob NOT NULL,
+ `user_newpassword` tinyblob NOT NULL,
+ `user_newpass_time` binary(14) DEFAULT NULL,
+ `user_email` tinytext NOT NULL,
+ `user_options` blob NOT NULL,
+ `user_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `user_token` binary(32) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `user_email_authenticated` binary(14) DEFAULT NULL,
+ `user_email_token` binary(32) DEFAULT NULL,
+ `user_email_token_expires` binary(14) DEFAULT NULL,
+ `user_registration` binary(14) DEFAULT NULL,
+ `user_editcount` int(11) DEFAULT NULL,
+ PRIMARY KEY (`user_id`),
+ UNIQUE KEY `user_name` (`user_name`),
+ KEY `user_email_token` (`user_email_token`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user`
+--
+
+LOCK TABLES `mw_user` WRITE;
+/*!40000 ALTER TABLE `mw_user` DISABLE KEYS */;
+INSERT INTO `mw_user` VALUES (1,'WikiSysop','',':B:b1373470:f7e87db0c9596055f39a1225b0c31508','',NULL,'','','20101230131552','de4ddde7c4eef6e3609f4287324a0a18',NULL,'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',NULL,'20101230131547',0);
+/*!40000 ALTER TABLE `mw_user` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user_groups`
+--
+
+DROP TABLE IF EXISTS `mw_user_groups`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user_groups` (
+ `ug_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `ug_group` varbinary(16) NOT NULL DEFAULT '',
+ UNIQUE KEY `ug_user_group` (`ug_user`,`ug_group`),
+ KEY `ug_group` (`ug_group`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user_groups`
+--
+
+LOCK TABLES `mw_user_groups` WRITE;
+/*!40000 ALTER TABLE `mw_user_groups` DISABLE KEYS */;
+INSERT INTO `mw_user_groups` VALUES (1,'bureaucrat');
+INSERT INTO `mw_user_groups` VALUES (1,'sysop');
+/*!40000 ALTER TABLE `mw_user_groups` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user_newtalk`
+--
+
+DROP TABLE IF EXISTS `mw_user_newtalk`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user_newtalk` (
+ `user_id` int(11) NOT NULL DEFAULT '0',
+ `user_ip` varbinary(40) NOT NULL DEFAULT '',
+ `user_last_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ KEY `user_id` (`user_id`),
+ KEY `user_ip` (`user_ip`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user_newtalk`
+--
+
+LOCK TABLES `mw_user_newtalk` WRITE;
+/*!40000 ALTER TABLE `mw_user_newtalk` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_user_newtalk` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user_properties`
+--
+
+DROP TABLE IF EXISTS `mw_user_properties`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user_properties` (
+ `up_user` int(11) NOT NULL,
+ `up_property` varbinary(32) NOT NULL,
+ `up_value` blob,
+ UNIQUE KEY `user_properties_user_property` (`up_user`,`up_property`),
+ KEY `user_properties_property` (`up_property`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user_properties`
+--
+
+LOCK TABLES `mw_user_properties` WRITE;
+/*!40000 ALTER TABLE `mw_user_properties` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_user_properties` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_valid_tag`
+--
+
+DROP TABLE IF EXISTS `mw_valid_tag`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_valid_tag` (
+ `vt_tag` varchar(255) NOT NULL,
+ PRIMARY KEY (`vt_tag`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_valid_tag`
+--
+
+LOCK TABLES `mw_valid_tag` WRITE;
+/*!40000 ALTER TABLE `mw_valid_tag` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_valid_tag` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_watchlist`
+--
+
+DROP TABLE IF EXISTS `mw_watchlist`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_watchlist` (
+ `wl_user` int(10) unsigned NOT NULL,
+ `wl_namespace` int(11) NOT NULL DEFAULT '0',
+ `wl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `wl_notificationtimestamp` varbinary(14) DEFAULT NULL,
+ UNIQUE KEY `wl_user` (`wl_user`,`wl_namespace`,`wl_title`),
+ KEY `namespace_title` (`wl_namespace`,`wl_title`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_watchlist`
+--
+
+LOCK TABLES `mw_watchlist` WRITE;
+/*!40000 ALTER TABLE `mw_watchlist` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_watchlist` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2010-12-31 1:20:11
diff --git a/tests/selenium/installer/MediaWikiButtonsAvailabilityTestCase.php b/tests/selenium/installer/MediaWikiButtonsAvailabilityTestCase.php
new file mode 100644
index 00000000..3557f516
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiButtonsAvailabilityTestCase.php
@@ -0,0 +1,102 @@
+<?php
+
+/**
+ * MediaWikiButtonsAvailabilityTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+/*
+ * Test Case ID : 30 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name :'Back' and 'Continue' button availability
+ * Version : MediaWiki 1.18alpha
+*/
+
+
+class MediaWikiButtonsAvailabilityTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+
+ // Verify only 'Continue' button available on 'Language' page
+ public function testOnlyContinueButtonAvailability() {
+
+ parent::navigateLanguagePage();
+
+ // Verify only 'Continue' button avaialble
+ $this->assertTrue( $this->isElementPresent( "submit-continue" ));
+
+ // 'Back' button is not avaialble
+ $this->assertElementNotPresent( "submit-back" );
+ }
+
+
+ // Verify 'Continue' and 'Back' buttons availability
+ public function testBothButtonsAvailability() {
+
+ // Verify buttons availability on 'Welcome to MediaWiki' page
+ parent::navigateWelcometoMediaWikiPage();
+ $this->assertTrue( $this->isElementPresent( "submit-back" ));
+ $this->assertTrue( $this->isElementPresent( "submit-continue" ));
+ parent::restartInstallation();
+
+ // Verify buttons availability on 'Connect to Database' page
+ parent::navigateConnetToDatabasePage();
+ $this->assertTrue( $this->isElementPresent( "submit-back" ));
+ $this->assertTrue( $this->isElementPresent( "submit-continue" ));
+ parent::restartInstallation();
+
+ // Verify buttons availability on 'Database settings' page
+ $databaseName = DB_NAME_PREFIX."_db_settings";
+ parent::navigateDatabaseSettingsPage( $databaseName );
+ $this->assertTrue( $this->isElementPresent( "submit-back" ));
+ $this->assertTrue( $this->isElementPresent( "submit-continue" ));
+ parent::restartInstallation();
+
+ // Verify buttons availability on 'Name' page
+ $databaseName = DB_NAME_PREFIX."_name";
+ parent::navigateNamePage( $databaseName );
+ $this->assertTrue( $this->isElementPresent( "submit-back" ));
+ $this->assertTrue( $this->isElementPresent( "submit-continue" ));
+ parent::restartInstallation();
+
+ // Verify buttons availability on 'Options' page
+ $databaseName = DB_NAME_PREFIX."_options";
+ parent::navigateOptionsPage( $databaseName );
+ $this->assertTrue( $this->isElementPresent( "submit-back" ));
+ $this->assertTrue( $this->isElementPresent( "submit-continue" ));
+ parent::restartInstallation();
+
+ // Verify buttons availability on 'Install' page
+ $databaseName = DB_NAME_PREFIX."_install";
+ parent::navigateInstallPage($databaseName);
+ $this->assertTrue( $this->isElementPresent( "submit-back" ));
+ $this->assertTrue( $this->isElementPresent( "submit-continue" ));
+ }
+} \ No newline at end of file
diff --git a/tests/selenium/installer/MediaWikiDifferentDatabaseAccountTestCase.php b/tests/selenium/installer/MediaWikiDifferentDatabaseAccountTestCase.php
new file mode 100644
index 00000000..4afcdc0e
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiDifferentDatabaseAccountTestCase.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * MediaWikiDifferentDatabaseAccountTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once ( dirname( __FILE__ ) . '/MediaWikiInstallationCommonFunction.php' );
+
+/*
+ * Test Case ID : 04 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Install MediaWiki with different Database accounts for web access.
+ * Version : MediaWiki 1.18alpha
+*/
+
+class MediaWikiDifferentDatabaseAccountTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+
+ // Install Mediawiki using 'MySQL' database type.
+ public function testDifferentDatabaseAccount() {
+
+ $databaseName = DB_NAME_PREFIX."_dif_accounts";
+
+ // Navigate to the 'Database settings' page
+ parent::navigateDatabaseSettingsPage( $databaseName );
+
+ // Click on the 'Use the same account as for installation' check box
+ $this->click( "mysql__SameAccount" );
+
+ // Change the 'Database username'
+ $this->type( "mysql_wgDBuser", DB_WEB_USER );
+
+ // Enter 'Database password:'
+ $this->type( "mysql_wgDBpassword", DB_WEB_USER_PASSWORD );
+
+ // Select 'Create the account if it does not already exist' check box
+ $this->click( "mysql__CreateDBAccount" );
+ parent::clickContinueButton();
+
+ // 'Name' page
+ parent::completeNamePage();
+
+ // 'Options' page
+ parent::clickContinueButton();
+
+ // 'Install' page
+ $this->assertEquals("Creating database user... done",
+ $this->getText( LINK_FORM."ul/li[3]"));
+ parent::clickContinueButton();
+
+ // 'Complete' page
+ parent::completePageSuccessfull();
+ $this->chooseCancelOnNextConfirmation();
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiDifferntDatabasePrefixTestCase.php b/tests/selenium/installer/MediaWikiDifferntDatabasePrefixTestCase.php
new file mode 100644
index 00000000..b6a0fc09
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiDifferntDatabasePrefixTestCase.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * MediaWikiDifferntDatabasePrefixTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+require_once ( dirname( __FILE__ ) . '/MediaWikiInstallationCommonFunction.php' );
+
+/*
+ * Test Case ID : 02 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Install MediaWiki with the same database and the different
+ * database prefixes(Share one database between multiple wikis).
+ * Version : MediaWiki 1.18alpha
+*/
+
+class MediaWikiDifferntDatabasePrefixTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Install Mediawiki using 'MySQL' database type.
+ public function testDifferentDatabasePrefix() {
+
+ $databaseName = DB_NAME_PREFIX."_db_prefix";
+ parent::navigateInstallPage( $databaseName );
+
+ // To 'Options' page
+ parent::clickBackButton();
+
+ // To 'Name' page
+ parent::clickBackButton();
+
+ // To 'Database settings' page
+ parent::clickBackButton();
+
+ // To 'Connect to database' page
+ parent::clickBackButton();
+
+ // From 'Connect to database' page without database prefix
+ parent::clickContinueButton();
+
+ // Verify upgrade existing message
+ $this->assertEquals( "Upgrade existing installation",
+ $this->getText( LINK_DIV."h2" ));
+
+ // To 'Connect to database' page
+ parent::clickBackButton();
+
+ // Input the database prefix
+ $this->type( "mysql_wgDBprefix", DATABASE_PREFIX );
+
+ // From 'Connect to database' page with database prefix
+ parent::clickContinueButton();
+
+ // To 'Complete' page
+ parent::clickContinueButton();
+ parent::completeNamePage();
+ parent::clickContinueButton();
+
+ // Verify already installed warning message
+ $this->assertEquals( "Install",
+ $this->getText( LINK_DIV."h2" ));
+ $this->assertEquals( "Warning: You seem to have already installed MediaWiki and are trying to install it again. Please proceed to the next page.",
+ $this->getText( LINK_FORM."div[1]" ));
+
+ parent::clickContinueButton();
+ parent::completePageSuccessfull();
+ $this->chooseCancelOnNextConfirmation();
+ parent::restartInstallation();
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiErrorsConnectToDatabasePageTestCase.php b/tests/selenium/installer/MediaWikiErrorsConnectToDatabasePageTestCase.php
new file mode 100644
index 00000000..3642a8ef
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiErrorsConnectToDatabasePageTestCase.php
@@ -0,0 +1,136 @@
+<?php
+
+/**
+ * MediaWikiErrorsConnectToDatabasePageTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once ( dirname( __FILE__ ) . '/MediaWikiInstallationCommonFunction.php' );
+
+/*
+ * Test Case ID : 09 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Invalid/ blank values for fields in 'Connect to database' page.
+ * Version : MediaWiki 1.18alpha
+*/
+
+class MediaWikiErrorsConnectToDatabasePageTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Verify warning messages for the 'Connet to database' page
+ public function testErrorsConnectToDatabasePage() {
+
+ parent::navigateConnetToDatabasePage();
+
+ // Verify warning mesage for invalid database host
+ $this->type( "mysql_wgDBserver", INVALID_DB_HOST );
+ parent::clickContinueButton();
+ $this->assertEquals( "DB connection error: php_network_getaddresses: getaddrinfo failed: No such host is known. (".INVALID_DB_HOST.").",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[1]" ));
+ $this->assertEquals( "Check the host, username and password below and try again.",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[2]" ));
+ // Verify warning message for the blank database host
+ $this->type( "mysql_wgDBserver", "" );
+ parent::clickContinueButton();
+ $this->assertEquals( "MySQL 4.0.14 or later is required, you have .",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+ // Valid Database Host
+ $this->type( "mysql_wgDBserver", VALID_DB_HOST );
+
+ // Verify warning message for the invalid database name
+ $this->type( "mysql_wgDBname", INVALID_DB_NAME );
+ parent::clickContinueButton();
+ $this->assertEquals( "Invalid database name \"".INVALID_DB_NAME."\". Use only ASCII letters (a-z, A-Z), numbers (0-9) and underscores (_).",
+ $this->getText( LINK_DIV."div[2]/div[2]/p" ));
+
+ // Verify warning message for the blank database name
+ $this->type( "mysql_wgDBname", "");
+ parent::clickContinueButton();
+ $this->assertEquals( "You must enter a value for \"Database name\"",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+ // valid Database name
+ $this->type( "mysql_wgDBname", VALID_DB_NAME);
+
+ // Verify warning message for the invalid databaase prefix
+ $this->type( "mysql_wgDBprefix", INVALID_DB_PREFIX );
+ parent::clickContinueButton();
+ $this->assertEquals( "Invalid database prefix \"".INVALID_DB_PREFIX."\". Use only ASCII letters (a-z, A-Z), numbers (0-9) and underscores (_).",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+ // Valid Database prefix
+ $this->type( "mysql_wgDBprefix", VALID_DB_PREFIX );
+
+ // Verify warning message for the invalid database user name
+ $this->type( "mysql__InstallUser", INVALID_DB_USER_NAME );
+ parent::clickContinueButton();
+ $this->assertEquals( "DB connection error: Access denied for user '".INVALID_DB_USER_NAME."'@'localhost' (using password: NO) (localhost).",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[1]" ));
+ $this->assertEquals( "Check the host, username and password below and try again.",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[2]"));
+
+ // Verify warning message for the blank database user name
+ $this->type( "mysql__InstallUser", "" );
+ parent::clickContinueButton();
+ $this->assertEquals( "DB connection error: Access denied for user 'SYSTEM'@'localhost' (using password: NO) (localhost).",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[1]" ));
+ $this->assertEquals( "Check the host, username and password below and try again.",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[2]" ));
+
+ // Valid Database username
+ $this->type( "mysql__InstallUser", VALID_DB_USER_NAME );
+
+ // Verify warning message for the invalid password
+ $this->type( "mysql__InstallPassword", INVALID_DB_PASSWORD );
+ parent::clickContinueButton();
+
+ $this->assertEquals( "DB connection error: Access denied for user 'root'@'localhost' (using password: YES) (localhost).",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[1]" ));
+ $this->assertEquals( "Check the host, username and password below and try again.",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[2]" ));
+
+ // Verify warning message for the invalid username and password
+ $this->type( "mysql__InstallUser", INVALID_DB_USER_NAME );
+ $this->type( "mysql__InstallPassword", INVALID_DB_PASSWORD );
+ parent::clickContinueButton();
+ $this->assertEquals( "DB connection error: Access denied for user '".INVALID_DB_USER_NAME."'@'localhost' (using password: YES) (localhost).",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[1]" ));
+ $this->assertEquals( "Check the host, username and password below and try again.",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[2]" ));
+
+ // Valid username and valid password
+ $this->type( "mysql__InstallUser", VALID_DB_USER_NAME );
+ $this->type( "mysql__InstallPassword", "" );
+ parent::clickContinueButton();
+
+ // successfully completes the 'Connect to database' page
+ $this->assertEquals( "Database settings",
+ $this->getText( LINK_DIV."h2" ));
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiErrorsNamepageTestCase.php b/tests/selenium/installer/MediaWikiErrorsNamepageTestCase.php
new file mode 100644
index 00000000..d70dcc42
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiErrorsNamepageTestCase.php
@@ -0,0 +1,132 @@
+<?php
+
+/**
+ * MediaWikiErrorsNamepageTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+/*
+ * Test Case ID : 10 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Invalid/ blank values for fields in 'Name' page.
+ * Version : MediaWiki 1.18alpha
+*/
+
+require_once ( dirname( __FILE__ ) . '/MediaWikiInstallationCommonFunction.php' );
+
+class MediaWikiErrorsNamepageTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Verify warning message for the 'Name' page
+ public function testErrorsNamePage() {
+
+ $databaseName = DB_NAME_PREFIX."_error_name";
+
+ parent::navigateNamePage( $databaseName );
+
+ // Verify warning message for all blank fields
+ parent::clickContinueButton();
+ $this->assertEquals( "Enter a site name.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+ $this->assertEquals( "Enter an administrator username.",
+ $this->getText( LINK_DIV."div[3]/div[2]" ));
+ $this->assertEquals( "Enter a password for the administrator account.",
+ $this->getText( LINK_DIV."div[4]/div[2]" ));
+
+ // Verify warning message for the blank 'Site name'
+ $this->type( "config__AdminName", VALID_YOUR_NAME );
+ $this->type( "config__AdminPassword", VALID_PASSWORD );
+ $this->type( "config__AdminPassword2", VALID_PASSWORD_AGAIN );
+ parent::clickContinueButton();
+ $this->assertEquals( "Enter a site name.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+ // Input valid 'Site name'
+ $this->type( "config_wgSitename", VALID_WIKI_NAME );
+
+
+ // Verify warning message for the invalid "Project namespace'
+ $this->click( "config__NamespaceType_other" );
+ $this->type( "config_wgMetaNamespace", INVALID_NAMESPACE );
+ parent::clickContinueButton();
+ $this->assertEquals( "The specified namespace \"\" is invalid. Specify a different project namespace.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+
+ // Verify warning message for the blank 'Project namespace'
+ $this->type( "config_wgSitename", VALID_WIKI_NAME );
+ $this->click( "config__NamespaceType_other" );
+ $this->type( "config_wgMetaNamespace" , "" );
+ parent::clickContinueButton();
+ $this->assertEquals( "The specified namespace \"\" is invalid. Specify a different project namespace.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+
+ // Valid 'Project namespace'
+ $this->click( "config__NamespaceType_other" );
+ $this->type( "config_wgMetaNamespace", VALID_NAMESPACE );
+ parent::clickContinueButton();
+
+
+ // Valid 'Site name'
+ $this->click( "config__NamespaceType_site-name" );
+ $this->type( "config_wgSitename", VALID_WIKI_NAME );
+
+
+ // Verify warning message for blank 'Your name'
+ $this->type( "config__AdminName", " " );
+ parent::clickContinueButton();
+ $this->assertEquals( "Enter an administrator username.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+ $this->type( "config_wgSitename", VALID_WIKI_NAME );
+ // Verify warning message for blank 'Password'
+ $this->type( "config__AdminName", VALID_YOUR_NAME );
+ $this->type( "config__AdminPassword", " " );
+ parent::clickContinueButton();
+ $this->assertEquals( "Enter a password for the administrator account.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+
+ // Verify warning message for the blank 'Password again'
+ $this->type( "config_wgSitename", VALID_WIKI_NAME );
+ $this->type( "config__AdminPassword", VALID_PASSWORD );
+ $this->type( "config__AdminPassword2", " " );
+ parent::clickContinueButton();
+ $this->assertEquals( "The two passwords you entered do not match.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+
+ // Verify warning message for the different'Password' and 'Password again'
+ $this->type( "config_wgSitename", VALID_WIKI_NAME );
+ $this->type( "config__AdminPassword", VALID_PASSWORD );
+ $this->type( "config__AdminPassword2", INVALID_PASSWORD_AGAIN );
+ parent::clickContinueButton();
+ $this->assertEquals( "The two passwords you entered do not match.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiHelpFieldHintTestCase.php b/tests/selenium/installer/MediaWikiHelpFieldHintTestCase.php
new file mode 100644
index 00000000..355a2857
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiHelpFieldHintTestCase.php
@@ -0,0 +1,140 @@
+<?php
+
+/**
+ * MediaWikiHelpFieldHintTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+/*
+ * Test Case ID : 29 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Help field hint availability for the fields.
+ * Version : MediaWiki 1.18alpha
+*/
+
+require_once ( dirname( __FILE__ ) . '/MediaWikiInstallationCommonFunction.php' );
+
+class MediaWikiHelpFieldHintTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+
+ // Verify help field availability for the fields
+ public function testMySQLConnectToDatabaseFieldHint() {
+
+ parent::navigateConnetToDatabasePage();
+
+ // Verify help field for 'Database host'
+ $this->click( "//div[@id='DB_wrapper_mysql']/div/div[1]/div/span[1]" );
+ $this->assertEquals( MYSQL_DATABASE_HOST_HELP,
+ $this->getText( "//div[@id='DB_wrapper_mysql']/div/div[1]/div/span[2]" ) );
+
+ // Verify help field for 'Database name'
+ $this->click( "//div[@id='DB_wrapper_mysql']/fieldset[1]/div[1]/div[1]/div/span[1]" );
+ $this->assertEquals( MYSQL_DATABASE_NAME_HELP,
+ $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[1]/div[1]/div[1]/div/span[2]" ));
+
+
+ // Verify help field for 'Database table prefix'
+ $this->click("//div[@id='DB_wrapper_mysql']/fieldset[1]/div[2]/div[1]/div/span[1]" );
+ $this->assertEquals(MYSQL_DATABASE_TABLE_PREFIX_HELP,
+ $this->getText("//div[@id='DB_wrapper_mysql']/fieldset[1]/div[1]/div[1]/div/span[2]/p[1]" ));
+
+ // Verify help field for 'Database username'
+ $this->click( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[1]/div[1]/div/span[1]" );
+ $this->assertEquals( MYSQL_DATBASE_USERNAME_HELP,
+ $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[1]/div[1]/div/span[2]" ));
+
+ // Verify help field for 'Database password'
+ $this->click( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[2]/div[1]/div/span[1]" );
+ $this->assertEquals( MYSQL_DATABASE_PASSWORD_HELP,
+ $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[2]/div[1]/div/span[2]/p" ));
+ }
+
+
+ public function testSQLiteConnectToDatabaseFieldHint() {
+
+ parent::navigateConnetToDatabasePage();
+ $this->click( "DBType_sqlite" );
+
+ // Verify help field for 'SQLite data directory'
+ $this->click( "//div[@id='DB_wrapper_sqlite']/div[1]/div[1]/div/span[1]" );
+ $this->assertEquals( SQLITE_DATA_DIRECTORY_HELP,
+ $this->getText( "//div[@id='DB_wrapper_sqlite']/div[1]/div[1]/div/span[2]" ));
+
+ // Verify help field for 'Database name'
+ $this->click( "//div[@id='DB_wrapper_sqlite']/div[2]/div[1]/div/span[1]" );
+ $this->assertEquals( SQLITE_DATABASE_NAME_HELP , $this->getText( "//div[@id='DB_wrapper_sqlite']/div[2]/div[1]/div/span[2]/p" ));
+ }
+
+
+ public function testDatabaseSettingsFieldHint() {
+
+ $databaseName = DB_NAME_PREFIX."_db_field";
+ parent::navigateDatabaseSettingsPage($databaseName);
+
+ // Verify help field for 'Search engine'
+ $this->click( LINK_FORM."div[2]/span[1]" );
+ $this->assertEquals( SEARCH_ENGINE_HELP,
+ $this->getText( LINK_FORM."div[2]/span[2]" ));
+
+ // Verify help field for 'Database character set'
+ $this->click( LINK_FORM."div[4]/span[1]" );
+ $this->assertEquals( DATABASE_CHARACTER_SET_HELP,
+ $this->getText( LINK_FORM."div[4]/span[2]"));
+ parent::restartInstallation();
+ }
+
+
+ public function testNameFieldHint() {
+
+ $databaseName = DB_NAME_PREFIX."_name_field";
+ parent::navigateNamePage( $databaseName );
+
+ // Verify help field for 'Name of Wiki'
+ $this->click( LINK_FORM."div[1]/div[1]/div/span[1]" );
+ $this->assertEquals( NAME_OF_WIKI_HELP,
+ $this->getText( LINK_FORM."div[1]/div[1]/div/span[2]/p" ));
+
+ // Verify help field for 'Project namespace'
+ $this->click( LINK_FORM."div[2]/div[1]/div/span[1]" );
+ $this->assertEquals( PROJECT_NAMESPACE_HELP,
+ $this->getText( LINK_FORM."div[2]/div[1]/div/span[2]/p"));
+
+ // Verify help field for 'Your Name'
+ $this->click( LINK_FORM."fieldset/div[1]/div[1]/div/span[1]" );
+ $this->assertEquals( USER_NAME_HELP,
+ $this->getText( LINK_FORM."fieldset/div[1]/div[1]/div/span[2]/p" ));
+
+ // Verify help field for 'E mail address'
+ $this->click( LINK_FORM."fieldset/div[4]/div[1]/div/span[1]" );
+ $this->assertEquals( EMAIL_ADDRESS_HELP,
+ $this->getText( LINK_FORM."fieldset/div[4]/div[1]/div/span[2]/p" ));
+
+ parent::restartInstallation();
+ }
+}
+
diff --git a/tests/selenium/installer/MediaWikiInstallationCommonFunction.php b/tests/selenium/installer/MediaWikiInstallationCommonFunction.php
new file mode 100644
index 00000000..99df8a2a
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiInstallationCommonFunction.php
@@ -0,0 +1,283 @@
+<?php
+/**
+ * MediaWikiInstallationCommonFunction
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
+require_once ( dirname( __FILE__ ) . '/MediaWikiInstallationConfig.php' );
+require_once ( dirname(__FILE__) . '/MediaWikiInstallationMessage.php' );
+require_once ( dirname(__FILE__) . '/MediaWikiInstallationVariables.php');
+
+
+class MediaWikiInstallationCommonFunction extends PHPUnit_Extensions_SeleniumTestCase {
+
+ function setUp() {
+ $this->setBrowser( TEST_BROWSER );
+ $this->setBrowserUrl("http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/");
+ }
+
+
+ public function navigateInitialpage() {
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/" );
+ }
+
+
+ // Navigate to the 'Language' page
+ public function navigateLanguagePage() {
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+ }
+
+
+ // Navigate to the 'Welcome to MediaWiki' page
+ public function navigateWelcometoMediaWikiPage() {
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+ $this->click( "submit-continue ");
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Navigate yo 'Connect to Database' page
+ public function navigateConnetToDatabasePage() {
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // 'Welcome to MediaWiki!' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Connect to Database' page
+ $this->click("submit-continue");
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Navigate to the 'Database Settings' page
+ public function navigateDatabaseSettingsPage( $databaseName ) {
+
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // 'Welcome to MediaWiki!' page
+ $this->click("submit-continue");
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Connect to Database' page
+ $this->click("submit-continue");
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ $this->type("mysql_wgDBname", $databaseName );
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Navigate to the 'Name' page
+ public function navigateNamePage( $databaseName ) {
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // 'Welcome to MediaWiki!' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Connect to Database' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ $this->type( "mysql_wgDBname", $databaseName );
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Database settings
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Navigate 'Options' page
+ public function navigateOptionsPage( $databaseName ) {
+
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // 'Welcome to MediaWiki!' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Connect to Database' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ $this->type( "mysql_wgDBname", $databaseName );
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Database settings
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Name
+ $this->type( "config_wgSitename", NAME_OF_WIKI );
+ $this->type( "config__AdminName", ADMIN_USER_NAME);
+ $this->type( "config__AdminPassword", ADMIN_PASSWORD );
+ $this->type( "config__AdminPassword2", ADMIN_RETYPE_PASSWORD );
+ $this->type( "config__AdminEmail", ADMIN_EMAIL_ADDRESS );
+
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Navigate 'Install' page
+ public function navigateInstallPage( $databaseName ) {
+
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // 'Welcome to MediaWiki!' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Connect to Database' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ $this->type( "mysql_wgDBname", $databaseName );
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Database settings
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Name
+ $this->type( "config_wgSitename", NAME_OF_WIKI );
+ $this->type( "config__AdminName", ADMIN_USER_NAME);
+ $this->type( "config__AdminPassword", ADMIN_PASSWORD );
+ $this->type( "config__AdminPassword2", ADMIN_RETYPE_PASSWORD );
+ $this->type( "config__AdminEmail", ADMIN_EMAIL_ADDRESS );
+
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Options page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Navigate to 'Complete' page
+ public function navigateCompletePage( $databaseName ) {
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // 'Welcome to MediaWiki!' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Connect to Database' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ $this->type( "mysql_wgDBname", $databaseName );
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Database settings
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Name
+ $this->type( "config_wgSitename", NAME_OF_WIKI );
+ $this->type( "config__AdminName", ADMIN_USER_NAME);
+ $this->type( "config__AdminPassword", ADMIN_PASSWORD );
+ $this->type( "config__AdminPassword2", ADMIN_RETYPE_PASSWORD );
+ $this->type( "config__AdminEmail", ADMIN_EMAIL_ADDRESS );
+
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Options page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Install page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ $this->chooseCancelOnNextConfirmation();
+ }
+
+
+ // Complete the Name page fields
+ public function completeNamePage() {
+ $this->type( "config_wgSitename", NAME_OF_WIKI );
+ $this->type( "config__AdminName", ADMIN_USER_NAME);
+ $this->type( "config__AdminPassword", ADMIN_PASSWORD );
+ $this->type( "config__AdminPassword2", ADMIN_RETYPE_PASSWORD );
+ $this->type( "config__AdminEmail", ADMIN_EMAIL_ADDRESS );
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME);
+ }
+
+
+ // Clicking on the 'Continue' button in any MediaWiki page
+ public function clickContinueButton() {
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Clicking on the 'Back' button in any MediaWiki page
+ public function clickBackButton() {
+ $this->click( "submit-back" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Restarting the installation
+ public function restartInstallation() {
+ $this->click( "link=Restart installation" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ $this->click( "submit-restart" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Verify 'MediaWiki' logo available in the initial screen
+ public function mediaWikiLogoPresentInitialScreen() {
+ $this->assertTrue( $this->isElementPresent( "//img[@alt='The MediaWiki logo']" ));
+ }
+
+
+ // Verify 'MediaWiki' logo available
+ public function mediaWikiLogoPresent() {
+ $this->assertTrue( $this->isElementPresent( "//div[@id='p-logo']/a" ));
+ }
+
+
+ public function completePageSuccessfull() {
+ $this->assertEquals( "Complete!",
+ $this->getText( "//div[@id='bodyContent']/div/div/h2" ));
+
+ // 'Congratulations!' text should be available in the 'Complete!' page.
+ $this->assertEquals( "Congratulations!",
+ $this->getText( "//div[@id='bodyContent']/div/div/div[2]/form/div[1]/div[2]/p[1]/b" ));
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiInstallationConfig.php b/tests/selenium/installer/MediaWikiInstallationConfig.php
new file mode 100644
index 00000000..d3067d69
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiInstallationConfig.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * MediaWikiInstallationConfig
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+/*
+ * MediaWikiInstallerTestSuite.php can be run one time successfully
+ * with current value of the 'DB_NAME_PREFIX'.
+ * If you wish to run the suite more than one time, you need to change
+ * the value of the 'DB_NAME_PREFIX'.
+*/
+define('DB_NAME_PREFIX', "database_name" );
+define('DIRECTORY_NAME', "mediawiki" );
+define( 'PORT', "8080" );
+define( 'HOST_NAME', "localhost" );
+
+/*
+ * Use the followings to run the test suite in different browsers.
+ * Firefox : *firefox
+ * IE : *iexplore
+ * Google chrome : *googlechrome
+ * Opera : *opera
+*/
+define ( 'TEST_BROWSER', "*firefox" );
diff --git a/tests/selenium/installer/MediaWikiInstallationMessage.php b/tests/selenium/installer/MediaWikiInstallationMessage.php
new file mode 100644
index 00000000..a348b542
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiInstallationMessage.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * MediaWikiInstallationConfig
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+// 'MySQL' database type help field hint
+define( 'MYSQL_DATABASE_HOST_HELP', "If your database server is on different server, enter the host name or IP address here. \nIf you are using shared web hosting, your hosting provider should give you the correct host name in their documentation. \nIf you are installing on a Windows server and using MySQL, using \"localhost\" may not work for the server name. If it does not, try \"127.0.0.1\" for the local IP address." );
+define( 'MYSQL_DATABASE_NAME_HELP', "Choose a name that identifies your wiki. It should not contain spaces or hyphens. \nIf you are using shared web hosting, your hosting provider will either give you a specific database name to use or let you create databases via a control panel." );
+define( 'MYSQL_DATABASE_TABLE_PREFIX_HELP', "Choose a name that identifies your wiki. It should not contain spaces or hyphens.");
+define( 'MYSQL_DATBASE_USERNAME_HELP', "Enter the username that will be used to connect to the database during the installation process. This is not the username of the MediaWiki account; this is the username for your database." );
+define( 'MYSQL_DATABASE_PASSWORD_HELP', "Enter the password that will be used to connect to the database during the installation process. This is not the password for the MediaWiki account; this is the password for your database." );
+
+
+// 'SQLite' database type help field hint
+define( 'SQLITE_DATA_DIRECTORY_HELP', "SQLite stores all data in a single file. \nThe directory you provide must be writable by the webserver during installation. \nIt should not be accessible via the web, this is why we're not putting it where your PHP files are. \nThe installer will write a .htaccess file along with it, but if that fails someone can gain access to your raw database. That includes raw user data (e-mail addresses, hashed passwords) as well as deleted revisions and other restricted data on the wiki. \nConsider putting the database somewhere else altogether, for example in /var/lib/mediawiki/yourwiki." );
+define( 'SQLITE_DATABASE_NAME_HELP', "Choose a name that identifies your wiki. Do not use spaces or hyphens. This will be used for the SQLite data file name.");
+
+
+// 'Database settings' page hel0p field hint
+define( 'SEARCH_ENGINE_HELP', "InnoDB is almost always the best option, since it has good concurrency support. \nMyISAM may be faster in single-user or read-only installations. MyISAM databases tend to get corrupted more often than InnoDB databases." );
+define( 'DATABASE_CHARACTER_SET_HELP', "In binary mode, MediaWiki stores UTF-8 text to the database in binary fields. This is more efficient than MySQL's UTF-8 mode, and allows you to use the full range of Unicode characters. \nIn UTF-8 mode, MySQL will know what character set your data is in, and can present and convert it appropriately, but it will not let you store characters above the Basic Multilingual Plane." );
+
+
+// 'Name' page help field hint
+define( 'NAME_OF_WIKI_HELP', "This will appear in the title bar of the browser and in various other places.");
+define( 'PROJECT_NAMESPACE_HELP', "Following Wikipedia's example, many wikis keep their policy pages separate from their content pages, in a \"project namespace\". All page titles in this namespace start with a certain prefix, which you can specify here. Traditionally, this prefix is derived from the name of the wiki, but it cannot contain punctuation characters such as \"#\" or \":\"." );
+define( 'USER_NAME_HELP', "Enter your preferred username here, for example \"Joe Bloggs\". This is the name you will use to log in to the wiki." );
+define( 'EMAIL_ADDRESS_HELP', "Enter an e-mail address here to allow you to receive e-mail from other users on the wiki, reset your password, and be notified of changes to pages on your watchlist." );
+define( 'SUBSCRIBE_MAILING_LIST_HELP', "This is a low-volume mailing list used for release announcements, including important security announcements. You should subscribe to it and update your MediaWiki installation when new versions come out." );
+
+
+
diff --git a/tests/selenium/installer/MediaWikiInstallationVariables.php b/tests/selenium/installer/MediaWikiInstallationVariables.php
new file mode 100644
index 00000000..bb11d022
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiInstallationVariables.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * MediaWikiInstallationConfig
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+// Common variables
+define('PAGE_LOAD_TIME', "80000" );
+
+// Common links
+define( 'LINK_DIV', "//div[@id='bodyContent']/div/div/");
+define( 'LINK_FORM', "//div[@id='bodyContent']/div/div/div[2]/form/" );
+define( 'LINK_RIGHT_FRAMEWORK', "//div[@id='bodyContent']/div/div/div[1]/ul[1]/");
+
+// 'Name' page input values
+define( 'NAME_OF_WIKI', "Site Name" );
+define( 'ADMIN_USER_NAME', "My Name" );
+define( 'ADMIN_PASSWORD', "12345" );
+define ( 'ADMIN_RETYPE_PASSWORD', "12345" );
+define ( 'ADMIN_EMAIL_ADDRESS', "admin@example.com" );
+
+
+// 'Name' page input values for warning messages
+define( 'VALID_WIKI_NAME', "MyWiki" );
+define( 'VALID_YOUR_NAME', "FirstName LastName" );
+define( 'VALID_PASSWORD', "12345" );
+define( 'VALID_PASSWORD_AGAIN', "12345" );
+define( 'INVALID_PASSWORD_AGAIN', "123" );
+define( 'VALID_NAMESPACE', "Mynamespace" );
+define( 'INVALID_NAMESPACE', "##..##" );
+
+
+// 'Database settings' page input values
+define( 'DB_WEB_USER', "different" );
+define('DB_WEB_USER_PASSWORD', "12345" );
+
+
+// 'Connet to database' page input values
+define( 'DATABASE_PREFIX',"databaseprefix" );
+
+
+// 'Connet to database' page input values for warning messages
+define( 'VALID_DB_HOST', "localhost" );
+define( 'INVALID_DB_HOST', "local" );
+define( 'INVALID_DB_NAME', "my-wiki" );
+define( 'VALID_DB_NAME', "my_wiki1");
+define( 'INVALID_DB_PREFIX', "database prefix" );
+define( 'VALID_DB_PREFIX', "database_prefix");
+define( 'INVALID_DB_USER_NAME', "roots" );
+define( 'VALID_DB_USER_NAME', "root");
+define( 'INVALID_DB_PASSWORD', "12345" );
+
+
diff --git a/tests/selenium/installer/MediaWikiInstallerTestSuite.php b/tests/selenium/installer/MediaWikiInstallerTestSuite.php
new file mode 100644
index 00000000..386a50ea
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiInstallerTestSuite.php
@@ -0,0 +1,53 @@
+<?php
+
+/**
+ * MediaWikiInstallerTestSuite
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+require_once 'PHPUnit/Framework.php';
+require_once 'PHPUnit/Framework/TestSuite.php';
+
+require_once ( dirname( __FILE__ ) . '/MediaWikiUserInterfaceTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiButtonsAvailabilityTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiHelpFieldHintTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiRightFrameworkLinksTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiRestartInstallationTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiErrorsConnectToDatabasePageTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiErrorsNamepageTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiMySQLDataBaseTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiMySQLiteDataBaseTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiUpgradeExistingDatabaseTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiDifferntDatabasePrefixTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiDifferentDatabaseAccountTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiOnAlreadyInstalledTestCase.php' );
+
+
+
+
+$suite = new PHPUnit_Framework_TestSuite('ArrayTest');
+$result = new PHPUnit_Framework_TestResult;
+
+$suite->run($result);
diff --git a/tests/selenium/installer/MediaWikiMySQLDataBaseTestCase.php b/tests/selenium/installer/MediaWikiMySQLDataBaseTestCase.php
new file mode 100644
index 00000000..abf9ddf2
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiMySQLDataBaseTestCase.php
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * MediaWikiOnAlreadyInstalledTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+/*
+ * Test Case ID : 01 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Install Mediawiki using 'MySQL' database type successfully
+ * Version : MediaWiki 1.18alpha
+*/
+
+class MediaWikiMySQLDataBaseTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Verify MediaWiki installation using 'MySQL' database type
+ public function testMySQLDatabaseSuccess() {
+
+ $databaseName = DB_NAME_PREFIX."_sql_db";
+
+ parent::navigateConnetToDatabasePage();
+
+ // Verify 'MySQL" is selected as the default database type
+ $this->assertEquals( "MySQL settings", $this->getText( "//div[@id='DB_wrapper_mysql']/h3" ));
+
+ // Change 'Database name'
+ $defaultDbName = $this->getText( "mysql_wgDBname" );
+ $this->type( "mysql_wgDBname", " ");
+ $this->type( "mysql_wgDBname", $databaseName );
+ $this->assertNotEquals( $defaultDbName, $databaseName );
+
+ // 'Database settings' page
+ parent::clickContinueButton();
+
+ // 'Name' page
+ parent::clickContinueButton();
+ parent::completeNamePage();
+
+ // 'Options page
+ parent::clickContinueButton();
+
+ // 'Install' page
+ parent::clickContinueButton();
+
+ // 'Complete' page
+ parent::completePageSuccessfull();
+ parent::restartInstallation();
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiMySQLiteDataBaseTestCase.php b/tests/selenium/installer/MediaWikiMySQLiteDataBaseTestCase.php
new file mode 100644
index 00000000..fe704a42
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiMySQLiteDataBaseTestCase.php
@@ -0,0 +1,79 @@
+<?php
+
+/**
+ * MediaWikiMySQLiteataBaseTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+/*
+ * Test Case ID : 06 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Install Mediawiki using 'MySQL' database type successfully
+ * Version : MediaWiki 1.18alpha
+*/
+
+class MediaWikiMySQLiteDataBaseTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Verify MediaWiki installation using 'MySQL' database type
+ public function testMySQLDatabaseSuccess() {
+
+ $databaseName = DB_NAME_PREFIX."_sqlite_db";
+
+ parent::navigateConnetToDatabasePage();
+ $this->click( "DBType_sqlite" );
+
+ // Select 'SQLite' database type
+ $this->assertEquals( "SQLite settings", $this->getText( "//div[@id='DB_wrapper_sqlite']/h3" ));
+
+ // Change database name
+ $defaultDbName = $this->getText( "sqlite_wgDBname" );
+ $this->type( "sqlite_wgDBname", " ");
+ $this->type( "sqlite_wgDBname", $databaseName );
+ $this->assertNotEquals( $defaultDbName, $databaseName );
+
+ // 'Database settings' page
+ parent::clickContinueButton();
+
+ // 'Name' page
+ parent::clickContinueButton();
+ parent::completeNamePage();
+
+ // 'Options page
+ parent::clickContinueButton();
+
+ // 'Install' page
+ parent::clickContinueButton();
+
+ // 'Complete' page
+ parent::completePageSuccessfull();
+ parent::restartInstallation();
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiOnAlreadyInstalledTestCase.php b/tests/selenium/installer/MediaWikiOnAlreadyInstalledTestCase.php
new file mode 100644
index 00000000..e8b8f9b0
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiOnAlreadyInstalledTestCase.php
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+
+/*
+ * Test Case ID : 03 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Install mediawiki on a already installed Mediawiki.]
+ * Version : MediaWiki 1.18alpha
+*/
+
+class MediaWikiOnAlreadyInstalledTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Install Mediawiki using 'MySQL' database type.
+ public function testInstallOnAlreadyInstalled() {
+
+ $databaseName = DB_NAME_PREFIX."_already_installed";
+ parent::navigateInstallPage( $databaseName );
+
+ // 'Options' page
+ parent::clickBackButton();
+
+ // Install page
+ parent::clickContinueButton();
+
+ // 'Install' page should display after the 'Option' page
+ $this->assertEquals( "Install", $this->getText( LINK_DIV."h2" ));
+
+ // Verify warning text displayed
+ $this->assertEquals( "Warning: You seem to have already installed MediaWiki and are trying to install it again. Please proceed to the next page.",
+ $this->getText( LINK_FORM."div[1]/div[2]" ));
+
+ // Complete page
+ parent::clickContinueButton();
+ parent::completePageSuccessfull();
+ $this->chooseCancelOnNextConfirmation();
+ parent::restartInstallation();
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiRestartInstallationTestCase.php b/tests/selenium/installer/MediaWikiRestartInstallationTestCase.php
new file mode 100644
index 00000000..b0a38000
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiRestartInstallationTestCase.php
@@ -0,0 +1,115 @@
+<?php
+
+/**
+ * MediaWikiRestartInstallationTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+/*
+ * Test Case ID : 11, 12 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Install mediawiki on a already installed Mediawiki.
+ * Version : MediaWiki 1.18alpha
+*/
+
+class MediaWikiRestartInstallationTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Verify restarting the installation
+ public function testSuccessRestartInstallation() {
+
+ $dbNameBeforeRestart = DB_NAME_PREFIX."_db_before";
+ parent::navigateDatabaseSettingsPage( $dbNameBeforeRestart );
+
+ // Verify 'Restart installation' link available
+ $this->assertTrue($this->isElementPresent( "link=Restart installation" ));
+
+ // Click 'Restart installation'
+ $this->click( "link=Restart installation ");
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Restart Installation' page displayed
+ $this->assertEquals( "Restart installation", $this->getText( LINK_DIV."h2"));
+
+ // Restart warning message displayed
+ $this->assertTrue($this->isTextPresent( "exact:Do you want to clear all saved data that you have entered and restart the installation process?" ));
+
+ // Click on the 'Yes, restart' button
+ $this->click( "submit-restart" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Navigate to the initial installation page(Language).
+ $this->assertEquals( "Language", $this->getText( LINK_DIV."h2" ));
+
+ // 'Welcome to MediaWiki!' page
+ parent::clickContinueButton();
+
+ // 'Connect to database' page
+ parent::clickContinueButton();
+
+ // saved data should be deleted
+ $dbNameAfterRestart = $this->getValue("mysql_wgDBname");
+ $this->assertNotEquals($dbNameBeforeRestart, $dbNameAfterRestart);
+ }
+
+
+ // Verify cancelling restart
+ public function testCancelRestartInstallation() {
+
+ $dbNameBeforeRestart = DB_NAME_PREFIX."_cancel_restart";
+
+ parent::navigateDatabaseSettingsPage( $dbNameBeforeRestart);
+ // Verify 'Restart installation' link available
+ $this->assertTrue($this->isElementPresent( "link=Restart installation" ));
+
+ $this->click( "link=Restart installation" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Restart Installation' page displayed
+ $this->assertEquals( "Restart installation", $this->getText( LINK_DIV."h2" ));
+
+ // Restart warning message displayed
+ $this->assertTrue( $this->isTextPresent( "Do you want to clear all saved data that you have entered and restart the installation process?"));
+
+ // Click on the 'Back' button
+ parent::clickBackButton();
+
+ // Navigates to the previous page
+ $this->assertEquals( "Database settings", $this->getText( LINK_DIV."h2" ));
+
+ // 'Connect to database' page
+ parent::clickBackButton();
+
+ // Saved data remain on the page.
+ $dbNameAfterRestart = $this->getValue( "mysql_wgDBname" );
+ $this->assertEquals( $dbNameBeforeRestart, $dbNameAfterRestart );
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiRightFrameworkLinksTestCase.php b/tests/selenium/installer/MediaWikiRightFrameworkLinksTestCase.php
new file mode 100644
index 00000000..346f24f8
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiRightFrameworkLinksTestCase.php
@@ -0,0 +1,93 @@
+<?php
+
+/**
+ * MediaWikiRightFrameworkLinksTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+/*
+ * Test Case ID : 14, 15, 16, 17 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : User selects 'Read me' link.
+ * User selects 'Release notes' link.
+ * User selects 'Copying' link.
+ * User selects 'Upgrading' link.
+ * Version : MediaWiki 1.18alpha
+*/
+
+
+class MediaWikiRightFrameworkLinksTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ public function testLinksAvailability() {
+
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // Verify 'Read me' link availability
+ $this->assertTrue($this->isElementPresent( "link=Read me" ));
+
+ // Verify 'Release notes' link availability
+ $this->assertTrue($this->isElementPresent( "link=Release notes" ));
+
+ // Verify 'Copying' link availability
+ $this->assertTrue($this->isElementPresent( "link=Copying" ));
+ }
+
+ public function testPageNavigation() {
+
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // Navigate to the 'Read me' page
+ $this->click( "link=Read me" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ $this->assertEquals( "Read me", $this->getText( LINK_DIV."h2[1]" ));
+ $this->assertTrue($this->isElementPresent( "submit-back" ));
+ parent::clickBackButton();
+
+ // Navigate to the 'Release notes' page
+ $this->click( "link=Release notes" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME);
+ $this->assertEquals( "Release notes", $this->getText( LINK_DIV."h2[1]" ));
+ $this->assertTrue( $this->isElementPresent( "submit-back" ));
+ parent::clickBackButton();
+
+ // Navigate to the 'Copying' page
+ $this->click( "link=Copying" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ $this->assertEquals( "Copying", $this->getText( LINK_DIV."h2[1]" ));
+ $this->assertTrue($this->isElementPresent( "submit-back" ));
+ parent::clickBackButton();
+
+ // Navigate to the 'Upgrading' page
+ $this->click( "link=Upgrading" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ $this->assertEquals( "Upgrading", $this->getText( LINK_DIV."h2[1]" ));
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiUpgradeExistingDatabaseTestCase.php b/tests/selenium/installer/MediaWikiUpgradeExistingDatabaseTestCase.php
new file mode 100644
index 00000000..0ab5e659
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiUpgradeExistingDatabaseTestCase.php
@@ -0,0 +1,117 @@
+<?php
+
+/**
+ * MediaWikiUpgradeExistingDatabaseTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+/*
+ * Test Case ID : 05 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Install Mediawiki by updating the existing database.
+ * Version : MediaWiki 1.18alpha
+*/
+
+
+class MediaWikiUpgradeExistingDatabaseTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Install Mediawiki using 'MySQL' database type.
+ public function testUpgradeExistingDatabase() {
+
+ $databaseName = DB_NAME_PREFIX."_upgrade_existing";
+ parent::navigateInstallPage( $databaseName );
+
+ $this->open( "http://localhost:".PORT."/".DIRECTORY_NAME."/config/index.php" );
+ $this->assertEquals( "Install", $this->getText( LINK_DIV."h2" ));
+ $this->assertEquals( "Warning: You seem to have already installed MediaWiki and are trying to install it again. Please proceed to the next page.",
+ $this->getText( LINK_DIV."div[2]/form/div[1]/div[2]" ));
+
+ // 'Optionis' page
+ parent::clickBackButton();
+
+ // 'Name' page
+ parent::clickBackButton();
+
+ // 'Database settings' page
+ parent::clickBackButton();
+
+ // 'Connect to database' page
+ parent::clickBackButton();
+ $this->type( "mysql_wgDBname", $databaseName );
+ parent::clickContinueButton();
+
+ // 'Upgrade existing installation' page displayed next to the 'Connect to database' page.
+ $this->assertEquals( "Upgrade existing installation", $this->getText( LINK_DIV."h2" ));
+
+ // Warning message displayed.
+ $this->assertEquals( "There are MediaWiki tables in this database. To upgrade them to MediaWiki 1.18alpha, click Continue.",
+ $this->getText( LINK_DIV."div[2]/form/div[1]/div[2]" ));
+
+ parent::clickContinueButton();
+ $this->assertEquals( "Upgrade existing installation",
+ $this->getText( LINK_DIV."h2" ));
+
+ // 'Upgrade complete.' text display
+ $this->assertEquals("Upgrade complete.",
+ $this->getText("//div[@id='bodyContent']/div/div[1]/div[4]/form/div[1]/div[2]/p[1]"));
+
+ $this->assertEquals("You can now Folder/index.php start using your wiki.",
+ $this->getText("//div[@id='bodyContent']/div/div[1]/div[4]/form/div[1]/div[2]/p[2]" ));
+
+ $this->assertEquals( "Folder/index.php start using your wiki",
+ $this->getText( "link=Folder/index.php start using your wiki" ));
+
+ $this->assertTrue($this->isElementPresent( "submit-regenerate" ));
+ $this->click( "submit-regenerate" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ $this->assertEquals( "Database settings",
+ $this->getText( LINK_DIV."h2" ));
+
+ // 'Database settings' page
+ parent::clickContinueButton();
+
+ // Name page
+ parent::completeNamePage();
+
+ // Options page
+ parent::clickContinueButton();
+
+ // Install page
+ $this->assertEquals( "Warning: You seem to have already installed MediaWiki and are trying to install it again. Please proceed to the next page.",
+ $this->getText( LINK_FORM."div[1]/div[2]" ));
+ parent::clickContinueButton();
+
+ // complete
+ parent::completePageSuccessfull();
+ $this->chooseCancelOnNextConfirmation();
+ parent::restartInstallation();
+ }
+} \ No newline at end of file
diff --git a/tests/selenium/installer/MediaWikiUserInterfaceTestCase.php b/tests/selenium/installer/MediaWikiUserInterfaceTestCase.php
new file mode 100644
index 00000000..7be39c04
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiUserInterfaceTestCase.php
@@ -0,0 +1,531 @@
+<?php
+
+/**
+ * MediaWikiUserInterfaceTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+/*
+ * Test Case ID : 18 - 27 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : UI of MediaWiki initial/ Language/ Welcome to MediaWiki!/ Connect to database/
+ * Database settings/ Name/ Options/ Install/ Complete/ Restart Inslation pages
+ * Version : MediaWiki 1.18alpha
+*/
+
+
+class MediaWikiUserInterfaceTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+
+ public function testInitialPageUI() {
+
+ parent::navigateInitialpage();
+
+ // MediaWiki logo available
+ $this->assertTrue( $this->isElementPresent( "//img[@alt='The MediaWiki logo']" ));
+
+ // 'MediaWiki 1.18alpha' text available
+ $this->assertEquals( "MediaWiki 1.18alpha", $this->getText( "//h1" ));
+
+ // 'LocalSettings.php not found.' text available
+ $this->assertEquals( "LocalSettings.php not found.", $this->getText( "//p[1]" ));
+
+ // 'Please set up the wiki first' text available
+ $this->assertEquals( "Please set up the wiki first.", $this->getText( "//p[2]" ));
+
+ // 'set up the wiki' link available
+ $this->assertTrue($this->isElementPresent( "link=set up the wiki" ));
+ }
+
+
+ public function testlanguagePageUI() {
+
+ parent::navigateLanguagePage();
+
+ // Verify 'Language' heading
+ $this->assertEquals( "Language", $this->getText( LINK_DIV."h2" ));
+
+ // 'Your language' label available
+ $this->assertEquals( "Your language:",
+ $this->getText( LINK_FORM."div[1]/div[1]/label" ));
+
+ // 'Your language' dropdown available
+ $this->assertTrue( $this->isElementPresent( "UserLang" ));
+
+ // 'Wiki language' label available
+ $this->assertEquals( "Wiki language:",
+ $this->getText( LINK_FORM."div[2]/div[1]/label" ));
+
+ // 'Wiki language' dropdown available
+ $this->assertTrue($this->isElementPresent( "ContLang" ));
+ }
+
+
+ public function testWelcometoMediaWikiUI() {
+
+ parent::navigateWelcometoMediaWikiPage();
+
+ // Verify 'Welcome to MediaWiki!' heading
+ $this->assertEquals( "Welcome to MediaWiki!",
+ $this->getText( LINK_DIV."h2" ));
+
+ // Verify environment ok text displayed.
+ $this->assertEquals( "The environment has been checked.You can install MediaWiki.",
+ $this->getText( LINK_DIV."div[6]/span" ));
+ }
+
+
+ public function testConnectToDatabaseUI() {
+
+ parent::navigateConnetToDatabasePage();
+
+ // 'MYSQL radio button available
+ $this->assertEquals( "MySQL",
+ $this->getText( LINK_FORM."div[2]/div[2]/ul/li[1]/label" ));
+ $this->assertTrue( $this->isElementPresent( LINK_FORM."div[2]/div[2]/ul/li[1]" ));
+
+ // 'SQLite' radio button available
+ $this->assertTrue( $this->isElementPresent( LINK_FORM."div[2]/div[2]/ul/li[2]" ));
+ $this->assertEquals( "SQLite", $this->getText( LINK_FORM."div[2]/div[2]/ul/li[2]/label "));
+
+ // 'Database host' label available
+ $this->assertEquals( "Database host:", $this->getText( "//div[@id='DB_wrapper_mysql']/div/div[1]/label" ));
+
+ // 'Database host' text box default to 'localhost'
+ $this->assertEquals( "localhost", $this->getValue( "mysql_wgDBserver" ));
+
+ // 'Identify this wiki' section available
+ $this->assertTrue( $this->isElementPresent( "//div[@id='DB_wrapper_mysql']/fieldset[1]/legend" ));
+
+ // 'Identify this wiki' label available
+ $this->assertEquals( "Identify this wiki", $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[1]/legend" ));
+
+ // 'Database name' lable available
+ $this->assertEquals( "Database name:",
+ $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[1]/div[1]/div[1]/label" ));
+
+ // Verify 'Database name:' text box is default to 'my_wiki'
+ $this->assertEquals( "my_wiki", $this->getValue( "mysql_wgDBname" ));
+
+ // Verify 'Database table prefix:' label available
+ $this->assertEquals( "Database table prefix:",
+ $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[1]/div[2]/div[1]/label" ));
+
+ // 'User account for installation' section available
+ $this->assertTrue( $this->isElementPresent( "//div[@id='DB_wrapper_mysql']/fieldset[2]/legend" ));
+
+ // 'User account for installation' label available
+ $this->assertEquals( "User account for installation", $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/legend" ));
+
+ // 'Database username' label available
+ $this->assertEquals( "Database username:",
+ $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[1]/div[1]/label" ));
+
+ // 'Database username' text box defaults to 'root'
+ $this->assertEquals("root", $this->getValue( "mysql__InstallUser" ));
+
+ // 'Database password' label available
+ $this->assertEquals( "Database password:",
+ $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[2]/div[1]/label" ));
+ }
+
+
+
+ public function testDatabaseSettingsUI() {
+
+ $databaseName = DB_NAME_PREFIX."_db_settings_UI";
+ parent::navigateDatabaseSettingsPage( $databaseName );
+
+ // 'Database settings' text available.
+ $this->assertEquals( "Database settings", $this->getText( LINK_DIV."h2" ));
+
+ // 'Database account for web access' section available
+ $this->assertTrue( $this->isElementPresent( LINK_FORM."fieldset" ));
+
+ // 'Database account for web access' label available
+ $this->assertEquals( "Database account for web access", $this->getText( LINK_FORM."fieldset/legend" ));
+
+ // 'Use the same account as for installation' check box available
+ $this->assertEquals( "Use the same account as for installation", $this->getText( LINK_FORM."fieldset/div[1]/label" ));
+
+ // 'Use the same account as for installation' check box is selected by default
+ $this->assertEquals( "on", $this->getValue( "mysql__SameAccount" ));
+
+ // 'Use the same account as for installation' check box deselected
+ $this->click( "mysql__SameAccount" );
+
+ // verify 'Use the same account as for installation' check box is not selected
+ $this->assertEquals( "off", $this->getValue( "mysql__SameAccount" ));
+
+ // 'Database username' label available
+ $this->assertEquals( "Database username:", $this->getText( "//div[@id='dbOtherAccount']/div[1]/div[1]/label" ));
+
+ // 'Database username' text box is default to the 'wikiuser'
+ $this->assertEquals( "wikiuser", $this->getValue( "mysql_wgDBuser" ));
+
+ // 'Database password' label available
+ $this->assertEquals( "Database password:", $this->getText( "//div[@id='dbOtherAccount']/div[2]/div[1]/label" ));
+
+ // 'Create the account if it does not already exist' label available
+ $this->assertEquals( "Create the account if it does not already exist", $this->getText( "//div[@id='dbOtherAccount']/div[4]/label" ));
+
+ // 'Create the account if it does not already exist' check box is not selected by default
+ $this->assertEquals( "off" , $this->getValue( "mysql__CreateDBAccount" ));
+
+ // 'Create the account if it does not already exist' check box selected
+ $this->click( "mysql__CreateDBAccount" );
+
+ // Verify 'Create the account if it does not already exist' check box is selected
+ $this->assertEquals( "on" , $this->getValue( "mysql__CreateDBAccount" ));
+ $this->click( "mysql__SameAccount" );
+ $this->assertEquals( "on", $this->getValue( "mysql__SameAccount" ));
+
+ // 'Storage engine' label available
+ $this->assertEquals( "Storage engine:",
+ $this->getText( LINK_FORM."div[1]/div[1]/label"));
+
+ // 'InnoDB' label available
+ $this->assertEquals( "InnoDB",
+ $this->getText( LINK_FORM."div[1]/div[2]/ul/li[1]/label" ));
+
+ // 'InnoDB' radio button available
+ $this->assertTrue( $this->isElementPresent( "mysql__MysqlEngine_InnoDB" ));
+
+ // 'MyISAM' label available
+ $this->assertEquals( "MyISAM", $this->getText( LINK_FORM."div[1]/div[2]/ul/li[2]/label" ));
+
+ // 'MyISAM' radio button available
+ $this->assertTrue($this->isElementPresent( "mysql__MysqlEngine_MyISAM" ));
+
+ // 'Database character set' label available
+ $this->assertEquals( "Database character set:",
+ $this->getText( LINK_FORM."div[3]/div[1]/label" ));
+
+ // 'Binary' radio button available
+ $this->assertTrue( $this->isElementPresent( "mysql__MysqlCharset_binary" ));
+
+ // 'Binary' radio button available
+ $this->assertEquals( "Binary", $this->getText( LINK_FORM."div[3]/div[2]/ul/li[1]/label" ));
+
+ // 'UTF-8' radio button available
+ $this->assertTrue( $this->isElementPresent( "mysql__MysqlCharset_utf8" ));
+
+ // 'UTF-8' label available
+ $this->assertEquals( "UTF-8", $this->getText( LINK_FORM."div[3]/div[2]/ul/li[2]/label" ));
+
+ // 'Binary' radio button is selected
+ $this->assertEquals( "on", $this->getValue( "mysql__MysqlCharset_binary" ));
+ }
+
+
+
+ public function testNamePageUI() {
+
+ $databaseName = DB_NAME_PREFIX."_name_UI";
+ parent::navigateNamePage($databaseName);
+
+ // 'Name of wiki' text box available
+ $this->assertEquals( "Name of wiki:",
+ $this->getText( LINK_FORM."div[1]/div[1]/label" ));
+
+ $this->assertTrue( $this->isElementPresent( "config_wgSitename" ));
+
+ // 'Project namespace' label available
+ $this->assertEquals( "Project namespace:",
+ $this->getText( LINK_FORM."div[2]/div[1]/label" ));
+
+ // 'Same as the wiki name' radio button available
+ $this->assertTrue( $this->isElementPresent( "config__NamespaceType_site-name" ));
+
+ // 'Project' radio button available
+ $this->assertTrue( $this->isElementPresent( "config__NamespaceType_generic" ));
+
+ // 'Project' radio button available
+ $this->assertTrue( $this->isElementPresent( "config__NamespaceType_other" ));
+
+ // 'Same as the wiki name' label available
+ $this->assertEquals( "Same as the wiki name:",
+ $this->getText( LINK_FORM."div[2]/div[2]/ul/li[1]/label" ));
+
+ // 'Project' label available
+ $this->assertEquals("Project",
+ $this->getText( LINK_FORM."div[2]/div[2]/ul/li[2]/label" ));
+
+ // 'Project' label available
+ $this->assertEquals( "Other (specify)",
+ $this->getText( LINK_FORM."div[2]/div[2]/ul/li[3]/label" ));
+
+ // 'Same as the wiki name' radio button selected by default
+ $this->assertEquals( "on", $this->getValue( "config__NamespaceType_site-name" ));
+
+ // 'Administrator account' section available
+ $this->assertTrue( $this->isElementPresent( LINK_FORM."fieldset" ));
+
+ // 'Administrator account' label available
+ $this->assertEquals( "Administrator account",
+ $this->getText( LINK_FORM."fieldset/legend" ));
+
+ // 'Your Name' label available
+ $this->assertEquals( "Your name:",
+ $this->getText( LINK_FORM."fieldset/div[1]/div[1]/label" ));
+
+ // 'Your Name' text box available
+ $this->assertTrue( $this->isElementPresent( "config__AdminName" ));
+
+ // 'Password' label available
+ $this->assertEquals( "Password:",
+ $this->getText( LINK_FORM."fieldset/div[2]/div[1]/label" ));
+
+ // 'Password' text box available
+ $this->assertTrue( $this->isElementPresent( "config__AdminPassword" ));
+
+ // 'Password again' label available
+ $this->assertEquals( "Password again:",
+ $this->getText( LINK_FORM."fieldset/div[3]/div[1]/label" ));
+
+ // 'Password again' text box available
+ $this->assertTrue( $this->isElementPresent( "config__AdminPassword2" ));
+
+ // 'Email address' label avaialble
+ $this->assertEquals( "E-mail address:",
+ $this->getText( LINK_FORM."fieldset/div[4]/div[1]/label" ));
+
+ // 'Email address' text box available
+ $this->assertTrue( $this->isElementPresent( "config__AdminEmail" ));
+
+ // Message displayed
+ $this->assertEquals( "You are almost done! You can now skip the remaining configuration and install the wiki right now.",
+ $this->getText( LINK_FORM."/div[4]/div[2]/p" ));
+
+ // 'Ask me more questions.' radio button available
+ $this->assertTrue( $this->isElementPresent( "config__SkipOptional_continue" ));
+
+ // 'Ask me more questions.' label available
+ $this->assertEquals( "Ask me more questions.",
+ $this->getText( LINK_FORM."div[5]/div[2]/ul/li[1]/label" ));
+
+ // 'I'm bored already, just install the wiki' radio button is avaiable
+ $this->assertTrue( $this->isElementPresent( "config__SkipOptional_skip" ));
+
+ // 'I'm bored already, just install the wiki' label available
+ $this->assertEquals( "I'm bored already, just install the wiki.",
+ $this->getText( LINK_FORM."div[5]/div[2]/ul/li[2]/label" ));
+
+ // 'Ask me more questions.' radio button is default selected
+ $this->assertEquals( "on", $this->getValue( "config__SkipOptional_continue" ));
+ }
+
+
+
+ public function testOptionPageUI() {
+
+ $databaseName = DB_NAME_PREFIX."_options_UI";
+ parent::navigateOptionsPage($databaseName);
+
+ // 'Options' label available
+ $this->assertEquals( "Options", $this->getText( LINK_DIV."h2"));
+
+ // 'Return e-mail address' label available
+ $this->assertEquals( "Return e-mail address:", $this->getText( "//div[@id='emailwrapper']/div[1]/div[1]/label" ));
+
+ // 'Return e-mail address' text box available
+ $this->assertTrue( $this->isElementPresent( "config_wgPasswordSender" ));
+
+ // Text 'apache@localhost' is default value of the 'Return e-mail address' text box
+ $this->assertEquals( "apache@localhost", $this->getValue( "config_wgPasswordSender" ));
+
+ // 'Logo URL' label available
+ $this->assertEquals( "Logo URL:", $this->getText( LINK_FORM."fieldset[2]/div[3]/div[1]/label" ));
+
+ // 'Logo URL' text box available
+ $this->assertTrue( $this->isElementPresent( "config_wgLogo" ));
+
+ // Correct path available in the 'Logo URL' text box
+ $this->assertEquals( "/wiki/skins/common/images/wiki.png", $this->getValue( "config_wgLogo" ));
+
+ // 'Enable file uploads' radio button available
+ $this->assertTrue( $this->isElementPresent( "config_wgEnableUploads" ));
+
+ // 'Enable file uploads' label available
+ $this->assertEquals( "Enable file uploads",
+ $this->getText( LINK_FORM."fieldset[2]/div[1]/label" ));
+
+ // 'Enable file uploads' check box is not selected
+ $this->assertEquals( "off", $this->getValue( "config_wgEnableUploads" ));
+
+ $this->click( "config_wgEnableUploads" );
+
+ // 'Directory for deleted files' label available
+ $this->assertEquals( "Directory for deleted files:",
+ $this->getText( "//div[@id='uploadwrapper']/div/div[1]/label" ));
+
+ // 'Directory for deleted files' text box available
+ $this->assertTrue( $this->isElementPresent( "config_wgDeletedDirectory" ));
+
+ // Correct path available in the 'Directory for deleted files' text box
+ $this->assertEquals( "C:\\wamp\\www\\".DIRECTORY_NAME."/images/deleted",
+ $this->getValue( "config_wgDeletedDirectory" ));
+ }
+
+
+
+ public function testInstallPageUI() {
+
+ $databaseName = DB_NAME_PREFIX."_install_UI";
+ parent::navigateInstallPage( $databaseName );
+
+ // Verify installation done messages display
+ $this->assertEquals( "Setting up database... done",
+ $this->getText( LINK_FORM."ul/li[1]" ));
+ $this->assertEquals( "Creating tables... done",
+ $this->getText( LINK_FORM."ul/li[2]" ));
+ $this->assertEquals( "Creating database user... done",
+ $this->getText( LINK_FORM."ul/li[3]" ));
+ $this->assertEquals( "Populating default interwiki table... done",
+ $this->getText( LINK_FORM."ul/li[4]" ));
+ $this->assertEquals( "Generating secret key... done",
+ $this->getText( LINK_FORM."ul/li[5]" ));
+ $this->assertEquals( "Generating default upgrade key... done",
+ $this->getText( LINK_FORM."ul/li[6]" ));
+ $this->assertEquals( "Creating administrator user account... done",
+ $this->getText( LINK_FORM."ul/li[7]" ));
+ $this->assertEquals( "Creating main page with default content... done",
+ $this->getText( LINK_FORM."ul/li[8]" ));
+ }
+
+
+
+ public function testCompletePageUI() {
+
+ $databaseName = DB_NAME_PREFIX."_complete_UI";
+ parent::navigateCompletePage( $databaseName );
+
+ // 'Congratulations!' text display
+ $this->assertEquals("Congratulations!",
+ $this->getText( LINK_FORM."div[1]/div[2]/p[1]/b"));
+ // 'LocalSettings.php' generated message display
+ $this->assertEquals( "The installer has generated a LocalSettings.php file. It contains all your configuration.",
+ $this->getText( LINK_FORM."div[1]/div[2]/p[2]" ));
+
+ // 'Download LocalSettings.php'' link available
+ $this->assertTrue( $this->isElementPresent( "link=Download LocalSettings.php" ));
+
+ // 'enter your wiki' link available
+ $this->assertTrue($this->isElementPresent("link=Folder/index.php enter your wiki"));
+ }
+
+
+
+ public function testRestartInstallation() {
+
+ parent::navigateConnetToDatabasePage();
+ $this->click( "link=Restart installation" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Restart installation' label should be available.
+ $this->assertEquals( "Restart installation", $this->getText( LINK_DIV."h2" ));
+
+ //'Do you want to clear all saved data that you have entered and restart the installation process?' label available
+ $this->assertEquals( "Do you want to clear all saved data that you have entered and restart the installation process?",
+ $this->getText( "//*[@id='bodyContent']/div/div/div[2]/form/div[1]/div[2]" ));
+ // 'Back' button available
+ $this->assertTrue($this->isElementPresent( "submit-back" ));
+
+ // 'Restart' button available
+ $this->assertTrue($this->isElementPresent( "submit-restart" ));
+ }
+
+
+
+ public function testMediaWikiLogoAvailability() {
+
+ $databaseName = DB_NAME_PREFIX."_mediawiki_logo";
+ parent::navigateInitialpage();
+ parent::mediaWikiLogoPresentInitialScreen();
+ $this->click( "link=set up the wiki" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Language' page
+ parent::mediaWikiLogoPresent();
+ parent::clickContinueButton();
+
+ // 'Welcome to MediaWiki' page
+ parent::mediaWikiLogoPresent();
+ parent::clickContinueButton();
+
+ // 'Connet to database' page
+ parent::mediaWikiLogoPresent();
+ $this->type("mysql_wgDBname", $databaseName );
+ parent::clickContinueButton();
+
+ // 'Database setting' page
+ parent::mediaWikiLogoPresent();
+ parent::clickContinueButton();
+
+ // 'Name' page
+ parent::mediaWikiLogoPresent();
+ parent::completeNamePage();
+ parent::clickContinueButton();
+
+ // 'Options' page
+ parent::mediaWikiLogoPresent();
+ parent::clickContinueButton();
+
+ // 'Install' page
+ parent::mediaWikiLogoPresent();
+ }
+
+
+ public function testRightFramework() {
+
+ parent::navigateLanguagePage();
+ // Verfy right framework texts display
+ $this->assertEquals( "Language",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[1]" ));
+ $this->assertEquals( "Existing wiki",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[2]" ));
+ $this->assertEquals( "Welcome to MediaWiki!",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[3]" ));
+ $this->assertEquals( "Connect to database",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[4]" ));
+ $this->assertEquals( "Upgrade existing installation",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[5]" ));
+ $this->assertEquals( "Database settings",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[6]" ));
+ $this->assertEquals( "Name",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[7]" ));
+ $this->assertEquals( "Options",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[8]" ));
+ $this->assertEquals( "Install",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[9]" ));
+ $this->assertEquals( "Complete!",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[10]/span" ));
+ }
+}
diff --git a/tests/selenium/installer/README.txt b/tests/selenium/installer/README.txt
new file mode 100644
index 00000000..83d1a346
--- /dev/null
+++ b/tests/selenium/installer/README.txt
@@ -0,0 +1,32 @@
+== Details==
+
+Automated Selenium test scripts written for MediaWiki Installer is available at svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/tests/selenium/installer.
+Detailed test cases available at http://www.mediawiki.org/wiki/New_installer/Test_plan.
+
+Version : MediaWiki 1.18alpha
+Date : 27/12/2010
+
+== Running tests ==
+
+Test cases can be run independently or can run all the test cases using MediaWikiInstallerTestSuite.php within PHPUnit/Selenium.
+
+
+== Dependencies ==
+
+MediaWikiInstallationConfig.php
+
+Value of the 'DB_NAME_PREFIX' should be replace with the database name prefix. Several DB instances will get created to cover different installation scenarios starting with the above prefix.
+You need to change the value of the 'DB_NAME_PREFIX' in MediaWikiInstallationConfig everytime you planned to
+run the tests.
+'DIRECTORY_NAME', 'PORT' and the 'HOST_NAME' should be replaced with your local values.
+You may specify the test browser you wish to run the test using 'TEST_BROWSER'. Default browser is Firefox.
+
+Note : MediaWikiInstallerTestSuite.php has no dependency on 'Selenium' test framework.
+
+
+== Known problems ==
+
+If you run the MediaWikiInstallerTestSuite.php twice without changing the name of the database, the second run should be falied.
+(Please read the more information on how to change the database name which is avaialable under 'Dependencies' section)
+
+
diff --git a/tests/selenium/selenium_settings.ini.sample b/tests/selenium/selenium_settings.ini.sample
new file mode 100644
index 00000000..b1d88193
--- /dev/null
+++ b/tests/selenium/selenium_settings.ini.sample
@@ -0,0 +1,32 @@
+[SeleniumSettings]
+
+; Set up the available browsers that Selenium can control.
+browsers[firefox] = "*firefox"
+browsers[iexplorer] = "*iexploreproxy"
+browsers[chrome] = "*chrome"
+
+; The simple configurations above usually work on Linux, but Windows and
+; Mac OS X hosts may need to specify a full path:
+;browsers[firefox] = "*firefox /Applications/Firefox.app/Contents/MacOS/firefox-bin"
+;browsers[firefox] = "*firefox C:\Program Files\Mozilla Firefox\firefox.exe"
+
+host = "localhost"
+port = "4444"
+wikiUrl = "http://localhost/deployment"
+username = "wikiuser"
+userPassword = "wikipass"
+testBrowser = "firefox"
+startserver =
+stopserver =
+jUnitLogFile =
+runAgainstGrid = false
+
+; To let the test runner start and stop the selenium server, it needs the full
+; path to selenium-server.jar from the selenium-remote-control package.
+seleniumserverexecpath = "/opt/local/selenium-remote-control-1.0.3/selenium-server-1.0.3/selenium-server.jar"
+
+[SeleniumTests]
+
+testSuite[SimpleSeleniumTestSuite] = "tests/selenium/suites/SimpleSeleniumTestSuite.php"
+testSuite[WikiEditorTestSuite] = "extensions/WikiEditor/selenium/WikiEditorTestSuite.php"
+
diff --git a/tests/selenium/selenium_settings_grid.ini.sample b/tests/selenium/selenium_settings_grid.ini.sample
new file mode 100644
index 00000000..3bbd534a
--- /dev/null
+++ b/tests/selenium/selenium_settings_grid.ini.sample
@@ -0,0 +1,16 @@
+[SeleniumSettings]
+
+host = "grid.tesla.usability.wikimedia.org"
+port = "4444"
+wikiUrl = "http://208.80.152.253:5001"
+username = "wikiuser"
+userPassword = "wikipass"
+testBrowser = "Safari on OS X Snow Leopard"
+jUnitLogFile =
+runAgainstGrid = true
+startserver = false
+stopserver = false
+
+[SeleniumTests]
+
+testSuite[SimpleSeleniumTestSuite] = "tests/selenium/suites/SimpleSeleniumTestSuite.php"
diff --git a/tests/selenium/suites/AddContentToNewPageTestCase.php b/tests/selenium/suites/AddContentToNewPageTestCase.php
new file mode 100644
index 00000000..72e75e11
--- /dev/null
+++ b/tests/selenium/suites/AddContentToNewPageTestCase.php
@@ -0,0 +1,182 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+
+class AddContentToNewPageTestCase extends SeleniumTestCase {
+
+
+ // Add bold text and verify output
+ public function testAddBoldText() {
+
+ $this->getExistingPage();
+ $this->clickEditLink();
+ $this->loadWikiEditor();
+ $this->clearWikiEditor();
+ $this->click( "//*[@id='mw-editbutton-bold']" );
+ $this->clickShowPreviewBtn();
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify bold text displayed on mediawiki preview
+ $this->assertTrue($this->isElementPresent( "//div[@id='wikiPreview']/p/b" ));
+ $this->assertTrue($this->isTextPresent( "Bold text" ));
+ }
+
+ // Add italic text and verify output
+ public function testAddItalicText() {
+
+ $this->getExistingPage();
+ $this->clickEditLink();
+ $this->loadWikiEditor();
+ $this->clearWikiEditor();
+ $this->click( "//*[@id='mw-editbutton-italic']" );
+ $this->clickShowPreviewBtn();
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify italic text displayed on mediawiki preview
+ $this->assertTrue($this->isElementPresent("//div[@id='wikiPreview']/p/i"));
+ $this->assertTrue($this->isTextPresent( "Italic text" ));
+ }
+
+ // Add internal link for a new page and verify output in the preview
+ public function testAddInternalLinkNewPage() {
+ $this->getExistingPage();
+ $this->clickEditLink();
+ $this->loadWikiEditor();
+ $this->clearWikiEditor();
+ $this->click( "//*[@id='mw-editbutton-link']" );
+ $this->clickShowPreviewBtn();
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify internal link displayed on mediawiki preview
+ $source = $this->getText( "//*[@id='wikiPreview']/p/a" );
+ $correct = strstr( $source, "Link title" );
+ $this->assertEquals( $correct, true );
+
+ $this->click( SeleniumTestConstants::LINK_START."Link title" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify internal link open as a new page - editing mode
+ $source = $this->getText( "firstHeading" );
+ $correct = strstr( $source, "Editing Link title" );
+ $this->assertEquals( $correct, true );
+ }
+
+ // Add external link and verify output in the preview
+ public function testAddExternalLink() {
+ $this->getExistingPage();
+ $this->clickEditLink();
+ $this->loadWikiEditor();
+ $this->clearWikiEditor();
+ $this->click( "//*[@id='mw-editbutton-extlink']" );
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, "[http://www.google.com Google]" );
+ $this->clickShowPreviewBtn();
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify external links displayed on mediawiki preview
+ $source = $this->getText( "//*[@id='wikiPreview']/p/a" );
+ $correct = strstr( $source, "Google" );
+ $this->assertEquals( $correct, true );
+
+ $this->click( SeleniumTestConstants::LINK_START."Google" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify external link opens
+ $source = $this->getTitle();
+ $correct = strstr( $source, "Google" );
+ $this->assertEquals( $correct, true);
+ }
+
+ // Add level 2 headline and verify output in the preview
+ public function testAddLevel2HeadLine() {
+ $blnElementPresent = false;
+ $blnTextPresent = false;
+ $this->getExistingPage();
+ $this->clickEditLink();
+ $this->loadWikiEditor();
+ $this->clearWikiEditor();
+ $this->click( "mw-editbutton-headline" );
+ $this->clickShowPreviewBtn();
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertTrue($this->isElementPresent( "//div[@id='wikiPreview']/h2" ));
+
+ // Verify level 2 headline displayed on mediawiki preview
+ $source = $this->getText( "//*[@id='Headline_text']" );
+ $correct = strstr( $source, "Headline text" );
+ $this->assertEquals( $correct, true );
+ }
+
+ // Add text with ignore wiki format and verify output the preview
+ public function testAddNoWikiFormat() {
+ $this->getExistingPage();
+ $this->clickEditLink();
+ $this->loadWikiEditor();
+ $this->clearWikiEditor();
+ $this->click( "//*[@id='mw-editbutton-nowiki']" );
+ $this->clickShowPreviewBtn();
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify ignore wiki format text displayed on mediawiki preview
+ $source = $this->getText( "//div[@id='wikiPreview']/p" );
+ $correct = strstr( $source, "Insert non-formatted text here" );
+ $this->assertEquals( $correct, true );
+ }
+
+ // Add signature and verify output in the preview
+ public function testAddUserSignature() {
+ $this->getExistingPage();
+ $this->clickEditLink();
+ $this->loadWikiEditor();
+ $this->clearWikiEditor();
+ $this->click( "mw-editbutton-signature" );
+ $this->clickShowPreviewBtn();
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify signature displayed on mediawiki preview
+ $source = $this->getText( "//*[@id='wikiPreview']/p/a" );
+ $username = $this->getText( "//*[@id='pt-userpage']/a" );
+ $correct = strstr( $source, $username );
+ $this->assertEquals( $correct, true );
+ }
+
+ // Add horizontal line and verify output in the preview
+ public function testHorizontalLine() {
+ $this->getExistingPage();
+ $this->clickEditLink();
+ $this->loadWikiEditor();
+ $this->clearWikiEditor();
+ $this->click( "mw-editbutton-hr" );
+
+ $this->clickShowPreviewBtn();
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify horizontal line displayed on mediawiki preview
+ $this->assertTrue( $this->isElementPresent( "//div[@id='wikiPreview']/hr" ));
+ $this->deletePage( "new" );
+ }
+}
diff --git a/tests/selenium/suites/AddNewPageTestCase.php b/tests/selenium/suites/AddNewPageTestCase.php
new file mode 100644
index 00000000..f3302e5e
--- /dev/null
+++ b/tests/selenium/suites/AddNewPageTestCase.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+
+class AddNewPageTestCase extends SeleniumTestCase {
+
+ // Verify adding a new page
+ public function testAddNewPage() {
+ $newPage = "new";
+ $displayName = "New";
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->type( "searchInput", $newPage );
+ $this->click( "searchGoButton" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify 'Search results' text available
+ $source = $this->gettext( "firstHeading" );
+ $correct = strstr( $source, "Search results" );
+ $this->assertEquals( $correct, true);
+
+ // Verify 'Create the page "<page name>" on this wiki' text available
+ $source = $this->gettext( "//div[@id='bodyContent']/div[4]/p/b" );
+ $correct = strstr ( $source, "Create the page \"New\" on this wiki!" );
+ $this->assertEquals( $correct, true );
+
+ $this->click( SeleniumTestConstants::LINK_START.$displayName );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->assertTrue($this->isElementPresent( SeleniumTestConstants::LINK_START."Create" ));
+ $this->type( "wpTextbox1", "add new test page" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+
+ // Verify new page added
+ $source = $this->gettext( "firstHeading" );
+ $correct = strstr ( $source, $displayName );
+ $this->assertEquals( $correct, true );
+ }
+}
diff --git a/tests/selenium/suites/CreateAccountTestCase.php b/tests/selenium/suites/CreateAccountTestCase.php
new file mode 100644
index 00000000..5708bcff
--- /dev/null
+++ b/tests/selenium/suites/CreateAccountTestCase.php
@@ -0,0 +1,114 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+Class CreateAccountTestCase extends SeleniumTestCase {
+
+ // Change these values before run the test
+ private $userName = "yourname4000";
+ private $password = "yourpass4000";
+
+ // Verify 'Log in/create account' link existance in Main page.
+ public function testMainPageLink() {
+
+ $this->click( "link=Log out" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->open( $this->getUrl().'/index.php?title=Main_Page' );
+ $this->assertTrue($this->isElementPresent( "link=Log in / create account" ));
+ }
+
+ // Verify 'Create an account' link existance in 'Log in / create account' Page.
+ public function testCreateAccountPageLink() {
+
+ $this->click( "link=Log out" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->open( $this->getUrl().'/index.php?title=Main_Page' );
+
+ // click Log in / create account link to open Log in / create account' page
+ $this->click( "link=Log in / create account" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertTrue($this->isElementPresent( "link=Create an account" ));
+ }
+
+ // Verify Create account
+ public function testCreateAccount() {
+
+ $this->click( "link=Log out" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->open( $this->getUrl().'/index.php?title=Main_Page' );
+
+ $this->click( "link=Log in / create account" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->click( "link=Create an account" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify for blank user name
+ $this->type( "wpName2", "" );
+ $this->click( "wpCreateaccount" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( "Login error\n You have not specified a valid user name.",
+ $this->getText( "//div[@id='bodyContent']/div[4]" ));
+
+ // Verify for invalid user name
+ $this->type( "wpName2", "@" );
+ $this->click("wpCreateaccount" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( "Login error\n You have not specified a valid user name.",
+ $this->getText( "//div[@id='bodyContent']/div[4]" ));
+
+ // start of test for blank password
+ $this->type( "wpName2", $this->userName);
+ $this->type( "wpPassword2", "" );
+ $this->click( "wpCreateaccount" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( "Login error\n Passwords must be at least 1 character.",
+ $this->getText("//div[@id='bodyContent']/div[4]" ));
+
+ $this->type( "wpName2", $this->userName );
+ $this->type( "wpPassword2", $this->password );
+ $this->click( "wpCreateaccount" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( "Login error\n The passwords you entered do not match.",
+ $this->getText( "//div[@id='bodyContent']/div[4]" ));
+
+ $this->type( "wpName2", $this->userName );
+ $this->type( "wpPassword2", $this->password );
+ $this->type( "wpRetype", $this->password );
+ $this->click( "wpCreateaccount" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify successful account creation for valid combination of 'Username', 'Password', 'Retype password'
+ $this->assertEquals( "Welcome, ".ucfirst( $this->userName )."!",
+ $this->getText( "Welcome,_".ucfirst( $this->userName )."!" ));
+ }
+}
+
diff --git a/tests/selenium/suites/DeletePageAdminTestCase.php b/tests/selenium/suites/DeletePageAdminTestCase.php
new file mode 100644
index 00000000..9898188f
--- /dev/null
+++ b/tests/selenium/suites/DeletePageAdminTestCase.php
@@ -0,0 +1,89 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+
+class DeletePageAdminTestCase extends SeleniumTestCase {
+
+ // Verify adding a new page
+ public function testDeletePage() {
+
+
+ $newPage = "new";
+ $displayName = "New";
+
+ $this->open( $this->getUrl().'/index.php?title=Main_Page' );
+
+ $this->type( "searchInput", $newPage );
+ $this->click( "searchGoButton" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( SeleniumTestConstants::LINK_START.$displayName );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, $newPage." text" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->click( SeleniumTestConstants::LINK_START."Log out" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( SeleniumTestConstants::LINK_START."Log in / create account" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->type( "wpName1", $this->selenium->getUser() );
+ $this->type( "wpPassword1", $this->selenium->getPass() );
+ $this->click( "wpLoginAttempt" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->type( "searchInput", "new" );
+ $this->click( "searchGoButton");
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify 'Delete' link displayed
+ $source = $this->gettext( SeleniumTestConstants::LINK_START."Delete" );
+ $correct = strstr ( $source, "Delete" );
+ $this->assertEquals($correct, true );
+
+ $this->click( SeleniumTestConstants::LINK_START."Delete" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify 'Delete' button available
+ $this->assertTrue($this->isElementPresent( "wpConfirmB" ));
+
+ $this->click( "wpConfirmB" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify 'Action complete' text displayed
+ $source = $this->gettext( "firstHeading" );
+ $correct = strstr ( $source, "Action complete" );
+ $this->assertEquals( $correct, true );
+
+ // Verify '<Page Name> has been deleted. See deletion log for a record of recent deletions.' text displayed
+ $source = $this->gettext( "//div[@id='bodyContent']/p[1]" );
+ $correct = strstr ( $source, "\"New\" has been deleted. See deletion log for a record of recent deletions." );
+ $this->assertEquals( $correct, true );
+ }
+}
diff --git a/tests/selenium/suites/EmailPasswordTestCase.php b/tests/selenium/suites/EmailPasswordTestCase.php
new file mode 100644
index 00000000..88d9cf97
--- /dev/null
+++ b/tests/selenium/suites/EmailPasswordTestCase.php
@@ -0,0 +1,81 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+class EmailPasswordTestCase extends SeleniumTestCase {
+
+ // change user name for each and every test (with in 24 hours)
+ private $userName = "test1";
+
+ public function testEmailPasswordButton() {
+
+ $this->click( SeleniumTestConstants::LINK_START."Log out" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->open( $this->getUrl().'/index.php?title=Main_Page' );
+
+ // click Log in / create account link to open Log in / create account' page
+ $this->click( SeleniumTestConstants::LINK_START."Log in / create account" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertTrue($this->isElementPresent( "wpMailmypassword" ));
+ }
+
+ // Verify Email password functionality
+ public function testEmailPasswordMessages() {
+
+ $this->click( SeleniumTestConstants::LINK_START."Log out" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->open( $this->getUrl().'/index.php?title=Main_Page' );
+
+ // click Log in / create account link to open Log in / create account' page
+ $this->click( SeleniumTestConstants::LINK_START."Log in / create account" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->type( "wpName1", "" );
+ $this->click( "wpMailmypassword" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( "Login error\n You have not specified a valid user name.",
+ $this->getText("//div[@id='bodyContent']/div[4]"));
+
+ $this->type( "wpName1", $this->userName );
+ $this->click( "wpMailmypassword" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Can not run on localhost
+ $this->assertEquals( "A new password has been sent to the e-mail address registered for ".ucfirst($this->userName).". Please log in again after you receive it.",
+ $this->getText("//div[@id='bodyContent']/div[4]" ));
+
+ $this->type( "wpName1", $this->userName );
+ $this->click( "wpMailmypassword" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( "Login error\n A password reminder has already been sent, within the last 24 hours. To prevent abuse, only one password reminder will be sent per 24 hours.",
+ $this->getText( "//div[@id='bodyContent']/div[4]" ));
+ }
+}
+
diff --git a/tests/selenium/suites/MediaWikiEditorConfig.php b/tests/selenium/suites/MediaWikiEditorConfig.php
new file mode 100644
index 00000000..072c3cb2
--- /dev/null
+++ b/tests/selenium/suites/MediaWikiEditorConfig.php
@@ -0,0 +1,48 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+class MediaWikiEditorConfig {
+
+ public static function getSettings(&$includeFiles, &$globalConfigs) {
+ $includes = array(
+ //files that needed to be included would go here
+ //commenting out because this does not exist
+ //'tests/selenium/suites/MediaWikiCommonFunction.php'
+ );
+ $configs = array(
+ 'wgPageLoadTime' => "600000"
+ );
+ $includeFiles = array_merge( $includeFiles, $includes );
+ $globalConfigs = array_merge( $globalConfigs, $configs);
+ return true;
+ }
+}
+
+
+
diff --git a/tests/selenium/suites/MediaWikiEditorTestSuite.php b/tests/selenium/suites/MediaWikiEditorTestSuite.php
new file mode 100644
index 00000000..c0aee9f5
--- /dev/null
+++ b/tests/selenium/suites/MediaWikiEditorTestSuite.php
@@ -0,0 +1,18 @@
+<?php
+
+class MediaWikiEditorTestSuite extends SeleniumTestSuite {
+ public function setUp() {
+ $this->setLoginBeforeTests( true );
+ parent::setUp();
+ }
+ public function addTests() {
+ $testFiles = array(
+ 'tests/selenium/suites/AddNewPageTestCase.php',
+ 'tests/selenium/suites/AddContentToNewPageTestCase.php',
+ 'tests/selenium/suites/PreviewPageTestCase.php',
+ 'tests/selenium/suites/SavePageTestCase.php',
+ );
+ parent::addTestFiles( $testFiles );
+ }
+}
+
diff --git a/tests/selenium/suites/MediaWikiExtraTestSuite.php b/tests/selenium/suites/MediaWikiExtraTestSuite.php
new file mode 100644
index 00000000..5cd0a349
--- /dev/null
+++ b/tests/selenium/suites/MediaWikiExtraTestSuite.php
@@ -0,0 +1,20 @@
+<?php
+
+class MediaWikiExtraTestSuite extends SeleniumTestSuite {
+ public function setUp() {
+ $this->setLoginBeforeTests( true );
+ parent::setUp();
+ }
+ public function addTests() {
+ $testFiles = array(
+ 'tests/selenium/suites/MyContributionsTestCase.php',
+ 'tests/selenium/suites/MyWatchListTestCase.php',
+ 'tests/selenium/suites/UserPreferencesTestCase.php',
+ 'tests/selenium/suites/MovePageTestCase.php',
+ 'tests/selenium/suites/PageSearchTestCase.php',
+ 'tests/selenium/suites/EmailPasswordTestCase.php',
+ 'tests/selenium/suites/CreateAccountTestCase.php'
+ );
+ parent::addTestFiles( $testFiles );
+ }
+}
diff --git a/tests/selenium/suites/MediawikiCoreSmokeTestCase.php b/tests/selenium/suites/MediawikiCoreSmokeTestCase.php
new file mode 100644
index 00000000..7b9525af
--- /dev/null
+++ b/tests/selenium/suites/MediawikiCoreSmokeTestCase.php
@@ -0,0 +1,69 @@
+<?php
+/*
+ * Stub of tests be need as part of the hack-a-ton
+ */
+class MediawikiCoreSmokeTestCase extends SeleniumTestCase {
+ public function testUserLogin() {
+
+ }
+
+ public function testChangeUserPreference() {
+
+ }
+
+ /*
+ * TODO: generalize this test to be reusable for different skins
+ */
+ public function testCreateNewPageVector() {
+
+ }
+
+ /*
+ * TODO: generalize this test to be reusable for different skins
+ */
+ public function testEditExistingPageVector() {
+
+ }
+
+ /*
+ * TODO: generalize this test to be reusable for different skins
+ */
+ public function testCreateNewPageMonobook() {
+
+ }
+
+ /*
+ * TODO: generalize this test to be reusable for different skins
+ */
+ public function testEditExistingPageMonobook() {
+
+ }
+
+ public function testImageUpload() {
+ $this->login();
+ $this->open( $this->getUrl() .
+ '/index.php?title=Special:Upload' );
+ $this->type( 'wpUploadFile', dirname( __FILE__ ) .
+ "\\..\\data\\Wikipedia-logo-v2-de.png" );
+ $this->check( 'wpIgnoreWarning' );
+ $this->click( 'wpUpload' );
+ $this->waitForPageToLoad( 30000 );
+
+ $this->assertSeleniumHTMLContains(
+ '//h1[@class="firstHeading"]', "Wikipedia-logo-v2-de.png" );
+
+ /*
+ $this->open( $this->getUrl() . '/index.php?title=Image:'
+ . ucfirst( $this->filename ) . '&action=delete' );
+ $this->type( 'wpReason', 'Remove test file' );
+ $this->click( 'mw-filedelete-submit' );
+ $this->waitForPageToLoad( 10000 );
+
+ // Todo: This message is localized
+ $this->assertSeleniumHTMLContains( '//div[@id="bodyContent"]/p',
+ ucfirst( $this->filename ) . '.*has been deleted.' );
+ */
+ }
+
+
+}
diff --git a/tests/selenium/suites/MediawikiCoreSmokeTestSuite.php b/tests/selenium/suites/MediawikiCoreSmokeTestSuite.php
new file mode 100644
index 00000000..5d5ef518
--- /dev/null
+++ b/tests/selenium/suites/MediawikiCoreSmokeTestSuite.php
@@ -0,0 +1,19 @@
+<?php
+/*
+ * Stubs for now. We're going to start populating this test.
+ */
+class MediawikiCoreSmokeTestSuite extends SeleniumTestSuite
+{
+ public function setUp() {
+ $this->setLoginBeforeTests( false );
+ parent::setUp();
+ }
+ public function addTests() {
+ $testFiles = array(
+ 'tests/selenium/suites/MediawikiCoreSmokeTestCase.php'
+ );
+ parent::addTestFiles( $testFiles );
+ }
+
+
+}
diff --git a/tests/selenium/suites/MovePageTestCase.php b/tests/selenium/suites/MovePageTestCase.php
new file mode 100644
index 00000000..5263e7bb
--- /dev/null
+++ b/tests/selenium/suites/MovePageTestCase.php
@@ -0,0 +1,117 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+class MovePageTestCase extends SeleniumTestCase {
+
+ // Verify move(rename) wiki page
+ public function testMovePage() {
+
+ $newPage = "mypage99";
+ $displayName = "Mypage99";
+
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->type( "searchInput", $newPage );
+ $this->click( "searchGoButton" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( "link=".$displayName );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, $newPage." text" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify link 'Move' available
+ $this->assertTrue($this->isElementPresent( "link=Move" ));
+
+ $this->click( "link=Move" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify correct page name displayed under 'Move Page' field
+ $this->assertEquals($displayName,
+ $this->getText("//table[@id='mw-movepage-table']/tbody/tr[1]/td[2]/strong/a"));
+ $movePageName = $this->getText( "//table[@id='mw-movepage-table']/tbody/tr[1]/td[2]/strong/a" );
+
+ // Verify 'To new title' field has current page name as the default name
+ $newTitle = $this->getValue( "wpNewTitle" );
+ $correct = strstr( $movePageName , $newTitle );
+ $this->assertEquals( $correct, true );
+
+ $this->type( "wpNewTitle", $displayName );
+ $this->click( "wpMove" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify warning message for the same source and destination titles
+ $this->assertEquals( "Source and destination titles are the same; cannot move a page over itself.",
+ $this->getText("//div[@id='bodyContent']/p[4]/strong" ));
+
+ // Verify warning message for the blank title
+ $this->type( "wpNewTitle", "" );
+ $this->click( "wpMove" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify warning message for the blank title
+ $this->assertEquals( "The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title. It may contain one or more characters which cannot be used in titles.",
+ $this->getText( "//div[@id='bodyContent']/p[4]/strong" ));
+
+ // Verify warning messages for the invalid titles
+ $this->type( "wpNewTitle", "# < > [ ] | { }" );
+ $this->click( "wpMove" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( "The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title. It may contain one or more characters which cannot be used in titles.",
+ $this->getText( "//div[@id='bodyContent']/p[4]/strong" ));
+
+ $this->type( "wpNewTitle", $displayName."move" );
+ $this->click( "wpMove" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify move success message displayed correctly
+ $this->assertEquals( "\"".$displayName."\" has been moved to \"".$displayName."move"."\"",
+ $this->getText( "//div[@id='bodyContent']/p[1]/b" ));
+
+ $this->type( "searchInput", $newPage."move" );
+ $this->click( "searchGoButton" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify search using new page name
+ $this->assertEquals( $displayName."move", $this->getText( "firstHeading" ));
+
+ $this->type( "searchInput", $newPage );
+ $this->click( "searchGoButton" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify search using old page name
+ $redirectPageName = $this->getText( "//*[@id='contentSub']" );
+ $this->assertEquals( "(Redirected from ".$displayName.")" , $redirectPageName );
+
+ // newpage delete
+ $this->deletePage( $newPage."move" );
+ $this->deletePage( $newPage );
+ }
+}
+
diff --git a/tests/selenium/suites/MyContributionsTestCase.php b/tests/selenium/suites/MyContributionsTestCase.php
new file mode 100644
index 00000000..01d87e4b
--- /dev/null
+++ b/tests/selenium/suites/MyContributionsTestCase.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+require_once dirname( dirname( __FILE__ ) ) . '/SeleniumTestConstants.php';
+
+class MyContributionsTestCase extends SeleniumTestCase {
+
+ // Verify user contributions
+ public function testRecentChangesAvailability() {
+
+ $newPage = $this->createNewTestPage( "MyContributionsTest" );
+
+ // Verify My contributions Link available
+ $this->assertTrue($this->isElementPresent( "link=Contributions" ));
+
+
+ $this->click( "link=Contributions" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify recent page adding available on My Contributions list
+ $this->assertEquals( $newPage, $this->getText( "link=".$newPage ));
+
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, $newPage );
+ $this->click( SeleniumTestConstants::BUTTON_SEARCH );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->click( SeleniumTestConstants::LINK_EDIT );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, $newPage . " text changed" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( "link=Contributions" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify recent page changes available on My Contributions
+ $this->assertTrue( $this->isTextPresent( $newPage ) );
+ }
+}
+
diff --git a/tests/selenium/suites/MyWatchListTestCase.php b/tests/selenium/suites/MyWatchListTestCase.php
new file mode 100644
index 00000000..d1ee3e78
--- /dev/null
+++ b/tests/selenium/suites/MyWatchListTestCase.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+require_once dirname( dirname( __FILE__ ) ) . '/SeleniumTestConstants.php';
+
+class MyWatchListTestCase extends SeleniumTestCase {
+
+ // Verify user watchlist
+ public function testMyWatchlist() {
+
+ $pageName = $this->createNewTestPage( "MyWatchListTest", true );
+ // Verify link 'My Watchlist' available
+ $this->assertTrue( $this->isElementPresent( SeleniumTestConstants::LINK_START."Watchlist" ) );
+
+ $this->click( SeleniumTestConstants::LINK_START."Watchlist" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify newly added page to the watchlist is available
+ $this->assertEquals( $pageName, $this->getText( SeleniumTestConstants::LINK_START.$pageName ));
+
+ $this->click( SeleniumTestConstants::LINK_START.$pageName );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( SeleniumTestConstants::LINK_EDIT );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( "wpWatchthis" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+ $this->assertFalse( $this->isElementPresent( SeleniumTestConstants::LINK_START.$pageName ) );
+ //todo watch using the dropdown menu
+ }
+}
+
diff --git a/tests/selenium/suites/PageDeleteTestSuite.php b/tests/selenium/suites/PageDeleteTestSuite.php
new file mode 100644
index 00000000..256e3542
--- /dev/null
+++ b/tests/selenium/suites/PageDeleteTestSuite.php
@@ -0,0 +1,16 @@
+<?php
+
+class PageDeleteTestSuite extends SeleniumTestSuite {
+ public function setUp() {
+ $this->setLoginBeforeTests( true );
+ parent::setUp();
+ }
+ public function addTests() {
+ $testFiles = array(
+ 'tests/selenium/suites/DeletePageAdminTestCase.php'
+ );
+ parent::addTestFiles( $testFiles );
+ }
+
+
+}
diff --git a/tests/selenium/suites/PageSearchTestCase.php b/tests/selenium/suites/PageSearchTestCase.php
new file mode 100644
index 00000000..fe71eada
--- /dev/null
+++ b/tests/selenium/suites/PageSearchTestCase.php
@@ -0,0 +1,105 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+class PageSearchTestCase extends SeleniumTestCase {
+
+ // Verify the functionality of the 'Go' button
+ public function testPageSearchBtnGo() {
+
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, "calcey qa" );
+ $this->click( "searchGoButton" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify no page matched with the entered search text
+ $source = $this->gettext( "//div[@id='bodyContent']/div[4]/p/b" );
+ $correct = strstr ( $source, "Create the page \"Calcey qa\" on this wiki!" );
+ $this->assertEquals( $correct, true );
+
+ $this->click( "link=Calcey qa" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->type( SeleniumTestConstants::TEXT_EDITOR , "Calcey QA team" );
+ $this->click( "wpSave" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ }
+
+ // Verify the functionality of the 'Search' button
+ public function testPageSearchBtnSearch() {
+
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, "Calcey web" );
+ $this->click( SeleniumTestConstants::BUTTON_SEARCH );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify no page is available as the search text
+ $source = $this->gettext( "//div[@id='bodyContent']/div[4]/p[2]/b" );
+ $correct = strstr ( $source, "Create the page \"Calcey web\" on this wiki!" );
+ $this->assertEquals( $correct, true );
+
+ $this->click( "link=Calcey web" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, "Calcey web team" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify saved page is opened when the exact page name is given
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, "Calcey web" );
+ $this->click( SeleniumTestConstants::BUTTON_SEARCH );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify exact page matched with the entered search text using 'Search' button
+ $source = $this->getText( "//*[@id='bodyContent']/div[4]/p/b" );
+ $correct = strstr( $source, "There is a page named \"Calcey web\" on this wiki." );
+ $this->assertEquals( $correct, true );
+
+ // Verify resutls available when partial page name is entered as the search text
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, "Calcey" );
+ $this->click( SeleniumTestConstants::BUTTON_SEARCH );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify text avaialble in the search result under the page titles
+ if($this->isElementPresent( "Page_title_matches" )) {
+ $textPageTitle = $this->getText( "//*[@id='bodyContent']/div[4]/ul[1]/li[1]/div[1]/a" );
+ $this->assertContains( 'Calcey', $textPageTitle );
+ }
+
+ // Verify text avaialble in the search result under the page text
+ if($this->isElementPresent( "Page_text_matches" )) {
+ $textPageText = $this->getText( "//*[@id='bodyContent']/div[4]/ul[2]/li[2]/div[2]/span" );
+ $this->assertContains( 'Calcey', $textPageText );
+ }
+ $this->deletePage("Calcey QA");
+ $this->deletePage("Calcey web");
+ }
+}
diff --git a/tests/selenium/suites/PreviewPageTestCase.php b/tests/selenium/suites/PreviewPageTestCase.php
new file mode 100644
index 00000000..32206b98
--- /dev/null
+++ b/tests/selenium/suites/PreviewPageTestCase.php
@@ -0,0 +1,53 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+class PreviewPageTestCase extends SeleniumTestCase {
+
+ // Verify adding a new page
+ public function testPreviewPage() {
+ $wikiText = "Adding this page to test the \n Preview button functionality";
+ $newPage = "Test Preview Page";
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->getNewPage( $newPage );
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, $wikiText."" );
+ $this->assertTrue($this->isElementPresent( "//*[@id='wpPreview']" ));
+
+ $this->click( "wpPreview" );
+
+ // Verify saved page available
+ $source = $this->gettext( "firstHeading" );
+ $correct = strstr( $source, "Test Preview Page" );
+ $this->assertEquals( $correct, true);
+
+ // Verify page content previewed succesfully
+ $contentOfPreviewPage = $this->getText( "//*[@id='content']" );
+ $this->assertContains( $wikiText, $contentOfPreviewPage );
+ }
+}
diff --git a/tests/selenium/suites/SavePageTestCase.php b/tests/selenium/suites/SavePageTestCase.php
new file mode 100644
index 00000000..310ff20a
--- /dev/null
+++ b/tests/selenium/suites/SavePageTestCase.php
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+class SavePageTestCase extends SeleniumTestCase {
+
+ // Verify adding a new page
+ public function testSavePage() {
+ $wikiText = "Adding this page to test the Save button functionality";
+ $newPage = "Test Save Page";
+
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->getNewPage($newPage);
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, $wikiText );
+
+ // verify 'Save' button available
+ $this->assertTrue($this->isElementPresent( SeleniumTestConstants::BUTTON_SAVE ));
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+
+ // Verify saved page available
+ $source = $this->gettext( "firstHeading" );
+ $correct = strstr( $source, "Test Save Page" );
+
+ // Verify Saved page name displayed correctly
+ $this->assertEquals( $correct, true );
+
+ // Verify page content saved succesfully
+ $contentOfSavedPage = $this->getText( "//*[@id='content']" );
+ $this->assertContains( $wikiText, $contentOfSavedPage );
+ $this->deletePage( $newPage );
+ }
+}
diff --git a/tests/selenium/suites/SimpleSeleniumConfig.php b/tests/selenium/suites/SimpleSeleniumConfig.php
new file mode 100644
index 00000000..54def35a
--- /dev/null
+++ b/tests/selenium/suites/SimpleSeleniumConfig.php
@@ -0,0 +1,30 @@
+<?php
+class SimpleSeleniumConfig {
+
+ public static function getSettings(&$includeFiles, &$globalConfigs, &$resourceFiles) {
+ global $IP;
+ $includes = array(
+ //files that needed to be included would go here
+ );
+ $configs = array(
+ 'wgDBprefix' => 'mw_',
+ 'wgDBTableOptions' => 'ENGINE=InnoDB, DEFAULT CHARSET=binary',
+ 'wgDBmysql5' => 'false',
+ 'wgMainCacheType' => 'CACHE_NONE',
+ 'wgParserCacheType' => 'CACHE_NONE',
+ 'wgMemCachedServers'=> array(),
+ 'wgLanguageCode' => 'en',
+ 'wgSitename' => 'test_wiki',
+ 'wgDefaultSkin' => 'chick'
+ );
+ $resources = array(
+ 'db' => "$IP/tests/selenium/data/SimpleSeleniumTestDB.sql",
+ 'images' => "$IP/tests/selenium/data/SimpleSeleniumTestImages.zip"
+ );
+
+ $includeFiles = array_merge( $includeFiles, $includes );
+ $globalConfigs = array_merge( $globalConfigs, $configs);
+ $resourceFiles = array_merge( $resourceFiles, $resources );
+ return true;
+ }
+} \ No newline at end of file
diff --git a/tests/selenium/suites/SimpleSeleniumTestCase.php b/tests/selenium/suites/SimpleSeleniumTestCase.php
new file mode 100644
index 00000000..99a75c12
--- /dev/null
+++ b/tests/selenium/suites/SimpleSeleniumTestCase.php
@@ -0,0 +1,39 @@
+<?php
+/*
+ * This test case is part of the SimpleSeleniumTestSuite.
+ * Configuration for these tests are documented as part of SimpleSeleniumTestSuite.php
+ */
+class SimpleSeleniumTestCase extends SeleniumTestCase {
+ public function testBasic() {
+ $this->open( $this->getUrl() .
+ '/index.php?title=Selenium&action=edit' );
+ $this->type( "wpTextbox1", "This is a basic test" );
+ $this->click( "wpPreview" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // check result
+ $source = $this->getText( "//div[@id='wikiPreview']/p" );
+ $correct = strstr( $source, "This is a basic test" );
+ $this->assertEquals( $correct, true );
+ }
+
+ /*
+ * All this test really does is verify that a global var was set.
+ * It depends on $wgDefaultSkin = 'chick'; being set
+ */
+ public function testGlobalVariableForDefaultSkin() {
+ $this->open( $this->getUrl() . '/index.php' );
+ $bodyClass = $this->getAttribute( "//body/@class" );
+ $this-> assertContains('skin-chick', $bodyClass, 'Chick skin not set');
+ }
+
+ /*
+ * Just verify that the test db was loaded correctly
+ */
+ public function testDatabaseResourceLoadedCorrectly() {
+ $this->open( $this->getUrl() . '/index.php/TestResources?action=purge' );
+ $testString = $this->gettext( "//body//*[@id='firstHeading']" );
+ $this-> assertEquals('TestResources', $testString, 'Article that should be present in the test db was not found.');
+ }
+
+}
diff --git a/tests/selenium/suites/SimpleSeleniumTestSuite.php b/tests/selenium/suites/SimpleSeleniumTestSuite.php
new file mode 100644
index 00000000..3f5e3645
--- /dev/null
+++ b/tests/selenium/suites/SimpleSeleniumTestSuite.php
@@ -0,0 +1,26 @@
+<?php
+/*
+ * Sample test suite.
+ * Two ways to configure MW for these tests
+ * 1) If you are running multiple test suites, add the following in LocalSettings.php
+ * require_once("tests/selenium/SimpleSeleniumConfig.php");
+ * $wgSeleniumTestConfigs['SimpleSeleniumTestSuite'] = 'SimpleSeleniumConfig::getSettings';
+ * OR
+ * 2) Add the following to your Localsettings.php
+ * $wgDefaultSkin = 'chick';
+ */
+class SimpleSeleniumTestSuite extends SeleniumTestSuite
+{
+ public function setUp() {
+ $this->setLoginBeforeTests( false );
+ parent::setUp();
+ }
+ public function addTests() {
+ $testFiles = array(
+ 'selenium/suites/SimpleSeleniumTestCase.php'
+ );
+ parent::addTestFiles( $testFiles );
+ }
+
+
+}
diff --git a/tests/selenium/suites/UserPreferencesTestCase.php b/tests/selenium/suites/UserPreferencesTestCase.php
new file mode 100644
index 00000000..3ceb3a99
--- /dev/null
+++ b/tests/selenium/suites/UserPreferencesTestCase.php
@@ -0,0 +1,179 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+class UserPreferencesTestCase extends SeleniumTestCase {
+
+ // Verify user information
+ public function testUserInfoDisplay() {
+
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->click( SeleniumTestConstants::LINK_START."My preferences" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify correct username displayed in User Preferences
+ $this->assertEquals( $this->getText( "//li[@id='pt-userpage']/a" ),
+ $this->getText( "//table[@id='mw-htmlform-info']/tbody/tr[1]/td[2]" ));
+
+ // Verify existing Signature Displayed correctly
+ $this->assertEquals( $this->selenium->getUser(),
+ $this->getTable( "mw-htmlform-signature.0.1" ) );
+ }
+
+ // Verify change password
+ public function testChangePassword() {
+
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->click( SeleniumTestConstants::LINK_START."My preferences" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->click( SeleniumTestConstants::LINK_START."Change password" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->type( "wpPassword", "12345" );
+ $this->type( "wpNewPassword", "54321" );
+ $this->type( "wpRetype", "54321" );
+ $this->click( "//input[@value='Change password']" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->assertEquals( "Preferences", $this->getText( "firstHeading" ));
+
+ $this->click( SeleniumTestConstants::LINK_START."Change password" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->type( "wpPassword", "54321" );
+ $this->type( "wpNewPassword", "12345" );
+ $this->type( "wpRetype", "12345" );
+ $this->click( "//input[@value='Change password']" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( "Preferences", $this->getText( "firstHeading" ));
+
+ $this->click( SeleniumTestConstants::LINK_START."Change password" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->type( "wpPassword", "54321" );
+ $this->type( "wpNewPassword", "12345" );
+ $this->type( "wpRetype", "12345" );
+ $this->click( "//input[@value='Change password']" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ }
+
+ // Verify successful preferences save
+ public function testSuccessfullSave() {
+
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->click( SeleniumTestConstants::LINK_START."My preferences" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->type( "mw-input-realname", "Test User" );
+ $this->click( "prefcontrol" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify "Your preferences have been saved." message
+ $this->assertEquals( "Your preferences have been saved.",
+ $this->getText( "//div[@id='bodyContent']/div[4]/strong/p" ));
+ $this->type( "mw-input-realname", "" );
+ $this->click( "prefcontrol" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ }
+
+ // Verify change signature
+ public function testChangeSignature() {
+
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->click( SeleniumTestConstants::LINK_START."My preferences" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->type( "mw-input-nickname", "TestSignature" );
+ $this->click( "prefcontrol" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify change user signature
+ $this->assertEquals( "TestSignature", $this->getText( SeleniumTestConstants::LINK_START."TestSignature" ));
+ $this->type( "mw-input-nickname", "Test" );
+ $this->click( "prefcontrol" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ }
+
+ // Verify change date format
+ public function testChangeDateFormatTimeZone() {
+
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+
+ $this->click( SeleniumTestConstants::LINK_START."My preferences" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( SeleniumTestConstants::LINK_START."Date and time" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->click( "mw-input-date-dmy" );
+ $this->select( "mw-input-timecorrection", "label=Asia/Colombo" );
+ $this->click( "prefcontrol" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify Date format and time zome saved
+ $this->assertEquals( "Your preferences have been saved.",
+ $this->getText( "//div[@id='bodyContent']/div[4]/strong/p" ));
+ }
+
+ // Verify restoring all default settings
+ public function testSetAllDefault() {
+
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->click( SeleniumTestConstants::LINK_START."My preferences" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify restoring all default settings
+ $this->assertEquals( "Restore all default settings",
+ $this->getText( SeleniumTestConstants::LINK_START."Restore all default settings" ));
+
+ $this->click("//*[@id='preferences']/div/a");
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify 'This can not be undone' warning message displayed
+ $this->assertTrue($this->isElementPresent("//input[@value='Restore all default settings']"));
+
+ // Verify 'Restore all default settings' button available
+ $this->assertEquals("You can use this page to reset your preferences to the site defaults. This cannot be undone.",
+ $this->getText("//div[@id='bodyContent']/p"));
+
+ $this->click("//input[@value='Restore all default settings']");
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify preferences saved successfully
+ $this->assertEquals("Your preferences have been saved.",
+ $this->getText("//div[@id='bodyContent']/div[4]/strong/p"));
+ }
+}
+