$installing = true;
require_once '../../init.php';
require_once MAX_PATH . '/lib/OA/Upgrade/Upgrade.php';
require_once MAX_PATH . '/lib/OA/Upgrade/Login.php';
require_once MAX_PATH . '/lib/OX/Upgrade/Util/Job.php';
// No upgrade file? No installer!
if (!file_exists(MAX_PATH . '/var/UPGRADE')) {
    header("Location: index.php");
    exit;
}
$aErrors = array();
$result = array('name' => @$_REQUEST['task'], 'status' => 'Invalid Request', 'errors' => &$aErrors, 'type' => 'task');
if (OA_Upgrade_Login::checkLogin(false)) {
    if (validRequest($result)) {
        $oUpgrader = new OA_Upgrade();
        $aResponse = $oUpgrader->runPostUpgradeTask($_REQUEST['task']);
        $result['errors'] = $aResponse['errors'];
        if (count($result['errors']) > 0) {
            $result['status'] = 'Failed';
        } else {
            $result['status'] = 'OK';
        }
    }
} else {
    OX_Upgrade_Util_Job::logError($result, 'Permissions error');
    $result['status'] = 'Permissions error';
}
// Save job results in session
OX_Upgrade_Util_Job::saveJobResult($result);
require_once MAX_PATH . '/lib/JSON/JSON.php';
$json = new Services_JSON();
 function testRunPostUpgradeTask()
 {
     $oUpgrade = new OA_Upgrade();
     $oUpgrade->upgradePath = MAX_PATH . '/lib/OA/Upgrade/tests/data/';
     Mock::generatePartial('OA_UpgradeLogger', $mockLogger = 'OA_UpgradeLoggerMock' . rand(), array('logError', 'logOnly'));
     $file = $oUpgrade->upgradePath . 'tasks/openads_upgrade_task_Test_1.php';
     $oLogger1 = new $mockLogger();
     $oLogger1->expectOnce('logError', array('Error from Test_1'));
     $oLogger1->expectAt(0, 'logOnly', array('attempting to include file ' . $file));
     $oLogger1->expectAt(1, 'logOnly', array('Message from Test_1'));
     $oLogger1->expectAt(2, 'logOnly', array('executed file ' . $file));
     $oLogger1->expectCallCount('logOnly', 3);
     $oUpgrade->oLogger = $oLogger1;
     $result = $oUpgrade->runPostUpgradeTask('Test_1');
     $expected = array('task' => 'Test_1', 'file' => $file, 'result' => 'Result from Test_1', 'errors' => array('Error from Test_1'));
     $this->assertEqual($result, $expected);
     $file = $oUpgrade->upgradePath . 'tasks/openads_upgrade_task_Test_2.php';
     $oLogger2 = new $mockLogger();
     $oLogger2->expectNever('logError');
     $oLogger2->expectAt(0, 'logOnly', array('attempting to include file ' . $file));
     $oLogger2->expectAt(1, 'logOnly', array('Message from Test_2'));
     $oLogger2->expectAt(2, 'logOnly', array('executed file ' . $file));
     $oLogger2->expectCallCount('logOnly', 3);
     $oUpgrade->oLogger = $oLogger2;
     $result = $oUpgrade->runPostUpgradeTask('Test_2');
     $expected = array('task' => 'Test_2', 'file' => $file, 'result' => 'Result from Test_2', 'errors' => array());
     $this->assertEqual($result, $expected);
     $file = $oUpgrade->upgradePath . 'tasks/openads_upgrade_task_Test_3.php';
     $oLogger3 = new $mockLogger();
     $oLogger3->expectOnce('logError', array('Error from Test_3'));
     $oLogger3->expectAt(0, 'logOnly', array('attempting to include file ' . $file));
     $oLogger3->expectAt(1, 'logOnly', array('executed file ' . $file));
     $oLogger3->expectCallCount('logOnly', 2);
     $oUpgrade->oLogger = $oLogger3;
     $result = $oUpgrade->runPostUpgradeTask('Test_3');
     $expected = array('task' => 'Test_3', 'file' => $oUpgrade->upgradePath . 'tasks/openads_upgrade_task_Test_3.php', 'result' => null, 'errors' => array('Error from Test_3'));
     $this->assertEqual($result, $expected);
 }