2007-02-03 19:03:42 +00:00
|
|
|
<?php
|
|
|
|
|
|
|
|
|
|
/* unit tests to make sure objects we want to use with the object manager are valid */
|
|
|
|
|
|
|
|
|
|
require_once("path.php");
|
|
|
|
|
require_once("test_common.php");
|
|
|
|
|
require_once(BASE.'include/objectManager.php');
|
|
|
|
|
require_once(BASE.'include/application.php');
|
|
|
|
|
require_once(BASE.'include/maintainer.php');
|
2007-04-21 00:58:08 +00:00
|
|
|
require_once(BASE.'include/testData_queue.php');
|
|
|
|
|
require_once(BASE.'include/version_queue.php');
|
2007-04-24 23:48:14 +00:00
|
|
|
require_once(BASE.'include/application_queue.php');
|
2007-02-03 19:03:42 +00:00
|
|
|
|
|
|
|
|
/* internal function */
|
2007-03-13 21:05:11 +00:00
|
|
|
function test_class($sClassName, $aTestMethods)
|
2007-02-03 19:03:42 +00:00
|
|
|
{
|
2007-03-13 21:05:11 +00:00
|
|
|
$oObject = new ObjectManager("");
|
|
|
|
|
$oObject->sClass = $sClassName;
|
2007-03-17 00:50:10 +00:00
|
|
|
|
|
|
|
|
/* Check whether the required methods are present */
|
2007-03-13 21:05:11 +00:00
|
|
|
if(!$oObject->checkMethods($aTestMethods, false))
|
2007-02-03 19:03:42 +00:00
|
|
|
{
|
2007-03-17 00:50:10 +00:00
|
|
|
echo "FAILED\t\t".$oObject->sClass." does not have valid methods for use with".
|
2007-03-13 21:05:11 +00:00
|
|
|
" the object manager\n";
|
2007-02-03 19:03:42 +00:00
|
|
|
return false;
|
2007-03-17 00:50:10 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Set up test user */
|
|
|
|
|
global $test_email, $test_password;
|
|
|
|
|
if(!$oUser = create_and_login_user())
|
2007-03-13 21:05:11 +00:00
|
|
|
{
|
2007-03-17 00:50:10 +00:00
|
|
|
echo "Failed to create and log in user.\n";
|
|
|
|
|
return FALSE;
|
2007-02-03 19:03:42 +00:00
|
|
|
}
|
2007-06-10 18:51:33 +00:00
|
|
|
|
|
|
|
|
/* Test the class constructor */
|
2007-06-19 00:26:21 +00:00
|
|
|
if(!$oTestObject = create_object($sClassName, $oUser))
|
2007-06-10 18:51:33 +00:00
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
|
|
/* Should return 1 or more, since there may be entries present already */
|
|
|
|
|
$hResult = $oTestObject->objectGetEntries(false, false);
|
|
|
|
|
|
|
|
|
|
if(!$hResult)
|
|
|
|
|
{
|
|
|
|
|
echo "Got '$hResult' instead of a valid MySQL handle\n";
|
|
|
|
|
echo "FAILED\t\t$sClassName::$sClassName\n";
|
|
|
|
|
$oTestObject->delete();
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!($oRow = mysql_fetch_object($hResult)))
|
|
|
|
|
{
|
|
|
|
|
echo "Failed to fetch MySQL object\n";
|
|
|
|
|
echo "FAILED\t\t$sClassName::$sClassName\n";
|
|
|
|
|
$oTestObject->delete();
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$oNewTestObject = new $sClassName(null, $oRow);
|
|
|
|
|
switch($sClassName)
|
|
|
|
|
{
|
|
|
|
|
case "application":
|
|
|
|
|
$iReceived = $oNewTestObject->iAppId;
|
|
|
|
|
break;
|
|
|
|
|
case "application_queue":
|
|
|
|
|
$iReceived = $oNewTestObject->oApp->iAppId;
|
|
|
|
|
break;
|
|
|
|
|
case "distribution":
|
|
|
|
|
$iReceived = $oNewTestObject->iDistributionId;
|
|
|
|
|
break;
|
|
|
|
|
case "downloadurl":
|
|
|
|
|
$iReceived = $oNewTestObject->iId;
|
|
|
|
|
break;
|
|
|
|
|
case "maintainer":
|
|
|
|
|
$iReceived = $oNewTestObject->iMaintainerId;
|
|
|
|
|
break;
|
|
|
|
|
case "testData":
|
|
|
|
|
$iReceived = $oNewTestObject->iTestingId;
|
|
|
|
|
break;
|
|
|
|
|
case "testData_queue":
|
|
|
|
|
$iReceived = $oNewTestObject->oTestData->iTestingId;
|
|
|
|
|
break;
|
|
|
|
|
case "vendor":
|
|
|
|
|
$iReceived = $oNewTestObject->iVendorId;
|
|
|
|
|
break;
|
|
|
|
|
case "version":
|
|
|
|
|
$iReceived = $oNewTestObject->iVersionId;
|
|
|
|
|
break;
|
|
|
|
|
case "version_queue":
|
|
|
|
|
$iReceived = $oNewTestObject->oVersion->iVersionId;
|
|
|
|
|
break;
|
|
|
|
|
case "screenshot":
|
|
|
|
|
$iReceived = $oNewTestObject->iScreenshotId;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!$iReceived || !is_numeric($iReceived))
|
|
|
|
|
{
|
|
|
|
|
echo "Got '$iReceived' instead of a valid id\n";
|
|
|
|
|
echo "FAILED\t\t$sClassName::$sClassName()\n";
|
|
|
|
|
$oTestObject->delete();
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
echo "PASSED\t\t$sClassName::$sClassName\n";
|
|
|
|
|
|
2007-06-19 00:26:21 +00:00
|
|
|
cleanup($oTestObject);
|
2007-06-10 18:51:33 +00:00
|
|
|
$oTestObject->delete();
|
|
|
|
|
|
2007-03-17 00:50:10 +00:00
|
|
|
/* Test the methods' functionality */
|
|
|
|
|
foreach($aTestMethods as $sMethod)
|
|
|
|
|
{
|
|
|
|
|
switch($sMethod)
|
|
|
|
|
{
|
|
|
|
|
/* Should also test for queued entries, but vendor does not support
|
|
|
|
|
queueing yet */
|
|
|
|
|
case "objectGetEntries":
|
2007-06-19 00:26:21 +00:00
|
|
|
if(!$oTestObject = create_object($sClassName, $oUser))
|
2007-06-10 18:51:33 +00:00
|
|
|
return FALSE;
|
2007-03-24 02:04:16 +00:00
|
|
|
|
|
|
|
|
/* Should return 1 or more, since there may be entries present already */
|
2007-03-17 00:50:10 +00:00
|
|
|
$iExpected = 1;
|
2007-03-24 18:30:16 +00:00
|
|
|
$hResult = $oTestObject->objectGetEntries(false, false);
|
2007-03-17 00:50:10 +00:00
|
|
|
$iReceived = mysql_num_rows($hResult);
|
|
|
|
|
if($iExpected > $iReceived)
|
|
|
|
|
{
|
|
|
|
|
echo "Got $iReceived instead of >= $iExpected\n";
|
|
|
|
|
echo "FAILED\t\t$sClassName::$sMethod\n";
|
2007-06-10 18:51:33 +00:00
|
|
|
$oTestObject->delete();
|
2007-03-17 00:50:10 +00:00
|
|
|
return FALSE;
|
|
|
|
|
}
|
2007-06-10 18:51:33 +00:00
|
|
|
|
2007-03-17 00:50:10 +00:00
|
|
|
/* Class specific clean-up */
|
2007-06-19 00:26:21 +00:00
|
|
|
cleanup($oTestObject);
|
|
|
|
|
$oTestObject->delete();
|
2007-06-10 18:51:33 +00:00
|
|
|
|
2007-03-17 00:50:10 +00:00
|
|
|
echo "PASSED\t\t$sClassName::$sMethod\n";
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
$oUser->delete();
|
|
|
|
|
|
|
|
|
|
echo "PASSED\t\t".$oObject->sClass."\n";
|
|
|
|
|
return TRUE;
|
2007-02-03 19:03:42 +00:00
|
|
|
}
|
|
|
|
|
|
2007-06-19 00:26:21 +00:00
|
|
|
function cleanup($oObject)
|
2007-06-10 18:51:33 +00:00
|
|
|
{
|
2007-06-19 00:26:21 +00:00
|
|
|
switch(get_class($oObject))
|
2007-06-10 18:51:33 +00:00
|
|
|
{
|
2007-06-19 00:26:21 +00:00
|
|
|
case "downloadurl":
|
2007-06-10 18:51:33 +00:00
|
|
|
case "maintainer":
|
2007-06-19 00:26:21 +00:00
|
|
|
case "screenshot":
|
|
|
|
|
case "testData":
|
|
|
|
|
delete_parent($oObject->iVersionId);
|
|
|
|
|
break;
|
|
|
|
|
case "testData_queue":
|
|
|
|
|
delete_parent($oObject->oTestData->iVersionId);
|
|
|
|
|
break;
|
|
|
|
|
case "version":
|
|
|
|
|
$oApp = new application($oObject->iAppId);
|
|
|
|
|
$oApp->delete();
|
|
|
|
|
break;
|
|
|
|
|
case "version_queue":
|
|
|
|
|
$oApp = new application($oObject->oVersion->iAppId);
|
2007-06-10 18:51:33 +00:00
|
|
|
$oApp->delete();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2007-06-19 00:26:21 +00:00
|
|
|
function create_version()
|
|
|
|
|
{
|
|
|
|
|
$oApp = new application();
|
|
|
|
|
$oApp->sName = "OM App";
|
|
|
|
|
$oApp->create();
|
|
|
|
|
$oVersion = new version();
|
|
|
|
|
$oVersion->sName = "OM version";
|
|
|
|
|
$oVersion->iAppId = $oApp->iAppId;
|
|
|
|
|
$oVersion->create();
|
|
|
|
|
return $oVersion->iVersionId;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function delete_parent($iVersionId)
|
|
|
|
|
{
|
|
|
|
|
$oVersion = new version($iVersionId);
|
|
|
|
|
$oApp = new application($oVersion->iAppId);
|
|
|
|
|
$oApp->delete();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function create_object($sClassName, $oUser)
|
2007-06-10 18:51:33 +00:00
|
|
|
{
|
|
|
|
|
$oUser->addPriv("admin");
|
|
|
|
|
$oTestObject = new $sClassName();
|
|
|
|
|
/* Set up one test entry, depending on class */
|
|
|
|
|
switch($sClassName)
|
|
|
|
|
{
|
|
|
|
|
case "distribution":
|
|
|
|
|
$oTestObject->sName = "Silly test distribution";
|
|
|
|
|
$oTestObject->sUrl = "http://appdb.winehq.org/";
|
|
|
|
|
break;
|
|
|
|
|
case "downloadurl":
|
|
|
|
|
$oTestObject->sUrl = "http://appdb.winehq.org/";
|
|
|
|
|
$oTestObject->sDescription = "DANGER";
|
2007-06-19 00:26:21 +00:00
|
|
|
$oTestObject->iVersionId = create_version();
|
2007-06-10 18:51:33 +00:00
|
|
|
break;
|
|
|
|
|
case "maintainer":
|
2007-06-19 00:26:21 +00:00
|
|
|
$oVersion = new version(create_version());
|
2007-06-10 18:51:33 +00:00
|
|
|
$oTestObject->iUserId = $oUser->iUserId;
|
2007-06-19 00:26:21 +00:00
|
|
|
$oTestObject->iAppId = $oVersion->iAppId;
|
|
|
|
|
$oTestObject->iVersionId = $oVersion->iVersionId;
|
2007-06-10 18:51:33 +00:00
|
|
|
$oTestObject->sMaintainReason = "I need it";
|
|
|
|
|
break;
|
2007-06-19 00:26:21 +00:00
|
|
|
case "screenshot":
|
|
|
|
|
case "testData":
|
|
|
|
|
$oTestObject->iVersionId = create_version();
|
|
|
|
|
break;
|
|
|
|
|
case "testData_queue":
|
|
|
|
|
$oTestObject->oTestData->iVersionId = create_version();
|
|
|
|
|
break;
|
|
|
|
|
case "version":
|
|
|
|
|
$oApp = new application();
|
|
|
|
|
$oApp->create();
|
|
|
|
|
$oTestObject->iAppId = $oApp->iAppId;
|
|
|
|
|
$oTestObject->sName = "OM Version";
|
|
|
|
|
break;
|
|
|
|
|
case "version_queue":
|
|
|
|
|
$oApp = new application();
|
|
|
|
|
$oApp->create();
|
|
|
|
|
$oTestObject->oVersion->iAppId = $oApp->iAppId;
|
|
|
|
|
$oTestObject->oVersion->sName = "OM Version";
|
|
|
|
|
break;
|
2007-06-10 18:51:33 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* We cannot use screenshot::create() because it requires an image */
|
|
|
|
|
if($sClassName != "screenshot")
|
|
|
|
|
{
|
|
|
|
|
if(!$oTestObject->create())
|
|
|
|
|
{
|
|
|
|
|
echo "FAILED\t\t$sClassName::create()\n";
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
} else
|
|
|
|
|
{
|
|
|
|
|
$sQuery = "INSERT INTO appData
|
|
|
|
|
(versionId, type, description, queued, submitterId)
|
|
|
|
|
VALUES('?','?','?','?','?')";
|
2007-06-19 00:26:21 +00:00
|
|
|
$hResult = query_parameters($sQuery, $oTestObject->iVersionId, "screenshot", "", "false",
|
2007-06-10 18:51:33 +00:00
|
|
|
$oUser->iUserId);
|
|
|
|
|
if(!$hResult)
|
|
|
|
|
{
|
|
|
|
|
echo "FAILED\t\t$sClassName to create screenshot entry";
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
|
|
|
|
$oTestObject->iScreenshotId = mysql_insert_id();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return $oTestObject;
|
|
|
|
|
}
|
|
|
|
|
|
2007-02-03 19:03:42 +00:00
|
|
|
function test_object_methods()
|
|
|
|
|
{
|
|
|
|
|
test_start(__FUNCTION__);
|
|
|
|
|
|
2007-04-29 23:00:01 +00:00
|
|
|
$aTestMethods = array("allowAnonymousSubmissions",
|
|
|
|
|
"canEdit",
|
2007-04-21 00:58:08 +00:00
|
|
|
"display",
|
|
|
|
|
"getOutputEditorValues",
|
|
|
|
|
"objectGetEntries",
|
|
|
|
|
"objectGetHeader",
|
2007-06-14 00:50:35 +00:00
|
|
|
"objectGetId",
|
|
|
|
|
"objectGetTableRow",
|
2007-04-21 00:58:08 +00:00
|
|
|
"objectMakeLink",
|
|
|
|
|
"objectMakeUrl",
|
|
|
|
|
"outputEditor",
|
2007-04-22 00:39:53 +00:00
|
|
|
"mustBeQueued"
|
2007-04-21 00:58:08 +00:00
|
|
|
);
|
|
|
|
|
|
|
|
|
|
$aTestClasses = array("application",
|
2007-04-24 23:48:14 +00:00
|
|
|
"application_queue",
|
2007-04-21 00:58:08 +00:00
|
|
|
"distribution",
|
2007-05-31 02:40:01 +00:00
|
|
|
"downloadurl",
|
2007-04-21 00:58:08 +00:00
|
|
|
"maintainer",
|
|
|
|
|
"screenshot",
|
|
|
|
|
"testData",
|
|
|
|
|
"testData_queue",
|
|
|
|
|
"vendor",
|
|
|
|
|
"version",
|
|
|
|
|
"version_queue"
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
foreach($aTestClasses as $sTestClass)
|
|
|
|
|
{
|
|
|
|
|
if(!test_class($sTestClass, $aTestMethods))
|
|
|
|
|
return FALSE;
|
|
|
|
|
}
|
2007-03-24 02:04:16 +00:00
|
|
|
|
2007-02-03 19:03:42 +00:00
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if(!test_object_methods())
|
2007-03-31 17:12:55 +00:00
|
|
|
{
|
2007-02-03 19:03:42 +00:00
|
|
|
echo "test_object_methods() failed!\n";
|
2007-03-31 17:12:55 +00:00
|
|
|
$bTestSuccess = false;
|
|
|
|
|
} else
|
|
|
|
|
{
|
2007-02-03 19:03:42 +00:00
|
|
|
echo "test_object_methods() passed\n";
|
2007-03-31 17:12:55 +00:00
|
|
|
}
|
2007-02-03 19:03:42 +00:00
|
|
|
|
|
|
|
|
?>
|