package com.griddynamics.jagger.test.jaas.invoker;
import com.griddynamics.jagger.invoker.InvocationException;
import com.griddynamics.jagger.invoker.v2.DefaultHttpInvoker;
import com.griddynamics.jagger.invoker.v2.JHttpEndpoint;
import com.griddynamics.jagger.invoker.v2.JHttpQuery;
import com.griddynamics.jagger.invoker.v2.JHttpResponse;
import com.griddynamics.jagger.test.jaas.util.TestContext;
import com.griddynamics.jagger.test.jaas.util.entity.ExecutionEntity;
import org.springframework.http.HttpMethod;
/**
* Perform POST and DELETE requests for executions.
* Manage list of available execution ids which used for validation and composing requests.
*/
public class ExecutionManipulateInvoker extends DefaultHttpInvoker {
@Override
public JHttpResponse invoke(JHttpQuery query, JHttpEndpoint endpoint) throws InvocationException {
if (query.getMethod().equals(HttpMethod.DELETE)) {
String path = query.getPath();
Long id = Long.valueOf(path.substring(path.lastIndexOf("/") + 1));
TestContext.getCreatedExecutionIds().remove(id);
TestContext.setFirstRemovedExecution(id);
}
JHttpResponse result = super.invoke(query, endpoint);
if (query.getMethod().equals(HttpMethod.POST) && result.getStatus().is2xxSuccessful()) {
TestContext.addCreatedExecutionId(((ExecutionEntity) result.getBody()).getId());
}
return result;
}
}