Index: includes/tests/bootstrap.test
===================================================================
RCS file: includes/tests/bootstrap.test
diff -N includes/tests/bootstrap.test
--- includes/tests/bootstrap.test	26 Jun 2008 21:04:17 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,83 +0,0 @@
-<?php
-
-class BootstrapIPAddressTestCase extends DrupalWebTestCase {
-
-  /**
-   * Implementation of getInfo().
-   */
-  function getInfo() {
-    return array(
-      'name' => t('IP address test'),
-      'description' => t('Get the IP address from the current visitor from the server variables.'),
-      'group' => t('Bootstrap')
-    );
-  }
-
-  /**
-   * Implementation of setUp().
-   */
-  function setUp() {
-    $this->oldserver = $_SERVER;
-
-    $this->remote_ip = '127.0.0.1';
-    $this->proxy_ip = '127.0.0.2';
-    $this->forwarded_ip = '127.0.0.3';
-    $this->cluster_ip = '127.0.0.4';
-    $this->untrusted_ip = '0.0.0.0';
-        
-    $_SERVER['REMOTE_ADDR'] = $this->remote_ip;
-    unset($_SERVER['HTTP_X_FORWARDED_FOR']);
-    unset($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']);
-    
-    parent::setUp();
-  }
-  
-  /**
-   * Implementation of tearDown().
-   */
-  function tearDown() {
-    $_SERVER = $this->oldserver;
-    parent::tearDown();
-  }
-
-  /**
-   * testIPAddress
-   */
-  function testIPAddress() {
-    // Test the normal IP address.
-    $this->assertTrue(
-      ip_address(true) == $this->remote_ip,
-      t('Got remote IP address')
-    );
-    
-    // Proxy forwarding on but no proxy addresses defined.
-    variable_set('reverse_proxy', 1);
-    $this->assertTrue(
-      ip_address(true) == $this->remote_ip,
-      t('Proxy forwarding without trusted proxies got remote IP address')
-    );
-    
-    // Proxy forwarding on and proxy address not trusted.
-    variable_set('reverse_proxy_addresses', array($this->proxy_ip));
-    $_SERVER['REMOTE_ADDR'] = $this->untrusted_ip;
-    $this->assertTrue(
-      ip_address(true) == $this->untrusted_ip,
-      t('Proxy forwarding with untrusted proxy got remote IP address')
-    );
-
-    // Proxy forwarding on and proxy address trusted.
-    $_SERVER['REMOTE_ADDR'] = $this->proxy_ip;
-    $_SERVER['HTTP_X_FORWARDED_FOR'] = $this->forwarded_ip;
-    $this->assertTrue(
-      ip_address(true) == $this->forwarded_ip,
-      t('Proxy forwarding with trusted proxy got forwarded IP address')
-    );   
-    
-    // Cluster environment.
-    $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'] = $this->cluster_ip;
-    $this->assertTrue(
-      ip_address(true) == $this->cluster_ip,
-      t('Cluster environment got cluster client IP')
-    );
-  }
-}
Index: includes/tests/common.test
===================================================================
RCS file: includes/tests/common.test
diff -N includes/tests/common.test
--- includes/tests/common.test	26 Jun 2008 21:04:17 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,54 +0,0 @@
-<?php
-
-class CommonFormatSizeTestCase extends DrupalWebTestCase {
-
-  /**
-   * Implementation of getInfo().
-   */
-  function getInfo() {
-    return array(
-      'name' => t('Format size test'),
-      'description' => t('Parse a predefined amount of bytes and compare the output with the expected value.'),
-      'group' => t('System')
-    );
-  }
-
-  /**
-   * Implementation of setUp().
-   */
-  function setUp() {
-    $this->exact_test_cases = array(
-      '1 byte'    => 1, // byte
-      '1 KB'      => 1000, // kilobyte
-      '1 MB'      => 1000000, // megabyte
-      '1 GB'      => 1000000000, // gigabyte
-      '1 TB'      => 1000000000000, // terabyte
-      '1 PB'      => 1000000000000000, // petabyte
-      '1 EB'      => 1000000000000000000, // exabyte
-      '1 ZB'      => 1000000000000000000000, // zettabyte
-      '1 YB'      => 1000000000000000000000000, // yottabyte
-    );
-    $this->rounded_test_cases = array(
-      '2 bytes'   => 2, // bytes
-      '1 MB'      => 999999, // 1 MB (not 1000 kilobyte!)
-      '3.62 MB'   => 3623651, // megabytes
-      '67.23 PB'  => 67234178751368124, // petabytes
-      '235.35 YB' => 235346823821125814962843827, // yottabytes
-    );
-    parent::setUp();
-  }
-
-  /**
-   * testCommonFormatSize
-   */
-  function testCommonFormatSize() {
-    foreach (array($this->exact_test_cases, $this->rounded_test_cases) as $test_cases) {
-      foreach ($test_cases as $expected => $size) {
-        $this->assertTrue(
-          ($result = format_size($size, NULL)) == $expected,
-          $expected . " == " . $result . " (" . $size . " bytes) %s"
-        );
-      }
-    }
-  }
-}
Index: includes/tests/xmlrpc.test
===================================================================
RCS file: includes/tests/xmlrpc.test
diff -N includes/tests/xmlrpc.test
--- includes/tests/xmlrpc.test	26 Jun 2008 21:04:17 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,126 +0,0 @@
-<?php
-// $Id: xmlrpc.test,v 1.1 2008/06/26 21:04:17 dries Exp $
-
-class XMLRPCValidator1Test extends DrupalWebTestCase {
-  /**
-   * Implementation of getInfo().
-   */
-  function getInfo() {
-    return array(
-      'name'  => t('XML-RPC validator'),
-      'description'  => t('See !validator-link. note: simpletest_xmlrpc.module must be enabled', array('!validator-link' => l('the xmlrpc validator1 specification', 'http://www.xmlrpc.com/validator1Docs'))),
-      'group' => t('XML-RPC')
-    );
-  }
-
-  function setUp() {
-    parent::setUp('simpletest_xmlrpc');
-  }
-
-  function test_run_all_tests() {
-    if (!module_exists('simpletest_xmlrpc')) {
-      return FALSE;
-    }
-    $xml_url = url(NULL, array('absolute' => TRUE)) . 'xmlrpc.php';
-    srand();
-    mt_srand();
-
-
-    $array_1 = array(array('curly' => mt_rand(-100,100)),
-                   array('curly' => mt_rand(-100,100)),
-                   array('larry' => mt_rand(-100,100)),
-                   array('larry' => mt_rand(-100,100)),
-                   array('moe' => mt_rand(-100,100)),
-                   array('moe' => mt_rand(-100,100)),
-                   array('larry' => mt_rand(-100,100)));
-    shuffle($array_1);
-    $l_res_1 = simpletest_xmlrpc_arrayOfStructsTest($array_1);
-    $r_res_1 = xmlrpc($xml_url, 'validator1.arrayOfStructsTest', $array_1);
-    $this->assertIdentical($l_res_1, $r_res_1, 'array of structs test: %s');
-
-
-    $string_2 = 't\'&>>zf"md>yr>xlcev<h<"k&j<og"w&&>">>uai"np&s>>q\'&b<>"&&&';
-    $l_res_2 = simpletest_xmlrpc_countTheEntities($string_2);
-    $r_res_2 = xmlrpc($xml_url, 'validator1.countTheEntities', $string_2);
-    $this->assertIdentical($l_res_2, $r_res_2, 'count the entities test: %s');
-
-
-    $struct_3 = array('moe' => mt_rand(-100,100), 'larry' => mt_rand(-100,100), 'curly' => mt_rand(-100,100), 'homer' => mt_rand(-100,100));
-    $l_res_3 = simpletest_xmlrpc_easyStructTest($struct_3);
-    $r_res_3 = xmlrpc($xml_url, 'validator1.easyStructTest', $struct_3);
-    $this->assertIdentical($l_res_3, $r_res_3, 'easy struct test: %s');
-
-
-    $struct_4 = array('sub1' => array('bar' => 13),
-                    'sub2' => 14,
-                    'sub3' => array('foo' => 1, 'baz' => 2),
-                    'sub4' => array('ss' => array('sss' => array('ssss' => 'sssss'))));
-    $l_res_4 = simpletest_xmlrpc_echoStructTest($struct_4);
-    $r_res_4 = xmlrpc($xml_url, 'validator1.echoStructTest', $struct_4);
-    $this->assertIdentical($l_res_4, $r_res_4, 'echo struct test: %s');
-
-    $int_5     = mt_rand(-100,100);
-    $bool_5    = (($int_5 % 2) == 0);
-    $string_5  = $this->randomName();
-    $double_5  = (double)(mt_rand(-1000,1000) / 100);
-    $time_5    = time();
-    $base64_5  = $this->randomName(100);
-    $l_res_5 = simpletest_xmlrpc_manyTypesTest($int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), $base64_5);
-    $l_res_5[5] = $l_res_5[5]->data; /* override warpping */
-    $r_res_5 = xmlrpc($xml_url, 'validator1.manyTypesTest', $int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), xmlrpc_base64($base64_5));
-    /* Contains objects, objects are not equal */
-    // See http://drupal.org/node/37766 why this currnetly fails
-    $this->assertEqual($l_res_5, $r_res_5, 'many types test: %s');
-
-
-    $size = mt_rand(100,200);
-    $array_6 = array();
-    for ($i = 0; $i < $size; $i++) {
-      $array_6[] = $this->randomName(mt_rand(8,12));
-    }
-
-    $l_res_6 = simpletest_xmlrpc_moderateSizeArrayCheck($array_6);
-    $r_res_6 = xmlrpc($xml_url, 'validator1.moderateSizeArrayCheck', $array_6);
-    $this->assertIdentical($l_res_6, $r_res_6, 'moderate size array check: %s');
-
-
-    $struct_7 = array();
-    for ($y = 2000; $y < 2002; $y++) {
-      for ($m = 3; $m < 5; $m++) {
-        for ($d = 1; $d < 6; $d++) {
-          $ys = (string)$y;
-          $ms = sprintf('%02d', $m);
-          $ds = sprintf('%02d', $d);
-          $struct_7[$ys][$ms][$ds]['moe']   = mt_rand(-100,100);
-          $struct_7[$ys][$ms][$ds]['larry'] = mt_rand(-100,100);
-          $struct_7[$ys][$ms][$ds]['curly'] = mt_rand(-100,100);
-        }
-      }
-    }
-    $l_res_7 = simpletest_xmlrpc_nestedStructTest($struct_7);
-    $r_res_7 = xmlrpc($xml_url, 'validator1.nestedStructTest', $struct_7);
-    $this->assertIdentical($l_res_7, $r_res_7, 'nested struct test: %s');
-
-
-    $int_8 = mt_rand(-100,100);
-    $l_res_8 = simpletest_xmlrpc_simpleStructReturnTest($int_8);
-    $r_res_8 = xmlrpc($xml_url, 'validator1.simpleStructReturnTest', $int_8);
-    $this->assertIdentical($l_res_8, $r_res_8, 'nested struct test: %s');
-
-    /* Now test multicall */
-    $x = array();
-    $x[] = array('validator1.arrayOfStructsTest',     $array_1);
-    $x[] = array('validator1.countTheEntities',       $string_2);
-    $x[] = array('validator1.easyStructTest',         $struct_3);
-    $x[] = array('validator1.echoStructTest',         $struct_4);
-    $x[] = array('validator1.manyTypesTest',          $int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), xmlrpc_base64($base64_5));
-    $x[] = array('validator1.moderateSizeArrayCheck', $array_6);
-    $x[] = array('validator1.nestedStructTest',       $struct_7);
-    $x[] = array('validator1.simpleStructReturnTest', $int_8);
-
-    $a_l_res = array($l_res_1, $l_res_2, $l_res_3, $l_res_4, $l_res_5, $l_res_6, $l_res_7, $l_res_8);
-    $a_r_res = xmlrpc($xml_url, $x);
-    $this->assertEqual($a_l_res, $a_r_res, 'multicall equals result');
-  }
-}
-?>
Index: includes/tests/registry.test
===================================================================
RCS file: includes/tests/registry.test
diff -N includes/tests/registry.test
--- includes/tests/registry.test	26 Jun 2008 21:04:17 -0000	1.1
+++ /dev/null	1 Jan 1970 00:00:00 -0000
@@ -1,152 +0,0 @@
-<?php
-
-class RegistryParseFileTestCase extends DrupalWebTestCase {
-
-  /**
-   * Implementation of getInfo().
-   */
-  function getInfo() {
-    return array(
-      'name' => t('Registry parse file test'),
-      'description' => t('Parse a simple file and check that its resources are saved to the database.'),
-      'group' => t('System')
-    );
-  }
-
-  /**
-   * Implementation of setUp().
-   */
-  function setUp() {
-    $this->fileName = 'registry_test_' . md5(rand());
-    $this->functionName = 'registry_test_function' . md5(rand());
-    $this->className = 'registry_test_class' . md5(rand());
-    $this->interfaceName = 'registry_test_interface' . md5(rand());
-    parent::setUp();
-  }
-
-  /**
-   * testRegistryParseFile
-   */
-  function testRegistryParseFile() {
-    _registry_parse_file($this->fileName, $this->getFileContents());
-    foreach (array('functionName', 'className', 'interfaceName') as $resource) {
-      $foundName = db_result(db_query("SELECT name FROM {registry} WHERE name = '%s'", $this->$resource));
-      $this->assertTrue($this->$resource == $foundName, t('Resource "@resource" found.', array('@resource' => $this->$resource)));
-    }
-  }
-
-  /**
-   * getFileContents
-   */
-  function getFileContents() {
-    $file_contents = <<<CONTENTS
-<?php
-
-function {$this->functionName}() {}
-
-class {$this->className} {}
-
-interface {$this->interfaceName} {}
-
-CONTENTS;
-    return $file_contents;
-  }
-
-}
-
-class RegistryParseFilesTestCase extends DrupalWebTestCase {
-
-  protected $fileTypes = array('new', 'existing_changed');
-
-  /**
-   * Implementation of getInfo().
-   */
-  function getInfo() {
-    return array(
-      'name' => t('Registry parse files test'),
-      'description' => t('Read two a simple files from disc, and check that their resources are saved to the database.'),
-      'group' => t('System')
-    );
-  }
-
-  /**
-   * Implementation of setUp().
-   */
-  function setUp() {
-    parent::setUp();
-    // Create files with some php to parse - one 'new', one 'existing' so
-    // we test all the important code paths in _registry_parse_files.
-    foreach ($this->fileTypes as $fileType) {
-      $this->$fileType = new StdClass();
-      $this->$fileType->fileName = file_directory_path() . '/registry_test_' . md5(rand());
-      $this->$fileType->functionName = 'registry_test_function' . md5(rand());
-      $this->$fileType->className = 'registry_test_class' . md5(rand());
-      $this->$fileType->interfaceName = 'registry_test_interface' . md5(rand());
-      $this->$fileType->contents = $this->getFileContents($fileType);
-      file_save_data($this->$fileType->contents, $this->$fileType->fileName);
-
-      if ($fileType == 'existing_changed') {
-        // Insert a record with a dodgy md5.
-        $this->$fileType->fakeMD5 = md5($this->$fileType->contents . rand());
-        db_query("INSERT INTO {registry_file} (md5, filename) VALUES ('%s', '%s')", $this->$fileType->fakeMD5, './' . $this->$fileType->fileName);
-
-        // Insert some fake resource records.
-        foreach (array('function', 'class', 'interface') as $type) {
-          db_query("INSERT INTO {registry} (name, type, filename) VALUES ('%s', '%s', '%s')", $type . md5(rand()), $type, './' . $this->$fileType->fileName);
-        }
-      }
-    }
-  }
-
-  /**
-   * testRegistryParseFiles
-   */
-  function testRegistryParseFiles() {
-    _registry_parse_files($this->getFiles());
-    foreach ($this->fileTypes as $fileType) {
-      // Test that we have all the right resources.
-      foreach (array('functionName', 'className', 'interfaceName') as $resource) {
-        $foundName = db_result(db_query("SELECT name FROM {registry} WHERE name = '%s'", $this->$fileType->$resource));
-        $this->assertTrue($this->$fileType->$resource == $foundName, t('Resource "@resource" found.', array('@resource' => $this->$fileType->$resource)));
-      }
-      // Test that we have the right md5.
-      $md5 = db_result(db_query("SELECT md5 FROM {registry_file} WHERE filename = '%s'", './' . $this->$fileType->fileName));
-      $this->assertTrue(md5($this->$fileType->contents) == $md5, t('MD5 for "@filename" matched.' . $fileType . $md5, array('@filename' => $this->$fileType->fileName)));
-    }
-  }
-
-  /**
-   * getFiles
-   */
-  function getFiles() {
-    $files = array();
-    foreach ($this->fileTypes as $fileType) {
-      if ($fileType == 'existing_changed') {
-        $files['./' . $this->$fileType->fileName] = array('md5' => $this->$fileType->fakeMD5);
-      }
-      else {
-        $files['./' . $this->$fileType->fileName] = array();
-      }
-    }
-    return $files;
-  }
-
-  /**
-   * getFileContents
-   */
-  function getFileContents($fileType) {
-    $file_contents = <<<CONTENTS
-<?php
-
-function {$this->$fileType->functionName}() {}
-
-class {$this->$fileType->className} {}
-
-interface {$this->$fileType->interfaceName} {}
-
-CONTENTS;
-    return $file_contents;
-  }
-
-}
-
Index: modules/simpletest/simpletest.module
===================================================================
RCS file: /cvs/drupal/drupal/modules/simpletest/simpletest.module,v
retrieving revision 1.5
diff -u -r1.5 simpletest.module
--- modules/simpletest/simpletest.module	26 Jun 2008 21:07:59 -0000	1.5
+++ modules/simpletest/simpletest.module	27 Jun 2008 21:40:00 -0000
@@ -427,10 +427,6 @@
       }
     }
 
-    foreach (file_scan_directory('includes/tests', '\.test$') as $file) {
-      $files[] = $file->filename;
-    }
-
     $existing_classes = get_declared_classes();
     foreach ($files as $file) {
       include_once($file);
Index: modules/simpletest/tests/common.test
===================================================================
RCS file: modules/simpletest/tests/common.test
diff -N modules/simpletest/tests/common.test
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/common.test	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,54 @@
+<?php
+
+class CommonFormatSizeTestCase extends DrupalWebTestCase {
+
+  /**
+   * Implementation of getInfo().
+   */
+  function getInfo() {
+    return array(
+      'name' => t('Format size test'),
+      'description' => t('Parse a predefined amount of bytes and compare the output with the expected value.'),
+      'group' => t('System')
+    );
+  }
+
+  /**
+   * Implementation of setUp().
+   */
+  function setUp() {
+    $this->exact_test_cases = array(
+      '1 byte'    => 1, // byte
+      '1 KB'      => 1000, // kilobyte
+      '1 MB'      => 1000000, // megabyte
+      '1 GB'      => 1000000000, // gigabyte
+      '1 TB'      => 1000000000000, // terabyte
+      '1 PB'      => 1000000000000000, // petabyte
+      '1 EB'      => 1000000000000000000, // exabyte
+      '1 ZB'      => 1000000000000000000000, // zettabyte
+      '1 YB'      => 1000000000000000000000000, // yottabyte
+    );
+    $this->rounded_test_cases = array(
+      '2 bytes'   => 2, // bytes
+      '1 MB'      => 999999, // 1 MB (not 1000 kilobyte!)
+      '3.62 MB'   => 3623651, // megabytes
+      '67.23 PB'  => 67234178751368124, // petabytes
+      '235.35 YB' => 235346823821125814962843827, // yottabytes
+    );
+    parent::setUp();
+  }
+
+  /**
+   * testCommonFormatSize
+   */
+  function testCommonFormatSize() {
+    foreach (array($this->exact_test_cases, $this->rounded_test_cases) as $test_cases) {
+      foreach ($test_cases as $expected => $size) {
+        $this->assertTrue(
+          ($result = format_size($size, NULL)) == $expected,
+          $expected . " == " . $result . " (" . $size . " bytes) %s"
+        );
+      }
+    }
+  }
+}
Index: modules/simpletest/tests/xmlrpc_test.module
===================================================================
RCS file: modules/simpletest/tests/xmlrpc_test.module
diff -N modules/simpletest/tests/xmlrpc_test.module
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/xmlrpc_test.module	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,62 @@
+<?php
+// $Id$
+
+function xmlrpc_test_arrayOfStructsTest($array) {
+  $sum = 0;
+  foreach ($array as $struct) {
+    if (isset($struct['curly'])) {
+      $sum += $struct['curly'];
+    }
+  }
+  return $sum;
+}
+
+function xmlrpc_test_countTheEntities($string) {
+  return array(
+    'ctLeftAngleBrackets' => substr_count($string, '<'),
+    'ctRightAngleBrackets' => substr_count($string, '>'),
+    'ctAmpersands' => substr_count($string, '&'),
+    'ctApostrophes' => substr_count($string, "'"),
+    'ctQuotes' => substr_count($string, '"'),
+    );
+}
+
+function xmlrpc_test_easyStructTest($array) {
+  return $array["curly"] + $array["moe"] + $array["larry"];
+}
+
+function xmlrpc_test_echoStructTest($array) {
+  return $array;
+}
+
+function xmlrpc_test_manyTypesTest($number, $boolean, $string, $double, $dateTime, $base64) {
+  $timestamp = mktime($dateTime->hour, $dateTime->minute, $dateTime->second, $dateTime->month, $dateTime->day, $dateTime->year);
+  return array($number, $boolean, $string, $double, xmlrpc_date($timestamp), xmlrpc_Base64($base64));
+}
+
+function xmlrpc_test_moderateSizeArrayCheck($array) {
+  return array_shift($array) . array_pop($array);
+}
+
+function xmlrpc_test_nestedStructTest($array) {
+  return $array["2000"]["04"]["01"]["larry"] + $array["2000"]["04"]["01"]["moe"] + $array["2000"]["04"]["01"]["curly"];
+}
+
+function xmlrpc_test_simpleStructReturnTest($number) {
+  return array("times10" => ($number*10), "times100" => ($number*100), "times1000" => ($number*1000));
+}
+
+/**
+ * Implementation of hook_xmlrpc()
+ */
+function xmlrpc_test_xmlrpc() {
+  return array(
+    'validator1.arrayOfStructsTest' => 'xmlrpc_test_arrayOfStructsTest',
+    'validator1.countTheEntities' => 'xmlrpc_test_countTheEntities',
+    'validator1.easyStructTest' => 'xmlrpc_test_easyStructTest',
+    'validator1.echoStructTest' => 'xmlrpc_test_echoStructTest',
+    'validator1.manyTypesTest' => 'xmlrpc_test_manyTypesTest',
+    'validator1.moderateSizeArrayCheck' => 'xmlrpc_test_moderateSizeArrayCheck',
+    'validator1.nestedStructTest' => 'xmlrpc_test_nestedStructTest',
+    'validator1.simpleStructReturnTest' => 'xmlrpc_test_simpleStructReturnTest');
+}
Index: modules/simpletest/tests/xmlrpc_test.info
===================================================================
RCS file: modules/simpletest/tests/xmlrpc_test.info
diff -N modules/simpletest/tests/xmlrpc_test.info
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/xmlrpc_test.info	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,8 @@
+; $Id$
+name = "XMLRPC Test"
+description = "Support modules for XMLRPC Tests according to the validator1 specification."
+package = Testing
+version = VERSION
+core = 7.x
+files[] = xmlrpc_test.module
+hidden = TRUE
Index: modules/simpletest/tests/bootstrap.test
===================================================================
RCS file: modules/simpletest/tests/bootstrap.test
diff -N modules/simpletest/tests/bootstrap.test
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/bootstrap.test	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,83 @@
+<?php
+
+class BootstrapIPAddressTestCase extends DrupalWebTestCase {
+
+  /**
+   * Implementation of getInfo().
+   */
+  function getInfo() {
+    return array(
+      'name' => t('IP address test'),
+      'description' => t('Get the IP address from the current visitor from the server variables.'),
+      'group' => t('Bootstrap')
+    );
+  }
+
+  /**
+   * Implementation of setUp().
+   */
+  function setUp() {
+    $this->oldserver = $_SERVER;
+
+    $this->remote_ip = '127.0.0.1';
+    $this->proxy_ip = '127.0.0.2';
+    $this->forwarded_ip = '127.0.0.3';
+    $this->cluster_ip = '127.0.0.4';
+    $this->untrusted_ip = '0.0.0.0';
+        
+    $_SERVER['REMOTE_ADDR'] = $this->remote_ip;
+    unset($_SERVER['HTTP_X_FORWARDED_FOR']);
+    unset($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']);
+    
+    parent::setUp();
+  }
+  
+  /**
+   * Implementation of tearDown().
+   */
+  function tearDown() {
+    $_SERVER = $this->oldserver;
+    parent::tearDown();
+  }
+
+  /**
+   * testIPAddress
+   */
+  function testIPAddress() {
+    // Test the normal IP address.
+    $this->assertTrue(
+      ip_address(true) == $this->remote_ip,
+      t('Got remote IP address')
+    );
+    
+    // Proxy forwarding on but no proxy addresses defined.
+    variable_set('reverse_proxy', 1);
+    $this->assertTrue(
+      ip_address(true) == $this->remote_ip,
+      t('Proxy forwarding without trusted proxies got remote IP address')
+    );
+    
+    // Proxy forwarding on and proxy address not trusted.
+    variable_set('reverse_proxy_addresses', array($this->proxy_ip));
+    $_SERVER['REMOTE_ADDR'] = $this->untrusted_ip;
+    $this->assertTrue(
+      ip_address(true) == $this->untrusted_ip,
+      t('Proxy forwarding with untrusted proxy got remote IP address')
+    );
+
+    // Proxy forwarding on and proxy address trusted.
+    $_SERVER['REMOTE_ADDR'] = $this->proxy_ip;
+    $_SERVER['HTTP_X_FORWARDED_FOR'] = $this->forwarded_ip;
+    $this->assertTrue(
+      ip_address(true) == $this->forwarded_ip,
+      t('Proxy forwarding with trusted proxy got forwarded IP address')
+    );   
+    
+    // Cluster environment.
+    $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'] = $this->cluster_ip;
+    $this->assertTrue(
+      ip_address(true) == $this->cluster_ip,
+      t('Cluster environment got cluster client IP')
+    );
+  }
+}
Index: modules/simpletest/tests/xmlrpc.test
===================================================================
RCS file: modules/simpletest/tests/xmlrpc.test
diff -N modules/simpletest/tests/xmlrpc.test
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/xmlrpc.test	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,128 @@
+<?php
+// $Id: xmlrpc.test,v 1.1 2008/06/26 21:04:17 dries Exp $
+
+class XMLRPCValidator1IncTestCase extends DrupalWebTestCase {
+  /**
+   * Implementation of getInfo().
+   */
+  function getInfo() {
+    return array(
+      'name'  => t('XML-RPC validator'),
+      'description'  => t('See !validator-link.', array('!validator-link' => l('the xmlrpc validator1 specification', 'http://www.xmlrpc.com/validator1Docs'))),
+      'group' => t('XML-RPC'),
+    );
+  }
+
+  /**
+   * Implementation of setUp().
+   */
+  function setUp() {
+    parent::setUp('xmlrpc_test');
+  }
+
+  /**
+   * Run validator1 tests.
+   */
+  function testValidator1() {
+    $xml_url = url(NULL, array('absolute' => TRUE)) . 'xmlrpc.php';
+    srand();
+    mt_srand();
+
+
+    $array_1 = array(array('curly' => mt_rand(-100,100)),
+                   array('curly' => mt_rand(-100,100)),
+                   array('larry' => mt_rand(-100,100)),
+                   array('larry' => mt_rand(-100,100)),
+                   array('moe' => mt_rand(-100,100)),
+                   array('moe' => mt_rand(-100,100)),
+                   array('larry' => mt_rand(-100,100)));
+    shuffle($array_1);
+    $l_res_1 = xmlrpc_test_arrayOfStructsTest($array_1);
+    $r_res_1 = xmlrpc($xml_url, 'validator1.arrayOfStructsTest', $array_1);
+    $this->assertIdentical($l_res_1, $r_res_1, 'array of structs test: %s');
+
+
+    $string_2 = 't\'&>>zf"md>yr>xlcev<h<"k&j<og"w&&>">>uai"np&s>>q\'&b<>"&&&';
+    $l_res_2 = xmlrpc_test_countTheEntities($string_2);
+    $r_res_2 = xmlrpc($xml_url, 'validator1.countTheEntities', $string_2);
+    $this->assertIdentical($l_res_2, $r_res_2, 'count the entities test: %s');
+
+
+    $struct_3 = array('moe' => mt_rand(-100,100), 'larry' => mt_rand(-100,100), 'curly' => mt_rand(-100,100), 'homer' => mt_rand(-100,100));
+    $l_res_3 = xmlrpc_test_easyStructTest($struct_3);
+    $r_res_3 = xmlrpc($xml_url, 'validator1.easyStructTest', $struct_3);
+    $this->assertIdentical($l_res_3, $r_res_3, 'easy struct test: %s');
+
+
+    $struct_4 = array('sub1' => array('bar' => 13),
+                    'sub2' => 14,
+                    'sub3' => array('foo' => 1, 'baz' => 2),
+                    'sub4' => array('ss' => array('sss' => array('ssss' => 'sssss'))));
+    $l_res_4 = xmlrpc_test_echoStructTest($struct_4);
+    $r_res_4 = xmlrpc($xml_url, 'validator1.echoStructTest', $struct_4);
+    $this->assertIdentical($l_res_4, $r_res_4, 'echo struct test: %s');
+
+    $int_5     = mt_rand(-100,100);
+    $bool_5    = (($int_5 % 2) == 0);
+    $string_5  = $this->randomName();
+    $double_5  = (double)(mt_rand(-1000,1000) / 100);
+    $time_5    = time();
+    $base64_5  = $this->randomName(100);
+    $l_res_5 = xmlrpc_test_manyTypesTest($int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), $base64_5);
+    $l_res_5[5] = $l_res_5[5]->data; /* override warpping */
+    $r_res_5 = xmlrpc($xml_url, 'validator1.manyTypesTest', $int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), xmlrpc_base64($base64_5));
+    /* Contains objects, objects are not equal */
+    // See http://drupal.org/node/37766 why this currnetly fails
+    $this->assertEqual($l_res_5, $r_res_5, 'many types test: %s');
+
+
+    $size = mt_rand(100,200);
+    $array_6 = array();
+    for ($i = 0; $i < $size; $i++) {
+      $array_6[] = $this->randomName(mt_rand(8,12));
+    }
+
+    $l_res_6 = xmlrpc_test_moderateSizeArrayCheck($array_6);
+    $r_res_6 = xmlrpc($xml_url, 'validator1.moderateSizeArrayCheck', $array_6);
+    $this->assertIdentical($l_res_6, $r_res_6, 'moderate size array check: %s');
+
+
+    $struct_7 = array();
+    for ($y = 2000; $y < 2002; $y++) {
+      for ($m = 3; $m < 5; $m++) {
+        for ($d = 1; $d < 6; $d++) {
+          $ys = (string)$y;
+          $ms = sprintf('%02d', $m);
+          $ds = sprintf('%02d', $d);
+          $struct_7[$ys][$ms][$ds]['moe']   = mt_rand(-100,100);
+          $struct_7[$ys][$ms][$ds]['larry'] = mt_rand(-100,100);
+          $struct_7[$ys][$ms][$ds]['curly'] = mt_rand(-100,100);
+        }
+      }
+    }
+    $l_res_7 = xmlrpc_test_nestedStructTest($struct_7);
+    $r_res_7 = xmlrpc($xml_url, 'validator1.nestedStructTest', $struct_7);
+    $this->assertIdentical($l_res_7, $r_res_7, 'nested struct test: %s');
+
+
+    $int_8 = mt_rand(-100,100);
+    $l_res_8 = xmlrpc_test_simpleStructReturnTest($int_8);
+    $r_res_8 = xmlrpc($xml_url, 'validator1.simpleStructReturnTest', $int_8);
+    $this->assertIdentical($l_res_8, $r_res_8, 'nested struct test: %s');
+
+    /* Now test multicall */
+    $x = array();
+    $x[] = array('validator1.arrayOfStructsTest',     $array_1);
+    $x[] = array('validator1.countTheEntities',       $string_2);
+    $x[] = array('validator1.easyStructTest',         $struct_3);
+    $x[] = array('validator1.echoStructTest',         $struct_4);
+    $x[] = array('validator1.manyTypesTest',          $int_5, $bool_5, $string_5, $double_5, xmlrpc_date($time_5), xmlrpc_base64($base64_5));
+    $x[] = array('validator1.moderateSizeArrayCheck', $array_6);
+    $x[] = array('validator1.nestedStructTest',       $struct_7);
+    $x[] = array('validator1.simpleStructReturnTest', $int_8);
+
+    $a_l_res = array($l_res_1, $l_res_2, $l_res_3, $l_res_4, $l_res_5, $l_res_6, $l_res_7, $l_res_8);
+    $a_r_res = xmlrpc($xml_url, $x);
+    $this->assertEqual($a_l_res, $a_r_res, 'multicall equals result');
+  }
+}
Index: modules/simpletest/tests/registry.test
===================================================================
RCS file: modules/simpletest/tests/registry.test
diff -N modules/simpletest/tests/registry.test
--- /dev/null	1 Jan 1970 00:00:00 -0000
+++ modules/simpletest/tests/registry.test	1 Jan 1970 00:00:00 -0000
@@ -0,0 +1,152 @@
+<?php
+
+class RegistryParseFileTestCase extends DrupalWebTestCase {
+
+  /**
+   * Implementation of getInfo().
+   */
+  function getInfo() {
+    return array(
+      'name' => t('Registry parse file test'),
+      'description' => t('Parse a simple file and check that its resources are saved to the database.'),
+      'group' => t('System')
+    );
+  }
+
+  /**
+   * Implementation of setUp().
+   */
+  function setUp() {
+    $this->fileName = 'registry_test_' . md5(rand());
+    $this->functionName = 'registry_test_function' . md5(rand());
+    $this->className = 'registry_test_class' . md5(rand());
+    $this->interfaceName = 'registry_test_interface' . md5(rand());
+    parent::setUp();
+  }
+
+  /**
+   * testRegistryParseFile
+   */
+  function testRegistryParseFile() {
+    _registry_parse_file($this->fileName, $this->getFileContents());
+    foreach (array('functionName', 'className', 'interfaceName') as $resource) {
+      $foundName = db_result(db_query("SELECT name FROM {registry} WHERE name = '%s'", $this->$resource));
+      $this->assertTrue($this->$resource == $foundName, t('Resource "@resource" found.', array('@resource' => $this->$resource)));
+    }
+  }
+
+  /**
+   * getFileContents
+   */
+  function getFileContents() {
+    $file_contents = <<<CONTENTS
+<?php
+
+function {$this->functionName}() {}
+
+class {$this->className} {}
+
+interface {$this->interfaceName} {}
+
+CONTENTS;
+    return $file_contents;
+  }
+
+}
+
+class RegistryParseFilesTestCase extends DrupalWebTestCase {
+
+  protected $fileTypes = array('new', 'existing_changed');
+
+  /**
+   * Implementation of getInfo().
+   */
+  function getInfo() {
+    return array(
+      'name' => t('Registry parse files test'),
+      'description' => t('Read two a simple files from disc, and check that their resources are saved to the database.'),
+      'group' => t('System')
+    );
+  }
+
+  /**
+   * Implementation of setUp().
+   */
+  function setUp() {
+    parent::setUp();
+    // Create files with some php to parse - one 'new', one 'existing' so
+    // we test all the important code paths in _registry_parse_files.
+    foreach ($this->fileTypes as $fileType) {
+      $this->$fileType = new StdClass();
+      $this->$fileType->fileName = file_directory_path() . '/registry_test_' . md5(rand());
+      $this->$fileType->functionName = 'registry_test_function' . md5(rand());
+      $this->$fileType->className = 'registry_test_class' . md5(rand());
+      $this->$fileType->interfaceName = 'registry_test_interface' . md5(rand());
+      $this->$fileType->contents = $this->getFileContents($fileType);
+      file_save_data($this->$fileType->contents, $this->$fileType->fileName);
+
+      if ($fileType == 'existing_changed') {
+        // Insert a record with a dodgy md5.
+        $this->$fileType->fakeMD5 = md5($this->$fileType->contents . rand());
+        db_query("INSERT INTO {registry_file} (md5, filename) VALUES ('%s', '%s')", $this->$fileType->fakeMD5, './' . $this->$fileType->fileName);
+
+        // Insert some fake resource records.
+        foreach (array('function', 'class', 'interface') as $type) {
+          db_query("INSERT INTO {registry} (name, type, filename) VALUES ('%s', '%s', '%s')", $type . md5(rand()), $type, './' . $this->$fileType->fileName);
+        }
+      }
+    }
+  }
+
+  /**
+   * testRegistryParseFiles
+   */
+  function testRegistryParseFiles() {
+    _registry_parse_files($this->getFiles());
+    foreach ($this->fileTypes as $fileType) {
+      // Test that we have all the right resources.
+      foreach (array('functionName', 'className', 'interfaceName') as $resource) {
+        $foundName = db_result(db_query("SELECT name FROM {registry} WHERE name = '%s'", $this->$fileType->$resource));
+        $this->assertTrue($this->$fileType->$resource == $foundName, t('Resource "@resource" found.', array('@resource' => $this->$fileType->$resource)));
+      }
+      // Test that we have the right md5.
+      $md5 = db_result(db_query("SELECT md5 FROM {registry_file} WHERE filename = '%s'", './' . $this->$fileType->fileName));
+      $this->assertTrue(md5($this->$fileType->contents) == $md5, t('MD5 for "@filename" matched.' . $fileType . $md5, array('@filename' => $this->$fileType->fileName)));
+    }
+  }
+
+  /**
+   * getFiles
+   */
+  function getFiles() {
+    $files = array();
+    foreach ($this->fileTypes as $fileType) {
+      if ($fileType == 'existing_changed') {
+        $files['./' . $this->$fileType->fileName] = array('md5' => $this->$fileType->fakeMD5);
+      }
+      else {
+        $files['./' . $this->$fileType->fileName] = array();
+      }
+    }
+    return $files;
+  }
+
+  /**
+   * getFileContents
+   */
+  function getFileContents($fileType) {
+    $file_contents = <<<CONTENTS
+<?php
+
+function {$this->$fileType->functionName}() {}
+
+class {$this->$fileType->className} {}
+
+interface {$this->$fileType->interfaceName} {}
+
+CONTENTS;
+    return $file_contents;
+  }
+
+}
+
