package org.activiti.rest.service.api.repository;
import java.io.ByteArrayInputStream;
import java.util.List;
import org.activiti.engine.repository.Deployment;
import org.activiti.rest.service.BaseSpringRestTestCase;
import org.activiti.rest.service.api.RestUrls;
import org.apache.http.HttpStatus;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import com.fasterxml.jackson.databind.JsonNode;
/**
* Test for all REST-operations related to listing the resources that are part of a deployment.
*
* @author Frederik Heremans
*/
public class DeploymentResourcesResourceTest extends BaseSpringRestTestCase {
/**
* Test getting all resources for a single deployment.
* GET repository/deployments/{deploymentId}/resources
*/
public void testGetDeploymentResources() throws Exception {
try {
Deployment deployment = repositoryService.createDeployment().name("Deployment 1")
.addClasspathResource("org/activiti/rest/service/api/repository/oneTaskProcess.bpmn20.xml")
.addInputStream("test.txt", new ByteArrayInputStream("Test content".getBytes()))
.deploy();
HttpGet httpGet = new HttpGet(SERVER_URL_PREFIX +
RestUrls.createRelativeResourceUrl(RestUrls.URL_DEPLOYMENT_RESOURCES, deployment.getId()));
CloseableHttpResponse response = executeRequest(httpGet, HttpStatus.SC_OK);
JsonNode responseNode = objectMapper.readTree(response.getEntity().getContent());
closeResponse(response);
assertTrue(responseNode.isArray());
assertEquals(2, responseNode.size());
// Since resources can be returned in any arbitrary order, find the right one to check
JsonNode txtNode = null;
for(int i=0; i< responseNode.size(); i++) {
if("test.txt".equals(responseNode.get(i).get("id").textValue())) {
txtNode = responseNode.get(i);
break;
}
}
// Check URL's for the resource
assertNotNull(txtNode);
assertTrue(txtNode.get("url").textValue().endsWith(RestUrls.createRelativeResourceUrl(
RestUrls.URL_DEPLOYMENT_RESOURCE, deployment.getId(), "test.txt")));
assertTrue(txtNode.get("contentUrl").textValue().endsWith(RestUrls.createRelativeResourceUrl(
RestUrls.URL_DEPLOYMENT_RESOURCE_CONTENT, deployment.getId(), "test.txt")));
assertTrue(txtNode.get("mediaType").isNull());
assertEquals("resource", txtNode.get("type").textValue());
} finally {
// Always cleanup any created deployments, even if the test failed
List<Deployment> deployments = repositoryService.createDeploymentQuery().list();
for(Deployment deployment : deployments) {
repositoryService.deleteDeployment(deployment.getId(), true);
}
}
}
/**
* Test getting all resources for a single unexisting deployment.
* GET repository/deployments/{deploymentId}/resources
*/
public void testGetDeploymentResourcesUnexistingDeployment() throws Exception {
HttpGet httpGet = new HttpGet(SERVER_URL_PREFIX +
RestUrls.createRelativeResourceUrl(RestUrls.URL_DEPLOYMENT_RESOURCES, "unexisting"));
closeResponse(executeRequest(httpGet, HttpStatus.SC_NOT_FOUND));
}
}