synergy/server/api/suite.php (162 lines of code) (raw):
<?php
use Synergy\App\Synergy;
use Synergy\Controller\CaseCtrl;
use Synergy\Controller\Mediator;
use Synergy\Controller\SpecificationCtrl;
use Synergy\Controller\SuiteCtrl;
use Synergy\Misc\HTTP;
use Synergy\Model\Suite;
use Synergy\Model\Suite\Rest\SuiteResource;
require_once '../setup/conf.php';
switch ($_SERVER['REQUEST_METHOD']) {
case "GET":
if (!isset($_REQUEST['id'])) {
HTTP::BadRequest("Missing parameters");
die();
}
$suiteCtrl = new SuiteCtrl();
$suite = $suiteCtrl->getSuite(intval($_REQUEST['id']));
if (is_null($suite)) {
HTTP::NotFound("Suite not found");
die();
}
if (Synergy::getSessionProvider()->sessionExists()) {
$role = Synergy::getSessionProvider()->getUserRole();
$suite->addControls($role);
foreach ($suite->testCases as $at) {
$at->addControls($role);
}
}
$specCtrl = new SpecificationCtrl();
if ($specCtrl->isSpecificationUsed($suite->specificationId)) {
$suite->disableEditActions();
}
HTTP::OK(json_encode(SuiteResource::createFromSuite($suite, false)), 'Content-type: application/json');
break;
case "PUT":
if (!Suite::canEdit(intval($_REQUEST['id']))) {
HTTP::Unauthorized("");
die();
}
$suiteCtrl = new SuiteCtrl();
$specCtrl = new SpecificationCtrl();
$specificationId = $suiteCtrl->getSpecificationId(intval($_REQUEST["id"]));
$action = "default";
if (isset($_REQUEST['action'])) {
$action = $_REQUEST['action'];
}
switch ($action) {
case "addCase":
if ($specCtrl->isSpecificationUsed($specificationId)) {
HTTP::BadRequest("Specification is used in paused assignment, no changes are allowed until the assignment is finished");
die();
}
if (!isset($_REQUEST['id']) || !isset($_REQUEST['caseId'])) {
HTTP::BadRequest("Missing parametersl");
die();
}
if ($suiteCtrl->suiteAlreadyHasCase(intval($_REQUEST['caseId']), intval($_REQUEST['id']))) {
HTTP::BadRequest("Suite already has this case");
die();
}
if ($suiteCtrl->addCaseToSuite(intval($_REQUEST['caseId']), intval($_REQUEST['id']))) {
Mediator::emit("addRevisionSuite", intval($_REQUEST['id']));
HTTP::OK("");
} else {
HTTP::InternalServerError("");
}
break;
case "deleteCase":
if ($specCtrl->isSpecificationUsed($specificationId)) {
HTTP::BadRequest("Specification is used in paused assignment, no changes are allowed until the assignment is finished");
die();
}
if (!isset($_REQUEST['id']) || !isset($_REQUEST['caseId'])) {
HTTP::BadRequest("Missing parametersl");
die();
}
$caseCtrl = new CaseCtrl();
if ($caseCtrl->removeCaseFromSuite(intval($_REQUEST['id']), intval($_REQUEST['caseId']))) {
Mediator::emit("addRevisionSuite", intval($_REQUEST['id']));
HTTP::OK("");
} else {
HTTP::InternalServerError("");
}
break;
default:
$put = file_get_contents('php://input');
$data = json_decode($put);
if (!isset($_REQUEST['id']) || !isset($data->order) || !isset($data->id) || !isset($data->title) || !isset($data->desc) || !isset($data->product) || !isset($data->component)) {
HTTP::BadRequest("Missing parameters");
die();
}
$suite = new Suite(intval($_REQUEST['id']), $data->desc, $data->title, $data->product, $data->component, -1, $data->order);
if (isset($data->ext)) {
$suite->ext = $data->ext;
}
if ($specCtrl->isSpecificationUsed($specificationId)) {
$suite->order = null;
}
if ($suiteCtrl->updateSuite($suite)) {
Mediator::emit("addRevisionSuite", $suite->id);
HTTP::OK("");
} else {
HTTP::InternalServerError("");
}
break;
}
break;
case "DELETE":
if (!isset($_REQUEST['id'])) {
HTTP::BadRequest("Missing parameters");
die();
}
if (!Suite::canDelete(intval($_REQUEST['id']))) {
HTTP::Unauthorized("");
die();
}
$suiteCtrl = new SuiteCtrl();
$specCtrl = new SpecificationCtrl();
$specId = $suiteCtrl->getSpecificationId(intval($_REQUEST['id']));
if ($specCtrl->isSpecificationUsed($specId)) {
HTTP::BadRequest("Specification is used in paused assignment, no changes are allowed until the assignment is finished");
die();
}
if ($suiteCtrl->deleteSuite(intval($_REQUEST['id']))) {
Mediator::emit("addRevision", $specId);
HTTP::OK("");
} else {
HTTP::InternalServerError("");
}
break;
case "POST":
$put = file_get_contents('php://input');
$data = json_decode($put);
if (!isset($data->specificationId) || !isset($data->title) || !isset($data->order) || !isset($data->desc) || !isset($data->product) || !isset($data->component)) {
HTTP::BadRequest("Missing parameters");
die();
}
if (!Suite::canCreate(intval($data->specificationId))) {
HTTP::Unauthorized("");
die();
}
$suiteCtrl = new SuiteCtrl();
$suite = new Suite(-1, $data->desc, $data->title, $data->product, $data->component, intval($data->specificationId), $data->order);
$specCtrl = new SpecificationCtrl();
if ($specCtrl->isSpecificationUsed($suite->specificationId)) {
HTTP::BadRequest("Specification is used in paused assignment, no changes are allowed until the assignment is finished");
die();
}
if (isset($data->ext)) {
$suite->ext = $data->ext;
}
$id = $suiteCtrl->createSuite($suite);
Mediator::emit("addRevision", $suite->specificationId);
$url = BASER_URL . "suite.php?id=" . $id;
HTTP::OK(json_encode($url), 'Content-type: application/json');
break;
default :
HTTP::MethodNotAllowed("");
break;
}
?>