package restx.specs;
import com.google.common.base.Optional;
import restx.RestxLogLevel;
import restx.admin.AdminModule;
import restx.annotations.GET;
import restx.annotations.POST;
import restx.annotations.RestxResource;
import restx.annotations.Verbosity;
import restx.factory.Component;
import restx.factory.When;
import restx.security.RolesAllowed;
import restx.tests.RestxSpecTestServer;
import restx.tests.TestRequest;
import restx.tests.TestResult;
import restx.tests.TestResultSummary;
/**
* User: xavierhanin
* Date: 7/31/13
* Time: 10:24 PM
*/
@Component @RestxResource(group = "restx-admin")
@When(name="restx.mode", value="infinirest")
public class SpecTestResource {
private final RestxSpecTestServer.RunningServer server;
public SpecTestResource(RestxSpecTestServer.RunningServer server) {
this.server = server;
}
@RolesAllowed(AdminModule.RESTX_ADMIN_ROLE)
@POST("/@/tests/requests")
public TestRequest submitTestRequest(TestRequest testRequest) {
return server.submitTestRequest(testRequest);
}
@RolesAllowed(AdminModule.RESTX_ADMIN_ROLE)
@GET("/@/tests/requests/{key}")
public Optional<TestRequest> getTestRequestByKey(String key) {
return server.getRequestByKey(key);
}
@RolesAllowed(AdminModule.RESTX_ADMIN_ROLE)
@GET("/@/tests/results/summaries")
@Verbosity(RestxLogLevel.QUIET)
public Iterable<TestResultSummary> findCurrentTestResults() {
return server.findCurrentTestResults();
}
@RolesAllowed(AdminModule.RESTX_ADMIN_ROLE)
@GET("/@/tests/results/{key}")
public Optional<TestResult> getTestResultByKey(String key) {
return server.getResultByKey(key);
}
}